Поделиться через


Настройка передачи в любой общий центр взаимодействия

Важно

Возможности и функции Power Virtual Agents теперь являются частью Microsoft Copilot Studio после значительных инвестиций в генеративный искусственный интеллект и расширенную интеграцию с Microsoft Copilot.

Некоторые статьи и снимки экрана могут ссылаться на Power Virtual Agents, пока мы обновляем документацию и учебные материалы.

Copilot Studio позволяет легко и контекстно передавать беседы с помощниками агенту-человеку через центр взаимодействия.

С помощью некоторых пользовательских разработок вы можете настроить свой помощник на передачу разговоров в любой центр взаимодействия. Это руководство описывает, как вы можете сделать это.

Предварительные условия

Внимание

Инструкции в этом разделе требуют разработки программного обеспечения от вас или ваших разработчиков. Она предназначена для опытных ИТ-специалистов, таких как ИТ-администраторы или разработчики, которые хорошо разбираются в инструментах разработчика, утилитах и интегрированных средах разработки (IDE) и которым требуется интегрировать центры взаимодействия сторонних разработчиков с Copilot Studio.

Обзор

ИЛЛЮСТРАЦИЯ ПОКАЗЫВАЕТ ОБЩИЙ ПОТОК ДАННЫХ АДАПТЕРА.

Полная передача в центр взаимодействия следует этой схеме:

  1. Конечный пользователь взаимодействует с холстом чата центра взаимодействия.

  2. Центр взаимодействия направляет входящий чат через встроенные возможности маршрутизации чата помощнику.

  3. Пользовательский адаптер передает входящие сообщения чата из центра взаимодействия в помощник Copilot Studio.

  4. После того как конечный пользователь запускает передачу, Copilot Studio начинает передачу с полным разговорным контекстом.

  5. Пользовательский адаптер перехватывает сообщение о передаче обслуживания, анализирует полный контекст диалога и плавно перенаправляет эскалированный диалог квалифицированному агенту-человеку в зависимости от доступности.

  6. Чат конечного пользователя легко и контекстно передается человеку-агенту, который может возобновить разговор.

Чтобы передать разговор агенту-человеку, вам нужно создать специальный адаптер для передачи.

Создание пользовательского адаптера передачи обслуживания

Адаптер соединяет разговоры с центром обслуживания вашего агента, передавая и преобразовывая сообщения между конечными пользователями, помощниками и агентами-людьми.

Самые популярные центры взаимодействия с агентами предоставляют SDK или публично документируют свои API, что позволяет создавать такие адаптеры.

Хотя обсуждение того, что может содержать пользовательский адаптер, выходит за рамки этого документа, следующий пример сообщения о передаче, основанный на том, что Copilot Studio генерирует как часть нашего стандартного переключения на агента-человека, может помочь вам начать.

Эти фрагменты кода и примеры позволяют извлекать контекст из беседы, чтобы беспрепятственно и контекстуально передавать беседы с помощником любому общему центру взаимодействия.

Пример полезной нагрузки сообщения о передаче

Передача сейчас поддерживается только по Direct Line. Узнайте больше о взаимодействии с помощником по Direct Line. После передачи действие события под названием handoff.initiate вызывается и отправляется в адаптер.

Вы можете увидеть полный пример действия сообщения передачи на нашем сайте GitHub.

Извлечение контекста из сообщения о передаче

Чтобы использовать контекст разговора, нужно разобрать действие события handoff.initiate. Следующий фрагмент кода анализирует действие события handoff.initiate и извлекает контекст разговора. См. полный пример кода на 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>
    }
}