处理dialogflow中的音频播放完成回调(媒体响应)

时间:2018-10-10 08:51:37

标签: node.js dialogflow actions-on-google

我正在通过玩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',
    }));
});

1 个答案:

答案 0 :(得分:3)

我需要做的是创建一个新的Intent,并在Events中添加actions_intent_MEDIA_STATUS,这将是处理媒体播放完成的回调的Intent。归功于this article

media status event