Настройка передачи в любой общий центр взаимодействия
Copilot Studio позволяет легко и контекстно передавать беседы с агентами агенту-человеку через центр взаимодействия.
С помощью некоторых пользовательских разработок вы можете настроить свой агент на передачу разговоров в любой центр взаимодействия. Это руководство описывает, как вы можете сделать это.
Предварительные требования
- У вас должен быть агент, созданный с помощью Copilot Studio.
- Вам нужен центр взаимодействия, который может программно взаимодействовать с помощью API или SDK.
Важно
Некоторые инструкции в этом разделе требуют разработки программного обеспечения от вас или ваших разработчиков. Она предназначена для опытных ИТ-специалистов, таких как ИТ-администраторы или разработчики, которые хорошо разбираются в инструментах разработчика, утилитах и интегрированных средах разработки (IDE) и которым требуется интегрировать центры взаимодействия сторонних разработчиков с Copilot Studio.
Обзор
Полная передача в центр взаимодействия следует этой схеме:
Клиент взаимодействует с холстом чата центра взаимодействия.
Центр взаимодействия направляет входящий чат через встроенные возможности маршрутизации чата агенту.
Пользовательский адаптер передает входящие сообщения чата из центра взаимодействия в агент Copilot Studio.
После того как клиент запускает передачу, Copilot Studio начинает передачу с полным разговорным контекстом.
Пользовательский адаптер перехватывает сообщение о передаче обслуживания, анализирует полный контекст диалога и плавно перенаправляет эскалированный диалог квалифицированному агенту-человеку в зависимости от доступности.
Чат клиента легко и контекстно передается человеку-агенту, который может возобновить разговор.
Чтобы передать разговор агенту-человеку, вам нужно создать специальный адаптер для передачи.
Создание пользовательского адаптера передачи обслуживания
Адаптер соединяет разговоры с центром обслуживания вашего агента, передавая и преобразовывая сообщения между клиентами, агентами и агентами-людьми.
Самые популярные центры взаимодействия с агентами предоставляют комплекты для разработки программного обеспечения (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>
}
}