Konfigurera .NET-robot för tillägg
Från och med den 1 september 2023 rekommenderar vi starkt att du använder Azure Service Tag-metoden för nätverksisolering. Användningen av DL-ASE bör begränsas till mycket specifika scenarier. Innan du implementerar den här lösningen i en produktionsmiljö rekommenderar vi att du ber supportteamet om vägledning.
GÄLLER FÖR: SDK v4
Den här artikeln beskriver hur du uppdaterar en .NET-robot så att den fungerar med namngivna pipes och hur du aktiverar Direct Line App Service-tillägget i Azure App Service-resursen där du distribuerade roboten.
Förutsättningar
- Ett Azure-konto. Om du inte redan har ett skapar du ett kostnadsfritt konto innan du börjar.
- En .NET-robot som distribuerats i Azure.
- Bot Framework SDK för .NET, 4.14.1 eller senare.
Aktivera Direct Line App Service-tillägg
I det här avsnittet beskrivs hur du aktiverar Direct Line App Service-tillägget med hjälp av App Service-tilläggsnyckeln från robotens direct line-kanalkonfiguration.
Uppdatera robotkod
Kommentar
NuGet-förhandsversionspaketen Microsoft.Bot.Builder.StreamingExtensions har blivit inaktuella. Från och med v4.8 innehåller SDK:et ett Microsoft.Bot.Builder.Streaming
namnområde. Om en robot tidigare använde förhandsversionspaketen måste de tas bort innan du följer stegen nedan.
- Öppna robotprojektet i Visual Studio.
- Tillåt att din app använder namngivna pipes:
Öppna filen Startup.cs.
Lägg till en referens till NuGet-paketet Microsoft.Bot.Builder.Integration.AspNet.Core .
using Microsoft.Bot.Builder.Integration.AspNet.Core;
Configure
I -metoden lägger du till ett anrop tillUseNamedPipes
metoden.public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseDefaultFiles() .UseStaticFiles() .UseWebSockets() // Allow the bot to use named pipes. .UseNamedPipes(System.Environment.GetEnvironmentVariable("APPSETTING_WEBSITE_SITE_NAME") + ".directline") .UseRouting() .UseAuthorization() .UseEndpoints(endpoints => { endpoints.MapControllers(); }); // app.UseHttpsRedirection(); }
Spara filen Startup.cs.
- Distribuera din uppdaterade robot till Azure.
Aktivera direct line app service-tillägget för robot
I Azure-portalen går du till din Azure Bot-resurs .
- Under Inställningar väljer du Kanaler för att konfigurera de kanaler som roboten accepterar meddelanden från.
- Om den inte redan är aktiverad väljer du direct line-kanalen i listan över tillgängliga kanaler för att aktivera kanalen.
- När du har aktiverat Direct Line väljer du den igen på sidan Kanaler .
- Välj fliken App Service-tillägg .
- Under App Service-tilläggsnycklar väljer du ögonikonen bredvid motsvarande nyckel.
Gå till startsidan och välj App Services överst på sidan. Du kan också visa portalmenyn och sedan välja menyalternativet App Services . Azure visar sidan App Services .
I sökrutan anger du ditt Azure Bot-resursnamn . Resursen visas.
Observera att om du hovra över ikonen eller menyalternativet får du en lista över dina senast visade resurser. Din Azure Bot-resurs visas troligen.
Välj resurslänken.
I avsnittet Inställningar väljer du menyalternativet Konfiguration.
Lägg till följande inställningar i den högra panelen:
Namn Värde DirectLineExtensionKey Värdet för App Service-tilläggsnyckeln som du kopierade tidigare. DIRECTLINE_EXTENSION_VERSION senaste Om roboten finns i ett nationellt eller på annat sätt begränsat Azure-moln, där du inte kommer åt Azure via den offentliga portalen, måste du också lägga till följande inställning:
Namn Värde DirectLineExtensionABSEndpoint Slutpunkten som är specifik för Azure-molnet som roboten finns i. För USGov-molnet är https://directline.botframework.azure.us/v3/extension
slutpunkten till exempel .I avsnittet Konfiguration väljer du avsnittet Allmänna inställningar och aktiverar webbsocketer.
Spara inställningarna genom att klicka på Spara. Detta startar om Azure App Service.
Bekräfta att Direct Line-tillägget och roboten har konfigurerats
Gå till https://<your_app_service>.azurewebsites.net/.bot
i webbläsaren. Om allt är korrekt returnerar sidan följande JSON-innehåll:
{"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
- v visar versionsversionen av Direct Line App Service-tillägget.
- k anger om tillägget kunde läsa en tilläggsnyckel från konfigurationen.
- initierad anger om tillägget kunde ladda ned robotmetadata från Azure AI Bot Service.
- ib anger om tillägget kunde upprätta en inkommande anslutning till roboten.
- ob anger om tillägget kunde upprätta en utgående anslutning från roboten.
Felsökning
Om värdena ib och ob som visas av .bot-slutpunkten är falska kan inte roboten och Direct Line App Service-tillägget ansluta till varandra.
- Dubbelkolla att koden för att använda namngivna pipes har lagts till i roboten.
- Bekräfta att roboten kan startas och köras. Användbara verktyg är Test i WebChat, som ansluter ytterligare en kanal, fjärrfelsökning eller loggning.
- Starta om hela Azure App Service som roboten finns i för att säkerställa en ren start av alla processer.
Om det initierade värdet för .bot-slutpunkten är falskt kan direct line App Service-tillägget inte verifiera apptjänsttilläggsnyckeln som lagts till i robotens program Inställningar ovan.
- Bekräfta att värdet har angetts korrekt.
- Växla till den alternativa tilläggsnyckeln som visas på robotens sidan Konfigurera direktrad .
Aktivera roboten för att använda out-of-process-värdmodellen. Annars får du ett HTTP-fel 500.34 – ANCM Mixed Hosting-fel (där ANCM står för ASP.NET Core Module). Det här felet beror på att robotmallen använder
InProcess
värdmodellen som standard. Information om hur du konfigurerar out-of-process hosting finns i Out-of-process hosting model (Out-of-process hosting model). Mer information finns i Attribut för aspNetCore-elementet och Konfiguration med web.config.Om du försöker använda OAuth med Direct Line App Service-tillägget och får felet "Det går inte att hämta robotens AppId från målgruppsanspråket
BotFrameworkHttpAdapter
" anger duClaimsIdentity
tillAudienceClaim
på . Om du vill göra det kan du underklassa adaptern. Till exempel:public class AdapterWithStaticClaimsIdentity : BotFrameworkHttpAdapter { public AdapterWithStaticClaimsIdentity(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, ConversationState conversationState = null) : base(configuration, logger) { // Manually create the ClaimsIdentity and create a Claim with a valid AudienceClaim and the AppID for a bot using the Direct Line App Service extension. var appId = configuration.GetSection(MicrosoftAppCredentials.MicrosoftAppIdKey)?.Value; ClaimsIdentity = new ClaimsIdentity(new List<Claim>{ new Claim(AuthenticationConstants.AudienceClaim, appId) }); } }