Главная » Игры » Яндекс открывает Алису для всех разработчиков. Платформа Яндекс.Диалоги (бета)

Яндекс открывает Алису для всех разработчиков. Платформа Яндекс.Диалоги (бета)

Сегодня мы начинаем открытое бета-тестирование платформы Яндекс.Диалоги, с помощью которой любой разработчик сможет обучить Алису новым навыкам и привлечь пользователей к своим сервисам и разработкам. В этом посте мы не будем пересказывать всю документацию, но дадим общее представление о работе платформы на примере самой популярной игры для Алисы.

Голосовой помощник Алиса, о котором мы впервые рассказывали на Хабре осенью прошлого года, уже работает в приложении Яндекс, Яндекс.Браузере, а также в бета-версии для Windows. Каждый день миллионы пользователей этих продуктов решают с помощью голосового помощника определённые задачи – например, узнают прогноз погоды. Мы регулярно добавляем новые возможности, но охватить все интересы пользователей самостоятельно невозможно. Заполнить этот пробел призваны навыки Алисы, об особенностях создания которых мы и расскажем под катом.

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

Чтобы не превращать этот пост в пересказ и так достаточно подробной документации, мы расскажем об особенностях создания навыков на примере игры в города.

Алиса, давай сыграем в города

В прошлом году мы начали обучать Алису различным играм. Мы никогда об этом не рассказывали, но почти все они были добавлены с помощью платформы Яндекс.Диалоги, к тестированию которой мы и открываем сегодня доступ. Наиболее популярной среди них является игра в города, которую мы и рассмотрим более детально.

Игра, как и любой другой навык, начинается с распознавания фразы вида «Алиса, включи игру в города». Слово «включи» – это сигнал Алисе о том, что нужно запустить навык, а не искать ответ с помощью сервисов Яндекса. Таких сигнальных слов несколько. А часть «игру в города» в произнесенной фразе – это одно из активационных имён, которые задаются разработчиком при публикации навыка в платформе Диалоги. Голосовой помощник умеет понимать различные морфологические формы одного и того же активационного имени, чтобы срабатывать даже при неточных совпадениях.

Алиса, открой игра в города
Алиса, сыграем в города
Алиса, запусти игру в города

В обычной ситуации Алиса ищет ответы с использованием сервисов Яндекса, но если речь идёт о навыке, то после распознавания активационного имени она отправляет POST-запрос на сервер, указанный разработчиком. Запрос представляет из себя привычный JSON и содержит текст от пользователя, а также служебную информацию (идентификаторы пользователя и сессии).

Пример запроса

{ "meta": { "locale": "ru-RU", "timezone": "Europe/Moscow", "client_id": "ru.yandex.searchplugin/5.80 (Samsung Galaxy; Android 4.4)"
}, "request": { "type": "SimpleUtterance", "markup": { "dangerous_context": true
}, "command": "архангельск", "original_utterance": "Алиса вызови игру в города. Архангельск.", "payload": {}
}, "session": { "new": true, "session_id": "2eac4854-fce721f3-b845abba-20d60", "message_id": 4, "skill_id": "3ad36498-f5rd-4079-a14b-788652932056", "user_id": "AC9WC3DF6FCE052E45A4566A48E6B7193774B84814CE49A922E163B8B29881DC"
}, "version": "1.0"
}

Бэкенд навыка может быть написан на любом удобном для разработчиков языке. В нашем случае мы обошлись привычным C++, но для документации подготовили примеры на Node.js и Python. Фактически требование к серверу лишь одно – он должен отвечать на запрос в течение 1,5 секунд.

Ответ также передается в JSON-формате и содержит текст, который будет озвучен Алисой. Давайте взглянем на реальный пример такого ответа из нашей игры:

Пример ответа

