ars*_*lan 5 botframework direct-line-botframework
我一直在尝试在应用程序中设置 MS Bot。到目前为止,我做了以下。
为 Bot 设置一个 REST 端点,该连接器会监听它。
app.post("/botapi/messages", connector);
Run Code Online (Sandbox Code Playgroud)获取APP_ID和APP_PASSWORD,模拟器成功连接如下,
http://localhost:4000/botapi/messages
APP_ID
APP_PASSWORD
Run Code Online (Sandbox Code Playgroud)
这是成功的,机器人按预期回复。
尝试使用 Direct Line API 与 Bot 对话。已成功开始对话。回应之一如下。
{
"conversationId": "3JYZyAn5VYB3HNcO3tcgtn",
token: ....
.....
}
Run Code Online (Sandbox Code Playgroud)
正如文档所说,我使用“node-fetch”包来发出 POST 请求。
但是,我无法使用 Direct Line API 发送活动,已收到
internal server error 500
Run Code Online (Sandbox Code Playgroud)
文档说 POST 请求应该如下所示。
POST
https://directline.botframework.com/v3/directline/conversations
Authorization: Bearer my_secret
Run Code Online (Sandbox Code Playgroud)
这非常适合开始对话,但不适用于发送活动。
我发送的活动是:
{
"type": "message",
"from": {
"id": "user1"
},
"text": "hello Bot, say something"
}
Run Code Online (Sandbox Code Playgroud)
我不认为“id”很重要,所以这就是我发布的内容
https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
Run Code Online (Sandbox Code Playgroud)
我使用了从开始对话时收到的对话 ID。我用谷歌搜索,但没有找到我的问题的答案。此外,我的问题很少,也许他们的回答会对我有所帮助。
Q1:使用 Direct Line API 的每个人的 url " https://directline.botframework.com/v3/directline/ " 都一样吗?当我用机器人的端点“ http://localhost:3000/botapi/messages/conversations ”替换它时,我什至无法开始对话,什么都不起作用。
Q2:Direct Line API 是如何工作的?我向 API 发出了带有我的秘密的 POST,然后 API 如何找到我的机器人?Bot 和 API 如何通信?我在这里错过了什么吗?
Q3:当我发出 POST 以发送活动时,我遵循了文档。在授权中,我尝试了我的秘密和从开始对话中获得的令牌,两者都不起作用。我相信两者都应该有效。我错了吗?
Q4:我需要对Bot Connector Service做些什么吗?我读了这篇文章,但我不知道它是为了什么。我错了吗?
那么,我在这里缺少什么?如何发送活动?
注意:我的机器人没有部署到 azuri 或 aws,它只在我的 Mac 上。但是,如文档所述,我获得了 DirectLine 的 APP_ID、APP_PASSWORD 和 SECRET。
该文档指定这是通过 Direct Line 向机器人发送活动(消息)的端点:
https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
Run Code Online (Sandbox Code Playgroud)
在此 URI 中,是您启动对话{conversationId}时在响应正文中收到的对话 ID(值) 。请求正文应指定有关您发送的活动的信息,例如:conversationId
{
"type": "message",
"from": {
"id": "user1"
},
"text": "hello"
}
Run Code Online (Sandbox Code Playgroud)
最后回答一下大家的问题:
Q1:所有 Direct Line API 请求的基本 URI都相同。
Q2:您在请求标头中指定的 Direct Line 密钥或令牌Authorization用于识别请求应定向到的机器人
Q3:是的,您应该能够指定在“发送活动”请求标头的“开始对话”响应中token收到的密钥或值。但请注意,您在“开始对话”响应中收到的令牌只能用于与该特定对话进行交互。Authorization
问题 4:您链接到的文章与使用 Direct Line API 没有直接关系。(但正如 @EzequielJadib 在他的评论中提到的,您确实需要为您的机器人启用 Direct Line 通道。)
| 归档时间: |
|
| 查看次数: |
2411 次 |
| 最近记录: |