Configurer le transfert vers n’importe quel hub d’engagement générique
Copilot Studio vous permet de transférer des conversations de copilote de manière transparente et contextuelle à un agent humain via un hub d’engagement.
Avec un développement personnalisé, vous pouvez configurer votre copilote pour transférer des conversations vers n’importe quel hub d’engagement. Ce guide décrit comment procéder.
Conditions préalables
- Vous devez avoir créé un copilote à l’aide de Copilot Studio.
- Vous avez besoin d’un hub d’engagement capable d’interagir par programme à l’aide d’API ou de kits de développement logiciel.
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é
Un transfert complet vers un hub d’engagement suit le modèle suivant :
Un utilisateur final interagit avec le canevas de discussion du hub d’engagement.
Le hub d’engagement achemine la conversation entrante vers un copilote à l’aide de fonctionnalités d’acheminement intégrées.
Un adaptateur personnalisé relaie les messages de la conversation entrante entre le hub d’engagement et un copilote Copilot Studio.
Quand l’utilisateur final déclenche le transfert, Copilot Studio commence le transfert avec le contexte complet de la conversation.
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é.
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 en provenance du hub d’engagement de l’agent en relayant et en transformant les messages entre les utilisateurs finaux, les copilotes et les agents humains.
La plupart des centres d’engagement d’agents les plus populaires fournissent des kits de développement logiciel (SDK) ou documentent publiquement leurs API, vous permettant de créer de tels adaptateurs.
Il n’entre pas dans le cadre de ce document de décrire ce que pourrait contenir un adaptateur personnalisé. Cependant, l’exemple de message transfert suivant, basé sur ce qui Copilot Studio génère dans le cadre de notre expérience transfert standard dans une expérience conseiller, peut vous aider à démarrer.
Ces extraits et exemples de code vous permettent d’extraire le contexte de la conversation d’un bot pour transférer de manière fluide et sans perte de contexte les conversations de copilote à 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. Découvrez-en davantage sur l’interaction avec un copilote en sus de 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>
}
}