我为Google助手开发了一个动作,它是一个简单的故事讲述器。直到几天前它一直运行良好(实际上我不能说问题何时开始出现)。基本上,由于故事时间超过3分钟,因此我将故事分为两个mp3文件。在第一个文件之后,询问用户是否要继续收听故事。如果用户说“是”,则播放第二个.mp3文件。 为此,我使用了MediaStatus控件。 此控件检查mp3是否在播放,如果没有播放,则检查当前故事是否还有第二部分,如果有,则询问用户是否要收听。 此时,媒体状态跟踪将侦听用户的回答,如果用户说是,它将播放故事。
就像已经说过的那样,它直到几天前仍然有效,但是现在,我注意到,当用户说“是”时,故事的第二部分开始了,但立即也出现了“再见”消息,它应该是在mp3文件结束后播放。 好像是媒体状态控件一样,它又被触发了,却没有意识到mp3正在播放,并与再见msg进行了回复。
我不知道我是否能够对此问题弄清楚。
我试图监视模拟器的运行状况,但是在那种情况下,一切都很好。或者我应该说“几乎可以”,因为它附在屏幕上的文本消息上(语音无法读取),有一条消息说“有一个错误”,但并不能阻止该操作正常进行,并且行为(至少在模拟器中)符合预期。
我期望这个顺序: 1)故事(mp3)开始。 2)当mp3停止播放时,如果还有第二部分,则询问用户是否要听 3)如果用户说“是”,则播放第二部分,在此mp3文件的末尾,有一个“再见”消息
相反,我有这个顺序 1)故事(mp3)开始。 2)当mp3停止播放时,如果还有第二部分,则询问用户是否要听 3)当用户说“是”时,播放第二部分但是,即使在mp3继续播放的情况下,也播放了再见msg,几秒钟后,该动作就退出了。
app.intent('Media Status', (conv) => {
const mediaStatus = conv.arguments.get('MEDIA_STATUS');
if (mediaStatus && mediaStatus.status === 'FINISHED') {
console.log(`track finished: ${conv.user.storage.track}`);
console.log(`storia2: ${conv.data.storia2}`);
if (conv.data.storia2 !== undefined) {
secondaParte = `<audio src="` + randomPhrase(continuaFavola) + `"> <desc>Vediamo come va a finire...</desc> Vuoi sapere come andrà a finire? </audio>`;
storia = conv.data.storia2;
conv.data.storia2 = undefined;
conv.ask(new SimpleResponse('<speak>' + secondaParte +'</speak>'));
return;
} else {
var cinquestelle = `<audio src="` + randomPhrase(stellebreve) + `"><desc> ...e ricorda di lasciare una buona recensione!!!</desc> Grazie</audio>`;
if ((date < 19) && (date > 5)) {
goodnight = `<audio src="` + randomPhrase(finestoriaMsg) + `"><desc>...ci vediamo la prossima volta!!</desc>Ciao</audio>`;
} else {
goodnight = `<audio src="` + randomPhrase(buonaNotte) + `"><desc>...e adesso Buonanotte!!</desc>Buona notte</audio>`;
}
conv.close(new SimpleResponse('<speak>' + goodnight + cinquestelle +'</speak>'));
}
} else {
conv.ask(new SimpleResponse('Mi fermo.'));
}
});
app.intent('媒体状态-是',(转化)=> {
conv.ask(new SimpleResponse(<speak> Ecco la conclusione della storia...</speak>
));
conv.ask(new建议(['Buona notte!'])));
conv.ask(new MediaObject({
名称:标题,
网址:storia,
说明:autore,
图片:新图片({
网址:largeImageUrl,
alt:标题,
}),
}));
});