Créer un client .NET pour se connecter à l’extension App Service Direct LineCreate .NET Client to Connect to Direct Line App Service Extension

s’applique à : SDK v4APPLIES TO: SDK v4

Cet article explique comment créer un client .NET en C# qui se connecte à l’extension App Service Direct Line.This article describes how to create a .NET client in C# which connects to the direct line app service extension. Lisez également cet article associé Configurer un bot .NET pour l’extension.Please, also read this companion article Configure .NET bot for extension.

Récupérer la clé secrète directeGet Direct Line secret key

  1. Dans votre navigateur, accédez au portail AzureIn your browser, navigate to the Azure portal

  2. Dans le portail Azure, recherchez votre ressource Azure Bot ServiceIn the Azure portal, locate your Azure Bot Service resource

  3. Cliquez sur canaux pour configurer les canaux du robotClick on Channels to configure the bot's channels

  4. S’il n’est pas déjà activé, cliquez sur le canal Direct Line pour l’activer.If it is not already enabled, click on the Direct Line channel to enable it.

  5. S’il est déjà activé, dans la table Se connecter aux canaux, cliquez sur le lien Modifier sur la ligne Direct Line.If it is already enabled, in the Connect to channels table click on the Edit link on the Direct Line row.

  6. Faites défiler l’écran jusqu’à la section Sites.Scroll to the Sites section. Il existe généralement un site par défaut, sauf si vous l’avez supprimé ou renommé.There is typically a Default Site unless you have deleted or renamed it.

  7. Cliquez sur Afficher le lien pour afficher l’une des clés, puis copiez et enregistrez sa valeur.Click on the Show link to reveal one of the keys, then copy and save its value. Vous allez utiliser cette valeur dans la section créer un client direct line C#.You will use this value in the section Create a C# Direct Line Client.

    Clés d’extension App Service

Notes

Cette valeur est votre secret client Direct Line utilisé pour se connecter à l’extension App Service Direct Line.This value is your direct line client secret used to connect to direct line app service extension. Vous pouvez créer des sites supplémentaires si vous le souhaitez et utiliser ces valeurs secrètes également.You can create additional sites if you'd like and use those secret values as well.

Ajouter la source du package NuGet previewAdd the preview NuGet package source

L’aperçu des packages NuGet nécessaires à la création d’un client Direct Line en C# est disponible dans un flux NuGet.The preview NuGet packages needed to create a C# Direct line client can be found in a NuGet feed.

  1. Dans Visual Studio, accédez à l’élément de menu Outils->Options.In Visual Studio navigate to the Tools->Options menu item.
  2. Sélectionnez l’élément Gestionnaire de package NuGet->Sources de package .Select the NuGet Package Manager->Package Sources item.
  3. Cliquez sur le bouton + pour ajouter une nouvelle source de package avec les valeurs suivantes :Click on the + button to add a new package source with these values:
  4. Cliquez sur le bouton Mettre à jour pour enregistrer les valeurs.Click on the Update button to save the values.
  5. Cliquez sur OK pour quitter la configuration des sources de package.Click OK to exit the Package Sources configuration.

Créer un client direct line C#Create a C# Direct Line client

Les interactions avec l’extension App Service Direct Line se produisent différemment d’avec l’API Direct Line classique, car la plupart des communications se déroulent sur un WebSocket.Interactions with the direct line app service extension happen differently than traditional Direct Line because most communication happens over a WebSocket. Le client Direct Line mis à jour comprend des classes d’assistance pour l’ouverture et la fermeture d’un WebSocket, l’envoi de commandes via le WebSocket et la réception d’activités à partir du bot.The updated direct line client includes helper classes for opening and closing a WebSocket, sending commands through the WebSocket, and receiving Activities back from the bot. Cette section décrit comment créer un client C# simple pour interagir avec un bot.This section describes how to create a simple C# client to interact with a bot.

  1. Dans Visual Studio, créez un projet d’application console .NET Core 2,2.In Visual Studio, create a new .NET Core 2.2 console application project.

  2. Ajoutez le client Direct Line NuGet à votre projetAdd the DirectLine client NuGet to your project

  3. Créez un client et générez un jeton à l’aide d’un secret.Create a client and generate a token using a secret. Cette étape est identique à la création de tout autre client Direct Line en C#, à l’exception du point de terminaison que vous devez utiliser dans votre bot, ajouté avec le chemin .bot/ comme indiqué ci-dessous.This step is the same as building any other C# Direct Line client except the endpoint you need use in your bot,appended with the .bot/ path as shown next. N’oubliez pas le signe / de fin.Do not forget the ending /.

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

    Notez les points suivants :Notice the following:

    • La valeur du point de terminaison est l’URL du bot que vous avez obtenue quand vous avez déployé le bot sur Azure.The endpoint value is the bot URL you obtained when you deployed the bot to Azure. Pour plus d’informations, consultez Configurer un bot .NET pour l’extension.For more information, see Configure .NET bot for extension.
    • La valeur secrète (YOUR_BOT_SECRET) est la valeur que vous avez enregistrée précédemment dans la section Sites.The secret value shown as YOUR_BOT_SECRET is the value you saved earlier from the sites section.
  4. Une fois que vous avez une référence de conversation issue de la génération d’un jeton, vous pouvez utiliser cet ID de conversation pour ouvrir un WebSocket avec la nouvelle propriété StreamingConversations sur le DirectLineClient.Once you have a conversation reference from generating a token, you can use this conversation ID to open a WebSocket with the new StreamingConversations property on the DirectLineClient. Pour ce faire, vous devez créer un rappel qui est appelé lorsque le bot souhaite envoyer ActivitySets au client :To do this you need to create a callback that will be invoked when the bot wants to send ActivitySets to the client:

    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. Vous êtes maintenant prêt à ouvrir le WebSocket sur la StreamingConversations propriété à l’aide du jeton de la conversation, conversationId , et de votre ReceiveActivities Rappel :Now you are ready to open the WebSocket on the StreamingConversations property using the conversation's token, conversationId, and your ReceiveActivities callback:

    var client = new DirectLineClient(
        new Uri(endpoint),
        new DirectLineClientCredentials(conversation.Token));
    
    await client.StreamingConversations.ConnectAsync(
        conversation.ConversationId,
        ReceiveActivities);
    
  6. Le client peut maintenant être utilisé pour démarrer une conversation et envoyer Activities au bot :The client can now be used to start a conversation and send Activities to the bot:

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