Финалист в номинации «Рост выручки»Подробнее

Как избежать основных ошибок при создании голосового робота?

Эффективность вашего бота зависит от количества ошибок, которые он совершит во время разговора. Если “глупый” и непонятливый бот будет лишь раздражать ваших клиентов, то умный бот будет ваших клиентов радовать, а также не уступит в эффективности живым операторам.

В этой статье я постараюсь кратко рассказать о том, какие ошибки наиболее распространены и как их избежать.

Прежде чем перейти к ошибкам, важно понимать, какие типы ошибок бывают:

  • Из фразы не был выделен верный интент (намерение)
  • Из фразы был выделен неверный интент (намерение)
  • Не было перехода по интенту

Подробнее о каждой из ошибок:

  • Интент - это посыл фразы, которую сказал человек. Например из фразы “мне не надо ваши услуги и неудобно разговаривать” можно выделить 2 посыла, что услуги не нужны и что сейчас человеку разговаривать неудобно. Робот на базе платформы Даша не слышит речь собеседника, не видит текст, который транскрибировался из фразы, а ориентируется исключительно по выделенному интенту. Соответственно, если интент не был выделен, то робот не сможет понять, что ему сказал человек, а если был выделен неправильно, то не поймет его так же неправильно.
  • Переход - это путь из одной ноды диалога в другую. Переход всегда осуществляется по условию. Это может быть интент, определенная цифра, адрес, имя и т.п. Если вы л выделен верный интент, но в данном месте диалога нет перехода, то робот не сможет адекватно отреагировать и его поведение не будет отличаться от того, как если бы интент вообще не был выделен.

Теперь к основным ошибкам пользователей при создании голосовых моделей на базе платформы Даша:

  1. Не пренебрегайте нашей помощью при создании ваших голосовых моделей. Были случаи, когда компания совершала уже более 10 000 разговоров на протяжении 2-х месяцев и только потом выяснилось, что у них только 50% разговоров заканчиваются корректно. Это ОЧЕНЬ мало для модели с таким сроком работы. Нормальный показатель - 93-97% успешных разговоров. Если вы видите, что эффективность вашей модели ниже - обратитесь к комьюнити или напишите мне в личку в slack @Alexander Zaytcev

  2. Знайте и используйте стандартные реакции робота. Почти в каждой модели в нашем репозитории https://github.com/dasha-samples есть папка с названием commonReactions. В ней содержатся готовые реакции робота на самые распространенные случаи в разговорах, такие как “перезвоните”, “не звоните” “подождите” и прочее.

Подробнее о каждой из реакций: answeringMachine.dsl

  • callBack.dsl - дайгрешн (т.е. Нода, доступная из любого места диалога) - отвечающий за реакцию на просьбу человека перезвонить позже
  • canHearYou.dsl - дайгрешн отвечающий за реакцию на вопрос человека “вы меня слышите?”
  • dontUnderstand.dsl - реакция, если робот не понял, что ему сказали. Механизм такой - если из фразы человека не выделено интентов, по которым можно совершить переход в данном месте диалога, то срабатывает этот дайгрешн.
  • Hangup.dsl - если человек положил трубку первый, то робот корректно завершит этот разговор
  • hello.dsl - если человек замолчал, то робот будет пинговать
  • iAmRobot.dsl - если человек напрямую спросит “а вы робот” то робот признается, что он робот.
  • repeatAndPing.dsl - реакция на просьбу человека повторить или если человек скажет “алло”
  • swearWords.dsl - если человек ругается матом, то по умолчанию робот извинится, положит трубку и поставит статус “DontCall”
  • wait.dsl - если человек просит подождать, то робот будет ждать
  • wontCallAnymore.dsl - если робота попросят больше не звонить, то он извинится, завершит разговор и пометит такой разговор статусом “DontCall”

Обратите внимание: все вышеуказанные реакции можно модифицировать, как вам захочется. Если нужна помощь с этим - пишите в комьюнити или мне в личку мой ник Alexander Zaytcev

  1. Используйте наши системные интенты и сентименты. Особенно обратите внимание на #messageHasSentiment("positive") и #messageHasSentiment("negative") - используйте их для перехода по позитивному и негативному высказыванию. Примеры позитивного высказывания: да, согласен, интересно, хочу, думаю, что да и т.п. Примеры негативного высказывания: нет, не интересно, не удобно говорить, не хочу и т.п.
  2. Если вы хотите, чтобы собеседник мог перебить робота, используйте функцию #say("название фразы", interruptible:true);
  3. Если важно, чтобы робот выслушивал собеседника дольше обычного и не перебивал, используйте в ноде в разделе do добавьте #setVadPauseLength(1.5); Это увеличит паузу, когда Даша ждёт ответа в 1.5 раза. Только потом в след ноде верните на дефолтное значение 1.
  4. При создании ваших кастомных интентов не добавляйте больше пяти примеров фраз “из головы”. Старайтесь добавлять реальные фразы из разговора робота, причем в том виде, в каком эти фразы распознались. Никогда не добавляйте в кастомные интенты в раздел excludes примеры фраз, которые вы сами придумали. Раздел excludes служит, чтобы убрать ложноположительные срабатывания интентов и добавлять туда фразы можно только те, из которых действительно был ложно выделен данный интент. Дело в том, что нейросеть не обладает логикой человека и при добавлении разумных на ваш взгляд исключающих интентов, не будут выделяться правильные фразы, а также увеличится количество ложных срабатываний. Наглядный пример ниже - есть интент "schedule_haircut" в разделе "includes" у него есть примеры фраз и они достаточно логично сочетаются между собой, однако в разделе excludes есть фразы, из которых этот интент выделялся ложно - посмотрите на из “логичность” с точки зрения человека
"schedule_haircut": "schedule_haircut": { "includes": [ "хочу записаться на стрижку", "хотел бы к вам на стрижку записаться", "запишите меня на стрижку пожалуйста", "могу я записаться на стрижку", "здравствуйте я бы хотел записаться на стриж", "здравствуйте я бы хотел записаться на подстрижку", "здравствуйте я бы хотел подстричься", "здравствуйте я бы хотел записаться на подстриж", "мне надо волосы подстричь", "записаться на стрижку" ], "excludes": [ "да", "нет", "повторите", "повторите ещё раз", "хочу отменить зап" ] }

И всегда помните - если у вас есть вопросы - обращайтесь к нам в комьюнити за помощью или пишите мне в личку @Alexander Zaytcev