Единственный способ для AoG "взять на себя инициативу начала разговора" - это через push-уведомления.Помощник не может начать разговор через какое-то время или когда происходит событие.
Возможно, другим способом может быть отправка push-уведомления, только если ваше действие не выполнит длинную последовательностьсобытий и запускающее действие может вызвать намерение повторить попытку.Предполагалось бы, что все будет хорошо, если не будет сказано.
Вы также можете уведомить пользователя, что для завершения действия потребуется несколько секунд после его запуска, и реализовать намерения последующих действий, которые обрабатываются, если пользователь спрашивает «Это сделано?» или «Как дела?» .Включение этого процесса в процесс проверки прогресса, но при условии, что он должен быть успешным.
Вы можете легко сместить длительный фоновый процесс, реализовав очередь задач в Firebase, где ваше намерение - создать дочерний элементаналогично этому.
firebase.database().ref("tasks").push({action: "disarm_garage"});
И затем вы создаете триггер облачной функции для его обработки
functions.database.ref('tasks/{id}').onCreate((snap) => {
const action = snap.val().action;
switch (action) {
case 'disarm_garage':
// ...
break;
}
// Remove the task after processing
return snap.ref.remove();
});
Это обеспечит вам достаточно времени для выполнения задачи в фоновом режиме, не блокируяразговор.