Bot Framework模拟器错误:POST 500直线postActivity

时间:2019-01-03 21:22:00

标签: bots direct-line-botframework webbot

我正在尝试将Microsoft Bot Emulator连接到Azure中的远程机器人。

enter image description here 当我在本地运行我的机器人时,它可以按预期工作,但是当我在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      

预期:

  1. 如何与在bot框架模拟器中设置端点的远程bot连接?
  2. 在哪里可以找到“ **下图所示的“ Azure Bot服务配置”详细信息”?

1 个答案:

答案 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的情况下,您将可以通过仿真器进行连接。

希望有帮助!