【问题标题】:How to resolve the error as “500 internal server error” in Bot Framework Channel Emulator?如何在 Bot Framework Channel Emulator 中将错误解决为“500 internal server error”?
【发布时间】:2016-11-13 09:31:56
【问题描述】:

我正在研究Bot框架技术,最近微软发布了bot的新版本(V3)。 我已经使用旧版本开发了机器人,现在我正在尝试将我的机器人升级到新版本。 为此,一切正常,但在将我的机器人发布到天蓝色后,然后通过使用我试图在机器人框架通道模拟器(3.0.0.54)中测试的发布 URL,它总是给出“500,内部服务器错误”。 但是,当我将 Skype 频道添加到我的机器人时,它会正常工作。

唯一的问题是当我在机器人框架通道模拟器中使用我的机器人应用程序的已发布 URL 进行测试时,只有我得到的错误是“内部服务器错误”。

我认为最新版本的bot框架通道模拟器可能有问题

【问题讨论】:

  • 检查了端口号和 URL?
  • 我已经检查了这些细节。从我的角度来看,这些细节是正确的。
  • 这在旧版本上有效吗?我不确定模拟器是否可用于非本地测试。据我了解,模拟器绕过了 Bot 连接器,所以我认为您的服务实际上不能将消息发送回它(activity.ServiceUrl 将是 localhost)。
  • 我也有同样的问题,而且它曾经工作过 :)
  • 是的,它可以与旧版本一起使用。并且我的机器人在旧版本中将消息发回给它。

标签: botframework


【解决方案1】:

ngrok http -host-header=rewrite 9000

screenshot

  • 如屏幕截图所示,使用 https 复制 转发 URL 并将其粘贴到 Emulator url 中
  • 模拟器端口应该在 9000 并且模拟器 Url 应该包含 ngrok forwarding Https URL

注意:ngrok 应该处于运行状态。如果您在下次尝试时遇到相同的 500 错误,请从步骤 1 开始。 更多参考 .https//docs.botframework.com/en-us/tools/bot-framework-emulator/#navtitle

【讨论】:

    【解决方案2】:

    我发现除了控制器中的 Post 之外的单个 public 方法会使 Bot Framework 抛出 500 InternalServerError。只需在 Controller 中只保留 private 和 public Post 方法即可解决。

    【讨论】:

    • 谢谢你是对的,除了 Post 方法之外,每个方法都应该保密,谢谢,你治好了我的头痛!
    【解决方案3】:

    在调试过程中,您只需不要禁用appid和密码,而是将它们设为空白并重建相同,您将能够通过模拟器进行调试 保持如下所示

    不要只禁用 BotId、AppID、密码,而是将它们设为空白,如下所示

    <add key="BotId" value="" />
    <add key="MicrosoftAppId" value="" />
    <add key="MicrosoftAppPassword" value="" />
    

    【讨论】:

      【解决方案4】:

      ngrok 解决方案对我不起作用。我刚刚评论了 botAuthentication,然后它在本地为我工作。

        //[BotAuthentication]
          public class MessagesController : ApiController
          {
      

      【讨论】:

      • 似乎是放弃安全以使其“工作”的糟糕解决方案。
      【解决方案5】:

      他们刚刚发布了框架的更新版本 (3.0.1),解决了 3.0.0 中引入的一些问题。尝试更新到 3.0.1,看看是否能解决您的问题(它修复了我的问题)。 source

      您可能还需要关注 this tutorial 并使用 ngrok 允许您从模拟器访问已发布的聊天机器人。该教程中有一个屏幕截图显示了模拟器中使用的 BotId,它不是必需的,因此您可以省略它。

      【讨论】:

        【解决方案6】:

        开发者在this thread上发布了答案。

        基本上你可以输入'disable'来禁用AppId/AppPassword

        【讨论】:

          【解决方案7】:

          如果您将机器人部署到云端并尝试从模拟器中对其进行测试,似乎会出现此错误。 模拟器似乎在 2 种情况下工作:

          1- 禁用安全性的本地主机(删除 appid 和应用密码)

          2- 启用安全性的 localhost(添加 appid 和 app 密码)

          两个端点仅通过 http,因为它是本地主机。如果您部署到云端,您可以在 Bot Portal 上提供的模拟器中对其进行测试。确保托管机器人的端点已启用 https。

          我按照本疑难解答指南中的步骤进行了操作,并为我修复了它:https://docs.microsoft.com/en-us/bot-framework/troubleshoot-authentication-problems

          我不明白到底是什么导致了这个问题。我注意到的是:桌面模拟器仅适用于 localhost。

          【讨论】:

            猜你喜欢
            • 2020-06-18
            • 1970-01-01
            • 2023-03-31
            • 2015-08-16
            • 2013-09-20
            • 2011-05-08
            • 1970-01-01
            • 2020-09-11
            • 2017-05-07
            相关资源
            最近更新 更多