在Google模拟器上的操作中回答mediaObject时出现错误?

时间:2018-06-08 07:13:53

标签: actions-on-google dialogflow

我目前正在做一个盲测试动作,我将播放随机音乐,用户将不得不猜测它。当他回答时,他会播放另一首音乐,直到他给出3个答案并且他的分数将会确定。

当我使用 Google Home Google智能助理启动我的应用时,一切正常正常。不幸的是,当我在谷歌的模拟器中启动它时,每首歌曲都会与第一首歌曲返回相同(即如果第一首音乐是A,第二首是B,第三首是C,模拟器将播放三次A而不是A,B,C)。

这是模拟器的已知错误吗?

更新

这是我用来获取mp3的代码。它存储在我的服务器上,我将访问它。

function getRandomMusic(conv) {
    return new Promise(resolve => {
        let URL = "http://"+VPS+":"+EXPRESS_PORT+"/blindTest";
        console.log("URL="+URL);
        unirest.get(URL)
            .headers({'Accept': 'application/json', 'Content-Type': 'application/json'})
            .end(response => {
                console.log("Response = "+JSON.stringify(response));
                if (response.body && response.body.link) {
                    const link = response.body.link;
                    conv.data.artist = response.body.artist;
                    conv.data.track = response.body.track;
                    console.log("Link="+link);
                    conv.ask(new MediaObject({
                        name: "Musique à deviner",
                        icon: new Image({
                            url: "https://cibul.s3.amazonaws.com/event_blind-test-series_291687.jpg"
                        }),
                        url: link,
                        description: "Quel est l'artiste ?"
                    }));
                    conv.ask(new Suggestions('Not yet implemented'));
                    return resolve()
                } else {
                    ask(conv, "La communication avec le serveur distant a échoué.");
                    return resolve()
                }
            })
    })
}

在服务器端,我使用ffmpeg来分割我的mp3文件,并且只保留10个随机秒,然后将其保存在另一个文件中。此10S文件的链接将发送到我的操作。

app.get('/blindTest', function(req, res) {
    //Need to download the mp3
    //Take a random 10 s
    let name = "FullMusic.mp3";
    const mp3Duration = require('mp3-duration');
    const ffmpeg = require('ffmpeg');
    const MongoClient = require('mongodb').MongoClient;
    let url = 'URL';
    MongoClient.connect(url, function (err, client) {
        if (err) {
            console.error(err);
        }
        let db = client.db('DB');
        console.log("Connected successfully to database");
        let collection = db.collection('COLLECTION');
        collection.count(function (err, resultat) {
            if (err) console.error(err);
            let randNum = Math.floor(Math.random()*resultat);
            collection.find().limit(-1).skip(randNum).next(function (err, resu) {
                if (err) console.error(err);
                client.close();
                download(resu.link, name, () => {
                    console.log("Download complete!");
                    mp3Duration(name, function (err, duration) {
                        if (err) console.error(err);
                        console.log("Le fichier fait "+duration+" s de long.");
                        try {
                            new ffmpeg(name, function (err, video) {
                                if (!err) {
                                    let randStart = Math.floor(Math.random()*(duration - 10));
                                    console.log("RandStart="+randStart+"s");
                                    video.setVideoStartTime(randStart);
                                    video.setVideoDuration(10);
                                    video.addCommand('-y');
                                    video.save('/home/musiques/10sMusic.mp3', function (error, file) {
                                        if (!error) {
                                            console.log('Video file '+file);
                                            res.send({
                                                artist:resu.artist,
                                                track: resu.track,
                                                link:"http://IP+PORT/10sMusic.mp3"
                                            });
                                            fs.unlink(name, () => {
                                                console.log("Delete of "+ name +"complete !");
                                            })
                                        } else {
                                            console.log("ERREUR!!!+"+error);
                                        }
                                    })
                                } else {
                                    console.error(err);
                                }
                            })
                        } catch (e) {
                            console.log(e.code);
                            console.log(e.msg);
                        }
                    })
                })
            })
        });
    });
});

0 个答案:

没有答案