как ответить пользователю с помощью Google Ассистента после завершения разговора?

Я делаю действие Google. У меня есть один сценарий, в котором для расчета требуется некоторое время в облаке, но я не хочу, чтобы пользователь ждал ответа. Я хочу отвечать пользователю всякий раз, когда мой ответ готов, даже когда разговор с пользователем завершен, я хочу отправить свой ответ в уведомлении или что-то в этом роде.

Я только что нашел это в документах действий Google. https://developers.google.com/actions/assistant/updates

Возможно ли это в действиях Google и как?


person Shubham Zemse    schedule 07.02.2018    source источник


Ответы (2)


Вы имеете в виду уведомления. Вы можете использовать его, но обратите внимание на предупреждение в верхней части предоставленной вами ссылки: «Обновления и уведомления в настоящее время находятся в предварительной версии для разработчиков. Вы можете создавать приложения, используя функции, описанные в этой статье, но в настоящее время вы не можете их публиковать. ".

Что касается шагов по созданию ежедневного уведомления:

  1. Перейдите к своему намерению actions.intent.CONFIGURE_UPDATES.
  2. В разделе «Ответы» перейдите на вкладку Google Assistant, нажмите «Добавить содержимое сообщения» и выберите «Пользовательские полезные данные».

    1. In the "Custom Payload" box, add the following code to call the AskToRegisterDailyUpdate helper. Swap INTENT_NAME to the intent that you want to be invoked when the user interacts with your notification.

    {

    "google": { 
       "system_intent": {
        "intent": "actions.intent.REGISTER_UPDATE",
        "data": {"@type": "type.googleapis.com/google.actions.v2.RegisterUpdateValueSpec",
        "intent": "INTENT_NAME",
        "triggerContext": { 
           "timeContext": { "frequency": "DAILY" }
        }
      }
    }
    

    } }

    1. Если вы используете веб-перехватчик, вы можете вызвать этот API напрямую через клиентскую библиотеку:

      appMap.set('setup_update', function(app) { 
        app.askToRegisterDailyUpdate('INTENT_NAME'); 
      })
      

      })

    2. Добавьте еще одно намерение под названием «finish_update_setup» и введите actions_intent_REGISTER_UPDATE в качестве его события.

    3. Задайте для действия намерения также "finish_update_setup".

    4. В своем веб-перехватчике откройте index.js и добавьте следующее. Заменить Хорошо, я начну давать вам ежедневные обновления и хорошо, я не буду давать вам ежедневные обновления. с любым ответом, который вы хотите дать пользователю:

      appMap.set('finish_update_setup', function(app)) {
        if (app.isUpdateRegistered()) {
          app.tell("Ok, I'll start giving you daily updates.");
        } else {
          app.tell("Ok, I won't give you daily updates.");
        }
      }
      
    5. Разверните веб-перехватчик в функциях Firebase и включите выполнение веб-перехватчика в Dialogflow.

Если вы хотите узнать, как создать простое уведомление (не ежедневное) - проверьте этот документ на push-уведомления.

person Ido Green    schedule 07.02.2018

Если у вас нет немедленного ответа для отправки, но вы ожидаете его в ближайшее время, вы должны вернуть «обещание». Когда вы можете ответить, "выполнение" обещания приводит к тому, что ваш ответ доставляется. Я не знаю, каков фактический тайм-аут, но в моем случае я уверен, что разрешена хотя бы задержка в несколько секунд.

Что касается обновлений или уведомлений, API есть, но в документации говорится, что вы не можете развернуть действие в производственной среде с их помощью. Есть несколько загадочный комментарий к «обращению в службу поддержки», если они вам нужны.

На днях я могу попробовать.

person William DePalo    schedule 07.02.2018