Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Copilot Studio consente di distribuire le conversazioni degli agenti in modo semplice e contestuale a un agente umano tramite un hub di engagement.
Con un po' di sviluppo personalizzato, puoi configurare l'agente per distribuire le conversazioni a qualsiasi hub di interazione.
Prerequisiti
- L'agente è stato creato con Copilot Studio.
- È necessario un hub di engagement che possa interagire a livello di codice usando API o SDK.
Importante
Questo articolo richiede alcune competenze di sviluppo software. I passaggi descritti in questo articolo sono destinati a professionisti IT esperti con una solida conoscenza degli strumenti di sviluppo, delle utilità e degli ambienti di sviluppo integrati (IDE).
Descrizione
Un passaggio completo a un hub di interazione segue questo schema:
- Un cliente interagisce con il canvas di chat dell'hub di interazione.
- L'hub di interazione indirizza la chat in arrivo attraverso le funzionalità di routing della chat integrate a un agente.
- Un adattatore personalizzato inoltra i messaggi di chat in arrivo dall'hub di interazione all'agente Copilot Studio.
- Una volta che il cliente attiva il passaggio, Copilot Studio inizia il passaggio con un contesto di conversazione completo.
- L'adattatore personalizzato intercetta il messaggio di passaggio, analizza l'intero contesto della conversazione e instrada facilmente la conversazione riassegnata a un agente reale qualificato, in base alla disponibilità.
- La chat del cliente viene distribuita facilmente e contestualmente a un agente reale che può riprendere la conversazione.
Per distribuire la conversazione a un agente umano devi creare un adattatore di passaggio personalizzato.
Crea un adattatore di passaggio personalizzato
Un adattatore collega le conversazioni da e verso l'hub di interazione degli agenti inoltrando e trasformando i messaggi tra clienti, agenti e agenti umani.
Gli hub di interazione degli agenti più diffusi forniscono gli SDK o documentano pubblicamente le API, consentendo di creare gli adattatori.
Questo documento non illustra cosa potrebbe contenere un adattatore personalizzato. Tuttavia, il seguente messaggio di passaggio di esempio, basato su ciò che Copilot Studio genera come parte del nostro passaggio standard a un'esperienza con un agente live, può aiutarti a cominciare.
Questi frammenti di codice ed esempi ti consentono di estrarre il contesto dalla conversazione per distribuire in modo semplice e contestuale le conversazioni dell'agente a qualsiasi hub di interazione generico.
Payload del messaggio di passaggio di esempio
Handoff supporta attualmente solo Direct Line. Per altre informazioni, vedere Interazione con un agente tramite Direct Line. Al momento del passaggio, l'adattatore solleva un'attività di evento chiamata handoff.initiate e la invia.
Puoi vedere l'attività completa di messaggio di passaggio di esempio sul sito GitHub.
Estrarre il contesto dal messaggio di passaggio
Per usare il contesto di conversazione, analizzare l'attività dell'evento handoff.initiate .
Il seguente frammento di codice analizza l'attività di evento handoff.initiate ed estrae il contesto di conversazione. Vedi il codice di esempio completo in 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>
}
}