【问题标题】:POST to the bot's endpoint failed with HTTP status 502POST 到机器人的端点失败,HTTP 状态为 502
【发布时间】:2020-03-11 15:53:24
【问题描述】:

我使用 botframework 开发了一个聊天机器人,它运行良好,部署在 azure 中也很好。

然后我添加了 KeyVault 服务并再次发布,但这次我收到 502 错误,并且在 appInsights 中此日志:

   Microsoft.Bot.Schema.BotException:
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)
   Inner exception System.Exception handled at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext:
   at Microsoft.Bot.ChannelConnector.BotAPI.ThrowOnFailedStatusCode (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)
   at Microsoft.Bot.ChannelConnector.BotAPI+<PostActivityToBotAsync>d__31.MoveNext (Microsoft.Bot.Base.ChannelConnector, Version=3.2.3.7, Culture=neutral, PublicKeyToken=null)

当我删除(注释部分)实现 KeyVault 服务的代码后,它又可以工作了:

 public static IWebHost CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .ConfigureAppConfiguration((ctx, builder) =>
                    {
                       // var keyVaultEndpoint = GetKeyVaultEndpoint();
                       // if (!string.IsNullOrEmpty(keyVaultEndpoint))
                       // {
                       //     var azureServiceTokenProvider = new AzureServiceTokenProvider();
                       //     var keyVaultClient = new KeyVaultClient(new  VaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback));
                       //    builder.AddAzureKeyVault(keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                       //  }
                    }
                ).UseStartup<Startup>()
                .Build();

        private static string GetKeyVaultEndpoint() => "https://XXX.vault.azure.net/";

这些是来自Docs的步骤和代码,我已经实现了

【问题讨论】:

    标签: azure .net-core botframework azure-keyvault


    【解决方案1】:

    这是通常,因为机器人超时。机器人需要在 15 秒内响应直线通道。您可以进行进一步的调试/记录/测试,看看这是否是这种情况下的情况。也可以使用 Ngrok 在本地调试,看是否需要。

    【讨论】:

    • 与 ngrok 我总是未经授权!我正在 Teams 和 Webchat 中进行测试
    • 所以,它适用于 ngrok :/我在发布时得到 502
    • 您是否仅在 appsettings.json 中配置了 appid/密码,或者您是否也在应用服务配置中进行了设置?我会尝试在两者中配置它,以确保在任何地方都配置它(并且有点故障排除步骤)。
    • 现在,发布成功了,但是 api/messages 返回了错误的网关.. AppId 在应用程序服务和网络应用程序机器人中是相同的.. 密码仅在应用程序服务中配置,我认为,它是配置的一个地方:) 无论如何它不是超时,因为我在 2 秒内得到错误。
    • 您能否为您的应用(转到here)创建一个新密码(客户端密码,在Certificates &amp; secrets 下)并替换配置中的密码。
    猜你喜欢
    • 1970-01-01
    • 2019-12-15
    • 2022-12-11
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2019-12-11
    • 2019-01-17
    相关资源
    最近更新 更多