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

Стандартные команды навигации и команды управления плеером, не передаются в сценарий.
Описание этапов обработки голосовой команды:
-
Пользователь говорит: «Надень шапку».
-
ОС устройства получает данные о состоянии фронтенда приложения и передает их ассистенту.
-
Ассистент передает запрос
MESSAGE_TO_SKILLв сценарий смартапа.Данные о состоянии приложения передаются в поле
payload.meta.current_app.state.<имя_состояния_из_системного_хранилища>, а разбор реплики пользователя в полеpayload.message. -
Сценарий определяет в запросе наличие интента
dressUpи переходит в состояниеЧтоНадеть.Интенты настраиваются вручную в разделе Редактор → Интенты.
state: ЧтоНадеть
intent!: /dressUp
script:
var whatToWear = $parseTree["одежда"][0]["value"]
reply( {
"pronounceText": whatToWear + " надели на андроида",
items: [
# Вспомогательная функция, которая возвращает данные для фронтенда
formWearCommand(whatToWear)
]
},
$response); -
Сценарий возвращает ассистенту объект с описанием ответа ассистента.
Код вспомогательной функции formWearCommand(whatToWear) хранится в файле
/src/utils/utils.jsпроекта Code. -
В ответе
ANSWER_TO_USERассистент передает данные в ОС, которая передает их во фронтенд. -
Фронтенд использует методы библиотеки Messaging чтобы получить сообщение от ОС.
В результате пользователю отображается андроид в шапке, а ассистент сообщает: «Шапка надета на андроида».
По такой же схеме работают текстовые команды пользователя в чате с ассистентом.