Använda Webbchatt med Direct Line App Service-tillägget
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 använder Webbchatt med Direct Line App Service-tillägget. Webbchatt version 4.9.1 eller senare krävs för inbyggt Direct Line App Service-tilläggsstöd.
Integrera Webbchatt-klienten
Kommentar
Adaptiva kort som skickas via Direct Line App Service-tillägget genomgår inte samma bearbetning som de som skickas via andra versioner av Direct Line-kanalen. På grund av detta har JSON-representationen av det adaptiva kortet som skickas till Webbchatt från Direct Line App Service-tillägget inte standardvärden som läggs till av kanalen om fälten utelämnas av roboten när kortet skapas.
Generellt sett är metoden densamma som tidigare. Med undantag för att i version 4.9.1 eller senare av Webbchatt finns det inbyggt stöd för att upprätta en dubbelriktad WebSocket. På så sätt kan Webbchatt ansluta direkt till Direct Line App Service-tillägget som finns med roboten i stället för att ansluta till https://directline.botframework.com/.
Direktrads-URL:en för din robot blir https://<your_app_service>.azurewebsites.net/.bot/
, direct line-slutpunkten i apptjänsttillägget.
Om du konfigurerar ditt eget domännamn, eller om roboten finns i ett nationellt Azure-moln, ersätter du i lämplig URL och lägger till /.bot/
sökvägen för att få åtkomst till Direct Line App Service-tilläggets REST-API:er.
Byt hemligheten mot en token genom att följa anvisningarna i artikeln Autentisering . I stället för att hämta en token på
https://directline.botframework.com/v3/directline/tokens/generate
genererar du token direkt från Direct Line App Service-tillägget påhttps://<your_app_service>.azurewebsites.net/.bot/v3/directline/tokens/generate
.Ett exempel som visar hur du hämtar en token finns i Webbchatt Exempel.
<!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>
Dricks
I JavaScript-robotimplementeringen kontrollerar du att WebSockets är aktiverade i filen web.config enligt nedan.
<configuration> <system.webServer> <webSocket enabled="true"/> ... </system.webServer> </configuration>