Sdílet prostřednictvím


Konfigurace robota .NET pro rozšíření

Od 1. září 2023 důrazně doporučujeme použít metodu značky služby Azure pro izolaci sítě. Využití DL-ASE by mělo být omezené na vysoce specifické scénáře. Před implementací tohoto řešení v produkčním prostředí doporučujeme poradit se s týmem podpory, kde najdete pokyny.

PLATÍ PRO: SDK v4

Tento článek popisuje, jak aktualizovat robota .NET tak, aby fungoval s pojmenovanými kanály a jak povolit rozšíření Direct Line App Service v prostředku služby Aplikace Azure Service, ve kterém jste robota nasadili.

Předpoklady

  • Účet Azure. Pokud ho ještě nemáte, vytvořte si před zahájením bezplatný účet .
  • Robot .NET nasazený v Azure.
  • Sada BOT Framework SDK pro .NET, 4.14.1 nebo novější

Povolení rozšíření Direct Line App Service

Tato část popisuje, jak povolit rozšíření Direct Line App Service pomocí klíče rozšíření služby App Service z konfigurace kanálu Direct Line vašeho robota.

Aktualizace kódu robota

Poznámka:

Balíčky NuGet Ve verzi Preview microsoft.Bot.Builder.StreamingExtensions jsou zastaralé. Počínaje verzí 4.8 sada SDK obsahuje Microsoft.Bot.Builder.Streaming obor názvů. Pokud robot dříve používal balíčky Preview, je nutné ho před provedením následujících kroků odebrat.

  1. V sadě Visual Studio otevřete projekt robota.
  2. Povolte aplikaci používat pojmenované kanály:
    1. Otevřete soubor Startup.cs.

    2. Přidejte odkaz na balíček NuGet Microsoft.Bot.Builder.Integration.AspNet.Core .

      using Microsoft.Bot.Builder.Integration.AspNet.Core;
      
    3. V metodě Configure přidejte volání metody UseNamedPipes .

      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. Uložte soubor Startup.cs.

  3. Nasaďte aktualizovaného robota do Azure.

Povolení rozšíření služby App Service direct line robota

  1. Na webu Azure Portal přejděte k prostředku robota Azure.

    1. V části Nastavení vyberte Kanály a nakonfigurujte kanály, ze které robot přijímá zprávy.
    2. Pokud ještě není povolený, vyberte kanál Direct Line ze seznamu dostupných kanálů a kanál povolte.
    3. Po povolení přímé čáry ji znovu vyberte na stránce Kanály .
    4. Vyberte kartu rozšíření služby App Service.
    5. V části Klíče rozšíření služby App Service vyberte ikonu oka vedle odpovídajícího klíče.
  2. Přejděte na domovskou stránku a v horní části stránky vyberte App Services . Případně zobrazte nabídku portálu a pak vyberte položku nabídky App Services . Azure zobrazí stránku App Services .

  3. Do vyhledávacího pole zadejte název prostředku robota Azure. Váš prostředek bude uvedený.

    Všimněte si, že pokud najedete myší na ikonu nebo položku nabídky, zobrazí se seznam naposledy zobrazených prostředků. Váš prostředek Azure Bot bude pravděpodobně uvedený.

  4. Vyberte odkaz na prostředek.

    1. V části Nastavení vyberte položku nabídky Konfigurace.

    2. Na pravém panelu přidejte následující nastavení:

      Jméno Hodnota
      DirectLineExtensionKey Hodnota klíče rozšíření služby App Service, který jste zkopírovali dříve.
      DIRECTLINE_EXTENSION_VERSION nejnovější
    3. Pokud je robot hostovaný v suverénním nebo jinak omezeném cloudu Azure, kde nemáte přístup k Azure prostřednictvím veřejného portálu, musíte také přidat následující nastavení:

      Jméno Hodnota
      DirectLineExtensionABSEndpoint Koncový bod specifický pro cloud Azure, ve které je váš robot hostovaný. Například pro cloud USGov je https://directline.botframework.azure.us/v3/extensionkoncový bod .
    4. V části Konfigurace vyberte oddíl Obecné nastavení a zapněte webové sokety.

    5. Vyberte Uložit a nastavení se uloží. Tím se restartuje služba Aplikace Azure Service.

Potvrďte konfiguraci rozšíření Direct Line a robota.

V prohlížeči přejděte na https://<your_app_service>.azurewebsites.net/.bot. Pokud je všechno správné, stránka vrátí následující obsah JSON:

    {"v":"123","k":true,"ib":true,"ob":true,"initialized":true}
  • v ukazuje verzi sestavení rozšíření Direct Line App Service.
  • K označuje, jestli rozšíření dokázalo přečíst klíč rozšíření z jeho konfigurace.
  • Inicializovaná inicializace označuje, jestli rozšíření mohlo stáhnout metadata robota z Azure AI Bot Service.
  • Ib označuje, zda rozšíření bylo schopno navázat příchozí připojení k robotovi.
  • ob označuje, jestli rozšíření mohlo navázat odchozí připojení z robota.

Řešení problému

  • Pokud jsou hodnoty ib a ob zobrazené koncovým bodem .bot false, robot a rozšíření Direct Line App Service se k sobě nemůžou připojit.

    1. Pečlivě zkontrolujte, jestli se do robota přidal kód pro použití pojmenovaných kanálů.
    2. Ověřte, že robot může spustit a spustit. Užitečné nástroje jsou Test v WebChatu, připojení dalšího kanálu, vzdálené ladění nebo protokolování.
    3. Restartujte celou službu Aplikace Azure Service, ve které je robot hostovaný, aby se zajistilo čisté spuštění všech procesů.
  • Pokud je inicializovaná hodnota koncového bodu .bot false, rozšíření Direct Line App Service nemůže ověřit klíč rozšíření služby App Service přidaný do aplikace robota Nastavení výše.

    1. Ověřte, že byla hodnota zadána správně.
    2. Přepněte na alternativní klíč rozšíření zobrazený na stránce Konfigurovat přímý řádek robota.
  • Povolit robotovi používat model hostování mimo proces; v opačném případě se zobrazí chyba HTTP 500.34 – Chyba smíšeného hostování ANCM (kde ANCM znamená modul ASP.NET Core). K této chybě dochází, protože šablona robota ve výchozím nastavení používá InProcess model hostování. Pokud chcete nakonfigurovat hostování mimo proces, podívejte se na model hostování mimo proces. Další informace naleznete v tématu Atributy elementu aspNetCore a Konfigurace pomocí web.config.

  • Pokud se pokusíte použít OAuth s rozšířením Direct Line App Service a narazíte na chybu Nejde získat AppId robota z deklarace cílové skupiny, nastavte ClaimsIdentity na AudienceClaim hodnotu BotFrameworkHttpAdapter. K tomu můžete adaptér podtřídět. Příklad:

    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)
            });
        }
    }
    

Další kroky