Обмен данными при запуске Canvas App
Обновлено 15 декабря 2023
Приложение можно запустить как с помощью голосовой команды, так и по нажатию на кнопку в каталоге.
По голосовой команде ассистент передает в сценарий запрос MESSAGE_TO_SKILL
с интентом (поле payload.intent
) run_app
.
При запуске по кнопке в каталоге ассистент передает запрос RUN_APP
, который содержит поле payload.server_action.action_id
(по умолчанию run_app
).
Схема запуска приложения по голосовой команде:
Сценарий демо-приложения обрабатывает команду запуска следующим образом:
/src/scenario/scenario.ts
const scenarioWalker = createScenarioWalker({
systemScenario: createSystemScenario({
//Сообщение о запуске смартапа
RUN_APP: runAppHandler,
NO_MATCH: noMatchHandler,
}),
userScenario,
});
Для обработки сообщения сценария используется функция runAppHandler
:
/src/scenario/handlers.ts
export const runAppHandler: SaluteHandler = ({ res, req }) => {
//Добавляет подсказки в чат с пользователем
res.appendSuggestions(['Запиши купить молоко', 'Добавь запись помыть машину']);
//Реплика, которую произнесет ассистент
res.setPronounceText('начнем');
//Реплика, которая отобразится в чате с пользователем
res.appendBubble('Начнем');
//Добавление начального списка дел
res.appendCommand<SetInitialNotesCommand>({
type: 'set_initial_notes',
payload: data.notes,
});
const { device } = req.request.payload;
//Выбор фронтенда, в зависимости от поверхности
res.overrideFrontendEndpoint(`${req.appInfo.frontendEndpoint}/${req.character}/@${getDeviceFamily(device)}`);
};