создание голосовых роботов что это
«Ваш звонок очень важен для нас»: как мы создаем голосовых роботов для бизнеса
С голосовыми роботами вы наверняка сталкивались и в некоторых случаях даже не понимали, что с вами говорит не живой человек. Сегодня технологии позволяют создавать виртуальных голосовых операторов, которые разговаривают как человек, поддерживают диалог и обрабатывают ответы собеседника. Мы, компания Kvint, создали такого робота.
Голосовых роботов начинают внедрять, когда возникает потребность в обработке больших объемов звонков — от тысячи в день. С меньшим количеством обычно справляются своими силами. Если один оператор в день может обрабатывать 150-250 звонков, то у робота ограничений нет — он может обзванивать до нескольких миллионов людей. Компания выигрывает и в скорости обработки звонков, и в стоимости их обработки, сокращая затраты операторов в 2-4 раза.
Роботы интересны там, где много типовых звонков: это в первую очередь банки, операторы связи, коллекторские фирмы, крупные ритейлеры и так далее. Объем звонков в таких компаниях может доходить до сотен тысяч в день.
Роботов привлекают на разные задачи: холодные продажи, работа с должниками на разной стадии просрочки, опросы по качеству оказанных услуг, обработка звонков на первой линии. Виртуальный оператор может работать как самостоятельно, так и в паре с человеком. Тогда сначала робот обзванивает большую базу людей, потом отбирает из их числа «теплые контакты» (потребителей, заинтересованных в дополнительных услугах), а затем переводит их на оператора.
Первый робот был создан в 2017 году для пиццерии с символичным названием «Счастье». Идея была в том, чтобы сделать универсального робота, который вместо человека принимал бы по телефону заказы для пиццерий, ресторанов и кафе. В России их огромное количество, более 50 тысяч, и нам казалось, что разработав одного робота, мы покроем узкий, но достаточно большой сегмент. Сделать голосового робота получилось: он действительно мог принимать заказы, помогал выбирать, например, с какой начинкой заказать пиццу, советовал напитки, даже мог распознавать разные блюда с незнакомыми названиями из японской и китайской кухни.
Однако идея с масштабированием провалилась. Причина была банальная: люди просто отказывались общаться с роботом, и постоянно просили переключить на оператора. Даже бесплатная пицца в качестве бонуса не могла их заставить заказывать через робота. Стало ясно, что там, где основным инструментом продажи является телефон, доверять роботу слишком опасно. Особенно это критично для небольших отдельных пиццерий, где количество заказов не превышает 100-150 в день — с этим легко справляются 1-2 оператора.
Тем не менее, первый неудачный опыт с пиццерией заложил основу для создания облачной платформы для проектирования голосовых роботов под разные задачи (и для любого сегмента бизнеса), а также заставил нас начать разработку своего синтеза речи, который максимальный был бы похож на человеческий голос. Задача была сделать робота, которого трудно отличить от живого человека.
Приоритетным было сделать такой инструмент, который позволил бы создавать голосовых виртуальных роботов без использования программистов-разработчиков. То есть чтобы любой аналитик или скриптолог мог самостоятельно делать роботов.
Сейчас распознать робота в виртуальном операторе Kvint практически невозможно — с этим справляется не более 1% пользователей. Голос — первое, на что человек обращает внимание в диалогах по телефону. Если робот сразу себя рассекретит неживым металлическим голосом, эффективность диалога снизится существенно, особенно это касается продающих скриптов.
В диалогах мы одновременно используем либо предзаписанные человеком фразы, либо их склейку с синтезированными вставками — в случаях, если в диалог требуется вводить переменные части (имена, суммы, даты, адреса). Поскольку мы разработали собственный синтез речи, то обе части фразы произносятся одним и тем же голосом. Так получается относительно бесшовная склейка.
Однако в нашей практике были исключения, когда мы наоборот меняли живой человеческий голос на полностью синтезированный и металлический — это было с роботом для вызова врача на дом, который принимал звонки от пациентов. Робот фиксировал основные данные по вызову: ФИО пациента, симптомы, адрес, контактную информацию. Если люди, особенно пожилые, думали, что говорят с человеком, то иногда начинали долго перечислять весь анамнез болезни, или рассказывать, как сходили на день рождения к подруге, после чего у них случилось расстройство… Роботу было сложно адекватно реагировать подобных диалогах — он начинал переспрашивать или отвечать невпопад. Поэтому намеренно мы поменяли голос на искусственный, и люди стали более четко и коротко отвечать на вопросы виртуального медицинского оператора, понимая, что перед ними не человек.
Сегодня преимущество голосового робота Kvint в том, что с ним можно разговаривать достаточно в естественной свободной манере — он понимает не только отдельные ключевые слова, выдергивая их из контекста, но также может анализировать смысл целых фраз и предложений. Человеку не приходится подстраиваться, когда ему намеренно задают закрытые вопросы, на которые можно ответить только «да» или «нет».
За несколько лет работы мы создали облачную платформу, которая позволяет создавать голосовых роботов без участия разработчиков-программистов. Сегодня это комплекс взаимосвязанных систем:
Мы уже адаптировали платформу для создания виртуальных голосовых операторов не только на русском языке, но и на других европейских языках — английском, немецком, французском. Европейские и западные рынки — достаточно привлекательный сегмент для подобных технологий. По объему они в разы превышают российский рынок, и по маржинальности в некоторых странах более привлекательны.
Сегодня среди наших клиентов есть банки, крупные интернет-магазины, поликлиники. С некоторыми крупными компаниями запущены пилотные проекты, в частности — ВТБ, МТС, Росбанк, Мегафон.
Развитость рынка влияет на интерес к технологии, сегодня идет бум спроса на подобные услуги. Это связано с общим трендами цифровизации и автоматизации всех бизнес-процессов. И голосовые технологии, искусственный интеллект в этом сегменте — одно из наиболее перспективных направлений как для потребителей, так для бизнеса и инвесторов.
Голосовой бот + телефония на полном OpenSource. Часть 1 — создание и обучение текстового бота RU
Пример разговора Б-бот Ч-человек
Бот работает на принципе понятия намерения пользователя. На каждое намерение есть список заготовленных ответов. Чтобы бот мог понять намерение пользователя, необходимо обучить модель на датасете с намерениями и фразами, которые могут активировать это намерение
Намерение: Поздороваться
Возможные фразы: привет, добрый день, дратути…
Ответ: Привет
Намерение: Попрощаться
Возможные фразы: Пока, До свидания, Прощай…
Ответ: Пока
Шаг 1: Предобработка датасета
За основу взят датасет из открытого обучения skillbox по написанию чат бота в телеграмм, который может пообщаться с вами на тему кино. Выложить не могу по понятным причинам.
Предобработка является очень важным этапом.
Первым делом уберем все символы и цифры из текста и приведем все к нижнему регистру.
Далее необходимо исправить опечатки и ошибки в словах.
Эта задача не самая простая, есть хороший инструмент от Yandex под названием Speller, но он ограничен по числу запросов в день, поэтому будем искать бесплатные альтернативы
Для python есть замечательная библиотека jamspell, которая неплохо исправляет опечатки. Для нее есть хорошая предобученная модель для русского языка. Прогоним все входные данные через эту библиотеку. Для голосового бота этот шаг не так актуален, так как система распознавания речи не должна выдавать слова с ошибками, она может выдать не то слово. Для чат бота этот процесс необходим. Так же для минимизации влияния опечаток можно обучать сеть не на словах, а на n-граммах.
N-граммы, это части слов, состоящие из n букв. к примеру 3-граммы для слова привет будут
при, рив, иве, вет. Это поможет быть менее зависимым от опечаток и повысит точность распознавания.
Далее необходимо привести слова к нормальной форме, так называемый процесс лемматицизии слов.
Так же можно из фраз убрать стоп слова, которые несут мало смысловой нагрузки, но увеличивают размер нейронной сети (я брал из библиотеки nltk stopwords.words(«russian»)), но в нашем случае лучше их не убирать, так как пользователь может ответить роботу только одним словом, а оно может быть из списка стоп слов.
Шаг 2: Преобразование датасета в понятный для NN вид
Для начала необходимо сформировать словарь из всех слов датасета.
Для обучения модели понадобится перевести все слова в oneHotVector
Это массив, которые равен длине словаря слов, в котором все значения равны 0 и только одно равно 1 в позиции слова в словаре.
Далее все входные фразы преобразовываются в 3-х мерный массив, который содержит все фразы, фраза содержит список слов в формате oneHotVector — это и будет наш входной датасет X_train.
Каждой входной фразе нужно сопоставить подходящее к ней намерение так же в формате oneHotVector — это наш выход y_train.
Шаг 3: Создание модели
Для небольшого бота достаточно маленькой модели с двумя слоями lstm и двумя полносвязными слоями:
Компилируем модель и подбираем оптимизитор, я выбрал adam, так как он давал лучший результат.
Шаг 4: Обучение модели
После подготовки датасета и компиляции модели можно запустить ее обучение. Так как датасет небольшой, пришлось обучать модель на 250-500 эпохах, после чего происходило переобучение.
Шаг 5: Пытаемся поговорить с нашим ботом
Чтобы поговорить с нашим ботом, надо на вход обученной модели подать правильно подготовленные данные. Пользовательский ввод необходимо обработать так же как и датасет из первого шага. Дальше преобразовать его в вид, понятный NN как во втором шаге используя тот же словарь слов и их индексы, чтобы входные слова соответствовали словам, на которых проводилось обучение.
Обработанный ввод подаем в модель и получаем массив значений, в котором присутствуют вероятности попадания нашей фразы в то или иное намерение, нам же необходимо выбрать то намерение, у которого самая высокая вероятность, это можно сделать через библиотеку numpy
Необходимо оценить уверенность сети в этом ответе и подобрать порог, при котором выдавать пользователю failure phrases, типа — я вас не понял. Для своих целей я установил порог в 50% уверенности, ниже которого бот скажет, что не понял вас.
Далее из списка наших намерений выбираем подходящий ответ и выдаем его пользователю
Как собрать голосового бота: распознавание речи, синтез речи и NLP в несколько строк кода
Для демонстрации я сделаю самый простой кейс: общение о погоде с помощью известного движка работы с речью api.ai, недавно купленного google. В ответ на произвольный запрос этот сервис возвращает json с результатом «понимания» этого запроса. Если там что-то, похожее на запрос погоды, с помощью openweathermap можно получить текстовое описание, например «облачно». Как сейчас за окнами коворкинга. Но, надеюсь, к середине дня распогодится!
А платформа Voximplant обеспечит аренду телефонного номера, прием звонка, распознавание речи пользователя и синтез ответа. Одна из наших ключевых фишек — это JavaScript, который выполняется в нашем облаке параллельно со звонком. И не просто выполняется, а в реальном времени. Плюс из этого JavaScript можно делать HTTP запросы к другим сервисами, так что Backend как таковой нам не понадобится: все будем делать в том же облаке, которое обрабатывает звонок. Чтобы у пользователя было как можно меньше задержек между его речью и ответом. У нас же бот, а не пошаговая стратегия с asterisk?
Шаг 1: получаем телефонный номер и отвечаем на входящий звонок
У меня есть хорошее введение в Voximplant, но оно на английском. Хорошо для наших клиентов по всему миру, но не очень хорошо для обучающей статьи на Хабре, поэтому позволю себе краткий пересказ. После регистрации в админке нужно перейти в раздел «Приложения» и создать новое, а затем сценарий в нем: тот самый JavaScript код, который будет выполняться в облаке. Самый простой сценарий ответит на звонок, синтезирует «привет, хабрапользователь» и повесит трубку. Вот его код:
Для организации кода и инструктирования когда и что выполнять у нас есть правила. Переходим в свое приложение, затем в раздел «Роутинг» и добавляем правило с маской по умолчанию точка-звездочка (что значит «для звонков на любые номера». В нашем примере мы будем использовать арендованный номер и звонки очевидно будут приходить на него. Но в общем случае звонок может прийти и от другой телефонии, и из web sdk — для таких случаев правила помогают распределять их, не делая лишних if в сценариях) и назначаем этому правилу созданный JavaScript сценарий.
Что еще нужно, чтобы позвонить на номер? Правильно, он сам. Они арендуются в разделе номера, купить. Важно: можно купить, как реальный, так и тестовый номер, например, в Готэм-Сити. Звонки на них идут через единый номер доступа и добавочные.
Арендовав номер, из верхнего меню переходим в раздел «Номера» в рабочем приложении и подключаем нужный. Все, можно звонить и проверять. Кстати, если во время тестов закончился стартовый баланс, то можно написать мне в личку и я пополню. Хабр — это в первую очередь сообщество, своих надо поддерживать.
Шаг второй: пытаемся понять звонящего
Чуть позже я покажу, как из JavaScript Voximplant начать распознавание и получить текст вместо голоса. Но пока представим, что это уже есть и нам нужно «понять», что сказал пользователь. Для этого регистрируемся в api.ai, подключаем гугловый аккаунт, заходим в раздел «prebuild agents» и добавляем в проект мозг, который умеет разговаривать о погоде. Ну, как «разговаривать». Отвечать на простые вопросы. После чего в левом меню выбираем созданный проект и там же кликаем на иконку шестеренки. В открывшемся окне настроек проекта нас интересует «Client access token» — по нему мы сможем отправлять запросы. Например, вот так узнается погода в Москве:
В ответ вы получите немаленький json, спрятанный под спойлером. Самое ценное в ключе result, где в action можно проверить тему, а в address и city — где погодой интересуются. Обратите внимание, что это очень простая демка, и на вопрос «какая погода за окном» вы получите адрес «за окном».
Шаг третий: узнаем погоду на Марсе
Получив город, для которого звонящий хочет узнать погода (или информацию о том, что звонящий говорит совсем не о погоде), можно узнать саму погоду. Апишек для этого миллион, для демонстрации я воспользуюсь первой попавшейся openweathermap.org, на которой можно зарегистрироваться и получить ключик api. Обратите внимание, что ключ начинает работать не сразу. Пример запроса, который вернет погоду в Москве:
В ответ мы точно так же получаем json, в котором есть готовое к проговариванию поле description. В Москве сейчас пасмурно:
Шаг последний: собираем все вместе
Все что осталось — это включить потоковое распознавание в JavaScript сценарии Voximplant (мы про него уже писали), дождаться вопроса от пользователя, сделать запрос к NLP, получить название города, затем сделать запрос к сервису погоды, получить описание погоды и синтезировать его в звонок. Для пользователя пройдет меньше секунды, и все это обеспечит вот такой код:
Что такое голосовые боты и как они помогут вашему бизнесу
В настоящее время ключом к улучшению обслуживания клиентов является автоматизация ваших коммуникаций. Это позволяет высвободить время сотрудников, создать отличные варианты самообслуживания, повысить удовлетворенность клиентов и сделать ваш контакт-центр более продуктивным.
По мнению Zendesk, обслуживание клиентов напрямую влияет на долгосрочный доход компании:
Все больше и больше компаний осознают важность автоматизации и инвестируют в такие технологии, как AI, чат-боты, голосовые боты и другие. Чтобы не отставать от конкурентов на любом рынке, современный бизнес просто обязан использовать технологии, которое ускорят бизнес-процессы внутри компаний.
Голосовые боты, являющиеся одними из самых популярных решений для автоматизации, быстро становятся обязательными для любого колл-центра. И для этого есть много причин.
Технология AI помогает голосовым ботам определить ключевые маркеры человеческой речи и сделать лучший ответ на диалог. Механизмы преобразования текста в речь (TTS) и речи в текст (STT) быстро преобразуют текст в аудио и наоборот (все, пока ваш клиент говорит), поэтому вы можете быть уверены, что не будет никаких задержек, и диалог будет выглядеть по-человечески.
Голосовые боты также иногда называют голосовыми помощниками. Но это не совсем правильно, потому что голосовые помощники обычно интегрированы в устройства клиентов (например, Apple Siri или Amazon Alexa) Их можно назвать голосовыми помощниками, а iPhone Apple можно назвать устройством с голосовым управлением.
Все голосовые интерфейсы используют обработку естественного языка (или НЛП) для интерпретации слов. Иногда его также называют речевыми текстами, NLU (понимание естественного языка) или просто системами транскрипции. Вы определенно знакомы с такими системами, если когда-либо использовали виртуальных помощников, таких как Siri или Alexa. Технология также внедрена в автоматизированные субтитры, умные дома и автомобильные системы.
Когда дело доходит до предоставления ответов, голосовые боты могут использовать предварительно записанные аудиофайлы или технологию Text-to-Speech (TTS). Это компьютерное моделирование человеческой речи с использованием методов глубокого обучения. Оно обычно используется разработчиками, которые создают голосовые приложения, такие как IVR (интерактивный голосовой ответ). Эта технология также называется синтезом речи. Вместо воспроизведения предварительно записанных файлов TTS автоматически генерирует человеческий голос из необработанного текста.
Преимущества голосового бота:
Когда у вас много клиентов, много проектов, то обзвон клиентов может значительно увеличить нагрузку на ваших сотрудников. Голосовые боты стали идеальным решением. Их возможности и уровни производительности не имеют себе равных, когда речь идет о таких задачах, как:
Если ваш контакт-центр обрабатывает большое количество входящих запросов, голосовые боты станут спасением для быстрого обслуживания клиентов. Они значительно сокращают время ожидания в очереди, обрабатывая простые запросы и направляя сложные в соответствующие отделы. Если вам часто нужно звонить большому количеству клиентов, голосовые боты смогут предоставить быстро информацию большим группам людей за короткий промежуток времени.
Доступно в любое время
В отличие от живых менеджеров, голосовые боты активны и готовы помочь 24/7, что означает, что клиенты могут получать информацию и решать свои проблемы, когда им это нужно больше всего. Голосовые боты позволяют им избегать необходимости ждать на линии, чтобы поговорить с менеджером. И клиентам необязательно звонить только в рабочее время в компанию. Взаимодействие с ботами происходит немедленно и может значительно улучшить общее качество обслуживания клиентов.
Голосовая связь предпочтительнее для многих клиентов
Для многих людей звонок по телефону по-прежнему является наиболее удобным и быстрым способом взаимодействия с брендом или решения проблемы. Таким образом, голосовой бот становится важной частью обслуживания клиентов для таких людей.
Широкий спектр интеграций
Еще одно большое преимущество голосовых ботов заключается в том, что их можно легко и удобно интегрировать с широким спектром решений для обслуживания клиентов, таких как CRM или база знаний. Это делает опции самообслуживания довольно продвинутыми и дает голосовым ботам еще больше возможностей.
Голосовые боты экономят время и деньги
Боты требуют минимального обучения, тем самым уменьшая временной разрыв между настройкой и повышением производительности (по сравнению с менеджерами). Кроме того, стоимость рабочей силы значительно снижается. Голосовой бот может легко взять на себя повторяющиеся задачи, с которыми сталкивается большинство агентов, что значительно снижает рабочую нагрузку и устраняет необходимость в дополнительном персонале.
Теперь, когда вы решили улучшить обслуживание клиентов с помощью голосового бота, Вам нужно подумать о требованиях вашего бизнеса. Каждый голосовой бот имеет свой уровень сложности и требует различного количества времени для создания. К счастью, в настоящее время существует множество платформ разработки голосовых ботов, которые значительно упрощают создание и запуск голосового бота. Однако, прежде чем создавать задачи для своих разработчиков, Вы должны иметь четкое представление о потребностях вашего бизнеса и возможных случаях использования. На их основе будет легко определить, какие функции будет иметь Ваш бот.
Способность делать паузу и слушать: Вас когда-нибудь раздражал длинный монолог IVR? Если такое было, то вы понимаете, насколько важно, чтобы ваш бот мог сделать паузу, когда клиент начинает говорить. Например, если ваш клиент говорит «нет, мне это не интересно» или «я хотел бы поговорить с агентом прямо сейчас», или «извините, вы могли бы повторить это». Ваш бот должен иметь возможность остановиться, послушать и потом уже ответить.
Быстрое распознавание речи: скорость необходима для плавного и приятного понимания. Ваш голосовой бот должен общаться с той же скоростью, с которой говорит ваш клиент. Это позволит, чтобы разговоры были похожи на человека.
Персонализация (интеграция с другим программным обеспечением): Вашему абоненту не нужно повторяться. Интеграция с вашим CRM и другим программным обеспечением службы поддержки должна гарантировать, что ваш бот приветствует вызывающего абонента по имени, знает историю взаимодействий и может оценить наиболее вероятную причину вызова на основе его истории. Это позволит боту персонализировать предложения на основе данных клиентов.
Маршрутизация интеллектуальных вызовов. После того как клиент кратко объяснил причину вызова, ваш бот должен иметь возможность направить запрос соответствующему менеджеру на основе его статуса / навыков / языка и других критериев. Это позволит вашей команде поддержки быстрее решать проблемы. Кроме того, вы должны определить ориентированные на пользователя запасные правила, чтобы клиенты могли начать разговаривать с живым менеджером на любой стадии взаимодействия. Например, если ваш бот не может понять проблему в течение двух вопросов, вам следует вернуться к менеджеру по приоритету.
Непрерывное обучение: бот с искусственным интеллектом никогда не прекращает обучение. Анализируя предыдущие взаимодействия с клиентами и их результаты, он постоянно повышает свою точность.
Подводя итог, голосовые боты являются очень эффективным дополнением к современной команде обслуживания клиентов. Компании по всему миру быстро внедряют голосовых ботов и инвестируют в новые технологии автоматизации, основанные на ИИ. Бизнес, который стремится обеспечить отличное обслуживание клиентов, снизить затраты и повысить эффективность, должен определенно рассмотреть возможность внедрения голосового бота.
Не стесняйтесь обращаться к нам, если у вас есть какие-либо вопросы. Мы будем рады помочь вам создать ваш первый голосовой бот и извлечь из него максимум пользы!
Hi-tech коммуникации, или как мы создаем голосового агента всего на 500 записях
На Хабре не раз и не два писали о голосовых роботах, принципах их работы и задачах, которые они способны решать. Соответственно, общие принципы создания таких роботов (их мы предпочитаем называть «цифровыми агентами) понятны многим. И это хорошо, ведь в этой статье мы хотели бы поговорить о быстром обучении роботов.
Нам удалось успешно обучать агентов на очень ограниченной базе звонков. Минимальное количество записей, на основе которых можно разработать полноценного цифрового агента — всего 500. (Спойлер — речь идет, скорее, о специализации ассистента, а не обучении с нуля). Как происходит обучение, и какие здесь есть подводные камни, особенности, что лежит в основе технологии? Об этом сегодня и поговорим.
Что должен уметь цифровой агент?
На текущий момент проектируемые нами цифровые агенты, которые работают с использованием интент-классификаторе в сегменте b2c могут поддерживать полноценный диалог. Это стало возможным благодаря тому, что мы их научили:
Ну, и что самое главное в данном сегменте – цифровые агенты умеют продавать не хуже (а во многих случаях и лучше) живого оператора. Таких продвинутых цифровых агентов мы создаем, к примеру, для крупных телеком-операторов.
Как обучить робота вести диалог
Это весьма интересная задача. Сейчас мы решаем ее совсем не так, как еще пару лет назад. И как раз сейчас нам хватает несколько сотен записей для обучения агента. Но, конечно, пришли к этому мы не сразу — пришлось немало поработать.
Как было раньше?
Несколько лет назад извлечение интентов и сущностей из речи человека и их классификация осуществлялись с помощью регулярных выражений (regex). Если по-простому – это язык поиска по тексту. Для поиска используется строка-образец (она же паттерн), которая задает правило поиска. Чтобы установить правила поиска, в regex используется специальный синтаксис. Но у этого способа было несколько недостатков:
А что сейчас?
Мы разработали основную базу, датасет из миллионов звонков, совершенных с использованием регулярных выражений: верифицировали и разметили данные и создали модель, которая, по сути, имитирует результат работы классификатора на регулярных выражениях, но с лучшим качеством.
В ходе дальнейшего использования модели на реальных проектах мы производим дообучение через специальный интерфейс разметки на нашей платформе. Так, контент-менеджеры выявляют реплики, которые классифицируются не точно, размечают их и «скармливают» модели, чтобы она совершенствовалась на их кейсах.
Сейчас обучение состоит из двух этапов: непосредственно обучение модели на датасете и дальнейшее дообучение в ходе коммерческой эксплуатации. На текущий момент подключение к движку NLU и экспресс-тесты распознавания занимают у нас всего несколько часов.
Качество, которое раньше достигалось неделями скрупулезной работы, сейчас обеспечивается сразу благодаря основной базе. К примеру, в сегменте b2c первоначальный % ошибок при распознавании согласия/отказа на совершение целевого действия уменьшился в 3 раза (с 10% до 2-3% от общего числа кейсов).
Обучение начинается с предоставления записей разговоров операторов с клиентами компании-заказчика. В идеале датасет должен содержать не менее 500 записей. Кроме того, запрашивается дополнительная информация, включая сроки исполнения, приоритет, существующие инструкции и скрипты для сотрудников колл-центра (не обязательно, но желательно).
Для ее решения мы используем специализированный движок NLU Engine. Его основа — семантический разбор текста, который поступает от ASR-систем. В ходе распознавания основных объектов распознавания два типа:
Entities (сущности).
Intents (намерения).
Важный момент: у нас не классическая диалоговая система в её традиционном понимании, система на машинном обучении не составляет ответ динамически, ответ определяется скрипт-дизайнерами. Фразы бота строго предопределены, никакой свободы воли для искусственного интеллекта здесь нет, к счастью или сожалению…
Логика разговора тоже предопределена – фактически, Intent-классификатор используется для того, чтобы определить, что сказал нам абонент и с какой целью. Определив Intent, мы сможем выбрать подходящую фразу бота, которая необходима, чтобы ответить абоненту – фактически, вести полноценный диалог.
Пример диалога
Ниже — сложный HR-скрипт с обозначением intents и entities; распознанные сущности и интенты указаны под каждой репликой абонента и выделены курсивом.
Бот: Здравствуйте! Меня зовут Елена, звоню по поводу вашего резюме. Подскажите, предложение по вакансии актуально для вас?
Абонент: Да, здравствуйте
Бот: Смотрите, сейчас у нас открыта вакансия специалиста офиса продаж. В обязанности входит консультация абонентов, продажа оборудования и работа с кассой. Оформление идет полностью официальное, белая зарплата, средний уровень дохода N рублей, максимальный уровень практически не ограничен, есть возможность карьерного роста. График 5 рабочих дней с двумя плавающими выходными. Также предоставляем все социальные гарантии, дмс, бонусы и скидки от компании.
Рассмотрите такие условия для себя?
Абонент: А еще раз, откуда вы звоните?
Intent: question =what_company
Бот: Это розничная сеть NNN
Абонент: А какой у вас график?
Бот: График работы формируется программой автоматически с учетом потока клиентов и нагрузки на офис с двумя плавающими выходными, то есть смены рабочие 6 8 10 12 часов в день могут быть и не более 40 часов в неделю. При этом график составляется заранее на 2 недели, то есть вы заранее знаете ваш график, ваши выходные, и можете уже планировать.
Бот: Давайте тогда сверим с вами анкетные данные…
Подскажите, пожалуйста, ваши Фамилию Имя Отчество полностью
Абонент: Гудкова Елена Вячеславовна
Бот: Назовите, пожалуйста, вашу дату рождения
Абонент: тринадцатое ноль второе восемьдесят седьмого
Бот: Скажите, номер, на который вам звоню, могу записать как контактный?
Абонент: Да нет, наверное
Бот: Подскажите тогда номер, по которому можно к вам обращаться?
Абонент: девятьсот десять восемьсот восемьдесят пятьдесят двадцать пять
Бот: Подскажите, какое у вас образование?
Бот: Уточните, вы сейчас обучаетесь на очной основе?
Бот: Скажите, у вас гражданство Российской Федерации?
Абонент: Российское гражданство
Бот: Хорошо, это был последний вопрос. Спасибо, что ответили на мои вопросы, сейчас я отправлю анкету на рассмотрение руководителю. Анкеты рассматривают в течение 3 дней, и, в случае положительного решения, с вами свяжутся наши сотрудники. Всего доброго, до свидания.
Хорошо, скрипт разработан, что потом?
После всего этого с заказчиком проводится согласование разработанных скриптов. В некоторых случаях клиенты хотят что-то добавить или изменить, что мы и делаем. Иногда возникает необходимость уточнить технические параметры:
Ну а выходные параметры представляют собой набор данных, которые ассистент должен возвращать нам после совершения звонка.
К примеру: номер телефона абонента, длительность звонка, название проекта, в рамках которого совершался звонок, итоги звонка и т.д. Еще выходные данные содержат основной результат звонка, которые зависит от итогов диалога по конкретному проекту (самый простой пример – результат «Согласие» если абонент согласился совершить целевое действие или результат «Отказ» — если абонент отказался). Ну и последнее, это технические данные о статусе звонка и различные коды возможных ошибок (звонок состоялся, звонок не состоялся из-за проблем телефонии, звонок не состоялся из-за некорректных входных данных, и т.п.).
Эти данные могут просто попадать в выходные данные из входных (допустим, во входных данных мы передали ассистенту номер абонента, и в выходных данных по итогам звонка ассистент передал нам тот же номер телефона).
Также эти данные робот может «собирать» у абонента по итогу звонка: например, записывать названные абонентами имена, адреса, номера телефонов и пр. информацию и фиксировать их в выходных данных. На их основе формируется отчетность и аналитика.
Ну а потом наступает черед таких этапов, как озвучка скриптов, разработка логики, разработка паттернов, верификация ПО и, наконец передача проекта клиенту.
Вот, собственно, и все. Конечно, сам процесс создания цифрового агента чуть сложнее, чем описано выше — просто в рамках статьи не получится указать абсолютно все нюансы. Сейчас мы планируем продолжить эту статью, сделав вторую часть уже про технические моменты обучения и внутреннюю “кухню” компании. Если же вы хотите узнать что-то, чего нет в статье прямо сейчас — спрашивайте и мы обязательно ответим.