部署在天蓝色的Bot突然变得无响应

时间:2018-07-06 10:50:16

标签: azure botframework

我有一个使用Bot Framework在Azure上部署的机器人。代码没有任何改变。但是今天,该机器人变得完全没有反应。我尝试发送的任何消息都会始终显示“无法发送。重试?”。信息。过去,有时我可以看到该漫游器回复一个或其他消息的速度较慢,但​​是这次是另一回事,该漫游器完全静音。在检查Azure仪表板上的Web聊天频道的问题时,我可以看到这些错误都是相同的:“将此消息发送到您的机器人时出错:HTTP状态代码GatewayTimeout”。我可能做错了什么? 为了防患于未然,该机器人使用了LUIS服务以及同时部署在azure中的数据库。试图分别访问这些服务,并且它们工作良好且响应时间很好。无论如何,我认为Bot程序无法达到与任何人进行通信的目的。我什至没有到达第一个IDialogContext.PostAsync(),这是根对话框中StartAsync()方法的第一条指令。非常感谢您的帮助

2 个答案:

答案 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);
}

测试结果:

enter image description here

第二,如果您的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