Голосовой помощник Алиса, о котором мы впервые рассказывали на Хабре осенью прошлого года, уже работает в приложении Яндекс, Яндекс.Браузере, а также в бета-версии для Windows. Каждый день миллионы пользователей этих продуктов решают с помощью голосового помощника определённые задачи – например, узнают прогноз погоды. Мы регулярно добавляем новые возможности, но охватить все интересы пользователей самостоятельно невозможно. Заполнить этот пробел призваны навыки Алисы, об особенностях создания которых мы и расскажем под катом.
Если вы разрабатываете текстовую игру, информационного бота или даже сервис доставки еды на дом, то теперь вы можете добавить их в Алису. На техническом уровне это значит, что вы можете подключить сервис, работающий на вашем сервере, к платформе Алисы. Когда пользователь активирует такой навык, Алиса транслирует реплики пользователя на ваш сервер, и отвечает переданным вами текстом. Распознавание речи в текст и обратно платформа берёт на себя. Для пользователя разговор с использованием навыка выглядит как обычный диалог с голосовым помощником.
Чтобы не превращать этот пост в пересказ и так достаточно подробной документации, мы расскажем об особенностях создания навыков на примере игры в города.
Алиса, давай сыграем в города
В прошлом году мы начали обучать Алису различным играм. Мы никогда об этом не рассказывали, но почти все они были добавлены с помощью платформы Яндекс.Диалоги, к тестированию которой мы и открываем сегодня доступ. Наиболее популярной среди них является игра в города, которую мы и рассмотрим более детально.
Игра, как и любой другой навык, начинается с распознавания фразы вида «Алиса, включи игру в города». Слово «включи» – это сигнал Алисе о том, что нужно запустить навык, а не искать ответ с помощью поиска. Таких сигнальных слов несколько. А часть «игру в города» в произнесенной фразе – это одно из активационных имён, которые задаются разработчиком при публикации навыка в платформе Диалоги. Голосовой помощник умеет понимать различные морфологические формы одного и того же активационного имени, чтобы срабатывать даже при неточных совпадениях.
Алиса, вызови игра в городаВ обычной ситуации Алиса ищет ответы с использованием сервисов Яндекса, но если речь идёт о навыке, то после распознавания активационного имени она отправляет POST-запрос на сервер, указанный разработчиком. Запрос представляет из себя привычный JSON и содержит текст от пользователя, а также служебную информацию (идентификаторы пользователя и сессии).
Алиса, сыграем в города
Алиса, запусти игру в города
Пример запроса
Бэкенд навыка может быть написан на любом удобном для разработчиков языке. В нашем случае мы обошлись привычным C++, но для документации подготовили примеры на Node.js и Python. Фактически требование к серверу лишь одно – он должен отвечать на запрос в течение 1,5 секунд.
Ответ также передается в JSON-формате и содержит текст, который будет озвучен Алисой. Давайте взглянем на реальный пример такого ответа из нашей игры:
Пример ответа
Обратите внимание, что кроме обычного текста вы можете передавать и текст в формате TTS (text-to-speech). С помощью этой разметки вы можете управлять произношением Алисы. Это полезно, когда нужно расставить акценты в тексте или выдержать паузу.
Кроме того, в приведённом выше JSON-ответе вы можете заметить упоминания кнопок. У пользователей не всегда есть возможность ответить голосом. Заставлять писать ответы с помощью клавиатуры слишком жестоко (хотя такая возможность тоже всегда была в Алисе), поэтому разработчики навыков могут использовать кнопки. Кстати, они удобны ещё и тем, что подсказывают пользователю доступные голосовые команды.
С технической стороны всё просто. Куда сложнее было продумать механику так, чтобы не отпугивать пользователей сложностью игры. Хотим поделиться с вами несколькими хитростями, на которые мы пошли при разработке игры в города. Они не относятся к работе платформы, поэтому мы спрятали их за спойлер, но, возможно, они помогут и другим разработчикам создать собственные успешные игры.
Игра в города: особенности удержания аудитории
Игры с Алисой – не единственные примеры уже существующих навыков. Например, прямо сейчас в нашем каталоге можно найти навык от Flowwow.com, который позволяет заказать и даже сразу оплатить доставку цветов. В ближайшее время мы расскажем и о других разработках от сторонних компаний, например от McDonald’s и «Папа Джонс».
Как создать свой навык?
1. Познакомьтесь с документацией Яндекс.Диалогов, где подробно описаны особенности платформы. Там же мы подготовили для вас описание быстрого старта с использованием бесплатного сервиса Now, который поможет разобраться в основах платформы без использования собственного сервера.
2. Зарегистрируйте созданный навык в Яндекс.Диалогах. Там же можно протестировать навык до его публикации, имитируя запросы от пользователей (скриншот).
3. Опубликуйте навык. Он будет размещён в каталоге Алисы, предварительный доступ к которому уже открыт в бета-версии приложения Яндекс (пункт «Что умеет Алиса» в меню Алисы). В будущем пользователи смогут узнавать о лучших навыках не только из каталога, но с помощью прямых рекомендаций голосового помощника.
Бета-версия платформы Диалоги ещё далека от финальной версии. Сейчас у каждого разработчика есть шанс повлиять на развитие навыков Алисы и поделиться с нами своими идеями и пожеланиями, которые мы постараемся учесть к моменту полноценного запуска. Оставить свой отзыв можно в комментариях, через Обратную связь, а также в нашем чате в Телеграме. Спасибо!
Источник