Créer un client .NET pour se connecter à l’extension App Service Direct Line

À compter du 1er septembre 2023, il est fortement recommandé d’utiliser la méthode Étiquette de service Azure pour l’isolement réseau. L’utilisation de DL-ASE doit se limiter à des scénarios très spécifiques. Avant de mettre en œuvre cette solution dans un environnement de production, nous vous recommandons de demander conseil à votre équipe de support.

S’APPLIQUE À : SDK v4

Cet article explique comment créer un client .NET dans C# qui se connecte à l’extension App Service Direct Line. Lisez également cet article associé Configurer un bot .NET pour l’extension.

Prérequis

  • Un compte Azure.
  • Bot déployé sur le portail Azure.

Obtenez une clé secrète Direct Line

  1. Dans votre navigateur, accédez au portail Azure.
  2. Dans le portail Azure, recherchez votre ressource Azure Bot.
  3. Sous Paramètres, sélectionnez Canaux.
  4. S’il n’est pas déjà activé, sélectionnez le canal Direct Line pour l’activer.
  5. Sélectionnez Direct Line dans la page Canaux après l’avoir activé.
  6. Faites défiler l’écran jusqu’à la section Sites. Il existe généralement un site par défaut Default_Site, sauf si vous l’avez supprimé ou renommé.
  7. Cliquez sur le bouton Afficher le lien (icône d’œil) pour afficher l’une des clés, puis copiez et enregistrez sa valeur. Vous utiliserez cette valeur dans la section Créer un client Direct Line en C#.

Remarque

Cette valeur est votre clé secrète client Direct Line utilisée pour se connecter à l’extension App Service Direct Line. Vous pouvez également créer des sites supplémentaires si vous le souhaitez et utiliser ces valeurs secrètes.

Créer un client Direct Line en C#

Les interactions avec l’extension App Service Direct Line se produisent différemment d’avec le Direct Line classique, car la plupart des communications se déroulent sur un 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. Cette section décrit comment créer un client C# simple pour interagir avec un bot.

  1. Dans Visual Studio, créez un nouveau projet d’application console .NET Core.

  2. Clonez le client Direct Line à partir du référentiel GitHub et incluez-le dans votre projet.

  3. Créez un client et générez un jeton à l’aide d’un 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. N’oubliez pas le signe / de fin.

    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 :

    • La valeur du point de terminaison est l’URL du bot que vous avez obtenue quand vous avez déployé le bot sur Azure. Pour plus d’informations, consultez Configurer un bot .NET pour l’extension.
    • La valeur secrète (YOUR_BOT_SECRET) est la valeur que vous avez enregistrée précédemment dans la section Sites.
  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. Pour ce faire, vous devez créer un rappel qui est appelé lorsque le bot souhaite envoyer ActivitySets au 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 propriété StreamingConversations à l’aide du jeton de la conversation, conversationId, et de votre rappel ReceiveActivities :

    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 :

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