Delen via


.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

  • Een Azure-account.
  • Een bot die is geïmplementeerd in Azure Portal.

De geheime sleutel voor directe lijn ophalen

  1. Ga in een browser naar de Azure-portal.
  2. Zoek uw Azure Bot-resource in Azure Portal.
  3. Selecteer Kanalen onder Instellingen.
  4. Als dit nog niet is ingeschakeld, selecteert u het kanaal Direct Line om het in te schakelen.
  5. Selecteer Direct Line vanuit kanalen nadat u deze hebt ingeschakeld.
  6. Ga naar de sectie Sites . Er is meestal een Default_Site , tenzij u deze hebt verwijderd of de naam ervan hebt gewijzigd.
  7. 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.

  1. Maak in Visual Studio een nieuw .NET Core-consoletoepassingsproject.

  2. Kloon de Direct Line-client vanuit de GitHub-opslagplaats en neem deze op in uw project.

  3. 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.
  4. 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 de DirectLineClient. Hiervoor moet u een callback maken die wordt aangeroepen wanneer de bot naar de client wil verzenden ActivitySets :

    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}");
                }
            }
        }
    }
    
  5. Nu bent u klaar om de WebSocket in de StreamingConversations eigenschap te openen met behulp van het token conversationIdvan het gesprek en uw ReceiveActivities callback:

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. 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();
    }