SDK действий: обработка неподдерживаемых звуков при воспроизведении мультимедиа

Вопрос

Можно ли возобновить содержимое мультимедийного объекта после того, как пользователь попытался взаимодействовать с устройством Google Home во время воспроизведения этого мультимедиа?

Проблема

Допустим, вы начали воспроизведение mp3-файла с помощью conv.ask. Ваш вызов conv.ask будет выглядеть примерно так:

conv.ask(`<speak><audio src="${someUrl1}"><desc>${someDescription}</desc></audio></speak>`)
    .add(new MediaObject({
        url: someUrl2
    }))
    .add(new Suggestions(['suggestion1', 'suggestion2']));

Это все отлично играет. Но затем скажите, что пользователь говорит что-то вроде «Окей, Google, Gobbledygoop», тогда вы можете сказать пользователю, что его запрос бессмысленен, а затем продолжить воспроизведение мультимедиа в медиа-объекте.

Что я уже пробовал

app.fallback (): похоже, это несовместимо с SDK действий. Невозможно ни при каких обстоятельствах вызвать обратный вызов (тот, который предоставляется app.fallback).

Предоставление conv.ask ответов с пустой / пустой строкой: это была отчаянная попытка увидеть, что произойдет, если вы ничего не укажете для conv.ask. Была надежда, что он увидит пустой ответ и просто продолжит играть в СМИ.


person Gareth Jones    schedule 15.10.2018    source источник


Ответы (1)


В Actions on Google нет ничего, что могло бы сделать это за вас.

Лучшее, что вы можете сделать, потребует от вас больших усилий:

  • Вы можете включить как часть состояния сеанса (или в контекст), когда вы ответили пользователю с результатом мультимедиа.

  • Если вы получите еще один запрос до события Media Status, вы можете определить разницу между ними, и это будет примерно то, как долго воспроизводился звук.

  • Затем вы можете вернуть URL-адрес для аудио, который включает начало в этой точке аудио. Однако смещение звука - это не то, что делает Ассистент, вам придется поддерживать его на сервере, который также содержит звук.

Что касается двух вещей, которые вы пытались сделать - app.fallback() должен был работать для обработки любого намерения, которое вы установили для перехода к вашему веб-перехватчику, для которого не был определен какой-либо другой обработчик, но который все равно не сможет просто «возобновить» звук. . conv.ask() требует, чтобы вы что-то спросили - пустые ответы не допускаются.

В этом случае вы, по крайней мере, хотите сказать пользователю, что то, что он сказал, не имеет смысла ... перед возобновлением звука.

person Prisoner    schedule 15.10.2018