我正在通过玩MediaObject
处理意图。我想创建一个意图处理程序,以捕获媒体播放完成的回调,documentation显示了有关如何编写实现代码来处理它的示例。
建立自己的成就
下面的代码段显示了如何编写履行代码 为你的行动。如果您使用的是Dialogflow,请更换 actions.intent.MEDIA_STATUS,其动作名称在 接收action_intent_MEDIA_STATUS事件的意图(对于 例如“ media.status.update”)。
我对dialogflow指令的一部分感到困惑。我处理并返回MediaObject的意图称为smoothie-02
,对此我有一个后备方法,它在播放完媒体后会处理什么,但我想创建另一个意图并在那里处理它。我想做的是创建一个可以处理它的新意图,而不是将其转换为smoothie-02
意图的后备意图。
smoothie-02
处理程序
app.dialogFlow.intent('smoothie-02', (conv) => {
const welcomeContext = getConvContext(conv, AppContexts.WELCOME);
givenName = welcomeContext.parameters['given-name'];
fruitTypes = welcomeContext.parameters['FruitTypes'];
if (!conv.surface.capabilities.has('actions.capability.MEDIA_RESPONSE_AUDIO')) {
conv.ask('Sorry, this device does not support audio playback.');
return;
}
conv.contexts.set("actions_capability_media_response_audio", 5);
// Zoe says something
let response = `Ooh good choice ${givenName} ! `;
response += fruitTypes.length > 1 ? `${fruitTypes[0]} and ${fruitTypes[1]}` : `${fruitTypes[0]} `;
response += `${drinkType} ` ;
response += 'coming right up. But will you first turn me on?';
console.log(response);
conv.ask(response);
conv.ask(new Suggestions("Don't be shy"));
// Blender plays
conv.ask(new MediaObject({
name: 'Blender Sound',
url: 'https://storage.googleapis.com/zoe-mortimer.appspot.com/blender.wav',
}));
});
答案 0 :(得分:3)
我需要做的是创建一个新的Intent,并在Events中添加actions_intent_MEDIA_STATUS
,这将是处理媒体播放完成的回调的Intent。归功于this article!