Как работать с Embedded App

Что такое Embedded App

Embedded App — это встроенный (нативный) смартап. Не относится к APK-аппам. Пример встроенного смартапа: музыкальный плеер в мобильном приложении «Салют». Для работы Embedded App на стороне Assistant SDK реализован отдельный API.

Как создать навык в IDE для работы с поверхностью

Чтобы создать навык, необходимо создать проект и задать настройки.

Создание проекта

Создать проект можно по стандартному сценарию, который описан в документации к SmartMarket Studio.

Навыки работают на несколько поверхностей: preMatch (функция, которая вызывается перед классификатором интентов) разводит сценарий в разные темы (ветки). Поэтому в разных темах могут работать разные интенты: таким образом можно контролировать поведение смартапа.

Работа навыка с поверхностью

Чтобы навык работал с вашей поверхностью, нужно запросить смену или добавление настроек в app_dir:

  • если будет работать на одной поверхности с типом EMBEDDED_APP — присвойте appType значение EMBEDDED_APP для текущей версии версии смартапа и укажите свою поверхность;
  • если будет работать на нескольких поверхностях — заведите внутри project_id несколько смартапов с разными appType, развернутые на разных поверхностях, например:

    • DIALOG_APP «Построение маршрута» на поверхности SBERBOX;
    • EMBEDDED_APP «Построение маршрута» на вашей поверхности.

Внутри аппов можно указать разные интенты, вебхуки и другие настройки.

Как передать в поверхность ответ от навыка

Если настройки указаны правильно, то поверхность получит ответ.

Как взаимодействовать с поверхностью

Есть схожие черты с сценариями для Canvas App. На запрос пользователя отрабатывает один из следующих сценариев:

  • голосовой ответ;
  • ответ в виде команды smart_app_data с произвольным JSON-объектом — формат этого объекта согласуется между бэкендом (фронтендом) на устройстве и сценарием.

Что можно делать в Assistant SDK: отсылать serverAction. Например, для озвучки какого-то события.

API для Embedded App

Ниже перечислены интерфейсы и классы, которые позволяют работать со встроенными смартапами.

Интерфейсы

Ниже перечислены интерфейсы для работы со встроенными смартапами.

EmbeddedSmartAppRegistry

Регистрация встроенного смартапа. Использует метод register(), который возвращает EmbeddedSmartAppMessaging.

EmbeddedSmartApp

Управление встроенным смартапом. Методы:

  • onStart() — переводит смартап в активное состояние (foreground);
  • onStop() — переводит смартап в фоновое состояние (background);
  • release() — освобождает смартап.

EmbeddedSmartAppMessaging

Обмен сообщениями. Методы:

  • sendData() — возвращает EmbeddedSmartAppMessageID;
  • getState() — возвращает статус встроенного смартапа;
  • handle() — обрабатывает команды из VPS.

Классы

Ниже перечислены классы для работы со встроенными смартапами.

EmbeddedSmartAppServerAction

Объект данных ServerAction для отправки в VPS. Свойства:

  • payload — Словарь с параметрами, тело запроса в смартап-сценарий. Должен быть корректным JSON.
  • actionType — Свойство, чтобы встроенный смартап мог реагировать по-разному.

EmbeddedSmartAppDataCommand

Обертка над данными для передачи во встроенный смартап. Содержит свойство raw — данные для передачи во встроенный смартап.

EmbeddedSmartAppFeature

Описывает возможности платформы, которые требуются для правильной работы EmbeddedSmartApp.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней