Configure Fulfillment для сценариев операторов AI
В контексте операторов ИИ под "фуффилментом" понимается выполнение задач, связанных с взаимодействием с внешними системами для извлечения данных, манипулирования и хранения данных с помощью API. В этой статье приведен пример операторов, созданных для пакетов отслеживания. Этот шаблон оператора можно использовать при создании нового оператора ИИ для цифрового и голосового взаимодействия.
Для цифровых каналов выполнение должно быть увязано с помощью потока соединения, используемого при развертывании оператора ИИ. На примере оператора отслеживания пакетов, который можно импортировать из шаблона при создании нового оператора в сценариях, можно также импортировать поток при создании нового потока Webex Connect. Помимо выполнения, этот поток подключения также маршрутит пользователя к различным очередям операторов в зависимости от их последнего намерения.
-
По завершении настройки оператора по сценариям определите ответы, требующие выполнения.
В примере оператора для 'trackPackageResponse' требуется выполнение.
-
В этих шаблонах настройте ответ удержания, который будет отображаться пользователю во время выполнения.
В этом примере для ответа удержания настраивается «trackPackageResponse».
-
В потоке используйте узел синтаксического анализатора данных для синтаксического анализа метаданных сеанса оператора (выходная переменная) из ответа ИИ оператора, чтобы получить имя ответа.
Вы можете получить пример ввода для узла синтаксического анализатора данных, загружая информацию о транзакциях из сеансов, выбрав соответствующую транзакцию и выбрав значение ключа generatedDf из загруженного файла.
-
Если вы хотите выполнить маршрутизацию на основе намерений в момент передачи оператора, вы можете получить значение предыдущего активного намерения на том же шаге.
-
Если вы не хотите загружать и синтаксический анализ образца СИСТЕМЫ,можно использовать
\$.model_state.template_key
в качестве имени ответа и\$.previous_intent_model_state.intent.name
для имени предыдущего намерения.В нашем примере для этих значений используются переменные потока "responseKey" и "previousIntent".
-
Используйте узел ветки , чтобы проверить, требуется ли ответ.
-
Узел ветви выходит через "Ни одного из вышеуказанных" узла для ответов, которые не требуют выполнения.
-
В нашем примере, поскольку существует потребность в выполнении для 'trackPackageResponse', проверьте значение 'responseKey' в узле нашего филиала.
-
-
Для ответов, требующих выполнения, используйте HTTP-узел для совершения внешних вызовов API.
-
Полезную информацию из ответа HTTP-узла можно извлечь в том же узле, импортируя пример и получая выходные переменные.
-
В этом примере мы получаем пакет "estimatedDelivery" и "статус" пакета.
-
-
Обработать ответ на выполнение, используя узел Оценки , чтобы сформировать ответ оператора.
В нашем примере мы инициализируем переменную 'fulfilmentResp' и устанавливаем ее значение на основе состояния пакета и расчетной доставки.
-
Отправьте ответ на выполнение пользователю и добавьте его к разговору.
-
Вернитесь к узлу "Получение " , чтобы поддерживать разговор между пользователем и оператором ИИ.
Передача оператора на основе намерений
При передачи оператора проверьте наличие последнего активного намерения через узел ветви перед узлом задачи " Очередь".
Проверьте значение параметра PreviousIntent и ответить на различные очереди в зависимости от своих требований. В этом примере, если заказчик просит передачу оператора после намерения "Отслеживать пакет", перенаправляйте его в очередь "Специалист". Все остальные значения приводят к переходу в очередь "Чат".
Для голосовых каналов выполнение должно быть увязано путем передачи управления разговором обратно голосовым потокам через пользовательские события, а затем возобновления разговора оператора ИИ с данными о выполнении. Для этих целей повторно используется пример оператора с помощью сценариев для пакетов отслеживания. Этот поток доступен в разделе "Импорт из шаблонов" в Webex Contact Center Flow Designer. Помимо выполнения, этот поток также маршрутит пользователя к различным очередям операторов, основываясь на их последнем умысле.
Поэтапное руководство: Выполнение
-
Добавьте тип ответа "Пользовательское событие".
-
Найдите ключ шаблона, для которого требуется добавить пользовательское событие. В этом случае используйте ключ шаблона trackPackageResponse.
-
Добавьте тип ответа «пользовательское событие» к ключу шаблона.
-
-
Настройте ответ на пользовательское событие.
-
Добавление названия события и полезной нагрузки на событие:
-
Для ответа на пользовательское событие укажите имя события. В данном случае «TrackPack_Exit».
-
Добавьте полезную нагрузку события, которая содержит данные, которые будут переданы в поток. Это должно быть в формате CSV. В этом примере:
"PackageNumber":"${entity. PackageNum}"}
.
-
-
-
Используйте значение «Полезная нагрузка на события в потоке».
- Доступ к метаданным активности виртуального оператора версии 2
В конфигурации голосового потока добавленная полезная нагрузка на события доступна в метаданных активности виртуального оператора версии 2 .
Создайте переменную потока PackageNum.
С помощью операции синтаксического анализа выберите в качестве входной переменной метаданные активности виртуального оператора версии 2 .
Задайте для выходной переменной значение PackageNum, а для ее выражения пути — '$. PackageNum' (на основе структуры полезной нагрузки события, настроенной в ответе оператора).
- Использование метаданных в http-действиях :
Для отслеживания пакета используйте переменную PackageNum из обработанных метаданных в своем потоке.
Импортируйте вложенный поток, чтобы найти сведения о действиях HTTP .
Определите переменные потока "estimatedDelivery" и задайте для него значение $.estimated_delivery" и другую переменную потока "packStatus" и задайте для него значение $.status.
- Добавьте условия в зависимости от активности по HTTP :
Добавьте новое действие "Условие " в поток. Это действие используется для проверки ответа на HTTP-действие (существует ли пакет и его состояние).
В этом примере выражение
{{ HTTPRequest_8l3.httpStatusCode == 404 }}
используется для проверки, если пакет не найден.
- Доступ к метаданным активности виртуального оператора версии 2
- Добавьте настройку действий переменных в зависимости от условий:
Для условия, для которого пакет не существует:
- В ветвь, где пакет не найден, добавьте действие "Набор переменных ".
- Задайте для packageResp (другой переменной потока) следующее:
Пакет с этими деталями не найден.
Для условия, для которого существует пакет:
- В разделе ветви, в которой найден пакет (т. е. код состояния HTTP не равен 404), добавьте еще одно действие "Набор переменных ".
Задайте для packageResp (другой переменной потока) следующее:
Ваш пакет был забрать. Доставка будет осуществляться по телефону {{estimatedDelivery}}.
Добавьте еще два действия с переменными Set для настройки имени события и данных события. Эти данные будут переданы виртуальному оператору версии 2.
Создавайте переменные потока event_name и event_data.
Задайте event_name TrackPack_Entry, а event_data — {'packageResp': '{packageResp}'' | мюбр}.
-
Вернитесь к активности виртуального оператора V2 :
- Настройка работы виртуального оператора V2:
Соедините итоговую активность с активностью « Виртуальный оператор версии 2».
Задайте для события значение {{event_name}}.
Задайте для параметра «Данные события» значение {{event_data}}.
- Настройка работы виртуального оператора V2:
-
Обрабатывать входящее событие в виртуальном операторе:
-
Добавление нового ключа шаблона:
-
Перейдите к ответы Tab на левой панели.
-
Добавьте новый ключ шаблона packageStatus.
-
-
Настройка входящего события:
-
Для входящего канала задайте событие так, TrackPack_Entry (или то, что было отправлено в потоке виртуальному оператору версии 2).
-
-
Настройка ответа:
-
Задайте ответ следующим образом: <speak> <say-as interpret-as="date"> ${eventStore.packageResp} </скажем-как>. Могу ли я помочь вам в чем-нибудь еще?</говорить>
В ответе используются переменные, отправленные в полезной нагрузке из потока. Любые переменные, отправленные как часть данных события, доступны для доступа разработчиков под номером ${eventStore.<variable_name>}.
В этом случае также используются теги SSML. В частности, тег SSML позволяет управлять тем, как текст интерпретируется и говорится движком текста. Этот тег может использоваться для указания того, как следует произносить цифры, даты, время, адреса и другой текст. Здесь мы используем его на свидание.
-
-
Маршрутизация операторов на основе предыдущих намерений
-
Если деятельность виртуального оператора V2 завершается через вывод "Эскалация", используйте действия синтаксического анализа для получения предыдущих намерений из метаданных оператора.
-
Действие с использованием регистра используется для проверки различных значений предыдущих намерений, которые определяют логику строения в очередях. В этом примере мы проверили, было ли предыдущее намерение "Track package".
-
Докрепите результаты действий « Регистр » к соответствующим краям контактов очереди.