Botframework MS Bot,直连API,无法发送活动,如何修复?

Botframework MS Bot,直连API,无法发送活动,如何修复?,botframework,direct-line-botframework,Botframework,Direct Line Botframework,我一直在尝试在应用程序中设置MS Bot。到目前为止,我没有跟踪 为Bot设置一个REST端点,该连接器将侦听它 app.post("/botapi/messages", connector); 获取APP_ID和APP_密码,emulator已成功连接到以下位置: http://localhost:4000/botapi/messages APP_ID APP_PASSWORD “这是成功的,”机器人按预期回复 尝试使用Direct Line API与机器人对话。已成功启动对话。

我一直在尝试在应用程序中设置MS Bot。到目前为止,我没有跟踪

  • 为Bot设置一个REST端点,该连接器将侦听它

     app.post("/botapi/messages", connector);
    
  • 获取APP_ID和APP_密码,emulator已成功连接到以下位置:

     http://localhost:4000/botapi/messages
     APP_ID
     APP_PASSWORD
    
    “这是成功的,”机器人按预期回复

  • 尝试使用Direct Line API与机器人对话。已成功启动对话。答复之一如下

     {
       "conversationId": "3JYZyAn5VYB3HNcO3tcgtn",
       token: ....
        .....
      }
    
    正如文档所说,我使用“节点获取”包来发出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
    
    我使用了开始对话时收到的conversationId。 我在谷歌上搜索了一下,但没有找到我的问题的答案。 此外,我有几个问题,也许他们的回答会帮助我

    Q1:url“”对于使用Direct Line API的每个人都是相同的?当我将其替换为bot的端点“”时,我甚至无法启动对话,没有任何效果

    问题2:直线API是如何工作的?我发布了一篇关于API秘密的帖子,那么API是如何找到我的机器人的呢?Bot和API如何通信?我是不是遗漏了什么

    问题3:当我发布POST发送活动时,我遵循了文档。 在授权中,我尝试了我的秘密和我从开始对话中获得的令牌,但都不起作用。我认为两者都应该起作用。我错了吗

    问题4:我需要做些什么吗?我读了这篇文章,但我不知道它是干什么用的。我错了吗

    那么,我错过了什么?如何发送活动

    注意:我的机器人没有部署到azuri或aws,它只在我的Mac上。 但是,我得到了应用程序ID、应用程序密码和DirectLine的机密,正如文档所解释的

    指定这是通过直达线路向bot发送活动(消息)的端点:

    https://directline.botframework.com/v3/directline/conversations/{conversationId}/activities
    
    在这个URI中,
    {conversationId}
    是您在创建时在响应体中收到的会话ID(
    conversationId
    值)。请求主体应指定有关您正在发送的活动的信息,例如:

    {
        "type": "message",
        "from": {
            "id": "user1"
        },
        "text": "hello"
    }
    
    最后,回答您的问题:

    • Q1:所有直连API请求的基本URI

    • 问题2:您在请求的
      授权
      标题中指定的直连密码或令牌用于标识请求应定向到的bot

    • 问题3:是的,您应该能够指定您在发送活动请求的
      授权
      标题中的开始对话响应中收到的机密或
      令牌
      值。但是,请注意,您在开始对话响应中收到的令牌只能用于与该特定对话进行交互

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


    你看到了吗?另外,您是否启用了DirectLine作为您的机器人的频道?@EzequielJadib是的,我在我的机器人中创建了一个“DirectLine”频道。今天早上我还检查了这个例子。我看到它使用了“招摇过市客户端”,但我们的应用程序已经使用“节点获取”来发出请求,所以我使用了“节点获取”。故事的其余部分如上所述:可以开始对话,但不能发送活动:(我会首先看看你是否可以让我提供的示例对你的机器人有效;然后,我会检查具体部分(除了你用来发出请求的客户机)查看是否有任何显著差异。@EzequielJadib直连API只是发出HTTP请求。这就是我使用“节点获取”所做的,并用于启动对话。但不用于发送活动。您提到的示例甚至没有启动,它有一些错误,试图修复,但无法。感谢您澄清这些问题。结果表明,您所说的正是我所做的。但我仍然可以启动对话,但无法使用令牌rec发送活动在启动对话的响应中:(这里可能是什么问题,嗯……我不知道该告诉你什么,因为我所概述的程序应该工作。为了进一步排除故障(在这里得到帮助),你可以考虑使用像Fiddler这样的工具(或者类似的东西)。捕获开始对话操作和后续发送活动操作正在发送和接收的API请求/响应,并用该信息更新上述问题(当然,混淆任何敏感信息).我的机器人在本地重新设置,我没有将其部署到Azuri或Aws。是否有可能是原因?