【问题标题】:Unable to remotely debug deployed microsoft bot using ngrok无法使用 ngrok 远程调试已部署的 microsoft bot
【发布时间】:2025-12-19 23:10:06
【问题描述】:

我使用 Microsoft BotFramework 创建了一个聊天机器人并部署到 Azure(网络应用程序机器人)。当请求来自其他渠道(如 Skype 或 WebChat)时,我想调试机器人。我使用 ngrok 并运行以下命令来设置隧道(将 localhost 作为公共 URL)并在 Bot 设置下更新 Azure 门户中的消息传递端点 URL。

ngrok http -host-header=rewrite localhost:123789

但是当我从 webchat 或 Skype 请求时,我看到登录 ngrok 命令行(见截图),但调试器没有被触发(Chatbot 也不起作用)。如何调试我的机器人?

【问题讨论】:

    标签: .net botframework azure-bot-service direct-line-botframework


    【解决方案1】:

    为了让您通过 ngrok 发送流量,需要做一些事情。

    • 让 ngrok 运行(你这样做)。我通过 ngrok 连接时使用此命令:ngrok http 3978 -host-header="localhost:3978"
    • 在设置刀片中为 Azure 中的 ABS 机器人设置消息传递端点。应该看起来像这样:https://274d521a.ngrok.io/api/messages
    • 如果您使用模拟器,也将端点设置为上述。
    • 将机器人的 MicrosoftAppId 和 MicrosoftPassword 包含在本地机器人的设置(.env 文件或您指定的任何内容)以及模拟器中(如果使用)。

    那时你应该很高兴。

    希望有帮助!

    【讨论】:

    • 我已经完成了以上所有步骤。但是,它仍然没有命中调试器
    • 你用的是什么编辑器?无论您使用哪个,请确保您在调试器模式下运行它(例如,在 VS Code 中按 F5)。如果没有,编辑器将绕过您设置的任何断点。屏幕截图表明 ngrok 在记录 200 个状态代码时正在查看流量。
    【解决方案2】:

    以下是步骤 1) 在本地机器上启动 ngrok.exe。 2) 将 ngrok 生成的主机名复制到您的机器人频道注册的消息传递端点(例如 https://abc.io/api/messages) 3) 最重要的是在与 ngrok 一起使用的同一端口上的 IIS express 中本地运行机器人 从 Skype 或网络聊天发送消息后,机器人将在调试点捕获请求

    【讨论】: