Автозапуск мультимедиа до истечения времени в диалоговом потоке Google - PullRequest
0 голосов
/ 01 ноября 2018

В последнее время я работаю над действиями Google. Мне нужно воспроизвести URL-адрес mp3 в течение x минут (это получено от пользователя, такого как play 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 Ответ

0 голосов
/ 01 ноября 2018

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

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

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

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

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

...