Skonfiguruj przekierowanie do dowolnego uniwersalnego centrum zaangażowania

Note

W tym artykule opisano funkcje używane w agentach lub przepływach agentów obsługiwanych przez standardowe środowisko uruchomieniowe.

Copilot Studio umożliwia bezproblemowe i kontekstowe przekazywanie konwersacji agentów do agenta ludzkiego za pośrednictwem platformy interakcji.

Korzystając z niestandardowych rozwiązań programistycznych, możesz skonfigurować agenta tak, aby przekazywał rozmowy do dowolnego hubu komunikacji.

Prerequisites

Ważna

Ten artykuł wymaga pewnych umiejętności związanych z tworzeniem oprogramowania. Kroki opisane w tym artykule dotyczą doświadczonych specjalistów IT z solidnym zrozumieniem narzędzi deweloperskich, narzędzi i zintegrowanych środowisk programistycznych (IDE).

Overview

Zrzut ekranu przedstawiający ogólny przepływ danych do przekazania do centrum zaangażowania.

Pełne przekazanie do centrum zaangażowania jest zgodne z następującym wzorcem:

  1. Klient wchodzi w interakcję z interfejsem czatu w centrum zaangażowania.
  2. Centrum obsługi przesyła nadchodzącą rozmowę za pośrednictwem wbudowanych funkcji rozsyłania rozmów do agenta.
  3. Niestandardowy adapter przekazuje przychodzące wiadomości z centrum interakcji do agenta Copilot Studio.
  4. Gdy klient wyzwoli przekazanie, program Copilot Studio uruchamia przekazywanie z pełnym kontekstem konwersacyjnym.
  5. Niestandardowy adapter przechwytuje komunikat o przekazaniu, analizuje pełny kontekst konwersacji i bezproblemowo rozsyła eskalowaną konwersację do prawdziwego agenta-przedstawiciela z odpowiednimi umiejętnościami, zależnie od dostępności.
  6. Rozmowa użytkownika jest sprawnie i w sposób kontekstowy przekazywana do agenta ludzkiego, który może wznowić konwersację.

Aby przekazać konwersację prawdziwemu agentowi-przedstawicielowi, należy utworzyć niestandardowy adapter przekazania.

Tworzenie niestandardowego adaptera przekazania

Adapter łączy konwersacje od i z centrum obsługi agenta przez przekazywanie i transformowanie wiadomości pomiędzy użytkownikiem, agentem, i agentem-przedstawicielem.

Większość popularnych centrów zaangażowania agentów dostarcza zestawy do tworzenia oprogramowania (SDK) lub publicznie dokumentuje swoje interfejsy API, umożliwiając tworzenie takich adapterów.

Ten dokument nie uwzględnia, co może zawierać adapter niestandardowy. Jednak poniższy przykładowy komunikat o przekazaniu, oparty na tym, co Copilot Studio generuje jako część naszego standardowego przekazania do środowiska prawdziwego agenta, może pomóc Ci rozpocząć.

Te fragmenty i przykłady kodu umożliwiają wyodrębnienie kontekstu z konwersacji, co pozwala na bezproblemowe i płynne przekazanie rozmów z agentem do ogólnego centrum interakcji.

Przykładowy ładunek komunikatu przekazania

Obecnie Handoff obsługuje tylko Direct Line. Aby uzyskać więcej informacji, zobacz Interakcja z agentem za pośrednictwem linii bezpośredniej. Gdy zainicjujesz przekazanie, adapter zgłasza i wysyła działanie zdarzenia o nazwie handoff.initiate.

Możesz zobaczyć pełen przykładowe działanie komunikatu przekazania w naszej witrynie GitHub.

Wyodrębnianie kontekstu z wiadomości dotyczącej przekazania

Aby użyć kontekstu konwersacyjnego, przeanalizuj handoff.initiate działanie zdarzenia. Poniższy fragment kodu analizuje aktywność zdarzenia i wyodrębnia handoff.initiate kontekst konwersacyjny. Zobacz pełną próbkę kodu dostępną w witrynie 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>
    }
}