启用 Direct Line App Service Extension 时,Bot Framework 虚拟助手模板是否存在问题

Is there an issue with Bot Framework Virtual Assistant template when Direct Line App Service Extension is enabled

我使用虚拟助手模板部署了 Azure Bot,在我启用 Direct Line App Service Extension 之前它工作正常(并且仍在 Portal 的网络聊天测试功能中工作)。

启用 DL 应用服务扩展的主要objective 是为了隔离机器人访问和保护应用服务。

我已遵循 MS 文档 https://docs.microsoft.com/en-us/azure/bot-service/bot-service-channel-directline-extension-net-bot?view=azure-bot-service-4.0 并确保每个步骤都正确配置。

确保 DL 应用服务正常工作的主要步骤是检查 https://xxx.azurewebsites.net/api/messages or https://xxx.azurewebsites.net/.bot/ url return 是否正确 json 结果 f.x: {"v":"123","k":true,"ib":true,"ob":true,"初始化":true} 但相反,我收到错误响应 400 错误请求,浏览器中出现的错误消息是:“需要升级到 WebSocket。”

我什至无法到达这里提到的故障排除指南的步骤:https://docs.microsoft.com/en-us/azure/bot-service/bot-service-channel-directline-extension-net-bot?view=azure-bot-service-4.0#troubleshooting 可以帮助解决。

正如我之前所说,Bot 仍在工作并且 url:https://xxx.azurewebsites.net 正确加载站点,可以在下面看到

感谢任何帮助

这些是我所做的更改并且有效:

参考回购示例代码: https://github.com/SSanjeevi/VirtualAssistantDirectlineExtn

Wrote detailed here.

项目文件:

 <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<NoWarn>NU1701</NoWarn>
<Version>1.0.3</Version>

BotController.cs

 private readonly IBotFrameworkHttpAdapter adapter;

 public BotController(IBotFrameworkHttpAdapter httpAdapter, IBot bot)

Startup.cs

配置服务方法:

 // Register the Bot Framework Adapter with error handling enabled.
            // Note: some classes use the base BotAdapter so we add an extra registration that pulls the same instance.
            services.AddSingleton<IBotFrameworkHttpAdapter, DefaultAdapter>();
            services.AddSingleton<BotAdapter>(sp => sp.GetService<BotFrameworkHttpAdapter>());
            // Configure channel provider

配置方法:

使用Microsoft.Bot.Builder.Integration.AspNet.Core; app.UseHsts();

            app.UseCors(x => x.AllowAnyOrigin()
                .AllowAnyHeader()
                .AllowAnyMethod());
            // Allow the bot to use named pipes.
            app.UseNamedPipes(System.Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME") + ".directline");

网络聊天:

   let directLineConnection = await window.WebChat.createDirectLineAppServiceExtension({
                domain: domainUrl,
                token
            });

附件 repo code 还包含 serilog 实现,用于在应用服务中登录日志流,如果遇到任何问题,您可以在其中查看错误日志。

关注本文并在 bot api 中实施 serilog 并部署。 https://lkgforit.com/troubleshooting-by-writing-logs-at-the-application-start-for-net-core-app-using-serilog-14a1914701af