.NET-bot configureren voor extensie
Vanaf 1 september 2023 is het raadzaam om de Azure Service Tag-methode te gebruiken voor netwerkisolatie. Het gebruik van DL-ASE moet worden beperkt tot zeer specifieke scenario's. Voordat u deze oplossing in een productieomgeving implementeert, raden we u aan uw ondersteuningsteam te raadplegen voor hulp.
VAN TOEPASSING OP: SDK v4
In dit artikel wordt beschreven hoe u een .NET-bot bijwerkt om te werken met benoemde pijpen en hoe u de Direct Line App Service-extensie inschakelt in de Azure-app Service-resource waarin u uw bot hebt geïmplementeerd.
Vereisten
- Een Azure-account. Als u nog geen account hebt, maakt u een gratis account voordat u begint.
- Een .NET-bot die is geïmplementeerd in Azure.
- Bot Framework SDK voor .NET, 4.14.1 of hoger.
Direct Line App Service-extensie inschakelen
In deze sectie wordt beschreven hoe u de Direct Line App Service-extensie inschakelt met behulp van de App Service-extensiesleutel van de configuratie van het Direct Line-kanaal van uw bot.
Botcode bijwerken
Notitie
De NuGet Preview-pakketten Microsoft.Bot.Builder.StreamingExtensions zijn afgeschaft. Vanaf v4.8 bevat de SDK een Microsoft.Bot.Builder.Streaming
naamruimte. Als een bot eerder gebruikmaakt van de preview-pakketten, moet deze worden verwijderd voordat u de onderstaande stappen uitvoert.
- Open uw botproject in Visual Studio.
- Sta toe dat uw app benoemde pijpen gebruikt:
Open het bestand Startup.cs .
Voeg een verwijzing toe naar het NuGet-pakket Microsoft.Bot.Builder.Integration.AspNet.Core .
using Microsoft.Bot.Builder.Integration.AspNet.Core;
Voeg in de
Configure
methode een aanroep toe aan deUseNamedPipes
methode.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(); }
Sla het bestand Startup.cs op.
- Implementeer uw bijgewerkte bot in Azure.
App Service-extensie voor bot Direct Line inschakelen
Ga in Azure Portal naar uw Azure Bot-resource .
- Selecteer onder Instellingen Kanalen om de kanalen te configureren waaruit uw bot berichten accepteert.
- Als dit nog niet is ingeschakeld, selecteert u het kanaal Direct Line in de lijst met beschikbare kanalen om het kanaal in te schakelen.
- Nadat u Direct Line hebt ingeschakeld, selecteert u deze opnieuw op de pagina Kanalen.
- Selecteer het tabblad App Service-extensie .
- Selecteer onder App Service-extensiesleutels het oogpictogram naast de bijbehorende sleutel.
Ga naar de startpagina en selecteer App Services bovenaan de pagina. U kunt ook het portalmenu weergeven en vervolgens het menu-item App Services selecteren. In Azure wordt de pagina App Services weergegeven.
Voer in het zoekvak de naam van uw Azure Bot-resource in. Uw resource wordt weergegeven.
Als u de muisaanwijzer boven het pictogram of het menu-item houdt, krijgt u een lijst met de laatst bekeken resources. Uw Azure Bot-resource wordt waarschijnlijk vermeld.
Selecteer de resourcekoppeling.
Selecteer in de sectie Instellingen het menu-item Configuratie.
Voeg in het rechterdeelvenster de volgende instellingen toe:
Naam Waarde DirectLineExtensionKey De waarde van de App Service-extensiesleutel die u eerder hebt gekopieerd. DIRECTLINE_EXTENSION_VERSION nieuwste Als uw bot wordt gehost in een onafhankelijke of anderszins beperkte Azure-cloud, waar u geen toegang hebt tot Azure via de openbare portal, moet u ook de volgende instelling toevoegen:
Naam Waarde DirectLineExtensionABSEndpoint Het eindpunt dat specifiek is voor de Azure-cloud waarin uw bot wordt gehost. Voor de USGov-cloud is het eindpunt https://directline.botframework.azure.us/v3/extension
bijvoorbeeld .Selecteer in de sectie Configuratie de sectie Algemene instellingen en schakel websockets in.
Selecteer Opslaan om de instellingen op te slaan. Hiermee start u de Azure-app-service opnieuw op.
Controleer of de Direct Line-extensie en de bot zijn geconfigureerd
Ga in uw browser naar https://<your_app_service>.azurewebsites.net/.bot
. Als alles klopt, retourneert de pagina de volgende JSON-inhoud:
{"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
- v toont de buildversie van de Direct Line App Service-extensie.
- k geeft aan of de extensie een extensiesleutel kan lezen uit de configuratie.
- geïnitialiseerd geeft aan of de extensie metagegevens van de bot kan downloaden van Azure AI Bot Service.
- ib geeft aan of de extensie een binnenkomende verbinding met de bot tot stand kon brengen.
- ob geeft aan of de extensie een uitgaande verbinding van de bot tot stand kon brengen.
Problemen oplossen
Als de ib - en ob-waarden die door het .bot-eindpunt worden weergegeven onwaar zijn, kunnen de bot en de Direct Line App Service-extensie geen verbinding maken met elkaar.
- Controleer de code voor het gebruik van benoemde pijpen is toegevoegd aan de bot.
- Controleer of de bot kan worden opgestart en uitgevoerd. Handige hulpprogramma's zijn Testen in WebChat, verbinding maken met een extra kanaal, externe foutopsporing of logboekregistratie.
- Start de hele Azure-app Service binnen de bot opnieuw om ervoor te zorgen dat alle processen worden opgeschoond.
Als de geïnitialiseerde waarde van het .bot-eindpunt onwaar is, kan de App Service-extensie direct line niet valideren of de App Service-extensiesleutel die is toegevoegd aan de toepassings-Instellingen van de bot hierboven.
- Controleer of de waarde juist is ingevoerd.
- Schakel over naar de alternatieve extensiesleutel die wordt weergegeven op de pagina Directe regel configureren van uw bot.
De bot in staat stellen om het out-of-process hostingmodel te gebruiken; Anders ontvangt u een HTTP-fout 500.34 - ANCM Mixed Hosting-fout (waarbij ANCM staat voor ASP.NET Core Module). Deze fout treedt op omdat de botsjabloon standaard het
InProcess
hostingmodel gebruikt. Zie het out-of-process hostingmodel als u geen proceshosting wilt configureren. Zie Kenmerken van het aspNetCore-element en configuratie met web.config voor meer informatie.Als u OAuth probeert te gebruiken met de Direct Line App Service-extensie en de fout 'Kan de bot AppId niet ophalen uit de doelgroepclaim', ingesteld
ClaimsIdentity
AudienceClaim
op deBotFrameworkHttpAdapter
. Hiervoor kunt u de adapter subklassen geven. Bijvoorbeeld: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) }); } }