我正在研究Bot框架技术,最近微软宣布了bot的新版本(V3)。 我已经开发了使用旧版本的机器人,现在我正在尝试将我的机器人升级到更新版本。 为了一切正常,但在将我的机器人发布到azure之后,然后通过使用我试图在机器人框架通道模拟器(3.0.0.54)中测试的发布URL,它总是给出“500,内部服务器错误”。 但是当我将skype频道添加到我的机器人中时它会正常工作。
唯一的问题是当我在机器人框架通道模拟器中使用我的机器人应用程序的已发布URL进行测试时,只有我将错误视为“内部服务器错误”。
我认为最新版本的bot框架频道模拟器可能存在问题
答案 0 :(得分:4)
解压缩文件并使用命令提示符运行以下命令
ngrok http -host-header =重写9000
注意:ngrok应处于运行状态。如果您在下次尝试时遇到相同的500错误,请从步骤1开始。 欲了解更多参考资料.https // docs.botframework.com / en-us / tools / bot-framework-emulator /#navtitle
答案 1 :(得分:2)
我发现除了控制器中的Post之外,单个公共方法会使Bot Framework抛出500个InternalServerError。只需在您的控制器中保留私有和公开发布方法即可修复它。
答案 2 :(得分:1)
开始调试,你只是不要禁用appid和密码,而是将它们空白并重建相同,你将能够通过模拟器进行调试 保持如下所示
不要只是禁用BotId,AppID,密码而是将它们留空,如下所示
<add key="BotId" value="" />
<add key="MicrosoftAppId" value="" />
<add key="MicrosoftAppPassword" value="" />
答案 3 :(得分:1)
ngrok解决方案对我不起作用。我刚评论了botAuthentication,然后它在本地工作。
//[BotAuthentication]
public class MessagesController : ApiController
{
答案 4 :(得分:0)
他们刚刚发布了框架的更新版本(3.0.1),解决了3.0.0引入的一些问题。尝试更新到3.0.1并查看是否可以解决您的问题(它修复了我的问题)。 source
您可能还需要关注this tutorial并使用ngrok来允许您从模拟器访问已发布的聊天机器人。该教程中有一个屏幕截图,显示了模拟器中使用的BotId,它不是必需的,因此您可以省略它。
答案 5 :(得分:0)
开发者在this thread上发布了答案。
基本上你可以输入'disable'来禁用AppId / AppPassword
答案 6 :(得分:0)
似乎如果您将机器人部署到云端并尝试从模拟器进行测试,则会出现此错误。 模拟器似乎在两种情况下工作:
1-已禁用安全性的Localhost(删除appid和app密码)
启用安全性的2- localhost(添加appid和app密码)
两个端点都只通过http,因为它是localhost。如果部署到云,则可以在Bot Portal上提供的模拟器中对其进行测试。确保托管机器人的端点启用了https。
我按照此问题排查指南中的步骤操作,并为我修复了它:https://docs.microsoft.com/en-us/bot-framework/troubleshoot-authentication-problems
我不明白究竟是什么导致了这个问题。我注意到的是:桌面模拟器仅适用于localhost。