想要使用接口调用创建的技能或者机器人,就需要在百度云上面创建包含unit的应用,创建成功之后,会有API Key和Secret Key,使用这两个值去调用获取token的接口,然后就可以使用这个token去调用技能对话接口了。
创建技能之后,在页面的“技能发布”下有个“调用对话API”,点击右侧的“获取API Key/Secret Key”
创建机器人之后,在页面的“发布上线”下有个“研发/生产环境”,点击右侧的“获取API Key/Secret Key”
点击之后,就进入了百度云界面(一般会需要登录百度云,此时登录的账号需要与unit对应的百度云账号一致)。点击创建应用
应用名称和应用类型自行选择即可。
接口选择,因为是从unit跳转到百度云创建应用,所以unit2.0默认是勾选的,界面上的unit1.0不用关注,因为之前使用过unit1.0所以这里会有,一般情况下,只显示unit2.0。
写了描述之后,点击立即创建。这个应用就有了调用unit接口的权限了。
就可以使用这里的API Key和Secret Key去获取token,然后调用接口了。
获取token的介绍链接:http://ai.baidu.com/docs#/Auth/top
技能对话接口链接:http://ai.baidu.com/docs#/UNIT-v2-API/0dced3e6
技能对话接口多轮对话传参格式介绍:https://ai.baidu.com/forum/topic/show/870054
机器人对话接口链接:http://ai.baidu.com/docs#/UNIT-v2-service-API/top
机器人对话接口多轮对话传参格式介绍:https://ai.baidu.com/forum/topic/show/941936
另外,如果之前使用百度的其他接口,比如语音之类的,如果直接使用语音应用获取的token去调用unit的技能对话接口,会报错。这时候,可以直接进入自己的百度云应用,点击应用名,就可以修改应用里面的接口,可以把unit2.0添加到里面去。
还有时候,明明创建的应用包含了unit2.0,但是调用的时候也会报错,这时候可以检查一下,创建应用的账号与unit的账号是不是一致的,只有一致才可以。
可以啊
可以调用系统预设的技能吗?
boolean false
输出boolean false
{"bot_session":"session_id":"session-1556183750122-503311927-8013-2","log_id":"77585226","request":{"bernard_level":1,"client_session":"{\"client_results\":\"\", \"candidate_options\":[]}","query":" 北京天气怎么样","query_info":{"asr_candidates":[],"source":"KEYBOARD","type":"TEXT"},"updates":"","user_id":"88888"},"bot_id":"49783","version":"2.0"}
我这样传参数进行多轮会话有错吗?报错The request content type is illegal
多轮对话才好
import json
import requests
headers = {'Content-Type': 'application/json;charset=UTF-8'}
url_access = "https://aip.baidubce.com/oauth/2.0/token"
data_access = {
"grant_type":"client_credentials",
"client_id":"*******",
"client_secret":"*********",
}
req = requests.post(url_access, json.dumps(data_access), headers)
result = json.loads(req.text)
#access_token=result["access_token"]
print(result)
似乎不能请求成功
错误:{'error': 'unsupported_grant_type', 'error_description': 'The authorization grant type is not supported'}
但当我使用示例方法时:
request = urllib.request.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()
content似乎不是json或者字典
如有问题欢迎留言~