Freigeben über


Erstellen eines .NET-Clients zum Herstellen einer Verbindung mit der Direct Line App Service-Erweiterung

Ab dem 1. September 2023 wird dringend empfohlen, die Azure Service Tag-Methode für dieNetzwerkisolation zu verwenden. Die Verwendung von DL-ASE sollte auf hochspezifische Szenarien beschränkt sein. Vor der Implementierung dieser Lösung in einer Produktionsumgebung empfehlen wir Ihnen, Ihr Supportteam um Anleitungen zu bitten.

GILT FÜR: SDK v4

In diesem Artikel erfahren Sie, wie Sie einen .NET-Client in C# erstellen, der eine Verbindung mit der Direct Line App Service-Erweiterung herstellt. Lesen Sie auch den folgenden Begleitartikel: Konfigurieren eines .NET-Bots für die Erweiterung.

Voraussetzungen

  • Ein Azure-Konto.
  • Ein Bot, der im Azure-Portal bereitgestellt wird.

Direct Line-Geheimschlüssel erhalten

  1. Navigieren Sie in Ihrem Browser zum Azure-Portal.
  2. Suchen Sie im Azure-Portal nach Ihrer Azure Bot Service-Ressource.
  3. Wählen Sie in den Einstellungen Kanäle.
  4. Klicken Sie auf den Kanal Direct Line, um ihn zu aktivieren.
  5. Wählen Sie unter Kanäle Direct Line, nachdem Sie es aktiviert haben.
  6. Gehen Sie zum Abschnitt Websites. In der Regel ist eine Default_Site vorhanden – es sei denn, Sie haben sie gelöscht oder umbenannt.
  7. Klicken Sie auf Link anzeigen (Augensymbol), um einen der Schlüssel anzuzeigen, kopieren Sie den Wert, und speichern Sie ihn. Sie verwenden diesen Wert im Abschnitt "Erstellen eines C#-Direct Line-Clients".

Hinweis

Bei diesem Wert handelt es sich um das Direct Line-Clientgeheimnis für die Verbindungsherstellung mit der Direct Line App Service-Erweiterung. Sie können zusätzliche Websites erstellen und diese geheimen Werte ebenfalls verwenden.

Erstellen eines Direct Line-Clients in C#

Interaktionen mit der App Service-Erweiterung für Direct Line unterscheiden sich von Interaktionen mit herkömmlichen Direct Line-Instanzen, da die Kommunikation größtenteils über einen Websocket erfolgt. Der aktualisierte Direct Line-Client enthält Hilfsklassen zum Öffnen und Schließen eines Websockets, zum Senden von Befehlen über den Websocket sowie zum Empfangen von Aktivitäten vom Bot. In diesem Abschnitt erfahren Sie, wie Sie einen einfachen C#-Client für die Interaktion mit einem Bot erstellen.

  1. Erstellen Sie in Visual Studio ein neues .NET Core-Projekt des Typs Konsolenanwendung.

  2. Klonen Sie den Direct Line-Client aus dem GitHub-Repository, und fügen Sie ihn in Ihr Projekt ein.

  3. Erstellen Sie einen Client, und generieren Sie ein Token unter Verwendung eines Geheimnisses. Dieser Schritt ist identisch mit der Vorgehensweise zum Erstellen eines anderen Direct Line-Clients in C# – mit Ausnahme des Endpunkts, den Sie in Ihrem Bot verwenden müssen: Fügen Sie diesen mithilfe des Pfads .bot/ an, wie im Anschluss gezeigt. Vergessen Sie den Schrägstrich (/) am Ende nicht.

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

    Beachten Sie Folgendes:

    • Der Endpunktwert ist die Bot-URL, die Sie erhalten haben, als Sie den Bot in Azure bereitgestellt haben. Weitere Informationen finden Sie unter Konfigurieren eines .NET-Bots für die Erweiterung.
    • Der als YOUR_BOT_SECRET angezeigte Wert ist der Wert, den Sie zuvor im Abschnitt „Website“ gespeichert haben.
  4. Nachdem Sie ein Token generiert und somit über einen Konversationsverweis verfügen, können Sie diese Konversations-ID verwenden, um im Direct Line-Client (DirectLineClient) einen Websocket mit der neuen Eigenschaft StreamingConversations zu öffnen. Hierzu müssen Sie einen Rückruf erstellen, der aufgerufen wird, wenn der Bot Aktivitätssätze (ActivitySets) an den Client senden möchte:

    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. Nun können Sie unter Verwendung des Konversationstokens conversationId und Ihres Rückrufs vom Typ ReceiveActivities den Websocket für die Eigenschaft StreamingConversations öffnen:

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. Daraufhin kann der Client verwendet werden, um eine Konversation zu beginnen und Aktivitäten (Activities) an den Bot zu senden:

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