Microsoft tutorial表明,为了与机器人建立对话,我应该发出以下HTTP请求:
POST https://directline.botframework.com/api/conversations
Authorization: Bearer SECRET_OR_TOKEN
我的问题是我是否可以使用以下Python代码实现此目的:
import requests
r = requests.post('https://directline.botframework.com/api/conversations',
params = {'Authorization':'Bearer ftmhNAqZ2tw.cwA.qIA.Xz2ZWfYJzxd8vJjcK9VmINWNLxlvKiM5jC8F_cbaf0s'})
如果我使用print(r.content)
打印回复,则说明:
{“error”:{ “code”:“BadArgument”, “message”:“遗失令牌或秘密”}}
答案 0 :(得分:0)
承载令牌需要作为标头发送,而不是作为有效负载或查询参数发送。
您需要使用headers
参数:
auth = {'Authorization': 'Bearer xxxYourBearerTokenHerexxx'}
r = requests.post('https://directline.botframework.com/api/conversations', headers=auth)
print(r) # <Response [200]>
答案 1 :(得分:0)
HTTP请求有三个可以发送内容的区域:
网址参数
体
接头
要在python的requests
包中设置这些,可以使用以下内容(假定POST方法,但都是相同的):
网址参数:
requests.post('https://myurl.com', params = {'MyParam':'MyValue'})
# equivilient to http://myurl.com?MyParam=MyValue
<强>车身强>:
requests.post('https://myurl.com', data={"key":"value"})
# or if sending json data
requests.post('https://myurl.com', data=json.dumps(myData))
<强>接头强>:
requests.post('https://myurl.com', headers={"headername":"value"})
在您的具体情况下,虽然API没有详细记录 - 我们可以假设他们希望在标题中发送“授权”数据,因为这是标准的。在这种情况下,您需要按如下方式分配标题:
requests.post('https://directline.botframework.com/api/conversations', headers={'Authorization':'Bearer ftmhNAqZ2tw.cwA.qIA.Xz2ZWfYJzxd8vJjcK9VmINWNLxlvKiM5jC8F_cbaf0s'})