我使用虚拟助手模板部署了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可以帮助解决。
任何帮助都很感激
以下是我所做的改变,并且奏效了:
参考回购与示例代码: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