Сегодня мы начинаем открытое бета-тестирование платформы Яндекс.Диалоги, с помощью которой любой разработчик сможет обучить Алису новым навыкам и привлечь пользователей к своим сервисам и разработкам. В этом посте мы не будем пересказывать всю документацию, но дадим общее представление о работе платформы на примере самой популярной игры для Алисы.
Голосовой помощник Алиса, о котором мы впервые рассказывали на Хабре осенью прошлого года, уже работает в приложении Яндекс, Яндекс.Браузере, а также в бета-версии для 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"
}
{
"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"
}
}
К сожалению, не доступен сервер mySQL