Partager via


Configurer le transfert vers n’importe quel hub d’engagement générique

Copilot Studio vous permet de transmettre les conversations agent de manière transparente et contextuellement à un humain agent via un hub d’engagement.

Avec un peu de développement personnalisé, vous pouvez configurer votre agent pour transmettre les conversations à n’importe quel hub d’engagement. Ce guide décrit comment procéder.

Prérequis

Important

Certaines instructions de cette section nécessitent un développement logiciel de votre part ou de la part de vos développeurs. Il est destiné aux professionnels de l’informatique expérimentés, tels que les administrateurs ou les développeurs informatiques qui ont une solide compréhension des outils de développement, des utilitaires et des IDE pour intégrer des hubs d’engagement tiers à Copilot Studio.

Résumé

ILLUSTRATION MONTRANT UN FLUX DE DONNÉES D’ADAPTATEUR GÉNÉRIQUE.

Un transfert complet vers un hub d’engagement suit le modèle suivant :

  1. Un utilisateur final interagit avec le canevas de discussion du hub d’engagement.

  2. Le hub d’engagement achemine le chat entrant via les fonctionnalités de routage de chat intégrées vers un agent.

  3. Un adaptateur personnalisé relaie les messages de discussion entrants du hub d’engagement vers un Copilot Studio agent.

  4. Quand l’utilisateur final déclenche le transfert, Copilot Studio commence le transfert avec le contexte complet de la conversation.

  5. L’adaptateur personnalisé intercepte le message de transfert, analyse le contexte complet de la conversation et achemine de manière fluide la conversation escaladée vers un agent humain qualifié, en fonction de sa disponibilité.

  6. La conversation de l’utilisateur final est transférée de manière fluide et sans perte de contexte à un agent humain qui peut reprendre la conversation.

Pour transférer la conversation à un agent humain, vous devez créer un adaptateur de transfert personnalisé.

Créer un adaptateur de transfert personnalisé

Un adaptateur relie les conversations vers et depuis votre hub d’engagement agent en relayant et en transformant les messages entre les utilisateurs finaux, les agents et les agents humains.

Les hubs d’engagement de l’agent les plus populaires fournissent des kits de développement logiciel (SDK) ou documentent publiquement leurs API, ce qui vous permet de créer ces adaptateurs.

Il n’entre pas dans le cadre de ce document de décrire ce que pourrait contenir un adaptateur personnalisé. Toutefois, l’exemple de message de transfert suivant, basé sur ce que Copilot Studio génère dans le cadre de notre expérience de transfert standard à un conseiller, peut vous aider à démarrer.

Ces extraits de code et exemples vous permettent d’extraire le contexte de la conversation pour transmettre de manière transparente et contextuellement les conversations agent à n’importe quel hub d’engagement générique.

Exemple de charge utile de message de transfert

Le transfert est actuellement pris en charge uniquement sur Direct Line. Apprenez-en davantage sur l’interaction avec un agent Direct Line. Au moment du transfert, une activité d’événement appelée handoff.initiate est déclenchée et envoyée à l’adaptateur.

Vous pouvez voir un exemple complet d’activité de message de transfert sur notre site GitHub.

Extraire le contexte du message de transfert

Pour utiliser le contexte de la conversation, vous devez analyser l’activité d’événement handoff.initiate. L’extrait de code suivant analyse l’activité d’événement handoff.initiate et extrait le contexte de la conversation. Voir l’exemple de code complet sur GitHub.

public void InitiateHandoff(string botresponseJson)
{
    BotResponse response = JsonConvert.DeserializeObject<BotResponse>(botresponseJson);

    // Look for Handoff Initiate Activity. This indicates that conversation needs to be handed off to agent
    Activity handoffInitiateActivity = response.Activities.ToList().FirstOrDefault(
        item => string.Equals(item.Type, ActivityTypes.Event, System.StringComparison.Ordinal)
        && string.Equals(item.Name, HandoffInitiateActivityName, System.StringComparison.Ordinal));

    if (handoffInitiateActivity != null)
    {
        // Read transcript from attachment
        if (handoffInitiateActivity.Attachments?.Any() == true)
        {
            Attachment transcriptAttachment = handoffInitiateActivity.Attachments.FirstOrDefault(a => string.Equals(a.Name.ToLowerInvariant(), TranscriptAttachmentName, System.StringComparison.Ordinal));
            if (transcriptAttachment != null)
            {
                Transcript transcript = JsonConvert.DeserializeObject<Transcript>(transcriptAttachment.Content.ToString());
            }
        }

        // Read handoff context
        HandoffContext context = JsonConvert.DeserializeObject<HandoffContext>(handoffInitiateActivity.Value.ToString());

        // Connect to Agent Hub
        // <YOUR CUSTOM ADAPTER CODE GOES HERE>
    }
}