Как правильно написать скрипт для виртуального ассистента
Здравствуйте! Меня зовут Михаил Абрамов, я работаю техническим писателем в МТС Exolve. Мы разрабатываем и тестируем цифровых ботов на платформе VoiceBox — это конструктор голосовых роботов.
Мы запустили этот проект в 2020 году. Он создавался для бизнеса, наших клиентов, которые хотели автоматизировать рутину, например, подтверждение брони, доставки, адреса и так далее.
Сразу предупрежу возможный негатив: наш сервис можно использовать только для звонков людям, которые готовы к этому звонку. Вы заказали пиццу и робот позвонил, сообщил номер заказа, проговорил все его позиции и время доставки. Словом, полезный робот.
Сегодня расскажу, как можно легко и просто разрабатывать скрипты звонков в графическом интерфейсе нашего конструктора.
Создание продуманного сценария — это больше половины успеха при внедрении голосового бота. Поэтому работу стоит начать еще до написания скрипта сценария. Необходимо заранее создать схему диалогов, но в нашем случае удобно то, что мы можем сделать это прямо в конструкторе голосового бота.
Это выглядит примерно так:
Поясню схему: сначала клиент попадает в главное меню, где ему голосом или клавишей цифрового ввода предлагается выбрать вариант. Такая схема отлично работает, когда в компании несколько отделов или специалистов, получающих звонки при выполнении клиентом целевого действия. Им может быть голосовая команда или нажатие определенной клавиши. Центральная ветка — любое действие, когда перевод не требуется. В этом случае клиент услышит выбранную при настройке запись, и звонок завершится.
Это простейший сценарий, который вряд ли будут использовать в таком виде. В данном случае цель — показать, что схему можно реализовать через интерфейс VoiceBox в графическом виде. Прямой работы с кодом нет, а значит с созданием такого сценария справится и человек, не знакомый с программированием. Элементы кода в реальных сценариях всё-таки будут, но работать с ними просто.
Переменные
Переменные понадобятся, чтобы доставать информацию из подключенной базы данных. Пример: время визита к врачу, которое мы озвучим позвонившему в регистратуру забывчивому клиенту, или номер заказа в интернет-магазине. В обоих случаях бот будет обращаться к базе данных записей или заказов.
Также переменные можно создавать прямо в процессе общения с клиентом, и тогда бот будет записывать в них соответствующие значения. Вот как это выглядит в интерфейсе VoiceBox:
В примере выше бот обработает голосовой ввод и запишет имя клиента в переменную name, после чего продолжит общаться, используя это значение там, где оно будет прописано в блоках сценария. Например:
Как видим, переменную стоит особым образом оформить (в нашем случае заключить в двойные фигурные скобки {{}} ), чтобы бот смог ее корректно обработать. Предположим, клиент представился как Иван Петрович, и тогда он услышит следующее:»Рады, что Вы обратились к нам, Иван Петрович! Пожалуйста, подождите минутку, пока сотрудник бухгалтерии Вам ответит».
Переменные с изначально заданным значением не требуют «наполнения». Такое значение сервис будет брать непосредственно из базы данных. Здесь тоже всё просто: в сценариях есть кнопка «Добавить переменную», кликнув по которой мы попадаем в раздел переменных, имеющихся в базе данных. Вот шуточный пример с интернет-магазином:
Если клиент назовет, например, номер заказа (переменная number) или ФИО (переменная name), то бот сможет сообщить ему всё остальное: место доставки (place), сумму заказа (amount) и состав покупок (order). Для этого нам в соответствующих блоках скрипта понадобится правильно расположить эти переменные.
Расположение блоков
Нам нужно знать, что делает каждый тип блоков, чтобы верно их расположить. Есть следующие типы блоков:
Чаще всего используются следующие:
«Интерактивное меню» — блок для выбора пользователем ответа из заданного количества предложенных вариантов. Есть возможность выбора как голосом, так и по нажатию кнопки, или оба варианта сразу.
«Проигрыватель» — пользователь прослушивает записанную информацию.
«Распознавание ответа» в VoiceBox позволяет принимать голосовой ввод пользователя и далее сохранять его в базе данных или использовать в дальнейшей беседе.
«Переадресация» — блок для перевода звонка на заданный номер, например, на определенного специалиста.
«Отбой вызова» — блок завершения диалога.
«Скрипт» – используется для прописывания дополнительной логики. Блок «Скрипт» может понадобиться, например, для выполнения ботом действий по определенному условию, присвоения значений, добавления операторов.
Правое меню позволяет настраивать логику скрипта, если нам недостаточно обычных блоков. Но, как видно на скриншоте, и здесь всё настраивается без кода, а просто вставкой соответствующих значений:
Нет тупикам
Каждая ветка должна вести к какому-то результату, поэтому скрипт сценария стоит настроить так, чтобы клиент не ушел разочарованным. Например, если бот не понял, чего хочет звонящий, предусмотрите немедленный перевод на оператора. Также перевод на оператора нужно добавить и в самом начале, чтобы у клиента был выбор: перемещаться по меню с ботом или сразу перейти к решению своего специфического вопроса. Отсутствие такого выбора очень раздражает.
При этом грамотно настроенный голосовой бот всё равно поможет человеку сэкономить время, вам нужно только объяснить это клиентам — и, если бот действительно удобен, люди вскоре начнут им пользоваться.
Распознавание речи
Боты, как и люди, тоже ошибаются (да-да) и могут некорректно распознавать человеческую речь. И в этом случае разумно им помочь и, например, составить список наиболее популярных (или почти всех) имен. Человек представится, а бот сопоставит распознанную речь с записями из базы данных и избежит ошибок в имени клиента.
Важно расширить список слов и фраз, выражающих согласие или несогласие. Люди на вопрос бота ведь не обязательно ответят «да», а могут сказать «хорошо», «окей», «согласен», «согласна», «ладно», «нормально» и так далее. А при отрицании бот может услышать не только «нет», но и «не-а», «против», «ни за что» и многое другое. К счастью, здесь вы можете добавить целые списки целевых слов (и многие уже есть в базе по умолчанию), поэтому настройка не займет много времени.
Пример сценария
Представим, что нам нужно создать сценарий для техподдержки мобильного оператора. Создаём такую схему в интерфейсе VoiceBox:
В приветственное меню (верхнее на скрине) добавляем такой текст: Добро пожаловать в службу технической поддержки. Если вам нужна помощь по настройкам связи, скажите «Настройки» или нажмите 1. Если у вас вопрос по тарифам, скажите «Тариф» или нажмите 2. Если у вас другой вопрос, скажите «Оператор» или нажмите 3.
Перейдя в настройки, абонент услышит: Если вы хотите настроить интернет, скажите «Интернет» и следуйте инструкции. Если у вас другой вопрос, скажите «Другое» — я соединю вас с оператором. Далее происходит переход на нужных сотрудников. Перейдя к тарифам, абонент услышит от робота: Хотите узнать условия своего тарифа, скажите «Мой тариф». Хотите перейти на другой тариф, скажите «Переход». В случае с переходом звонок будет переведен на специалиста. А когда абонент выберет «Мой тариф», робот может попросить его назвать номер телефона (или договора), после чего, используя значение, занесенное в переменную, озвучит условия тарифа в блоке «Информация».
Разумеется, этот скрипт требует доработки. Например, нужно предусмотреть отсев спамеров, которых бот может либо сбрасывать, либо постоянно гонять по меню. Также реальный скрипт будет сложнее за счет большего числа услуг, вариантов ответа и перенаправлений. Представим, что после информации о тарифе абонент захочет продолжить диалог — поэтому нужно предусмотреть перевод в главное меню или на оператора.
Советы по созданию скрипта
Определите проблему, которую вы хотите решить. Когда речь идёт о голосовом интерфейсе, лучше всего начать с коротких или повторяющихся задач.
Определите свою аудиторию. Кто будет использовать этот интерфейс? Создавайте профили аудитории, чтобы сузить её до конкретных пользователей и персонализировать бота. У любого бизнеса есть очевидные пользователи, люди, о которых вы сразу вспоминаете, но не забывайте и о тех, кто выбивается из стандартов. Попробуйте учесть все потребности пользователей, даже при обслуживании людей с физическими нарушениями или нарушениями зрения.
Создайте образ голосового бота. Это поможет сделать разговор личным и человечным. Люди лучше реагируют на диалоговые системы ИИ, у которых своя идентичность. Попробуйте создать образ, который соответствует бренду, выберите голос, который ясно выражает это. Или воспользуйтесь адаптивным синтезом.
Люди очень быстро понимают, нравится им голос или нет, поэтому важно тщательно выбрать голос вашего бренда.
Создавайте сценарии для каждого действия. Представьте себе вопросы или команды, которые пользователи будут задавать системе. Как может ответить робот, а затем пользователь? Наметьте разные ветки разговора. Например, если вы создаете бота для клиентов ресторана, ваш очевидный путь — стандартный заказ на доставку. Но что произойдёт, когда у бота спросят, не содержит ли блюдо глютена? Большинство пользователей не зададут этот вопрос, но некоторые могут спросить, и важно включать их в сценарий.
Проверьте сценарии внутри компании. Загрузите диалоги на платформу бота и протестируйте их. Запишите разговоры. Обратите внимание на любые неестественные паузы или недостатки во время тестирования прототипа. Попросите помощи у коллег. Фиксируйте те моменты, где можно упростить работу пользователя.
Опубликуйте бета-версию бота. Как только пройдёте внутренний тест, внедрите бота в диалоги с клиентами. Но это только начало. Внимательно следите за первыми разговорами. Посмотрите, как люди формулируют вопросы или команды, а затем корректируйте ответы бота.
Графический интерфейс — отличный помощник при создании скриптов. На этом у меня всё, готов ответить на вопросы в комментариях!