Vytvoření klienta .NET pro Připojení rozšíření Direct Line App Service
Od 1. září 2023 důrazně doporučujeme použít metodu značky služby Azure pro izolaci sítě. Využití DL-ASE by mělo být omezené na vysoce specifické scénáře. Před implementací tohoto řešení v produkčním prostředí doporučujeme poradit se s týmem podpory, kde najdete pokyny.
PLATÍ PRO: SDK v4
Tento článek popisuje, jak vytvořit klienta .NET v jazyce C#, který se připojuje k rozšíření Direct Line App Service. Přečtěte si také tento doprovodný článek Konfigurace robota .NET pro rozšíření.
Předpoklady
- Účet Azure.
- Robot nasazený na webu Azure Portal.
Získání tajného klíče Direct Line
- V prohlížeči přejděte na web Azure Portal.
- Na webu Azure Portal vyhledejte prostředek robota Azure.
- V části Nastavení vyberte Kanály.
- Pokud ještě není povolený, vyberte kanál Direct Line a povolte ho.
- Po povolení vyberte přímou čáru z kanálů .
- Přejděte do oddílu Weby . Obvykle existuje Default_Site , pokud jste ho odstranili nebo přejmenovali.
- Výběrem tlačítka Zobrazit odkaz (ikona oka) zobrazte jeden z klíčů a pak zkopírujte a uložte jeho hodnotu. Tuto hodnotu použijete v části Vytvoření klienta direct line jazyka C#.
Poznámka:
Tato hodnota je tajný klíč klienta Direct Line použitý k připojení k rozšíření Direct Line App Service. Pokud chcete, můžete vytvořit další weby a použít i tyto tajné hodnoty.
Vytvoření klienta direct line jazyka C#
Interakce s rozšířením Direct Line App Service se liší od tradiční přímé linky, protože většina komunikace probíhá přes WebSocket. Aktualizovaný klient Direct Line obsahuje pomocné třídy pro otevření a zavření protokolu WebSocket, odesílání příkazů prostřednictvím protokolu WebSocket a příjem aktivit zpět z robota. Tato část popisuje, jak vytvořit jednoduchého klienta V# pro interakci s robotem.
V sadě Visual Studio vytvořte nový projekt konzolové aplikace .NET Core.
Naklonujte klienta Direct Line z úložiště GitHub a zahrňte ho do svého projektu.
Vytvořte klienta a vygenerujte token pomocí tajného kódu. Tento krok je stejný jako sestavení jakéhokoli jiného klienta direct line jazyka C# s výjimkou koncového bodu, který potřebujete použít ve svém robotovi, připojeným k cestě .bot/ , jak je znázorněno dále. Nezapomeňte na konec /.
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();
Všimněte si následujícího:
- Hodnota koncového bodu je adresa URL robota, kterou jste získali při nasazení robota do Azure. Další informace najdete v tématu Konfigurace robota .NET pro rozšíření.
- Hodnota tajného kódu zobrazená jako YOUR_BOT_SECRET je hodnota, kterou jste si uložili dříve z oddílu weby.
Jakmile budete mít odkaz na konverzaci z vygenerování tokenu, můžete pomocí tohoto ID konverzace otevřít WebSocket s novou
StreamingConversations
vlastností v objektuDirectLineClient
. K tomu je potřeba vytvořit zpětné volání, které se vyvolá, když robot chce odeslatActivitySets
klientovi: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}"); } } } }
Teď jste připraveni otevřít webSocket ve
StreamingConversations
vlastnosti pomocí tokenuconversationId
konverzace aReceiveActivities
zpětného volání:var client = new DirectLineClient( new Uri(endpoint), new DirectLineClientCredentials(conversation.Token)); await client.StreamingConversations.ConnectAsync( conversation.ConversationId, ReceiveActivities);
Klient se teď dá použít k zahájení konverzace a odeslání
Activities
robotovi: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(); }