API多轮对话的实现
半醉半醒半疯Z 发布于2018-07-23 15:50 浏览:1313 回复:13
6
收藏
最后编辑于2018-10-18

使用API对话接口时,想要实现多轮对话,需要传递bot_session或session_id的信息。

第一轮对话bot_session需要置空,置空的写法是"bot_session": ""。从第二轮开始,多轮对话的每轮都需将上轮返回结果里的bot_session(或session_id)的值完整不动的传给本轮的bot_session。

1.传bot_session的值

      返回数据里bot_session的形式如下:

     "bot_session": "{\"bot_id\":\"1201\",......\"timestamp\":\"  request time   \"}],\"session_id\":\"     value   \"}\n"

      可以将bot_session的值(整个双引号里的内容)完整不做任何修改的传入请求参数的bot_session里。也可以去掉最后的  \n  。其他部分不需要做任何修改。

2.传session_id的值

     如果传的是session_id,则请求参数形式是:"bot_session": "{\"session_id\":\" value \"}"

     返回数据里bot_session的形式如下:

     "bot_session": "{\"bot_id\":\"1201\",......,\"session_id\":\"     value   \"}\n"

     可以直接将     \"session_id\":\"value\"    取出,使用  {}  包起来,然后再传入入参的bot_session里。

      格式: "bot_session": "{\"session_id\":\"value\"}"

收藏
点赞
6
个赞
共13条回复 最后由redlavi编辑于2018-10-18 17:52
#14redlavi回复于2018-10-16
#12 sun_lei0422回复
首先 bot_session 和 client_session 都是 json格式的字符串类型,所以需要对这两个json值的引号进行转移,可以参考 9 楼的同学的写法
展开

“转移”应该是错别字,应该是“转义”。引号写成”\"“

0
#13tiancorn回复于2018-10-12
#9 星空下hh回复
问一下,传入session_id但是两轮对话还是没有关联,是怎么回事啊   { "bot_session": "{\"session_id\":\" session-1536030295392-1220742608-8013-218 \"}", "log_id": "199606", "request": { "bernard_level": 0, "client_session": "{\"client_results\":\"\", \"candidate_options\":[]}", "query": "流水账单下载", "query_info": { "asr_candidates": [ ], "source": "KEYBOARD", "type": "TEXT" }, "updates": "", "user_id": "1234" }, "bot_id": "10729", "version": "2.0" }
展开

这前后空格是你自己加上去的?还是怎么弄进去的?

0
#12sun_lei0422回复于2018-10-12
#10 love卵疼回复
好烦  一直是 请求数据不对 "{ "bot_session":{ "session_id":"session-1539308171714-2261805925-8013-24"},"log_id":"7758521","request":{ "bernard_level":2,"client_session":"{"client_results":"", "candidate_options":[]}","query":"hyc在不在","query_info":{ "asr_candidates":[],"source":"KEYBOARD","type":"TEXT"},"updates":"","user_id":"99635"},"bot_id":12752,"version":"2.0"}"  都不知道这个拼接哪里有错。
展开

首先 bot_session 和 client_session 都是 json格式的字符串类型,所以需要对这两个json值的引号进行转移,可以参考 9 楼的同学的写法

1
#11sun_lei0422回复于2018-10-12
#9 星空下hh回复
问一下,传入session_id但是两轮对话还是没有关联,是怎么回事啊   { "bot_session": "{\"session_id\":\" session-1536030295392-1220742608-8013-218 \"}", "log_id": "199606", "request": { "bernard_level": 0, "client_session": "{\"client_results\":\"\", \"candidate_options\":[]}", "query": "流水账单下载", "query_info": { "asr_candidates": [ ], "source": "KEYBOARD", "type": "TEXT" }, "updates": "", "user_id": "1234" }, "bot_id": "10729", "version": "2.0" }
展开

你的上轮返回的session_id 值的前后就包含空格吗??"bot_session": "{\"session_id\":\" session-1536030295392-1220742608-8013-218 \"}"

0
#10love卵疼回复于2018-10-12

好烦  一直是 请求数据不对

"{ "bot_session":{ "session_id":"session-1539308171714-2261805925-8013-24"},"log_id":"7758521","request":{ "bernard_level":2,"client_session":"{"client_results":"", "candidate_options":[]}","query":"hyc在不在","query_info":{ "asr_candidates":[],"source":"KEYBOARD","type":"TEXT"},"updates":"","user_id":"99635"},"bot_id":12752,"version":"2.0"}" 

都不知道这个拼接哪里有错。

0
#9星空下hh回复于2018-09-04

问一下,传入session_id但是两轮对话还是没有关联,是怎么回事啊

 

{
"bot_session": "{\"session_id\":\" session-1536030295392-1220742608-8013-218 \"}",
"log_id": "199606",
"request": {
"bernard_level": 0,
"client_session": "{\"client_results\":\"\", \"candidate_options\":[]}",
"query": "流水账单下载",
"query_info": {
"asr_candidates": [ ],
"source": "KEYBOARD",
"type": "TEXT"
},
"updates": "",
"user_id": "1234"
},
"bot_id": "10729",
"version": "2.0"
}

0
#8tiancorn回复于2018-08-14
#7 小瘦子吃的少回复
是不是必须要设置对话意图才可以进行多轮对话呢?好像单独的问答意图是不行的。
展开

是的,问答只是单轮的。对话意图是多轮的。

0
#7小瘦子吃的少回复于2018-08-14

是不是必须要设置对话意图才可以进行多轮对话呢?好像单独的问答意图是不行的。

0
#6何必固執回复于2018-07-31

希望可以上点代码实例供参考,感谢贴主分享

0
#5lixk_way回复于2018-07-26

干货~~

0
#4choleraa回复于2018-07-24

干货, 再多点完整样例代码就更好了.

0
#3rose20135188回复于2018-07-24

写得易懂,

0
#2伊茨米可回复于2018-07-24

干货~~

0
TOP
切换版块