{ "response" : { "tts" : "Калач-на-Дон+у. Это в Волгоградской области. Не путайте с обычным Калачом. Он в Воронежской области. Ходите. Вам город на «у».", "end_session" : false, "text" : "Калач-на-Дону. Это в Волгоградской области. Не путайте с обычным Калачом. Он в Воронежской области. Ходите. Вам город на «у».", "buttons" : [
{ "url" : "https://www.yandex.ru/search/?text=город Калач-на-Дону", "title" : "Найти в Яндексе"
},
{ "hide" : 1, "title" : "Подсказка"
}
]
}, "version" : "1.0", "session" : { "message_id" : 35, "user_id" : "9F2D0DFC3E56611A1428DBD1ED22E8C7028BD06416F0A9B4F245D2896BA93C7B", "session_id" : "6f586354-45bbe1e6-647f5637-e008", "new" : null, "skill_id" : "672f7477-d3f0-443d-9bd5-2487ab0b6a4c"
}
}

Обратите внимание, что кроме обычного текста вы можете передавать и текст в формате TTS (text-to-speech). С помощью этой разметки вы можете управлять произношением Алисы. Это полезно, когда нужно расставить акценты в тексте или выдержать паузу.

Кроме того, в приведённом выше JSON-ответе вы можете заметить упоминания кнопок. У пользователей не всегда есть возможность ответить голосом. Заставлять писать ответы с помощью клавиатуры слишком жестоко (хотя такая возможность тоже всегда была в Алисе), поэтому разработчики навыков могут использовать кнопки. Кстати, они удобны ещё и тем, что подсказывают пользователю доступные голосовые команды.

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

Игра в города: особенности удержания аудитории

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

Проиграть в игру очень просто. Особенно, когда против вас играет справочник городов мира 🙂 Но этого нельзя допускать, потому что после поражения к вам могут и не вернуться. Не стремитесь к победе над игроком – процесс важнее результата. Поэтому в нашей игре нельзя проиграть окончательно: Алиса всегда готова поделиться подсказкой.

Игра в города достаточно однообразна. Но если игра не приносит новые знания или впечатления при каждом запуске, то её быстро забросят. В нашем случае Алиса не просто отвечает названием города, но и старается рассказать интересный факт о нём. Пользователи это ценят. Кстати, по этой же причине Алиса принимает в качестве ответа города из художественных произведений (например, Минас Тирит из вселенной Толкина).

Игры с Алисой – не единственные примеры уже существующих навыков. Например, прямо сейчас в нашем каталоге можно найти навык от Flowwow.com, который позволяет заказать и даже сразу оплатить доставку цветов. В ближайшее время мы расскажем и о других разработках от сторонних компаний, например от McDonald’s и «Папа Джонс».

Как создать свой навык?

1. Познакомьтесь с документацией Яндекс.Диалогов, где подробно описаны особенности платформы. Там же мы подготовили для вас описание быстрого старта с использованием бесплатного сервиса Now, который поможет разобраться в основах платформы без использования собственного сервера.

2. Зарегистрируйте созданный навык в Яндекс.Диалогах. Там же можно протестировать навык до его публикации, имитируя запросы от пользователей (скриншот).

3. Опубликуйте навык. Он будет размещён в каталоге Алисы, предварительный доступ к которому уже открыт в бета-версии приложения Яндекс (пункт «Что умеет Алиса» в меню Алисы). В будущем пользователи смогут узнавать о лучших навыках не только из каталога, но с помощью прямых рекомендаций голосового помощника.

Бета-версия платформы Диалоги ещё далека от финальной версии. Сейчас у каждого разработчика есть шанс повлиять на развитие навыков Алисы и поделиться с нами своими идеями и пожеланиями, которые мы постараемся учесть к моменту полноценного запуска. Оставить свой отзыв можно в комментариях, через Обратную связь, а также в нашем чате в Телеграме. Спасибо!


x

Ещё Hi-Tech Интересное!

Mini AI Cup #3: Пишем топового бота

Участники много спорили о том, что будет работать и что не будет, высказывались и проверялись идеи от простых if’ов до обучения нейросетей, но топовые места заняли ребята с, так называемой, "симуляцией". В начале осени завершился конкурс по написанию ботов Mini ...

[Из песочницы] Fullstack – почему это клево, или как получать от работы удовольствие

Недавно на Хабре разгорелись нешуточные баталии в комментариях к заметке Фулстеки — это вечные мидлы. Не идите по этому пути, если не хотите страдать Я попробую высказать свою точку зрения о том, что фуллстек – это на самом деле клево, ...