Sdílet prostřednictvím


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

  1. V prohlížeči přejděte na web Azure Portal.
  2. Na webu Azure Portal vyhledejte prostředek robota Azure.
  3. V části Nastavení vyberte Kanály.
  4. Pokud ještě není povolený, vyberte kanál Direct Line a povolte ho.
  5. Po povolení vyberte přímou čáru z kanálů .
  6. Přejděte do oddílu Weby . Obvykle existuje Default_Site , pokud jste ho odstranili nebo přejmenovali.
  7. 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.

  1. V sadě Visual Studio vytvořte nový projekt konzolové aplikace .NET Core.

  2. Naklonujte klienta Direct Line z úložiště GitHub a zahrňte ho do svého projektu.

  3. 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.
  4. 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 objektu DirectLineClient. K tomu je potřeba vytvořit zpětné volání, které se vyvolá, když robot chce odeslat ActivitySets 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}");
                }
            }
        }
    }
    
  5. Teď jste připraveni otevřít webSocket ve StreamingConversations vlastnosti pomocí tokenu conversationIdkonverzace a ReceiveActivities zpětného volání:

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