Dela via


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.

  1. Öppna robotprojektet i Visual Studio.
  2. Tillåt att din app använder namngivna pipes:
    1. Öppna filen Startup.cs.

    2. Lägg till en referens till NuGet-paketet Microsoft.Bot.Builder.Integration.AspNet.Core .

      using Microsoft.Bot.Builder.Integration.AspNet.Core;
      
    3. Configure I -metoden lägger du till ett anrop till UseNamedPipes 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();
      }
      
    4. Spara filen Startup.cs.

  3. Distribuera din uppdaterade robot till Azure.

Aktivera direct line app service-tillägget för robot

  1. I Azure-portalen går du till din Azure Bot-resurs .

    1. Under Inställningar väljer du Kanaler för att konfigurera de kanaler som roboten accepterar meddelanden från.
    2. Om den inte redan är aktiverad väljer du direct line-kanalen i listan över tillgängliga kanaler för att aktivera kanalen.
    3. När du har aktiverat Direct Line väljer du den igen på sidan Kanaler .
    4. Välj fliken App Service-tillägg .
    5. Under App Service-tilläggsnycklar väljer du ögonikonen bredvid motsvarande nyckel.
  2. 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 .

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

  4. Välj resurslänken.

    1. I avsnittet Inställningar väljer du menyalternativet Konfiguration.

    2. 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
    3. 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/extensionslutpunkten till exempel .
    4. I avsnittet Konfiguration väljer du avsnittet Allmänna inställningar och aktiverar webbsocketer.

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

    1. Dubbelkolla att koden för att använda namngivna pipes har lagts till i roboten.
    2. 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.
    3. 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.

    1. Bekräfta att värdet har angetts korrekt.
    2. 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åketBotFrameworkHttpAdapter" anger du ClaimsIdentity till AudienceClaim 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)
            });
        }
    }
    

Nästa steg