【问题标题】:Unable to test self-hosted bot无法测试自托管机器人
【发布时间】:2016-12-23 22:00:07
【问题描述】:

我使用 C# 中的 Microsoft Bot Framework 开发了一个机器人,并且正在尝试将其部署到 Web 服务器而不是 Azure。 Web 服务器运行 Windows Server 2012 R2,并安装了 IIS 8.5。该机器人在本地运行良好,并且可以使用模拟器在那里进行测试,没有任何问题。

我已经在 IIS 中为机器人在 Web 服务器上配置了一个站点,并在那里部署了机器人代码,并配置了应用 ID 和密码。在 Bot Framework 站点上使用“测试连接”工具时,我收到“端点授权成功”消息。但是,当尝试使用模拟器(或门户网站内置的聊天工具)对其进行测试时,我没有收到任何回复,并且在模拟器中所有响应都显示为内部服务器错误。

我在后台运行 ngrok 以将连接转发到我的开发机器,并更新了模拟器 URL 字段以包含 ngrok 的“转发”部分中指示的 URL。但是,当我尝试进行聊天时,不会填充 ngrok 控制台窗口中的 HTTP 请求列表。

我尝试使用this previous solution 来获取有关可能发生的任何内部服务器错误的更多详细信息,但在部署此代码后,我收到了堆栈跟踪。同样,这在本地运行良好,可以使用模拟器进行测试,没有任何问题。

任何人都可以就我可能出错的地方提出建议,或者分享他们调试此类错误的经验吗?不幸的是,Bot Framework 似乎没有提供非常好的调试体验。

【问题讨论】:

    标签: c# botframework


    【解决方案1】:

    在这种情况下,通过升级服务器以运行最新可用版本的 .NET Framework (4.6.2) 解决了问题。已安装 4.5,但与 Bot Framework 不兼容。

    【讨论】:

      【解决方案2】:

      尝试将模拟器中的端点 URL 设置为实际的机器人端点(与您在开发门户中提供的 URL 相同)。模拟器能够直接向您的机器人发送消息。 ngrok URL 用于将您的机器人的回复通过隧道传输回模拟器。

      【讨论】:

      • 您好 Eric,模拟器中的“Bot URL”字段已经与我在门户中配置的端点 URL 匹配。
      • 好的,我想我误解了你的说法“...更新了模拟器 URL 字段以包含 ngrok 的“转发”部分中指示的 URL”。将 ngrok URL 作为模拟器的 bot 端点是不正确的。
      • 让我备份并检查我的理解。您是否在 IIS 机器上运行 ngrok 以将消息转发到您的机器人?如果是这样,那么 ngrok bot 端点是有效的。其次,您是否在您的开发机器上运行 ngrok(将消息转发到模拟器)?第三个问题,您使用的是新的 Bot Framework 模拟器(github.com/Microsoft/BotFramework-Emulator)吗?
      • 如果你使用的是ngrok,那么开发门户中的url应该是ngrok提供的。如果您使用的是较新的模拟器,并从那里使用 ngrok,请确保被路由的 localhost url 到达您的 IIS。通常在localhost:4040/status 你会看到 ngrok 状态
      • @EricAnderson 我安装了旧版本的模拟器,这将是混乱的来源。我已经从您提供的链接下载了最新版本,使用 ngrok 的路径对其进行了配置,并设置了机器人端点、ID 和密码,但同样的问题是所有消息都遇到 500 错误。 ngrok 仅在我的开发机器上运行以将消息从机器人转发到模拟器 - 它未在服务器上设置。
      猜你喜欢
      • 1970-01-01
      • 2014-07-29
      • 2011-11-03
      • 2021-05-28
      • 2012-10-23
      • 1970-01-01
      • 2019-09-23
      • 2020-06-27
      • 1970-01-01
      相关资源
      最近更新 更多