如何在DialogFlow的内联编辑器中使用来自后续意图的参数

时间:2019-01-16 21:07:16

标签: dialogflow actions-on-google

我正在使用DialogFlow内联编辑器,我需要能够根据后续意图中参数的特定值提供不同的响应。

通过UI,我能够建立跟进意图并在先前意图中引用实体,但是我无法基于该实体的特定值来设置逻辑,这就是为什么我需要能够通过在线编辑器来做到这一点。

有人可以向我展示如何通过在线编辑器在跟进意图中使用实体的示例吗?

到目前为止,我能够在一个函数(下面的函数1)中输出上下文,但是我无法在使用后续意图的函数2中使用用户在函数1中提供的实体。

    //function 1:
    function fruit(agent) {
        const fruit = agent.parameters.FruitValue
        agent.add(`what fruit do you like`)
        agent.setContext({ name: 'cherries-followup', lifespan: 2, parameters: {FruitValue: fruit}})}

    //function 2:
function details(agent) {
    const context = agent.getContext('cherries-followup');
    const fruit = context.parameters.FruitValue;
    agent.add(`Good to know you like ${fruit}!`);
}

    intentMap.set('CherriesIntent', fruit);
    intentMap.set('CherriesDetailIntent', details);

我想通过UI在在线编辑器中复制的内容的图片 Picture of what I did via the UI which i would like to replicate in the Online Editor


更新(已解决):

我现在已将代码重写为与DF帖子一致(以便更容易调试:https://dialogflow.com/docs/getting-started/integrate-services

    function languageHandler(agent) {
        const language_spoken = agent.parameters.language;
         {agent.add(`Wow! Where did you learn ${language_spoken} and for how long?`);
            agent.setContext({
                  name: 'languages-followup',
                  lifespan: 2,
                  parameters:{languages: language_spoken}
                });
        } 
        }

    function languageCustomHandler(agent) {
        const context = agent.getContext('languages-followup');
        //const allContexts = agent.contexts; // [{ name: 'languages-followup', ...}]
        const language_spoken = context.parameters.language;
        const country = agent.parameters.country;
        const duration = agent.parameters.duration;
        agent.add(`Wow! So cool you learned ${language_spoken} in ${country} for about ${duration.amount} ${duration.unit}!`);
    }

  intentMap.set('Language', languageHandler);
  intentMap.set('Language - custom', languageCustomHandler);

现在,在确保将持续时间参数值在UI中设置为duration.original或将.amount和.unit添加到duration之后,它现在可以工作(否则,您将得到:“哇!太酷了,您在而不是“哇!中国!大约!!!太酷了!您在中国学习德语大约1个月了!

PARAMETER   VALUE
country China
duration    {"amount":1,"unit":"mo"}

0 个答案:

没有答案