Автозапуск мультимедиа до истечения времени в диалоговом потоке Google

Я работаю над действиями Google в последнее время. Мне нужно воспроизвести URL-адрес mp3 в течение x минут (это получит от пользователя, такого как воспроизведение abc в течение 30 минут). Моя проблема в том, что мой mp3-адрес всего 1,30 минуты. Как я могу играть в нее до х минут. Я использую файл dialogflow index.js для кода. Вот что я пытаюсь

app.intent('soundplay', (conv, {soundreq, duration}) => {
    conv.ask(new Suggestions('Exit'));

    conv.ask(new SimpleResponse({
        speech: 'xxx',
        text: 'xxx',
    }));

    conv.ask(sound);
    var d = duration.milliseconds;
    setTimeout(sound, d);

});    

Я пытаюсь использовать setTimeout, но он также не работает.

1 ответ

Решение

Есть несколько вопросов, с которыми вам нужно разобраться.

Во-первых, это sound довольно расплывчато из вашего примера кода. Вы используете это в setTimeout() Это говорит о том, что это функция, но вы также передаете ее conv.ask() что говорит о том, что это MediaResponse или какой-то другой объект.

Во-вторых, этот код будет выполняться на вашем сервере, а не на устройстве пользователя, а действия будут выполняться в диалоговой модели. Поэтому, когда вы отправляете что-то пользователю, вам нужно подождать, пока пользователь (или устройство пользователя) не отправит вам другое сообщение, с которым вы можете ответить.

Решение состоит в том, чтобы включить MediaObject как часть создаваемого вами ответа. Это будет включать в себя URL аудио, которое вы хотите воспроизвести, а также название и некоторую другую информацию.

Когда воспроизведение аудио закончится, ваш агент Dialogflow получит сообщение с actions_intent_MEDIA_STATUS Событие. Вы можете создать Intent, который обрабатывает это событие, и в обработчике Intent для него в своем веб-крюке проверить, истекло ли время. Если это так, вы можете запросить, что делать сейчас или завершить разговор или что-либо еще. Если срок его действия не истек, вы можете снова воспроизвести звук с помощью другого объекта MediaObject.

Другие вопросы по тегам