提问者:小点点

启用直线应用服务扩展时,机器人框架虚拟助手模板是否存在问题


我使用虚拟助手模板部署了Azure Bot,在我启用Direct Line应用程序服务扩展之前,它一直运行良好(并且仍在Portal的Test In Web Chat功能中运行)。

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

我遵循MS留档https://learn.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或https://xxx.azurewebsites.net/.bot/url是否返回正确的json结果f. x:{"v":"123","k":true,"ib":true,"ob":true,"初始化":true}但相反,我得到了错误响应400错误请求,浏览器中出现了错误消息:"需要升级到WebSocket。"

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

任何帮助都很感激


共1个答案

匿名用户

以下是我所做的改变,并且奏效了:

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

详细写在这里。

项目文件:

 <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)

启动. 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.BotBuilder. 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代码还包含serilog实现,用于在应用服务中登录日志流,如果您遇到任何问题,您可以在其中查看错误日志。

按照本文在bot api中实现serilog并进行部署。https://www.lkgforit.com/2022/10/troubleshooting-by-writing-logs-at_15.html