.NET-client maken om te Verbinding maken naar de App Service-extensie Direct Line
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-client maakt in C# die verbinding maakt met de Direct Line App Service-extensie. Lees ook dit aanvullende artikel .NET-bot configureren voor extensie.
Vereisten
De geheime sleutel voor directe lijn ophalen
- Ga in een browser naar de Azure-portal.
- Zoek uw Azure Bot-resource in Azure Portal.
- Selecteer Kanalen onder Instellingen.
- Als dit nog niet is ingeschakeld, selecteert u het kanaal Direct Line om het in te schakelen.
- Selecteer Direct Line vanuit kanalen nadat u deze hebt ingeschakeld.
- Ga naar de sectie Sites . Er is meestal een Default_Site , tenzij u deze hebt verwijderd of de naam ervan hebt gewijzigd.
- Selecteer de knop Koppeling weergeven (oogpictogram) om een van de sleutels weer te geven. Kopieer en sla de waarde op. U gebruikt deze waarde in de sectie Een C# Direct Line-client maken.
Notitie
Deze waarde is uw Direct Line-clientgeheim dat wordt gebruikt om verbinding te maken met de Direct Line App Service-extensie. U kunt desgewenst extra sites maken en deze geheime waarden gebruiken.
Een C# Direct Line-client maken
Interacties met de Direct Line App Service-extensie gebeuren anders dan traditionele Direct Line, omdat de meeste communicatie plaatsvindt via een WebSocket. De bijgewerkte Direct Line-client bevat helperklassen voor het openen en sluiten van een WebSocket, het verzenden van opdrachten via de WebSocket en het ontvangen van activiteiten van de bot. In deze sectie wordt beschreven hoe u een eenvoudige C#-client maakt voor interactie met een bot.
Maak in Visual Studio een nieuw .NET Core-consoletoepassingsproject.
Kloon de Direct Line-client vanuit de GitHub-opslagplaats en neem deze op in uw project.
Maak een client en genereer een token met behulp van een geheim. Deze stap is hetzelfde als het bouwen van een andere C# Direct Line-client, behalve het eindpunt dat u in uw bot nodig hebt, toegevoegd aan het pad .bot/ , zoals hierna wordt weergegeven. Vergeet het einde /niet.
string endpoint = "https://<your_bot_name>.azurewebsites.net/.bot/"; string secret = "<your_bot_direct_line_secret_key>"; var tokenClient = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(secret)); var conversation = await tokenClient.Tokens.GenerateTokenForNewConversationAsync();
Enkele zaken die opvallen:
- De eindpuntwaarde is de bot-URL die u hebt verkregen bij het implementeren van de bot in Azure. Zie .NET-bot configureren voor extensie voor meer informatie.
- De geheime waarde die wordt weergegeven als YOUR_BOT_SECRET is de waarde die u eerder hebt opgeslagen in de sectie Sites.
Zodra u een gespreksverwijzing hebt van het genereren van een token, kunt u deze gespreks-id gebruiken om een WebSocket te openen met de nieuwe
StreamingConversations
eigenschap op deDirectLineClient
. Hiervoor moet u een callback maken die wordt aangeroepen wanneer de bot naar de client wil verzendenActivitySets
:public static void ReceiveActivities(ActivitySet activitySet) { if (activitySet != null) { foreach (var a in activitySet.Activities) { if (a.Type == ActivityTypes.Message && a.From.Id.Contains("bot")) { Console.WriteLine($"<Bot>: {a.Text}"); } } } }
Nu bent u klaar om de WebSocket in de
StreamingConversations
eigenschap te openen met behulp van het tokenconversationId
van het gesprek en uwReceiveActivities
callback:var client = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(conversation.Token)); await client.StreamingConversations.ConnectAsync( conversation.ConversationId, ReceiveActivities);
De client kan nu worden gebruikt om een gesprek te starten en naar de bot te verzenden
Activities
:var startConversation = await client.StreamingConversations.StartConversationAsync(); var from = new ChannelAccount() { Id = "123", Name = "Fred" }; var message = Console.ReadLine(); while (message != "end") { try { var response = await client.StreamingConversations.PostActivityAsync( startConversation.ConversationId, new Activity() { Type = "message", Text = message, From = from }); } catch (OperationException ex) { Console.WriteLine( $"OperationException when calling PostActivityAsync: ({ex.StatusCode})"); } message = Console.ReadLine(); }