- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

В обычной ситуации Алиса ищет ответы с использованием сервисов Яндекса, но если речь идёт о навыке, то после распознавания активационного имени она отправляет 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 [3] и Python [4]. Фактически требование к серверу лишь одно – он должен отвечать на запрос в течение 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 [5] (text-to-speech). С помощью этой разметки вы можете управлять произношением Алисы. Это полезно, когда нужно расставить акценты в тексте или выдержать паузу.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: BarakAdama

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/interfejsy/275116

Ссылки в тексте:

[1] Яндекс.Диалоги: https://beta.dialogs.yandex.ru/?from=habrahabr

[2] играм: https://alice.yandex.ru/games

[3] Node.js: https://tech.yandex.ru/dialogs/alice/doc/quickstart-nodejs-docpage/?from=habrahabr

[4] Python: https://tech.yandex.ru/dialogs/alice/doc/quickstart-python-docpage/?from=habrahabr

[5] формате TTS: https://tech.yandex.ru/dialogs/alice/doc/speech-tuning-docpage/?from=habrahabr

[6] документацией Яндекс.Диалогов: https://tech.yandex.ru/dialogs/alice/doc/about-docpage/?from=habrahabr

[7] Яндекс.Диалогах: https://beta.dialogs.yandex.ru/developer?from=habrahabr

[8] скриншот: https://habrastorage.org/webt/g7/ks/8u/g7ks8u8ne-305c932khiuoyvowo.jpeg

[9] бета-версии: https://play.google.com/store/apps/details?id=ru.yandex.searchplugin.beta

[10] Обратную связь: https://tech.yandex.ru/dialogs/alice/doc/feedback-docpage/

[11] в Телеграме: https://t.me/yadialogschat

[12] Источник: https://habrahabr.ru/post/350968/?utm_campaign=350968