我有一个使用Bot Framework在Azure上部署的机器人。代码没有任何改变。但是今天,该机器人变得完全没有反应。我尝试发送的任何消息都会始终显示“无法发送。重试?”。信息。过去,有时我可以看到该漫游器回复一个或其他消息的速度较慢,但是这次是另一回事,该漫游器完全静音。在检查Azure仪表板上的Web聊天频道的问题时,我可以看到这些错误都是相同的:“将此消息发送到您的机器人时出错:HTTP状态代码GatewayTimeout”。我可能做错了什么? 为了防患于未然,该机器人使用了LUIS服务以及同时部署在azure中的数据库。试图分别访问这些服务,并且它们工作良好且响应时间很好。无论如何,我认为Bot程序无法达到与任何人进行通信的目的。我什至没有到达第一个IDialogContext.PostAsync(),这是根对话框中StartAsync()方法的第一条指令。非常感谢您的帮助
答案 0 :(得分:1)
错误完全相同“将此消息发送到您的机器人时出错:HTTP状态代码GatewayTimeout”。我可能在做错什么?
首先,我对以下示例进行测试,如果请求需要很长时间才能获得响应,则可能会导致“网关超时”问题。您可以通过漫游器应用程序打开Application Insights来跟踪从漫游器发送的请求,并检查某些请求是否花费太长时间。
示例:
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
// calculate something for us to return
int length = (activity.Text ?? string.Empty).Length;
if (activity.Text.ToLower().Contains("timeout test"))
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxxx/api/values/xxx");
request.Method = "GET";
request.ContentType = "application/json";
//I set a 30s delay for returning response in my external api
var response = request.GetResponse();
string content = string.Empty;
using (var stream = response.GetResponseStream())
{
using (var sr = new StreamReader(stream))
{
content = sr.ReadToEnd();
}
}
activity.Text = content.ToString();
// return our reply to the user
await context.PostAsync($"API returned {activity.Text}");
}
else
{
// return our reply to the user
await context.PostAsync($"You sent {activity.Text} which was {length} characters");
}
context.Wait(MessageReceivedAsync);
}
测试结果:
第二,如果您的Bot Service pricing tier是免费的,请检查您的漫游器服务是否达到每月10,000条消息的限制(对于高级频道)。在this SO thread中,另一位社区成员报告达到该限制将导致“网关超时”错误。
此外,如果可能,还可以在Azure门户上创建新的bot服务,然后将bot应用程序发布到您指定为消息传递终结点的相应新Azure Web应用程序,并检查bot应用程序是否可以按预期在新的Web应用程序上正常工作。 Azure环境。
注意:
我还检查了Azure服务的status history,发现:
6/27 RCA-应用服务-西欧
影响摘要:在2018年6月27日世界标准时间16:00至2018年6月28日世界标准时间13:00之间,西欧部分使用App Service的客户可能已收到HTTP 500级响应代码,超时或高延迟访问该区域中托管的App Service(Web,Mobile和API Apps)部署时。
6/25 RCA-多种服务-美国中南部
影响摘要:2018年6月25日世界标准时间19:40到20:52之间,美国中南部的一部分客户可能遇到与该地区托管的资源和/或500级错误相关的困难。虚拟机可能已意外重启。受影响的服务包括:存储,虚拟机,密钥库,站点恢复,机器学习,Cloud Shell,Logic Apps,Redis缓存,Visual Studio Team Services,服务总线,ExpressRoute,Application Insights,备份,联网,API管理,App Service( Linux)和应用服务。
不确定上述问题是否导致了此问题,如果您尝试了所有可以解决该问题的方法,但是您的漫游器服务问题仍未得到缓解,则可以尝试create support request进行报告
答案 1 :(得分:0)
尝试在消息控制器中启用[botauthentication]。也尝试打开从IIS服务器到Internet的传出连接。顺便说一句,还有其他一些问题,例如:
1)您的web.config文件包含与您发布的ID不匹配的应用ID。
2)您的服务器时间不正确。令牌的有效期为20分钟(颁发令牌之前5分钟,之后15分钟)。服务器时间可能不同吗?
3)您的漫游器在检索签名密钥列表时遇到问题。检查以确保您可以访问以下URL:
https://api.aps.skype.com/v1/keys
https://login.botframework.com/v1/.well-known/keys
您也可以按照此问题检查操作是否正确https://github.com/Microsoft/BotBuilder/issues/4389