Приветствую, друзья! В предыдущих статьях мы создавали простые сценарии в интерфейсе конструктора голосовых роботов Voicebox. Сегодня возьмем тему чуть посложнее и рассмотрим пару сценариев с переменными. Один из них будет имитировать работу оператора маркетплейса: бот позвонит покупателю и попросит у него подтвердить или отменить заказ. Второй сценарий будет посвящен нелегкому труду сотрудников медицинской клиники. Облегчим им этот труд: теперь напоминать пациентам о приеме у врача будет бот.
Разумеется, мы предусмотрим и случаи, когда пациент захочет перенести визит или отказаться от него. Всё это будет сделано для того, чтобы меньше отвлекать специалистов, у которых и без того забот хватает.
Параллельно создадим пару блоков, в которых будут скомбинированы ответы голосом и при помощи цифровых клавиш. И, кстати, для некоторых людей это не только удобно, но и безопасно, потому что многие сегодня вообще не любят что-либо говорить, подозревая утечки биометрических данных. Что ж, уважим и их тоже. Но для начала немного теории.
Переменные в сценариях Voicebox
Перед тем, как приступать к разработке сценариев, пару слов о том, зачем могут понадобиться переменные в сценариях голосовых ботов:
Во-первых, в переменные может передаваться информация из базы данных. Имя клиента, номер заказа, сумма к оплате, время посещения, профессия врача — всё это боту нужно озвучить абоненту, и именно для этих целей мы будем заранее объявлять переменные в самих сценариях. А значения для них будут подтягиваться, например, из вашей CRM или базы данных компании.
Во-вторых, части переменных значения присваиваются, что называется, по ходу пьесы: например, в переменную можно записать голосовой ввод абонента или ввод с клавиатуры. А затем, естественно, использовать эту информацию в дальнейших блоках сценария. Для этого есть специальные меню в блоках, позволяющие записывать голосовой ввод в переменные.
В сегодняшних сценариях мы будем использовать переменные с заранее заданными значениями: я покажу, как их объявлять и как использовать в соответствующих блоках. Ну что ж, давайте закончим со скучной теорией и поскорее перейдем к практике.
Сценарий № 1. Подтверждение заказа на маркетплейсе
Итак, чтобы работать со сценариями нужно авторизоваться в конструкторе роботов от компании МТТ и выбрать исходящий сценарий «Подтверждение заказа клиентом»:
![](https://habrastorage.org/getpro/habr/upload_files/1d5/fcc/68e/1d5fcc68ef4cd575441958ed7e400d8f.png)
Теперь в шаблоне открываем главный (синий) блок «Исходящий сценарий». В основных настройках можно изменить голос бота, скорость воспроизведения, но нас сейчас интересуют переменные.
Поэтому переключаемся на следующую вкладку и добавляем нужные (внизу есть кнопка «Добавить переменную»), вот так:
![](https://habrastorage.org/getpro/habr/upload_files/751/b3a/a61/751b3aa616380d82701902eadd4c45bf.png)
Здесь нужно отметить два момента. Во-первых, в списке уже есть системные переменные. Их трогать не нужно, впрочем, удалить система их в любом случае не даст. И в данных сценариях, за единственным исключением (см. сценарий № 2), рассматривать эти переменные мы не будем.
Во-вторых, обратите внимание на значения. В этом обучающем сценарии я их вбил вручную, но в работе реального сценария он будет настроен так, что эти данные будут подтягиваться непосредственно из CRM.
Добавив переменные, не забудьте сохраниться. К этому списку у нас еще будет повод вернуться, а пока давайте скорректируем шаблонный сценарий.
![](https://habrastorage.org/getpro/habr/upload_files/15d/e1e/9b0/15de1e9b0899965b791f1d3a3502f4ca.png)
Блок вызов мы уже разбирали ранее, он нужен для набора номера. В случае ответа бот приветствует покупателя, а если на той стороне автоответчик, то принудительно завершает звонок. В случае успеха выполняется переход к блоку подтверждения заказа («Заказ»).
Да, еще одно напоминание: не забудьте сохранить сценарий. Конечно, при закрытии программа предложит сделать это сама, но удобнее выбрать для сценария подходящее имя, чтобы затем быстро найти и открыть его. А первую переменную мы введем уже в блоке «Приветствие»:
![](https://habrastorage.org/getpro/habr/upload_files/734/bc1/ab3/734bc1ab3477ee36ad3fb089920d5db6.png)
Обратите внимание на двойные фигурные скобки: именно так указываются переменные в текстовых блоках VoiceBox. Теперь наш робот сразу обратится к товарищу Печкину по имени и затем перейдет к сути звонка. А остальные переменные мы используем в блоке «Заказ» таким образом:
![](https://habrastorage.org/getpro/habr/upload_files/772/a16/601/772a1660188fcfd670262a0b5bd507e4.png)
Вспоминаем, какие значения мы присвоили этим переменным. Значит, Игорь Иванович услышит следующее: «Вы оформили у нас заказ номер 377 на сумму 25000 рублей. В заказ входит тулуп, штаны ватные, валенки, а доставим мы его в Простоквашино. Если вы подтверждаете заказ, скажите Да или нажмите клавишу 1. Если хотите отменить, скажите Нет или нажмите 2. Если что-то неверно, скажите Оператор или нажмите 3».
Обязательно оставляем возможность соединения с оператором: вдруг Игорь Иванович забыл заказать шапку на меху или кеды в подарок Шарику. Вот и пришло время нам вернуться в главный блок и кое-что проверить:
![](https://habrastorage.org/getpro/habr/upload_files/258/303/083/258303083f57b70d9fcf2b5bdfcb2472.png)
Справа появились стрелочки. Раскрываем строку и видим, что стала доступна дополнительная информация: имя сценария, статус (используется или нет переменная), а также блоки, где она используется. Очень удобно, ведь можно случайно вбить не то имя, и тогда переменная не сработает.
Теперь посмотрим, как реализовать сочетание голосового и цифрового ввода. Здесь тоже всё довольно просто:
![](https://habrastorage.org/getpro/habr/upload_files/c55/fa2/2c8/c55fa22c81bfb8cccbbf127dc3e94d2b.png)
В типе ответа включаем обе галочки, для голосовых ответов добавляем ключевые слова. Причем не только те, которые просим произнести покупателя, но на всякий случай делаем расширенный список, ведь кто скажет «Ага», а кто-то «Не». И в этом случае сценарий не приостановится, ожидая, например, цифрового ввода. Цифры, кстати, после постановки галочки в пункте «С клавиатуры» будут расставлены автоматически в порядке добавления пунктов.
Вот и всё, осталось настроить блоки ответа, и наш сценарий готов. Выглядеть он будет примерно так:
![](https://habrastorage.org/getpro/habr/upload_files/8f9/774/e4c/8f9774e4c5ba71ccf6293f33e9492bbb.png)
Сценарий № 2. Приглашение в клинику
Теперь поможем медицинским работникам и освободим их от рутинных приглашений клиентов в клинику. Создадим сценарий голосового бота, который будет звонить пациентам и подтверждать визит к специалисту.
Для этого случая у нас тоже есть удобный шаблон, который называется «Информирование о встрече». Находится он там же, в меню шаблонов. Слегка изменим его вид и получим такую схему:
![](https://habrastorage.org/getpro/habr/upload_files/8f2/b0a/b3d/8f2b0ab3ddb69ac9ac4a40b4cfa2bdec.png)
С приветствием и завершением по автоответчику всё понятно, поэтому сразу переходим к одному из двух ключевых блоков сценария «Сможете прийти». Открываем его и настраиваем переходы с учетом того, что пациент может передумать, а также на случай возможной ошибки подтверждения. Вот так будет выглядеть текст:
![](https://habrastorage.org/getpro/habr/upload_files/c7c/a99/144/c7ca99144a20722dbb49f234df42633c.png)
Здесь, помимо имени пациента, сценарий подхватит время посещения и специалиста, на прием которому пациент собирается. Переменные, разумеется, должны быть заданы в главном блоке сценария (см. первый пример). Но здесь есть и еще один момент. Кроме согласия или отказа пациента, может произойти, например, сбой распознавания. Предусмотрим и этот вариант и добавим возможность повтора сообщения, вот так:
![](https://habrastorage.org/getpro/habr/upload_files/a60/212/b72/a60212b72b5066da1be12491a59d7a00.png)
Теперь, если ввода не будет или возникнет ошибка, бот просто повторит вопрос. С подтверждением визита всё понятно: будет произнесен соответствующий текст и звонок завершится. Осталось настроить блок отмены визита:
![](https://habrastorage.org/getpro/habr/upload_files/0d2/43b/542/0d243b542c02f70c7046875b953d0b86.png)
Здесь, в общем-то, тоже ничего нового, просто закрепляем пройденное, совместив голосовой ввод с вводом цифрами. Еще раз обращаю ваше внимание на полезность этой функции: общаться голосом хотят далеко не все, поэтому комбинированные меню следует создавать везде, где это возможно.
А теперь об одной из системных переменных. Для перевода на сотрудника мы можем использовать переменную number_a, которая уже объявлена в сценарии по умолчанию. Выбираем ее из выпадающего списка и указываем внутренний номер сотрудника:
![](https://habrastorage.org/getpro/habr/upload_files/a87/d0c/338/a87d0c338a15f46473da532a296734d6.png)
Что ж, пора подводить итоги. Сегодня мы познакомились с переменными, научились задавать их в сценарии и использовать в блоках. Также рассмотрели комбинированные меню с возможностью голосового и цифрового ввода по выбору.
Как обычно, сценарии, которые мы создали, достаточно универсальные, поэтому вам нетрудно будет переделать их для своей компании или сервиса. В следующий раз рассмотрим сценарии, когда программа будет записывать в переменные ответы абонентов.
Автор: Роман Андреев