Dela via


Skapa .NET-klient för att Anslut till Direct Line App Service-tillägget

Från och med den 1 september 2023 rekommenderar vi starkt att du använder Azure Service Tag-metoden för nätverksisolering. Användningen av DL-ASE bör begränsas till mycket specifika scenarier. Innan du implementerar den här lösningen i en produktionsmiljö rekommenderar vi att du ber supportteamet om vägledning.

GÄLLER FÖR: SDK v4

Den här artikeln beskriver hur du skapar en .NET-klient i C# som ansluter till Direct Line App Service-tillägget. Läs även den här tilläggsartikeln Konfigurera .NET-robot för tillägg.

Förutsättningar

Hämta den direkta radhemlighetsnyckeln

  1. I en webbläsare går du till Azure-portalen.
  2. Leta upp din Azure Bot-resurs i Azure-portalen.
  3. Välj Kanaler under Inställningar.
  4. Om den inte redan är aktiverad väljer du direct line-kanalen för att aktivera den.
  5. Välj Direktrad från Kanaler när du har aktiverat den.
  6. Gå till avsnittet Webbplatser . Det finns vanligtvis en Default_Site om du inte har tagit bort eller bytt namn på den.
  7. Välj knappen Visa länk (ögonikon) för att visa en av nycklarna och kopiera och spara dess värde. Du använder det här värdet i avsnittet Skapa en C#-direktradsklient.

Kommentar

Det här värdet är din Direct Line-klienthemlighet som används för att ansluta till Direct Line App Service-tillägget. Du kan skapa ytterligare webbplatser om du vill och även använda dessa hemliga värden.

Skapa en C#-direktradsklient

Interaktioner med Direct Line App Service-tillägget sker annorlunda än traditionell direktlinje eftersom de flesta kommunikationer sker via en WebSocket. Den uppdaterade Direct Line-klienten innehåller hjälpklasser för att öppna och stänga en WebSocket, skicka kommandon via WebSocket och ta emot aktiviteter tillbaka från roboten. I det här avsnittet beskrivs hur du skapar en enkel C#-klient för att interagera med en robot.

  1. Skapa ett nytt .NET Core-konsolprogramprojekt i Visual Studio.

  2. Klona Direct Line-klienten från GitHub-lagringsplatsen och inkludera den i projektet.

  3. Skapa en klient och generera en token med hjälp av en hemlighet. Det här steget är detsamma som att skapa andra C#-direktradsklienter förutom den slutpunkt som du behöver använda i roboten , som läggs till med .bot/ -sökvägen som du ser härnäst. Glöm inte slutet /.

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

    Observera följande:

    • Slutpunktsvärdet är robotens URL som du fick när du distribuerade roboten till Azure. Mer information finns i Konfigurera .NET-robot för tillägg.
    • Det hemliga värdet som visas som YOUR_BOT_SECRET är det värde som du sparade tidigare från avsnittet webbplatser.
  4. När du har en konversationsreferens från att generera en token kan du använda det här konversations-ID:t för att öppna en WebSocket med den nya StreamingConversations egenskapen på DirectLineClient. För att göra detta måste du skapa ett återanrop som anropas när roboten vill skicka ActivitySets till klienten:

    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. Nu är du redo att öppna WebSocket på StreamingConversations egenskapen med hjälp av konversationens token , conversationIdoch återanropet ReceiveActivities :

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. Klienten kan nu användas för att starta en konversation och skicka Activities till roboten:

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