我正在尝试将Microsoft Bot Emulator连接到Azure中的远程机器人。
当我在本地运行我的机器人时,它可以按预期工作,但是当我在Azure中设置新配置以连接到“ Web应用程序机器人”时,出现以下错误
[16:05:17]Error: The bot is remote, but the service URL is localhost.
Without tunneling software you will not receive replies.
[16:05:17]Connecting to bots hosted remotely
[16:05:17]Edit ngrok settings
[16:05:17]->messagehi
[16:05:17] POST 500 directline.postActivity
我在ngrok设置中尝试了不同的选项,并关注了这篇文章(Bot Emulator gets POST 500 directline.postActivity)。但是,我仍然遇到错误。以下是模拟器inspector-json中的日志详细信息。
"{\r\n \"message\": \"An error has occurred.\",\r\n \"exceptionMessage\":
\"An error occurred while sending the request.\",\r\n \"exceptionType\":
\"System.Net.Http.HttpRequestException\",\r\n \"stackTrace\": \" at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task <>c__DisplayClass11_0.<<SendAsync>b__1>d.MoveNext()\\r\\n--- End of stack
trace from previous location where exception was thrown ---\\r\\n at
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task
task)\\r\\n
预期:
答案 0 :(得分:0)
您不能在仿真器中为您的机器人(“ xxxxxx.azurewebsites.ner / api / messages”)使用Azure提供的消息传递终结点。仿真器用于测试本地存储的机器人。但是,您可以通过ngrok隧道将本地bot连接到Azure托管的bot,以访问外部服务和渠道。这使您可以在将机器人发布到Azure之前测试代码。
首先,使用ngrok创建一个隧道(您可以根据需要更改端口)。要创建该隧道,请运行以下cli命令:
ngrok http 3978 -host-header="localhost:3978"
这将产生一个类似于以下内容的转发(即隧道)地址:
https://h8g56dq.ngrok.io
复制“ https”地址。
接下来,使用上面的地址替换附加了“ api / messages”的Azure托管机器人中的消息传递终结点。输入后应如下所示:
https://h8g56dg.ngrok.io/api/messages
在“模拟器”中,将地址设置为上述地址。还要输入您的AppId和AppPassword,否则您将收到401未经授权的状态代码。
此时,在运行本地bot的情况下,您将可以通过仿真器进行连接。
希望有帮助!