Bot 是远程的,但回调 URL 是 localhost

Posted

技术标签:

【中文标题】Bot 是远程的,但回调 URL 是 localhost【英文标题】:Bot is remote but callback URL is localhost 【发布时间】:2018-03-07 11:25:12 【问题描述】:

我想用 botframework 模拟器调试我的 azure 机器人。 每当我尝试连接时,模拟器都会告诉我机器人是远程的,但回调 URL 是 localhost。 我该如何改变呢? 它还抱怨我的 ngrok 设置,但我相当确定它们一切正常,因为我下载了 ngrok 并将正确的路径粘贴到设置中的 .exe。

我该如何解决这个问题?

请注意,我终于收到了内部服务器错误。

我在机器人框架页面中的设置(由 JustAShadow 建议)是:

【问题讨论】:

您可能错误地配置了您的机器人。您能否检查并分享您的机器人“设置”页面的屏幕截图:dev.botframework.com/bots 和机器人应用程序:apps.dev.microsoft.com 【参考方案1】:

您在模拟器上的 URL 框中输入的 URL 应该用于本地调试。即,您在本地运行您的机器人,获取该本地运行机器人的 URL,然后将该 localhost url 添加到您的机器人模拟器。您正在 bot 框架模拟器中的 bot 框架中模拟实际的 bot!

模拟器是为了模拟 Bot 框架 ENV 而构建的,因此当您在本地运行机器人时,它会了解您应该在哪种环境下运行。

IE 如果你有 DocumentDb 模拟器,你不会将它连接到真正的数据库,它只是假装是 azure,而不是调试 Azure

【讨论】:

您能否举例说明正确的 URL 应该是什么样的?我太笨了,还不明白你的解释。 不确定您的意思?你在本地运行你的机器人了吗?如果它正在运行,它会告诉你它在哪里运行?听起来你还没有尝试在本地运行,以便在本地机器人模拟器中调试 当我在本地运行时,机器人模拟器告诉我它无法发送。最近我通过 Visual Studio 提供的模板创建的所有机器人都会发生这种情况。相比之下,当我从 Github 下载一个机器人应用程序项目并让它在 localhost 上运行时,机器人会回答我类似“错误。消息类型是 text/plain”。 Windows 手机模拟器与 UWP 模板或 Xamarin 模板完美配合。这只是机器人模板应用程序;奇怪,不是吗?我想我会尝试再次将模板 zip 下载到 Visual Studio 模板文件夹中。 问题依然存在。【参考方案2】:

在发布时确保 web.config 中的 MSID 和 PW 是正确的

【讨论】:

是的。几个小时后,我发现 Botframework 模拟器根本无法在 Proxy 后面正常运行。 @7gegenTheben 我不确定您的问题是如何解决的,因为您上面的最后一条评论说这是一个代理问题,但您标记为答案的响应根本没有提到代理。你能解释一下吗?我有一个类似的问题,我发布了 here 并正在寻找解决方案。 @nam 我记得我必须在公司网络之外进行测试,因为它为所有网络连接使用代理。我在 github 上的 Botframwork 仿真器项目中询问为什么调试工具无法处理代理,并被回答为错误。所以,我回家了,带着我的私人笔记本电脑和我的私人 WLAN,我只使用 botframework 模拟器字段中的 localhost 地址进行了调试。您可以通过安装 VS 并从 azure 下载 bot 项目作为源代码来做到这一点。在 VS 中选择 bot 项目并单击运行,然后启动 Emulator。通过 VS 发布部分将更改上传到 azure

以上是关于Bot 是远程的,但回调 URL 是 localhost的主要内容,如果未能解决你的问题,请参考以下文章

Telegram bot 消息读取回调

无效的 webhook url 在 Telegram bot 中指定错误

FB Messenger Bot:Webhook更新未送达

Rails Rspec / Factory Bot没有调用模型before_save回调

Music discord.js bot:“url”参数必须是字符串类型

Instagram 无法访问回调 URL