Udostępnij za pośrednictwem


Tworzenie klienta platformy .NET w celu Połączenie do rozszerzenia usługi App Service direct line

Od 1 września 2023 r. zdecydowanie zaleca się zastosowanie metody tagu usługi Platformy Azure na potrzeby izolacji sieci. Wykorzystanie biblioteki DL-ASE powinno być ograniczone do wysoce specyficznych scenariuszy. Przed wdrożeniem tego rozwiązania w środowisku produkcyjnym zalecamy skonsultowanie się z zespołem pomocy technicznej w celu uzyskania wskazówek.

DOTYCZY: ZESTAW SDK w wersji 4

W tym artykule opisano sposób tworzenia klienta platformy .NET w języku C#, który łączy się z rozszerzeniem usługi App Service direct line. Przeczytaj również ten artykuł towarzyszący Konfigurowanie bota platformy .NET pod kątem rozszerzenia.

Wymagania wstępne

  • Konto platformy Azure.
  • Bot wdrożony w witrynie Azure Portal.

Pobieranie klucza tajnego direct line

  1. W przeglądarce przejdź do witryny Azure Portal.
  2. W witrynie Azure Portal znajdź zasób usługi Azure Bot .
  3. Wybierz pozycję Kanały w obszarze Ustawienia.
  4. Jeśli nie jest jeszcze włączona, wybierz kanał Direct Line , aby go włączyć.
  5. Po jej włączeniu wybierz pozycję Linia bezpośrednia z kanałów .
  6. Przejdź do sekcji Witryny . Zazwyczaj istnieje Default_Site , chyba że została usunięta lub zmieniona jego nazwa.
  7. Wybierz przycisk Pokaż łącze (ikona oka), aby wyświetlić jeden z kluczy, a następnie skopiuj i zapisz jego wartość. Użyjesz tej wartości w sekcji Tworzenie klienta direct line języka C#.

Uwaga

Ta wartość jest kluczem tajnym klienta direct line używanym do nawiązywania połączenia z rozszerzeniem usługi App Service direct line. Jeśli chcesz, możesz również utworzyć dodatkowe witryny i używać tych wartości wpisów tajnych.

Tworzenie klienta direct line w języku C#

Interakcje z rozszerzeniem usługi App Service linii bezpośredniej występują inaczej niż w przypadku tradycyjnej linii bezpośredniej, ponieważ większość komunikacji odbywa się za pośrednictwem protokołu WebSocket. Zaktualizowany klient direct line zawiera klasy pomocnicze do otwierania i zamykania protokołu WebSocket, wysyłania poleceń za pośrednictwem protokołu WebSocket i odbierania działań z powrotem z bota. W tej sekcji opisano sposób tworzenia prostego klienta języka C# do interakcji z botem.

  1. W programie Visual Studio utwórz nowy projekt aplikacji konsolowej platformy .NET Core.

  2. Sklonuj klienta direct line z repozytorium GitHub i uwzględnij go w projekcie.

  3. Utwórz klienta i wygeneruj token przy użyciu wpisu tajnego. Ten krok jest taki sam jak kompilowanie dowolnego innego klienta direct line w języku C#, z wyjątkiem punktu końcowego, którego potrzebujesz w botze, dołączonego do ścieżki .bot/ , jak pokazano poniżej. Nie zapomnij o zakończeniu /.

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

    Zapamiętaj poniższe:

    • Wartość punktu końcowego to adres URL bota uzyskany podczas wdrażania bota na platformie Azure. Aby uzyskać więcej informacji, zobacz Konfigurowanie bota platformy .NET na potrzeby rozszerzenia.
    • Wartość wpisu tajnego wyświetlana jako YOUR_BOT_SECRET to wartość zapisana wcześniej w sekcji lokacji.
  4. Po utworzeniu odwołania do konwersacji podczas generowania tokenu możesz użyć tego identyfikatora konwersacji, aby otworzyć protokół WebSocket z nową StreamingConversations właściwością w obiekcie DirectLineClient. W tym celu należy utworzyć wywołanie zwrotne, które będzie wywoływane, gdy bot chce wysłać ActivitySets do klienta:

    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. Teraz możesz otworzyć obiekt WebSocket we StreamingConversations właściwości przy użyciu tokenu konwersacji i conversationIdReceiveActivities wywołania zwrotnego:

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. Klient może teraz służyć do rozpoczęcia konwersacji i wysłania Activities do bota:

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