【问题标题】:400 Bad Request From My Local Bot using Postman使用 Postman 来自我的本地机器人的 400 错误请求
【发布时间】:2023-04-04 22:47:01
【问题描述】:

我正在尝试使用 ngrok 提供的链接(即https://xxxxxx.ngrok.io/api/messages)使用邮递员测试我的机器人。但是收到如下图的400 bad request

我尝试在我的控件上设置一个断点,它确实命中了,但它没有继续执行 catch 语句。

我知道我的机器人没有任何问题,因为它在使用模拟器时运行良好。

我的计划是在我的自定义聊天中实现我的机器人,而无需注册任何 azure 服务。

附加信息:

我的请求正文为空。我按照这个问题的答案MS bot tested locally with postman 即使我使用此链接https://xxxxx.ngrok.io/v3/directline/conversations,它也会返回未找到的 404,如下所示。但是当我使用模拟器打开我的机器人然后使用 /v3/directline/conversations 执行链接时它工作正常。

【问题讨论】:

  • 您能否修改您的帖子以显示请求负载——失败的 POST 请求的 JSON body
  • @ermik 编辑了我的问题并添加了有关它的其他信息。

标签: botframework postman


【解决方案1】:

正如您链接的问题中的答案所述:

在 localhost 上运行的机器人应该可以通过任何 HTTP 客户端(例如 Postman)进行测试只要您正确地形成请求,这实际上只意味着您只需要一个有效活动表示的有效负载。

当您使用模拟器时,如果形成请求的主体并且它成功。如果你想使用 Postman 来探索 API 的工作方式,你必须根据框架文档来形成请求。

/v3/directline/conversations API documentation 声明您需要在请求正文中提供有效的TokenParameters 对象才能获得响应。

要使用主 REST API,您需要使用云提供商提供的基本 URL:

当用户向您的机器人发送消息时,传入请求包含一个带有 serviceUrl 属性的 Activity 对象,该属性指定您的机器人应向其发送响应的端点。要访问 Bot Connector 服务,请将 serviceUrl 值用作 API 请求的基本 URI。

在 Bot Framework REST API Reference 文档中了解更多信息。

最后,为了尝试回答您的整体问题,我们可以看看 NGROK 服务只是一种公开本地环境的方式。 NGROK 服务提供的链接旨在供 Bot Framework 云服务使用,如this tutorial 中所述。当您通过 NGROK 设置转发时,您可以通过 Facebook、Skype 等与您的机器人聊天,并在您本地运行的应用程序中接收请求。如果您想调用应用程序的端点,当它在本地运行时,使用 Postman,您可以简单地使用 localhost:PORT_NUMBER 和您的 Dot Net 应用程序为其 HTTP API 提供服务的端口号。

如果您查看提供的starter code sample,您会看到#14 上的控制器被注释为处理/api/messages URL 上的请求。使用配置文件中指定的applicationUrl 发出 GET 或 POST 请求。由于您的应用可能没有身份验证,但您不需要Bearer 令牌。最后,请记住,POST request旨在携带尸体(即使尸体)!这可能会给您的工作流程带来问题。尝试使用 GET 请求,因为它是一个更简单的工具。

【讨论】:

  • 我尝试了 GET 请求,它返回一个响应“需要升级到 WebSocket”,我正在搜索它,但如果你能提供一个非常感谢的解决方案。提前致谢
  • Afaik,Postman 不支持网络套接字。您可能想查看其他 API 客户端
猜你喜欢
  • 2016-04-13
  • 2019-06-21
  • 2020-12-23
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 2020-12-19
相关资源
最近更新 更多