Configurare il passaggio a un hub di interazione generico

Copilot Studio ti consente di trasferire le conversazioni del copilota facilmente e contestualmente a un agente reale attraverso un hub di interazione.

Con un po' di sviluppo personalizzato, puoi configurare il tuo copilota per distribuire le conversazioni a qualsiasi hub di interazione. Questa guida descrive come è possibile farlo.

Prerequisiti

Importante

Le istruzioni in questa sezione richiedono lo sviluppo del software da parte tua o degli sviluppatori. È destinato a professionisti IT esperti, come amministratori IT o sviluppatori che hanno una solida conoscenza di strumenti di sviluppo, utilità e IDE che cercano di integrare hub di interazione di terze parti con Copilot Studio.

Panoramica

ILLUSTRAZIONE CHE MOSTRA IL FLUSSO DI DATI DELL'ADATTATORE GENERICO.

Un passaggio completo a un hub di interazione segue questo schema:

  1. Un utente finale interagisce con il canvas di chat dell'hub di interazione.

  2. L'hub di interazione indirizza la chat in arrivo attraverso le funzionalità di routing della chat integrate a un copilota.

  3. Un adattatore personalizzato inoltra i messaggi di chat in arrivo dall'hub di interazione al copilota Copilot Studio.

  4. Una volta l'utente finale attiva il passaggio, Copilot Studio inizia il passaggio con un contesto di conversazione completo.

  5. 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à.

  6. La chat dell'utente finale 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 utenti finali, copiloti e agenti reali.

Gli hub di interazione degli agenti più diffusi forniscono gli SDK o documentano pubblicamente le API, consentendo di creare gli adattatori.

Sebbene non rientri nell'ambito di questo documento ciò che potrebbe contenere un adattatore personalizzato, il seguente messaggio di esempio di passaggio basato su ciò che Copilot Studio genera come parte della nostra esperienza di passaggio standard a un agente reale, può aiutarti per le fasi inizali.

Questi frammenti di codice ed esempi ti consentono di estrarre il contesto dalla conversazione per distribuire in modo semplice e contestuale le conversazioni del copilota a qualsiasi hub di interazione generico.

Payload del messaggio di passaggio di esempio

La distribuzione è supportata solo su Direct Line. Ulteriori informazioni sull'interazione con un copilota su Direct Line. Al momento del passaggio, un'attività di evento chiamata handoff.initiate viene generata e inviata all'adattatore.

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, è necessario analizzare l'attività di 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>
    }
}