MS Bot,Direct line API,无法发送活动,如何修复?

2023-12-21

我一直在尝试在应用程序中设置 MS Bot。到目前为止,我做了以下工作。

  1. 为 Bot 设置 REST 端点,该连接器会监听它。

     app.post("/botapi/messages", connector);
    
  2. 获取 APP_ID 和 APP_PASSWORD,模拟器成功连接到以下内容,

     http://localhost:4000/botapi/messages
     APP_ID
     APP_PASSWORD
    

    这是成功的,机器人按预期回复。

  3. 尝试使用 Direct Line API 与机器人对话。成功开始对话。其中一项回应如下。

     {
       "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

我使用了从开始对话时收到的对话 ID。 我用谷歌搜索了一下,但没有找到我的问题的答案。 另外,我有几个问题,也许他们的回答会对我有帮助。

Q1:网址“https://directline.botframework.com/v3/directline/ https://directline.botframework.com/v3/directline/“对于每个使用 Direct Line API 的人来说都是一样的吗?当我将其替换为机器人的端点时,”http://localhost:3000/botapi/messages/conversations http://localhost:3000/botapi/messages/conversations“,我什至无法开始对话,没有任何作用。

问题 2:Direct Line API 是如何工作的?我向 API 发出带有我的秘密的 POST,那么 API 如何找到我的机器人呢? Bot 和 API 如何通信?我在这里错过了什么吗?

Q3:当我发出 POST 来发送活动时,我遵循了文档。 在授权中,我尝试了我的秘密和我从开始对话中获得的令牌,但两者都不起作用。我相信两者都应该有效。我错了吗?

Q4:我需要做些什么吗?机器人连接器服务 https://learn.microsoft.com/en-us/bot-framework/rest-api/bot-framework-rest-connector-quickstart?我读了这篇文章,但不知道它的用途。我错了吗?

那么,我在这里缺少什么?我如何发送活动?

Note:我的机器人未部署到 azuri 或 aws,它仅部署在我的 Mac 上。 但是,我得到了 DirectLine 的 APP_ID、APP_PASSWORD 和 SECRET,如文档所述。


The 文档 https://learn.microsoft.com/en-us/bot-framework/rest-api/bot-framework-rest-direct-line-3-0-send-activity指定这是通过 Direct Line 向机器人发送活动(消息)的端点:

https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities

在此 URI 中,{conversationId}是对话 ID (conversationId值),您在响应正文中收到的开始谈话 https://learn.microsoft.com/en-us/bot-framework/rest-api/bot-framework-rest-direct-line-3-0-start-conversation。请求正文应指定有关您发送的活动的信息,例如:

{
    "type": "message",
    "from": {
        "id": "user1"
    },
    "text": "hello"
}

最后回答一下大家的问题:

  • Q1:基础 URI是一样的 https://learn.microsoft.com/en-us/bot-framework/rest-api/bot-framework-rest-direct-line-3-0-api-reference对于所有 Direct Line API 请求。

  • Q2:您在中指定的 Direct Line 密钥或令牌Authorization请求的标头用于标识请求应定向到的机器人

  • Q3:是的,您应该能够指定秘密或token您收到的价值开始对话响应于Authorization的标题发送活动要求。但请注意,您在开始对话回复只能用于与该特定对话进行交互.

  • 问题 4:您链接到的文章与使用 Direct Line API 没有直接关系。 (但正如 @EzequielJadib 在他的评论中提到的,您确实需要为您的机器人启用 Direct Line 通道。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MS Bot,Direct line API,无法发送活动,如何修复? 的相关文章

随机推荐