有没有办法在没有Ngrok的情况下测试本地托管的bot?

时间:2020-04-28 12:18:20

标签: botframework

我开发了一个Microsoft Bot Framework机器人,并且希望在不使用ngrok的情况下在Bot Framework Emulator中进行本地测试。有什么办法吗?

在当前环境中,由于公司政策,我面临与代理相关的问题,并且无法在笔记本电脑中运行“ ngrok”

感谢任何线索!

4 个答案:

答案 0 :(得分:1)

尽管模拟器是测试本地机器人的好工具,但它可以作为自己的渠道,因此无法可靠地再现特定于渠道的行为。使用ngrok,您可以在任何通道上调试本地运行的机器人。如果要使用其他具有相同功能的隧道服务,请查看Azure中继和服务总线中继实用程序:https://blog.botframework.com/2019/04/16/debugging-your-locally-hosted-v4-bot-using-azure-relays/

根据您更新的问题,我认为Service Bus无法解决您的问题。您可能需要在仿真器中bypass ngrok for local addresses

答案 1 :(得分:0)

看看Bot Framework Emulator

Bot Framework Emulator是一个桌面应用程序,使bot开发人员可以测试和调试使用Bot Framework SDK构建的bot。您可以使用Bot Framework Emulator来测试在计算机上本地运行的bot或通过隧道连接到远程运行的bot。

答案 2 :(得分:0)

我猜您可能已经在使用Bot Framework Emulator,它为您提供了许多警告和设置来配置ngrok。但这不是本地测试所必需的! ngrok 将您的本地漫游器暴露在互联网上。除非您的漫游器组件无法在本地访问该漫游器,或者无法通过代理发出请求,否则在没有ngrok的情况下进行测试就可以了。

在本地进行测试时,只需在仿真器中使用一个终结点URL = http://localhost:3978/api/messages的通用终结点即可。我将其命名为“ Local Bot”,因为我对所有机器人测试都使用相同的配置。 请勿输入应用程序ID或密码。这就是让我兴奋了一阵子的原因。当您在本地时,无需执行此操作,如果您不使用ngrok,它实际上会导致您的机器人无法正常工作。

现在,您可以像往常一样在本地启动您的机器人了(例如node index.js对于Node.js机器人)。如果您位于代理之后,则可能还需要考虑这些设置。控制台中的代理设置将不起作用。如果可以的话,建议您将其设置为.env文件,这样您的代码就不会受到影响。我不确定如何为C#执行此操作,但是对于nodejs,它为HTTPS_PROXY=http://proxy.company.com:port。我发现没有必要设置HTTP代理,实际上会破坏我的机器人。

答案 3 :(得分:0)

我将具体回答您问题的这一部分。

由于公司政策,我面临与代理相关的问题,无法在笔记本电脑上运行“ ngrok”

因此,如果它们阻止代理,并且不幸的是,其中包括ngrok提供的代理级功能,则

答案很简单。您不能以最简单的形式。

我的解决方案(不是一个技术性的解决方案,而是一个务实的解决方案,想象我将如何处理您的情况)是与IT部门联系并要求他们解除限制。

或者,另一种解决方案是仅出于测试目的而在另一台计算机上运行bot,同时将代码和开发保留在公司计算机上。

同样,这不是技术解决方案,而是务实的解决方案。