Python2调用UNIT2.0的代码示例
tiancorn 发布于2018-08-24 19:18 浏览:763 回复:9
1
收藏
最后编辑于2018-11-23

下面是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将来集成到自己的业务中是需要同时使用语音输入和语音回复,可以在创建百度云应用 选择接口时选上语音识别、语音合成,如上图。

 

 

 

 

 

 

收藏
点赞
1
个赞
共9条回复 最后由伊茨米可回复于2018-11-23 10:44
#10伊茨米可回复于2018-11-23 10:44:12
#9 y_leconte回复
有python3 调用unit2.0 的代码吗。。

https://ai.baidu.com/forum/topic/show/869881

0
#9y_leconte回复于2018-11-20 20:55:02

有python3 调用unit2.0 的代码吗。。

0
#6伊茨米可回复于2018-09-11 19:15:47
#5 文风少羽回复
C#,多轮请求代码示例,谢谢

http://ai.baidu.com/docs#/UNIT-v2-API/top

0
#5文风少羽回复于2018-09-11 18:58:08
#2 伊茨米可回复
如果大家有其他计算机语言的示例代码需要,欢迎留言~

C#,多轮请求代码示例,谢谢

0
#4tiancorn回复于2018-09-04 17:31:21
#3 星空下hh回复
问一下,进行多轮对话的时候传入session_id为啥不行啊,下一轮对话话上次对话并没有关联,想问一下有没有多轮对话的代码呢
展开

把你传session_id的代码贴出来看看

0
#3星空下hh回复于2018-09-04 11:09:56
#2 伊茨米可回复
如果大家有其他计算机语言的示例代码需要,欢迎留言~

问一下,进行多轮对话的时候传入session_id为啥不行啊,下一轮对话话上次对话并没有关联,想问一下有没有多轮对话的代码呢

0
#2伊茨米可回复于2018-08-27 10:44:08

如果大家有其他计算机语言的示例代码需要,欢迎留言~

0
TOP
切换版块