最后编辑于2019-08
下面是Python2调用UNIT2.0的代码示例
其中client_id要写自己的BOT对应的API key,client_secret要替换成自己的Secret Key
bot_id也要替换成自己的。
# encoding:utf-8
import urllib, urllib2
import sys
import json
#print sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding('utf-8')
#print sys.getdefaultencoding()
# client_id 为从UNIT的【发布上线】模块进入百度云创建应用后获取的API Key
client_id='XXXXXXXX'
#client_secret 为从UNIT的【发布上线】模块进入百度云创建应用后获取的Secret Key
client_secret='YYYYYYYY'
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret
#上面的XXXXXXX 要替换成自己的API Key,YYYYYY要换成自己的Secret Key
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/Json_test; charset=UTF-8')
response = urllib2.urlopen(request)
access_token = json.load(response)["access_token"]
#真实业务中要把access_token 存到redis里,不能频繁的创建access_token(频繁创建会影响性能,导致一些对话失败),access_token默认有效期为30天,要自己写定时任务在30天到期前自动更新
#print access_token
url = 'https://aip.baidubce.com/rpc/2.0/unit/bot/chat?access_token=' + access_token
query = "帮我定明天北京到深圳的高铁票"
#下面的log_id在真实应用中要自己生成,可是递增的数字
log_id ='7758521'
#下面的user_id在真实应用中要是自己业务中的真实用户id、设备号、ip地址等,方便在日志分析中分析定位问题
user_id='222333'
#下面要替换成自己的bot_id
bot_id='ZZZZ'
post_data = '{\"bot_session\":\"\",\"log_id\":\"'+log_id+'\",\"request\":{\"bernard_level\":1,\"client_session\":\"{\\\"client_results\\\":\\\"\\\", \\\"candidate_options\\\":[]}\",\"query\":\"' + query + '\",\"query_info\":{\"asr_candidates\":[],\"source\":\"KEYBOARD\",\"type\":\"TEXT\"},\"updates\":\"\",\"user_id\":\"'+user_id+'\"},\"bot_id\":'+bot_id+',\"version\":\"2.0\"}'
request = urllib2.Request(url, post_data)
request.add_header('Content-Type', 'application/Json_test;charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
#if content:
# print content
data = json.loads(content)
print '用户问: '+ query
print 'BOT答复: ' + data['result']['response']['action_list'][0]['say']
print '意图: ' + data['result']['response']['schema']['intent']
slots = data['result']['response']['schema']['slots']
#print '词槽: ' + slot[0]['name'] + " = " +slot[0]['original_word']
for slot in slots:
print '词槽: ' + slot['name'] + " = " +slot['original_word']
获取access_token需要先获取BOT的API Key和Secret Key:
需要先在BOT的【发布上线】模块下进入百度云创建应用
如果你的对话BOT将来集成到自己的业务中是需要同时使用语音输入和语音回复,可以在创建百度云应用 选择接口时选上语音识别、语音合成,如上图。
请登录后评论
TOP
切换版块
好的。谢谢。我先看看
282008,The request content type is illegal.,非法请求内容类型。
可能是请求数据的编码有问题,所有参数都使用 UTF8 编码。
另外可以参考下面的链接理解传入参数的具体形式是怎样的,然后再操作代码。
https://ai.baidu.com/forum/topic/show/944007
https://ai.baidu.com/forum/topic/show/870075
你好,请问一下,我在使用代码API调用 多轮对话获取结果的时候,会出现282008错误。可是我使用代码中生成的post_data 在postman工具里面调用的话,会正常反馈结果。请问一下,这个是什么原因呢?
现在有了
没有
https://ai.baidu.com/docs#/UNIT-v2-API/41351cb4 这个文档里有
有php 调用unit2.0 的代码吗。
http://ai.baidu.com/docs#/UNIT-v2-API/top
有没有java的
https://ai.baidu.com/forum/topic/show/869881
有python3 调用unit2.0 的代码吗。。
http://ai.baidu.com/docs#/UNIT-v2-API/top
C#,多轮请求代码示例,谢谢
把你传session_id的代码贴出来看看
问一下,进行多轮对话的时候传入session_id为啥不行啊,下一轮对话话上次对话并没有关联,想问一下有没有多轮对话的代码呢
如果大家有其他计算机语言的示例代码需要,欢迎留言~