我一直试图在应用中设置MS Bot。到目前为止,我确实关注过。
为Bot设置REST端点,该连接器侦听它。
app.post("/botapi/messages", connector);
获取APP_ID和APP_PASSWORD,仿真器成功连接到以下,
http://localhost:4000/botapi/messages
APP_ID
APP_PASSWORD
这是成功的,机器人按预期回复。
尝试使用Direct Line API与Bot交谈。成功开始对话。其中一个回应如下。
{
"conversationId": "3JYZyAn5VYB3HNcO3tcgtn",
token: ....
.....
}
我使用" node-fetch"正如文件所述,发布POST请求的包。
但是,我无法使用Direct Line API发送活动
internal server error 500
文档说POST请求应如下所示。
POST
https://directline.botframework.com/v3/directline/conversations
Authorization: Bearer my_secret
这非常适合开始对话,但不适合发送活动。
我发送的活动是:
{
"type": "message",
"from": {
"id": "user1"
},
"text": "hello Bot, say something"
}
我不认为" id"是重要的,所以这就是我发布的内容
https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
我使用了开始对话时收到的对话。 我用Google搜索,但找不到问题的答案。 此外,我几乎没有问题,也许他们的答案对我有帮助。
Q1:网址" https://directline.botframework.com/v3/directline/"使用Direct Line API的每个人都一样吗?当我用僵尸程序的端点替换它时,我就算不能开始对话,没有任何作用。
Q2:Direct Line API如何运作?我用我的秘密向API发布POST,然后API如何找到我的机器人? Bot和API如何通信?我在这里错过了什么吗?
问题3:当我发布POST以发送活动时,我按照文档进行操作。 在授权中,我尝试了我的秘密和开始对话时得到的令牌,两者都没有用。我相信两者都应该奏效。我错了吗?
问题4:我需要对http://localhost:3000/botapi/messages/conversations做些什么吗?我读了这篇文章,但我不知道它是什么。我错了吗?
那么,我在这里缺少什么?我该如何发送活动?
注意:我的机器人没有部署到azuri或aws,它只在我的Mac上。 但是,正如文档所解释的那样,我得到了DirectLine的APP_ID,APP_PASSWORD和SECRET。
答案 0 :(得分:2)
documentation指定这是通过Direct Line向bot发送活动(消息)的端点:
https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
在此URI中,{conversationId}
是您在started the conversation时在响应正文中收到的会话ID(conversationId
值)。请求正文应指定有关您发送的活动的信息,例如:
{
"type": "message",
"from": {
"id": "user1"
},
"text": "hello"
}
最后,回答你的问题:
Q1:所有Direct Line API请求的基本URI is the same。
Q2:您在请求的Authorization
标头中指定的直线密码或令牌用于标识请求应指向的机器人
问题3:是的,您应该可以在token
标题中的开始对话响应中指定您收到的密码或Authorization
值发送活动请求。但请注意,您在开始对话响应中收到的令牌只能用于与该特定对话进行互动。
问题4:您链接的文章与使用Direct Line API没有直接关系。 (但正如@EzequielJadib在评论中提到的那样,你需要为你的机器人启用Direct Line频道。)