我正在使用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在在线编辑器中复制的内容的图片
更新(已解决):
我现在已将代码重写为与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"}