Conversations de transition de bot à humain

S’APPLIQUE À : SDK v4

Indépendamment de l’intelligence artificielle qu’un bot possède, il peut toujours avoir besoin de transférer la conversation à un être humain. Un tel transfert peut être nécessaire si le bot ne comprend pas l’utilisateur (pour des raisons de limitation de l’IA), ou si la demande ne peut pas être automatisée et requiert une action humaine. Dans ces cas-là, le bot doit reconnaître le moment où il a besoin de passer la main sur une conversation en offrant à l’utilisateur une transition en douceur.

Microsoft bot Framework est une plateforme ouverte qui permet aux développeurs d’effectuer l’intégration dans diverses plateformes d’engagement d’agents.

Modèles d’intégration de transfert

Microsoft bot Framework prend en charge deux modèles pour l’intégration dans les plateformes d’engagement d’agents. Le protocole de transfert est identique pour les deux modèles, mais les détails de l’intégration diffèrent d’un modèle et d’une plateforme d’engagement d’agents à l’autre.

L’objectif n’est pas d’offrir une solution universelle pour l’intégration avec le système d’un client, mais plutôt de fournir aux développeurs de bots et aux intégrateurs système un langage commun et de bonnes pratiques avec lesquels créer des systèmes d’IA conversationnels avec un humain dans la boucle.

Bot en tant qu’agent

Dans le premier modèle, appelé Bot en tant qu’agent, le bot joint les rangs des agents actifs connectés au hub des agents et répond aux demandes de l’utilisateur comme si elles provenaient d’un autre canal Bot Framework. Il est possible de faire remonter la conversation entre l’utilisateur et le bot à un agent humain. À ce stade, le bot se déconnecte de la conversation active.

Le principal avantage de cette méthode est sa simplicité : vous pouvez ajouter un bot existant au hub d’agents avec un minimum d’efforts, toute la complexité du routage des messages étant prise en charge par le hub d’agents.

Diagram of an agent hub that can direct messages to a bot or human agents.

Bot en tant que proxy

Le deuxième modèle est appelé Bot en tant que proxy. L’utilisateur parle directement au bot, jusqu’à ce que le bot décide qu’il a besoin d’aide d’un agent humain. Le composant routeur de message du bot redirige la conversation vers le hub d’agents, qui l’attribue à l’agent approprié. Le bot reste dans la boucle et peut collecter la transcription de la conversation, filtrer les messages ou fournir du contenu supplémentaire à l’agent comme à l’utilisateur.

La flexibilité et le contrôle sont les principaux avantages de ce modèle. Le bot peut prendre en charge plusieurs canaux et contrôler la façon dont les conversations sont remontées et acheminées entre l’utilisateur, le bot et le hub d’agents.

Diagram of a bot that can route messages to an agent hub.

Protocole de transfert

Le protocole est centré sur les événements d’initiation, envoyés par le bot au canal et la mise à jour de l’état, envoyée par le canal au bot.

Initiation au transfert

Un événement d’initiation de transfert est créé par le bot pour lancer le transfert.

Cet événement peut inclure :

  • Le contexte de la demande de transfert, pour acheminer la conversation vers un agent approprié.
  • Une transcription de la conversation, afin qu’un agent puisse lire la conversation qui a eu lieu entre le client et le bot avant le lancement du transfert.

Voici les propriétés courantes de l’événement d’initiation de transfert :

  • Nom : Obligatoire, la propriété nom doit être définie sur « handoff.initiate ».

  • Conversation : Obligatoire, la propriété conversation décrit la conversation dans laquelle se trouve l’activité. Conversation doit inclure la conversation Id.

  • Valeur : Facultatif, la propriété valeur peut contenir du contenu JSON spécifique au hub d’agents que le hub peut utiliser pour acheminer la conversation vers un agent approprié.

  • Pièces jointes : Facultatif, la propriété pièces jointes peut inclure une transcription en tant que pièce jointe. Bot Framework définit un type de pièce jointe de transcription. Une pièce jointe peut être envoyée en ligne (sous réserve d’une limite de taille) ou hors connexion en fournissant ContentUrl.

    handoffEvent.Attachments = new List<Attachment> {
        new Attachment {
            Content = transcript,
            ContentType = "application/json",
            Name = "Transcript",
        }
    };
    

    Remarque

    Les hubs d’agents doivent ignorer les types de pièces jointes qu’ils ne comprennent pas.

Lorsqu’un bot détecte la nécessité de transférer la conversation à un agent, il signale son intention en envoyant un événement de lancement de transfert. Le kit de développement logiciel (SDK) pour C# inclut une méthode CreateHandoffInitiation permettant de créer un événement d’initiation de transfert valide.

var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
    EventFactory.CreateHandoffInitiation(
        turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);

État du transfert

Un événement d’état de transfert est envoyé au bot par le hub d’agents. L’événement informe le bot de l’état de l’opération de transfert lancée.

Remarque

Les bots ne sont pas tenus de gérer un événement d’état de transfert ; toutefois, ils ne doivent pas le rejeter.

Voici les champs d’événement d’état de transfert courants :

  • Nom : Obligatoire, la propriété nom doit être définie sur « handoff.status ».

  • Conversation : Obligatoire, la propriété conversation décrit la conversation dans laquelle se trouve l’activité. Conversation doit inclure la conversation Id.

  • Valeur : Obligatoire, la propriété de valeur qui décrit l’état actuel de l’opération de transfert. La valeur présente les propriétés suivantes.

    • État : Obligatoire, la propriété état peut avoir l’une des valeurs suivantes :

      Valeur Signification
      « a accepté » Un agent a accepté la demande et a pris le contrôle de la conversation.
      « échec » Échec de la demande de transfert. La propriété message peut contenir des informations supplémentaires pertinentes concernant l’échec.
      « terminé » La demande de transfert est terminée.
    • Message : Facultatif, la propriété message est un objet défini par le hub d’agents.

    Voici quelques exemples d’objets valeur :

    { "state" : "completed" }
    
    { "state" : "failed", "message" : "Can't find agent with requested skill" }
    

Bibliothèque de transfert

La bibliothèque de transfert a été créée pour compléter le kit de développement logiciel (SDK) Bot Framework v4 dans la prise en charge du transfert, en particulier :

  • Pour implémenter les ajouts au kit de développement logiciel (SDK) Bot Framework pour prendre en charge le transfert vers un agent (également appelé escalade).
  • Pour contenir les définitions de trois types d’événements pour les opérations de signalisation de transfert.

Remarque

Les intégrations avec des hubs d’agents spécifiques ne font pas partie de la bibliothèque.

Ressources supplémentaires