Google action не отправляет actions.intent.MEDIA_STATUS - PullRequest
0 голосов
/ 04 февраля 2019

это мой первый вопрос о переполнении стека, так что, если я что-то напутал, пожалуйста, дайте мне знать!

Я создаю действие Google, которое сможет воспроизводить подкасты, и я хочу воспроизвести заключительный аудиоклип по окончании подкаста.насколько я могу судить из документации (https://developers.google.com/actions/assistant/responses#media_responses), в конце воспроизведения аудио, устройство должно отправить запрос, содержащий намерение actions.intent.MEDIA_STATUS. Затем я хотел бы ответить на это завершающим аудио, но я никогда не получаю запрос.

Что касается того, что я настроил до сих пор: я использую диалоговое окно для настройки диалога, а затем отправляю запросы в AWS Lambda, где у меня настроен некоторый Java-код для отправки.назад подкаст URL. У меня есть эта часть медиа-ответа работает - он может воспроизводить, приостанавливать, пропускать и возвращаться. До сих пор, чтобы получить следующую звуковую дорожку, я сделал следующее:

  1. создать намерение в Dialogflow (я назвал это AudioCompleteIntent)
  2. Добавить actions_intent_MEDIA_STATUS в раздел «События» намерения (как показано в Обработка обратного вызова завершения воспроизведения звука в диалоговом потоке (ответы мультимедиа) )
  3. добавить фиктивную обучающую фразу. Не уверен, если это необходимо, но это был единственный способ получить AudioCompleteIntent для интеграции с действиями Google в разделе «Действия».Иначе не было бы.Я думал, что наличие намерения в разделе «Действия» было бы необходимо для устройства, чтобы отправить запрос, но, возможно, это только для инициированных пользователем намерений.
  4. При выполнении я выбрал «Включить вызов webhook».для этого намерения ", чтобы я мог отправить запрос в функцию AWS Lambda.Функция Lambda регистрирует все запросы в журналах

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

ПроблемаЯ не вижу никаких запросов от устройства с намерением actions.intent.MEDIA_STATUS.После того, как подкаст завершит воспроизведение самостоятельно (не тогда, когда пользователь останавливает его), я ожидаю, что устройство отправит намерение actions.intent.MEDIA_STATUS в Dialogflow, а затем диалоговый поток обработает это, отправив AudioCompleteIntent функции лямбда-aws.Я не вижу ни своего запроса AudioCompleteIntent, ни какого-либо намерения actions.intent.MEDIA_STATUS ни в разделе «история» диалогового потока, ни в журналах aws.Оба диалоговых потока / AWS показывают записи разговора, который запускает подкаст, хотя в конце подкаста просто ничего.

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

1 Ответ

0 голосов
/ 21 февраля 2019

Я закончил тем, что заставил это работать.Основной момент, который мне не хватало, заключался в том, что мне нужно было установить для «предпросмотра пользователя» значение «Истина» и поставлять подсказки.Пример в текущей документации (по состоянию на февраль 2019 г.) не будет воспроизведен из-за отсутствия фишек.Я удалил "expectUserResponse": true из примера и заставил его играть, но он не отправил actions.intent.MEDIA_STATUS ответ.Повторное введение "expectUserResponse": true и добавление микросхем подсказки сделали свое дело, хотя

Я не могу включить фактический ответ, который я отправил, но вот отредактированная версия образца кода в документации.В частности, я добавил фишки для предложений в пример в разделе «Образец кода» на вкладке DIALOGFLOW JSON, предоставленной в https://developers.google.com/actions/assistant/responses#media_responses:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "mediaResponse": {
              "mediaType": "AUDIO",
              "mediaObjects": [
                {
                  "contentUrl": "https://storage.googleapis.com/automotive-media/Jazz_In_Paris.mp3",
                  "description": "A funky Jazz tune",
                  "icon": {
                    "url": "https://storage.googleapis.com/automotive-media/album_art.jpg",
                    "accessibilityText": "Ocean view"
                  },
                  "name": "Jazz in Paris"
                }
              ]
            }
          }
        ],
        "suggestions": [
          {
            "title": "pause"
          },
          {
            "title": "start over"
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  },
  "outputContexts": [
    {
      "name": "/contexts/_actions_on_google",
      "lifespanCount": 99,
      "parameters": {
        "data": "{}"
      }
    }
  ]
}

благодаря BoneGoat в https://github.com/actions-on-google/actions-on-google-nodejs/issues/247#issuecomment-439617878 дляподнимая важность поиска ответа пользователя на стороне node.js вещей.надеюсь, этот вопрос поможет другим разработчикам Java!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...