【问题标题】:MS bot tested locally with postman使用邮递员在本地测试 MS bot
【发布时间】:2019-01-04 08:28:11
【问题描述】:

我在本地使用 Microsoft Bot Framework,如果我使用 MSFT 机器人模拟器进行测试(在 C# .Net Core 和 Node.js 中),它可以正常工作,但我不知道如何使用 Postman api 调用对其进行测试。

我是否真的需要先在 MSFT 注册机器人,即使它在本地运行才能获得身份验证?

【问题讨论】:

    标签: botframework


    【解决方案1】:

    通常,客户端和机器人之间有一个连接器服务。可以绕过连接器服务,直接发布到机器人,但有一些事情需要记住。您将遇到的问题之一是 activity.ServiceUrl 应该是返回消息的回调基础 url:ref BotFrameworkAdapter#L843 如果没有有效的 ServiceUrl,机器人回复将全部以异常结束,因为没有发送响应的有效位置。您可以设置MockChannel 来接收这些机器人回复。设置完成后,只需确保发送给机器人的消息的 ServiceUrl 指向该 MockChannel。

    有时我将模拟器的连接器服务与 PostMan 一起使用。这可以在没有 MicrosoftAppIdMicrosoftAppPassword 的情况下完成。当您打开实时聊天选项卡时,您将在日志中看到模拟器连接器服务正在侦听的端点:

    这将是 PostMan 使用的基本 URL。

    创建对话: (注意:模拟器需要一个带有 Bearer 令牌的 Authorization 标头,但该值并不重要,因为我们没有使用 MicrosoftAppId 和 MicrosoftAppPassword)

    留言:

    获取消息:

    【讨论】:

      【解决方案2】:

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

      您可能需要检查的是,当您在 localhost 中运行时,您的机器人上是否配置了任何应用凭据。如果设置了这些,那么您实际上还需要对您的 localhost 实例进行正确的身份验证,模拟器会这样做,但是当您只是想用 Postman 之类的东西来攻击它时,您可能不想这样做。因此,只需确保在 localhost 模式下运行时清除应用程序凭据,让您的生活更轻松。

      如果您没有使用任何应用凭据运行,那么您需要更新您的问题,详细说明您发送的有效负载、您的机器人的配置方式等,我很乐意更新我的答案.

      【讨论】:

      • 我相信我没有进行身份验证。 Bot Emulator 的端点是 localhost:3978/api/messages。我可以看到模拟器使用“directline.StartConversation”调用开始对话,但我不知道如何通过 Postman 以同样的方式开始。
      • 好的,你能用你发送的有效载荷更新你的问题吗?它应该是一个 POST 和 application/json,带有一个活动的 JSON 表示。一旦您更新了更多详细信息,我就会更好地了解如何提供帮助。如果您认为这会有所帮助,还包括邮递员的屏幕截图。
      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 2018-01-01
      • 2019-05-14
      • 2014-07-09
      • 2018-09-23
      • 2017-05-19
      • 1970-01-01
      相关资源
      最近更新 更多