Рубрика развивается при поддержке
Маркетинг
BotCube_inc
385

Как мы создали голосовой навык для крупнейшего гейм-ивента в мире

Недавно прошло крупнейшее мероприятие в игровой индустрии – The Game Awards, число прямых трансляций которого по всему миру составило 26,2 миллиона! Мы же не остались в стороне и внесли свой вклад в проведение ивента. А именно создали голосовой навык для него. В этой статье мы расскажем, как мы выбрали идею, создавали логику, адаптировали её для разных устройств и, самое главное, с какими проблемами мы столкнулись и как их решили.

В закладки

Идея

The Game Awards – это в первую очередь награда, так что перед конференцией пользователю интереснее всего познакомиться с номинантами и проголосовать за них. На сайт мероприятия заходят именно с этой целью, поэтому бот тоже должен иметь такой функционал. А главное, что эту идею можно воплотить с возможностями голосового интерфейса.

В итоге мы решили создать бота, который позволит проголосовать с помощью голоса за номинанта из одной категории один раз в 24 часа (согласно правилам The Game Awards).

Голос бота

Мы не хотели, чтобы у нашего бота был безликий механический голос, один из тех, которые предлагает использовать Алекса. Хотелось, чтобы бот имел индивидуальность и харизму. Но как это сделать, если его целью является подсчёт голосов? Использовать голос реального человека!

Также мы не хотели объединять в навыке голоса человека и Алексы, т.к. это может запутать пользователя (пример такого комбинирования – навык Jeopardy).

С самого начала мы решили, что в нашем боте будет только один реальный голос – голос Джеффа Кейли. Поскольку Джефф не только создатель церемонии, но и её ведущий, у пользователя во время общения с ботом будет ощущение, словно Джефф лично спрашивает его мнение о кандидатах.

Контент бота

Что ж, мы решили, что весь текст бота будет записан голосом Джеффа. Но как оптимизировать размер этого текста? В The Game Awards тридцать категорий для голосования. И все 30 мы не могли добавить в функционал бота: во-первых, он будет сильно перегружен, а во-вторых, Джефф очень занятой, чтобы записывать контент для бота с тридцатью категориями для голосования. И, конечно, не удобно голосовать за 30 позиций голосом. Поэтому мы выбрали три самых популярных категории и внесли их в функционал: Game of the Year, Best Esports Game и Best Mobile Game.

Важно отметить, что существует значительная разница механики навыка, когда можно пользоваться экраном телефона или только голосом. Поэтому мы адаптировали навык для устройств с Алексой, у которых есть экран, используя Alexa Presentation Language (APL). (С помощью APL вы можете создавать навыки с полнофункциональными, адаптивными и интерактивными экранами, аналогично тому, как можно создавать веб-страницы с HTML, CSS и JavaScript).

Важно: Разумно определяйте, что отображается на экране, а что нет. У нас в навыке есть аудиофайл с большой фразой, и нет смысла дублировать текст на экране. Мы также добавили три кнопки с названиями категорий и мозаику из кнопок с номинантами, которые содержат маленькие картинки для визуализации.

Кнопки с номинантами

Распознавание голоса

Если вы работали с системой распознавания голоса, то знаете, что сейчас точность распознавания составляет около 96%. К сожалению, есть ситуации, где точность ещё меньше.

В нашем кейсе нам пришлось отказаться от категории The Best Esports Player. В основном номинанты этой категории — игроки из Азии со сложными именами. И пользователи очень часто произносили их неправильно, а даже если и правильно, то Алекса не могла их распознать.

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

Логика бота

Главная проблема создания логики заключалась в том, что мы не можем использовать большое количество вариаций текста. Чтобы не записывать несколько часов аудио, нам пришлось унифицировать все фразы и упростить логику. В результате мы получили только 5 минут чистой записи, но нам пришлось пожертвовать разнообразием фраз и обилием фоллбэков.

Из Алексы в Google Assistant

Поскольку навык контролируется голосом, перенести навык из Алексы в Google было не очень сложно. Логика бота остается точно такой же, потому что интерфейс управления не изменился.

Изначально мы построили архитектуру таким образом, чтобы потом не писать два раза один код. А функции были написаны таким образом, чтобы можно было заменить модуль, который работает с API Алексы, на модуль для работы с API Google Assistant. Далее мы переписали функцию отправки сообщений пользователю и перенесли систему NLP из Алексы в Dialogflow. Затем мы установили соединение с API Алексы и наш навык начали работать в Google Assistant.

