Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
- W przeglądarce przejdź do witryny Azure Portal.
- W witrynie Azure Portal znajdź zasób usługi Azure Bot .
- Wybierz pozycję Kanały w obszarze Ustawienia.
- Jeśli nie jest jeszcze włączona, wybierz kanał Direct Line , aby go włączyć.
- Po jej włączeniu wybierz pozycję Linia bezpośrednia z kanałów .
- Przejdź do sekcji Witryny . Zazwyczaj istnieje Default_Site , chyba że została usunięta lub zmieniona jego nazwa.
- 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.
W programie Visual Studio utwórz nowy projekt aplikacji konsolowej platformy .NET Core.
Sklonuj klienta direct line z repozytorium GitHub i uwzględnij go w projekcie.
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.
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 obiekcieDirectLineClient
. 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}"); } } } }
Teraz możesz otworzyć obiekt WebSocket we
StreamingConversations
właściwości przy użyciu tokenu konwersacji iconversationId
ReceiveActivities
wywołania zwrotnego:var client = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(conversation.Token)); await client.StreamingConversations.ConnectAsync( conversation.ConversationId, ReceiveActivities);
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(); }