Как использовать диалоговое IVR в сценарии

Чтобы использовать диалоговое IVR Cloud Contact в сценарии, добавьте в сценарий входящих голосовых вызовов блоки для работы с ботами, например Chat Bot Select Account и Ask a Bot, а также блок Play-Listen. Эти блоки используют интегрированные технологии распознавания речи (Speech-to-Text) для преобразования голосового ввода в текст, а интегрированные чат-боты анализируют этот ввод, предлагают ответы и помогают направлять вызовы нужным операторам.

В этой статье показано, как включить эти блоки в простой голосовой сценарий, чтобы:

  • Приветствовать клиента и прослушать его ответ
  • Ответить клиенту до трех раз с помощью голосовых сообщений
  • Собрать информацию от клиента
  • Найти оператора и соединить с ним вызов, если бот или IVR не может помочь
  • При принятии обращения открыть оператору карточку с собранными данными и/или текстом диалога с IVR

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

Перед началом выполните следующие действия, если они еще не выполнены:

  • Создайте бота Watson Assistant или Amazon Lex
  • Добавьте учетную запись интеграции бота или механизма подсказок для чата
  • Настройте сервис распознавания речи (Speech-to-Text) у поставщика услуг
  • Добавьте учетную запись интеграции Speech To Text
  • Настройте сервис синтеза речи (Text-to-Speech) у поставщика услуг
  • Добавьте учетную запись интеграции Text To Speech

Логика сценария

Сценарии состоят из блоков, которые задают порядок обработки обращений. Подробные описания блоков Cloud Contact приведены в разделе «Определения блоков» этого руководства.

Следующая последовательность действий показывает работу блоков в голосовом сценарии с ботом и диалоговым IVR. В примере используются интегрированные чат-бот Watson Assistant и сервис Google Speech-to-Text.

Пример голосового сценария с блоком Play-Listen в Конструкторе сценариев

Действие 1. Set Prompt Language задает язык диалогового IVR

Диалоговое IVR общается с абонентами по телефону с помощью голосовых сообщений. В свойствах блока Set Prompt Language можно задать язык для всех голосовых сообщений сценария.

Свойства Set Prompt Language

В поле Language выберите язык голосовых сообщений. В нашем примере выбран «English — United States».

В поле TTS voice выберите голос для синтеза речи (TTS). В нашем примере выбран «en-US-standard-C».

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

Действие 2. Set Variable считает обращения клиента к боту

В этом примере абонент должен обратиться к чат-боту не более трех раз, после чего вызов направляется оператору. Такое ограничение снижает вероятность того, что клиент завершит вызов, если бот не сможет помочь.

С помощью блока Задать переменную (Set Variable) мы подсчитываем попытки взаимодействия с ботом. Отсчет начинается с нуля, поэтому задаем значение «0».

Свойства Set Variable

Действие 3. Chat Bot Select Account задает учетную запись интеграции бота

Все сценарии с ботами содержат блок Выбрать учетную запись чат-бота (Chat Bot Select Account). В нем выбирается учетная запись интеграции бота или механизма подсказок для чата, уже настроенная для контакт-центра.

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

Выберите учетную запись интеграции

Действие 4. Play-Listen воспроизводит сообщение абоненту и получает ответ

Блок Воспроизвести и прослушать (Play-Listen) использует синтез и распознавание речи: преобразует текст ответа бота в голосовое сообщение, а затем распознает ответ клиента и преобразует его в текст.

Укажите или создайте голосовое сообщение, с помощью которого диалоговое IVR будет «говорить» с клиентом. В этом примере указанное здесь сообщение служит приветствием.

Поле transcriber задает учетную запись интеграции Speech-To-Text, уже настроенную для контакт-центра.

В этом примере в поле recognized phrase мы задаем переменную «user_phrase», в которую записывается распознанная речь клиента. Далее в сценарии эта переменная используется для отправки ответа клиента оператору в текстовом сообщении (см. «Internal Message»). Можно задать любое имя переменной, но затем необходимо использовать именно его.

Confidence — переменная, показывающая степень уверенности сервиса распознавания речи (STT) в правильности распознавания слов клиента. Как и для recognized phrase, здесь можно задать любое имя переменной, последовательно используя его далее. Сервис STT выражает уверенность числом: чем оно выше (например, «0.999»), тем выше уверенность в правильности распознавания. Низкое значение (например, «0.001») указывает на очень низкую уверенность. Например, если клиент произнес «I need a new phone» («Мне нужен новый телефон»), а сервис распознал «I need a sea foam» («Мне нужна морская пена»), уверенность, скорее всего, будет очень низкой. Уровень уверенности доступен в используемом сервисе (например, Watson Assistant).

Max timeout — время в секундах, в течение которого диалоговое IVR ожидает ответ абонента. По истечении этого времени сценарий продолжает выполнение.

В условных выходах блока Play-Listen можно определить действия сценария, если абонент нажимает клавиши телефона, передавая сигналы DTMF, или молчит.

