Použití Webový chat s rozšířením Direct Line App Service

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 používat Webový chat s rozšířením Direct Line App Service. pro nativní podporu rozšíření Direct Line App Service se vyžaduje Webový chat verze 4.9.1 nebo novější.

Integrace klienta Webový chat

Poznámka:

Adaptivní karty odeslané prostřednictvím rozšíření Direct Line App Service neprocházejí stejným zpracováním jako ty odeslané prostřednictvím jiných verzí kanálu Direct Line. Vzhledem k tomu, že reprezentace KÓDU JSON adaptivní karty odesílaná do Webový chat z rozšíření Direct Line App Service nebude obsahovat výchozí hodnoty přidané kanálem, pokud jsou pole při vytvoření karty vynechána robotem.

Obecně řečeno, přístup je stejný jako předtím. S výjimkou, že ve verzi 4.9.1 nebo novější Webový chat existuje integrovaná podpora pro vytvoření obousměrné webSocket. To umožňuje Webový chat přímé připojení k rozšíření Direct Line App Service hostované s vaším robotem místo připojení k https://directline.botframework.com/. Adresa URL direct line vašeho robota bude https://<your_app_service>.azurewebsites.net/.bot/koncový bod Direct Line v rozšíření služby App Service. Pokud nakonfigurujete vlastní název domény nebo je robot hostovaný v suverénním cloudu Azure, nahraďte příslušnou adresu URL a připojte /.bot/ cestu pro přístup k rozhraním REST API rozšíření Direct Line App Service.

  1. Pomocí pokynů v článku Ověřování si můžete tajný klíč tokenu vyměnit. Místo získání tokenu vygenerujete https://directline.botframework.com/v3/directline/tokens/generatetoken přímo z rozšíření Direct Line App Service na adrese https://<your_app_service>.azurewebsites.net/.bot/v3/directline/tokens/generate.

  2. Příklad, který ukazuje, jak načíst token, viz Webový chat Ukázky.

    <!DOCTYPE html>
    <html lang="en-US">
      <head>
        <title>Web Chat</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <script
          crossorigin="anonymous"
          src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"
        ></script>
        <style>
          html,
          body {
            background-color: #f7f7f7;
            height: 100%;
          }
    
          body {
            margin: 0;
          }
    
          #webchat {
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.05);
            height: 100%;
            margin: auto;
            max-width: 480px;
            min-width: 360px;
          }
        </style>
      </head>
      <body>
        <div id="webchat" role="main"></div>
        <script>
          (async function() {
            <!-- NOTE: You should replace the below fetch with a call to your own token service as described in step 2 above, to avoid exposing your channel secret in client side code. -->
            const res = await fetch('https://<your_app_service>.azurewebsites.net/.bot/v3/directline/tokens/generate', 
              {
                "method": "POST",
                "headers": {
                  "Authorization": "Bearer " + "<Your Bot's Direct Line channel secret>"
                },
                "body": "{'user': {'id': 'my_test_id', 'name': 'my_test_name'}}"
              }
            );
            const { token } = await res.json();
    
            window.WebChat.renderWebChat(
              {
                directLine: await window.WebChat.createDirectLineAppServiceExtension({
                  domain: 'https://<your_app_service>.azurewebsites.net/.bot/v3/directline',
                  token
                })
              },
              document.getElementById('webchat')
            );
    
            document.querySelector('#webchat > *').focus();
          })().catch(err => console.error(err));
        </script>
      </body>
    </html>
    

    Tip

    V implementaci javascriptového robota se ujistěte, že jsou webSockets povolené v souboru web.config , jak je znázorněno níže.

    <configuration>
        <system.webServer>
            <webSocket enabled="true"/>
            ...
        </system.webServer>
    </configuration>