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.

W przypadku niektórych projektów niestandardowych można skonfigurować agenta do przekazywania konwersacji do dowolnego centrum interakcji.

Wymagania wstępne

Important

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 funkcja przekazania obsługuje tylko Direct Line. Aby uzyskać więcej informacji, zobacz Interakcja z agentem za pośrednictwem linii bezpośredniej. Po przekazaniu adapter zgłasza działanie zdarzenia o nazwie handoff.initiate i je wysyła.

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ższa próbka kodu analizuje działanie zdarzenia handoff.initiate i wyodrębnia kontekst konwersacji. 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>
    }
}