Google Assistant и Alexa имеют совершенно разные интерфейсы отображения навыков на экране. Это вы можете увидеть на изображениях в статье. Очень важно не забыть об этом и сделать адаптацию для новой платформы.

Важно: если вы делаете кроссплатформенный навык, лучше начать делать NLP в Dialogflow, так как в нём есть возможность выгрузить агента в формат Алексы.

Теперь давайте обсудим важные элементы логики бота.

Фоллбэки

Уникальность голосового бота в том, что он имеет невидимый интерфейс. В чате мы видим элементы интерфейса и управления: есть ли они, как выглядят, есть ли кнопки «Назад» и «Вперед», на каком этапе мы сейчас находимся — на промежуточном или конечном. Преимущество голосовых ботов заключается в том, что мы выражаем наше желание естественным образом. Мы говорим о желаемом результате и не озвучиваем все шаги, которые необходимы для этого. Но большая проблема возникает, когда бот не понимает нас.

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

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

На изображении ниже вы можете видеть, что после голосования в одной категории бот приглашает вас проголосовать в следующей. Таким образом он ведет пользователя и показывает весь его функционал.

Пример разговора с ботом

Фразы «Помощь» и «Стоп»

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

Также важно предусмотреть ситуацию, когда пользователь сам желает прекратить общение с ботом. Обычно это происходит с фразой “Стоп”. Ответ на эту фразу должен содержать призыв к повторному запуску бота, а также активационную фразу.

Приветственная фраза

Первая фраза в навыке должна раскрывать суть бота, его главную функцию. А вдруг на ваш навык наткнулись случайно? Не стоит вводить пользователя в заблуждение. И, конечно же, приветственная фраза должна быть лаконичной и понятной.

Активационное слово/Имя навыка

Пользователь запускает навык, используя активационное слово. Имя, которое вы выбираете для навыка Алексы, может оказать огромное влияние на удобство использования вашего голосового бота. В идеале имя должно содержать 2 слова, быть доступным для поиска, простым и понятным.

Наше имя навыка — это название церемонии, поэтому оно отлично подходит. Но оно является брендом. И мы не могли просто так использовать это название в нашем навыке, поэтому Google потребовал пройти верификацию, которая заняла 2 недели!

Важно: если вы делаете бота для бренда, не откладывайте верификацию, иначе можете не вложиться в дедлайн проекта.

Выводы

  • Человеческий голос в боте создаст для пользователя эффект присутствия на ивенте.
  • Если создание вашего бота зависит от знаменитости, то минимизируйте время, которое она должна потратить. В нашем случае мы написали оптимальное количество фраз для Джеффа Кейли.
  • Не откладывайте верификацию.
  • Убедитесь, что ответы, которые вы хотите услашать от пользователя, легко распознаются Алексой.

  • Не забывайте, что голосовые помощники теперь выходят с экранами, и вам нужно адаптировать навык для использования устройством с экраном.
  • Делая кроссплатформенный навык, начните создавать NLP в Dialogflow.
  • Создавайте такую логику, чтобы бот сам вёл пользователя и показывал весь функционал.

Голосовые технологии включают в себя таких голосовых помощников, как Siri и Alexa, платформы Amazon Alexa и Google Assistant и устройства Amazon Echo или Google Home. Собрав их вместе, вы можете создать интерактивную среду для своей аудитории, чтобы вовлекать пользователя и даже продавать товар и проводить рекламные акции.

Создание сценариев общения и разработка навыка от агентства BotCube.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "BotCube_inc", "author_type": "self", "tags": [], "comments": 0, "likes": 3, "favorites": 14, "is_advertisement": false, "subsite_label": "marketing", "id": 54993, "is_wide": false, "is_ugc": true, "date": "Mon, 04 Mar 2019 14:12:11 +0300", "is_special": false }
Какая реклама
приносит деньги?
0
{ "id": 54993, "author_id": 204752, "diff_limit": 1000, "urls": {"diff":"\/comments\/54993\/get","add":"\/comments\/54993\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/54993"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199113, "last_count_and_date": null }
Комментариев нет
Популярные
По порядку
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }