20.04.2020

Команда Яндекс.Диалогов представила большой пакет обновлений в формате Dev Preview для разработчиков голосовых приложений. Среди новых функций — статистика пользователей навыка, технические метрики качества навыка, инструмент для работы с интентами, сохранение контекста сессии и контекста пользователя в Алисе и изменения в протоколе.

Статистика пользователей навыка

Сегодня измерять метрики мобильных приложений — стандартная практика, поэтому первоочередной задачей было создать похожие инструменты и для навыков. Ведь навыки — это такие же приложения, только голосовые. У Яндекса есть инструмент для аналитики мобильных приложений — AppMetrica. Команда Диалогов развила это решение, благодаря чему теперь можно смотреть подробную статистику навыков. Для этого нужно зарегистрировать навык в AppMetrica и указать ключ в консоли разработчика. Это позволит узнать, как пользователи взаимодействуют с навыком. Можно увидеть количество сессий и агрегированные данные о пользователях (пол, возраст и город), а также применить retention-анализ и когортный анализ без сложных дополнительных настроек.


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

Технические метрики качества навыка

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


Подключать ничего дополнительно не нужно: всё уже работает в настройках навыка.

Инструмент для работы с интентами

Интент — это намерение пользователя. Инструмент для работы с интентами в Диалогах позволяет быстро и просто собрать воедино все маркеры, позволяющие понять интент. Например, описать множество фраз с похожим смыслом или сущности, важные для понимания запроса.

Чтобы сделать инструмент максимально удобным, команда Диалогов разработала механизм, похожий на язык регулярных выражений. Фразы-составляющие таких регулярных выражений можно переиспользовать и комбинировать. Кроме того, настройки грамматики нечувствительны к морфологии, а значит, достаточно ввести только один вариант слова — и все формы будут учтены автоматически. Например, при вводе слова "кухня" будут учитываться "кухни", "кухню", "кухне" и т.д. Инструмент позволяет обрабатывать интенты, гибко учитывая последовательность слов в запросе пользователя, или не учитывая ее вовсе.

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

Сохранение контекста сессии в Алисе

Иногда контекст необходим. Например, если вы играете в города, вам обязательно нужно помнить ответы игроков (чтобы не повторяться) и последнюю букву названия последнего города (ответ должен начинаться на неё).

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

Сохранение контекста пользователя в Алисе

Команда Яндекс.Диалогов также добавила в Алису пользовательский контекст, или состояние пользователя. Это хранилище взаимодействий пользователей с навыком, которое станет приходить в запросе. Контекст будет общим для всех устройств, где человек авторизовался в Яндексе. Это обеспечит единый и полный опыт вне зависимости от устройства. Теперь можно сделать так, чтобы пользователь обратился к навыку через приложение Яндекса на телефоне (например, по пути с работы) и бесшовно продолжил взаимодействие через Яндекс.Станцию (приехав домой).

Изменения в протоколе

Эти изменения запускаются с сегодняшнего дня сразу, уже не в рамках Dev Preview. Теперь при ответе навыка поле session больше не требуется, минимальный валидный ответ выглядит так


В протокол добавляется новое поле — session.application. Оно содержит поле
application_id с тем же самым значением, что и в использовавшемся ранее поле
session.user_id— идентификатор приложения, из которого сделан запрос. Идентификатор разный для разных устройств и приложений пользователя.

Если пользователь авторизован в Яндексе, то в запросе также придёт поле session.user, в нём содержится поле user_id— идентификатор, постоянный для всех приложений и устройств пользователя. Благодаря ему можно предложить пользователям сквозной опыт при переходе от поверхности к поверхности.

Если для навыка настроена авторизация OAuth и пользователь связал аккаунты, то, помимо стандартного заголовка Authorization, авторизационный токен придёт в поле session.user.access_token. Это нововведение позволяет хостить навыки с авторизацией в сервисах лямбда-функций, которые не поддерживают проброс заголовков запроса.

Статус Dev Preview означает, что эти возможности уже доступны в Яндекс.Диалогах для всех. Команда сервиса учтет обратную связь разработчиков, чтобы доработать новые инструменты и подготовить их к полномасштабному релизу.

Подробная информация о всех новых функциях Диалогов доступна на сайте - https://yandex.ru/blog/dialogs/vesennee-obnovlenie-platformy-dialogov