Play-Listen общается с клиентом и собирает данные

Действие 5. Ask a Bot передает сообщение клиента боту

Блок Запросить бота (Ask a Bot) позволяет автоматизировать диалог с помощью бота до подключения оператора. Он передает клиенту ответ бота в исходном виде, то есть предлагаемые ответы.

Обратите внимание: в поле Message указана переменная $(user_phrase), заданная ранее в сценарии. Благодаря этому распознанная речь абонента передается интегрированному чат-боту (в данном случае Watson Assistant) для обработки в логике диалога бота. В результате формируются предлагаемые ответы, которые можно передать оператору в Рабочее место оператора.

Поле raw response настраивается в параметрах диалога Watson Assistant и не связано с Cloud Contact. В этом примере поле оставлено пустым.

В поле timeout задается время ожидания предлагаемых ответов бота в секундах.

Получение предлагаемых ответов от бота

В ветви условных выходов блока Ask a Bot мы перетащили другие блоки, которые определяют действия при ошибке, истечении времени ожидания или отсутствии данных. Более подробные комментарии к этому примеру приведены в шаблоне сценария.

Действие 6. If определяет действия при отсутствии данных от бота

В блоке Ask a Bot есть условный выход Нет данных. В его ветвь мы перетащили другие блоки сценария, определяющие действия на случай, если бот не сможет получить информацию от абонента.

Сначала с помощью Задать переменную (Set Variable) задайте переменной «Attempts» значение =$(Attempts)+1. Так подсчитывается, сколько раз бот пытается обратиться к абоненту и предложить ответ.

Затем с помощью Условие (If) добавьте условие: если бот обращался к абоненту менее трех раз, следует повторить попытку. Напомним, что в действии 2 мы начали подсчет взаимодействий с ботом с помощью Set Variable.

Определение действий, если бот обращался к абоненту менее трех раз

В ветвь блока Условие (If) мы добавили еще один блок Play-Listen, который выполняется при соблюдении условия. В нем задается сообщение для повторной попытки получить данные от абонента: «Извините, я вас не понял…».

Если получить информацию по-прежнему не удается, сценарий использует Перейти к блоку (Goto) для перехода к поиску оператора и соединению вызова. Блок Воспроизвести голосовое сообщение (Play Prompt) сообщает абоненту, что бот не смог его понять, поэтому будет подключен оператор.

Лимит попыток исчерпан: перед подключением оператора воспроизводится сообщение

Действие 7. Set Variable сохраняет предложения бота

Задать переменную (Set Variable) задает имя переменной для ответов бота, то есть предлагаемых ответов. Их содержание соответствует настройкам Watson Assistant или другого чат-бота.

В этом примере мы назвали переменную «bot_phrase» и присвоили ей значение «$(suggestions[0].msg)». Далее при открытии оператору карточки с текстом диалога IVR используются переменные «bot_phrase» и «user_phrase».

Свойства Set Variable

Действие 8. Еще один блок If направляет абонента к оператору

В этом примере мы добавили условие перехода сценария в другую ветвь: «user_phrase is not empty» (переменная user_phrase не пуста, то есть абонент что-то сказал).

Ветвление после Ask a Bot и поиск оператора в ответ на слова абонента

Действие 9. Web Screen Pop передает оператору текст разговора

В свойствах блока Открыть веб-страницу (Web Screen Pop) мы задали текст, который оператор увидит при принятии вызова. В поле «Text to display» указаны переменные «user_phrase» и «bot_phrase» с простой HTML-разметкой. В Рабочем месте оператора их содержимое отображается как обычный текст.

Текст диалога бота с клиентом можно показать оператору при открытии карточки

Действие 10. Find Agent ищет оператора с нужным навыком

Блок Найти оператора (Find Agent) ищет следующего доступного оператора с нужным навыком, который сможет принять вызов. С помощью Find Agent можно задать время ожидания и сообщать клиенту расчетное время ожидания (EWT).

Бот не смог помочь клиенту за три попытки, поэтому сценарий ищет оператора

Действие 11. Connect Call всегда следует за Find Agent

Блок Find Agent выбирает подходящего оператора по заданным критериям, но сам не передает ему обращение. Для соединения используется блок Connect Call.

Можно указать, куда направить вызов, или поручить системе найти следующего доступного оператора

Действие 12. Exit завершает сценарий

Блок Завершить сценарий (Exit) завершает сценарий. Без него заданная последовательность действий будет повторяться, пока клиент не завершит вызов.

Последнее действие: сохраните сценарий

Обязательно нажмите Сохранить, чтобы применить изменения. При закрытии окна или вкладки браузера Конструктор сценариев закроется без сохранения, и внесенные изменения будут потеряны.

Рекомендуемые материалы

Подробнее о настройке входящих голосовых вызовов и ботов см. в следующих учебных материалах Cloud Contact:

  • Учебные материалы по ИИ и ботам
  • Как создать Watson Assistant
  • Как создать бота Amazon Lex
  • Настройка сервиса входящих голосовых вызовов