Перевод разговора с бота на человека
ОБЛАСТЬ ПРИМЕНЕНИЯ: ПАКЕТ SDK версии 4
Независимо от того, сколько искусственного интеллекта бот обладает, может все еще потребоваться передать разговор человеку. Такая передача может потребоваться, если бот не понимает пользователя (из-за ограничения искусственного интеллекта), или если запрос не может быть автоматизирован и требует действия человека. В таких случаях бот должен распознать, когда он должен передать беседу и предоставить пользователю плавный переход.
Microsoft Bot Framework — это открытая платформа, которая позволяет разработчикам интегрироваться с различными платформами взаимодействия агентов.
Модели интеграции передачи
Платформа Microsoft Bot Framework поддерживает две модели интеграции с платформами привлечения агентов. Протокол передачи одинаков для обеих моделей, однако сведения об адаптации различаются для различных моделей и платформ привлечения агентов.
Цель заключается не в том, чтобы предложить универсальное решение для интеграции с любой системой клиента, а вместо того, чтобы предоставить общий язык и рекомендации для разработчиков ботов и системных интеграторов, с которыми можно создавать системы ИИ для общения с человеком в цикле.
Бот как агент
В первой модели, известной как бот как агент, бот присоединяется к рядам динамических агентов, подключенных к центру агентов, и реагирует на запросы пользователей, как будто запросы пришли из любого другого канала Bot Framework. Беседу между пользователем и ботом можно передать агенту-человеку, после чего бот покидает активную беседу.
Основным преимуществом этой модели является его простота— вы можете добавить существующего бота в центр агента с минимальными усилиями, а концентратор агента будет обрабатывать сложность маршрутизации сообщений.
Бот в качестве посредника
Вторая модель называется ботом как прокси-сервер. Пользователь напрямую говорит с ботом, пока бот не решит, что ему нужна помощь агента. Компонент маршрутизатора сообщений в боте перенаправляет беседу в центр агентов, который передает его соответствующему агенту. Бот остается в цикле и может записать расшифровку диалога, отфильтровать сообщения или предоставить дополнительное содержимое как агенту, так и пользователю.
Гибкость и возможности управления являются основными преимуществами этой модели. Бот может поддерживать несколько каналов и управлять тем, как беседы перенаправляются и направляются между пользователем, ботом и центром агента.
Протокол передачи
Протокол сосредоточен вокруг событий запуска, отправленных ботом в канал, и обновление состояния, отправленное каналом боту.
Запуск передачи
Событие запуска передачи создается ботом для запуска передачи.
Это событие может включать следующее:
- Контекст запроса на передачу данных для маршрутизации беседы соответствующему агенту.
- Расшифровка беседы, поэтому агент может прочитать беседу, которая произошла между клиентом и ботом до начала передачи.
Ниже приведены распространенные свойства события запуска передачи:
Имя: обязательно, свойство name должно иметь значение "handoff.initiate".
Беседа : обязательно, свойство беседы описывает беседу, в которой существует действие. Беседа должна включать беседу
Id
.Значение. Необязательно, свойство значения может содержать содержимое JSON для конкретного концентратора агента, которое концентратор может использовать для маршрутизации беседы соответствующему агенту.
Вложения: необязательно, свойство вложений может включать расшифровку в виде вложения. Bot Framework определяет тип вложения транскрибирования . Вложение может отправляться либо встроенным (при условии ограничения размера), либо автономным путем предоставления
ContentUrl
.handoffEvent.Attachments = new List<Attachment> { new Attachment { Content = transcript, ContentType = "application/json", Name = "Transcript", } };
Примечание.
Центры агентов должны игнорировать типы вложений, которые они не понимают.
Когда бот обнаруживает необходимость передачи беседы агенту, он сигнализирует о своем намерении, отправляя событие запуска передачи.
Пакет SDK для C# включает CreateHandoffInitiation
метод для создания допустимого события запуска передачи.
var activities = GetRecentActivities();
var handoffContext = new { Skill = "credit cards" };
var handoffEvent =
EventFactory.CreateHandoffInitiation(
turnContext, handoffContext, new Transcript(activities));
await turnContext.SendActivityAsync(handoffEvent);
Состояние передачи
Событие состояния передачи отправляется боту центром агента. Событие сообщает боту о состоянии инициированной операции передачи.
Примечание.
Боты не требуются для обработки события состояния передачи. Однако они не должны отклонять его.
Ниже приведены распространенные поля событий состояния передачи:
Имя: обязательно, свойство name должно иметь значение "handoff.status".
Беседа : обязательно, свойство беседы описывает беседу, в которой существует действие. Беседа должна включать беседу
Id
.Значение: обязательное свойство значения, описывающее текущее состояние операции передачи. Значение имеет следующие свойства.
Состояние: обязательное свойство состояния может иметь одно из следующих значений:
Значение Значение "принято" Агент принял запрос и взял под контроль беседу. "Не удалось" Сбой запроса на передачу. Свойство сообщения может содержать дополнительные сведения, относящиеся к сбою. "Завершено" Завершен запрос на передачу. Сообщение: необязательно, свойство сообщения — это объект, определенный центром агента.
Ниже приведены некоторые примеры объектов значений:
{ "state" : "completed" }
{ "state" : "failed", "message" : "Can't find agent with requested skill" }
Библиотека передачи
Библиотека передачи была создана для дополнения пакета SDK Bot Framework версии 4 в поддержке передачи, в частности:
- Реализует дополнения пакета SDK Bot Framework для поддержки передачи агента (также известного как эскалация).
- Содержит определения трех типов событий для сигнальных операций передачи.
Примечание.
Интеграции с определенными центрами агентов не являются частью библиотеки.