【发布时间】:2019-01-04 08:28:11
【问题描述】:
我在本地使用 Microsoft Bot Framework,如果我使用 MSFT 机器人模拟器进行测试(在 C# .Net Core 和 Node.js 中),它可以正常工作,但我不知道如何使用 Postman api 调用对其进行测试。
我是否真的需要先在 MSFT 注册机器人,即使它在本地运行才能获得身份验证?
【问题讨论】:
标签: botframework
我在本地使用 Microsoft Bot Framework,如果我使用 MSFT 机器人模拟器进行测试(在 C# .Net Core 和 Node.js 中),它可以正常工作,但我不知道如何使用 Postman api 调用对其进行测试。
我是否真的需要先在 MSFT 注册机器人,即使它在本地运行才能获得身份验证?
【问题讨论】:
标签: botframework
通常,客户端和机器人之间有一个连接器服务。可以绕过连接器服务,直接发布到机器人,但有一些事情需要记住。您将遇到的问题之一是 activity.ServiceUrl 应该是返回消息的回调基础 url:ref BotFrameworkAdapter#L843 如果没有有效的 ServiceUrl,机器人回复将全部以异常结束,因为没有发送响应的有效位置。您可以设置MockChannel 来接收这些机器人回复。设置完成后,只需确保发送给机器人的消息的 ServiceUrl 指向该 MockChannel。
有时我将模拟器的连接器服务与 PostMan 一起使用。这可以在没有 MicrosoftAppId 和 MicrosoftAppPassword 的情况下完成。当您打开实时聊天选项卡时,您将在日志中看到模拟器连接器服务正在侦听的端点:
这将是 PostMan 使用的基本 URL。
创建对话: (注意:模拟器需要一个带有 Bearer 令牌的 Authorization 标头,但该值并不重要,因为我们没有使用 MicrosoftAppId 和 MicrosoftAppPassword)
【讨论】:
只要您正确地形成请求,在 localhost 上运行的机器人应该可以通过任何 HTTP 客户端(例如 Postman)进行测试,这实际上只意味着您只需要一个有效活动表示的有效负载。
您可能需要检查的是,当您在 localhost 中运行时,您的机器人上是否配置了任何应用凭据。如果设置了这些,那么您实际上还需要对您的 localhost 实例进行正确的身份验证,模拟器会这样做,但是当您只是想用 Postman 之类的东西来攻击它时,您可能不想这样做。因此,只需确保在 localhost 模式下运行时清除应用程序凭据,让您的生活更轻松。
如果您没有使用任何应用凭据运行,那么您需要更新您的问题,详细说明您发送的有效负载、您的机器人的配置方式等,我很乐意更新我的答案.
【讨论】: