Delen via


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

  1. Open uw botproject in Visual Studio.
  2. Sta toe dat uw app benoemde pijpen gebruikt:
    1. Open het bestand Startup.cs .

    2. Voeg een verwijzing toe naar het NuGet-pakket Microsoft.Bot.Builder.Integration.AspNet.Core .

      using Microsoft.Bot.Builder.Integration.AspNet.Core;
      
    3. Voeg in de Configure methode een aanroep toe aan de UseNamedPipes 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();
      }
      
    4. Sla het bestand Startup.cs op.

  3. Implementeer uw bijgewerkte bot in Azure.

App Service-extensie voor bot Direct Line inschakelen

  1. Ga in Azure Portal naar uw Azure Bot-resource .

    1. Selecteer onder Instellingen Kanalen om de kanalen te configureren waaruit uw bot berichten accepteert.
    2. Als dit nog niet is ingeschakeld, selecteert u het kanaal Direct Line in de lijst met beschikbare kanalen om het kanaal in te schakelen.
    3. Nadat u Direct Line hebt ingeschakeld, selecteert u deze opnieuw op de pagina Kanalen.
    4. Selecteer het tabblad App Service-extensie .
    5. Selecteer onder App Service-extensiesleutels het oogpictogram naast de bijbehorende sleutel.
  2. 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.

  3. 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.

  4. Selecteer de resourcekoppeling.

    1. Selecteer in de sectie Instellingen het menu-item Configuratie.

    2. 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
    3. 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/extensionbijvoorbeeld .
    4. Selecteer in de sectie Configuratie de sectie Algemene instellingen en schakel websockets in.

    5. 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.

    1. Controleer de code voor het gebruik van benoemde pijpen is toegevoegd aan de bot.
    2. 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.
    3. 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.

    1. Controleer of de waarde juist is ingevoerd.
    2. 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 de BotFrameworkHttpAdapter. 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)
            });
        }
    }
    

Volgende stappen