从实现的后备意图获取输出上下文

时间:2019-09-04 14:47:56

标签: dialogflow

我有一些意图。它们都只使用单个后备意图,而该后备意图已启用了Webhook。

在后备功能中,我希望做的是打开输出上下文,然后根据后备来自哪个意图来确定下一步该怎么做。

但行

await result = page.evaluate(() => await videocall.webrtcStuff.pc.getStats());
console.log(result);

调试到控制台后,将输出:

var context = request.body.queryResult.outputContexts;

对于switch语句,我只希望最后一位带有xxxxx上下文。我是否必须将其拆分以获得输出上下文?

在“诊断信息”部分中,我有点惊讶,没有提到回退的意图,而解决该问题的唯一方法似乎是使用outputcontext,但是如上所示,这很长字符串。

谢谢

1 个答案:

答案 0 :(得分:1)

是的,上下文名称只是该路径的最后一部分。大多数库都会为您解决这个问题,但是如果您直接使用JSON,则需要自己进行操作。

没有提及“后备源于此的Intent”,因为这并不是Intent的模型。意图表示用户所说或所做的事情,而不是对话的当前状态或您在对话中的位置。当前状态 由上下文表示,如果您选择设置它们。

从这个意义上讲,您使用上下文的方式可以有所不同。它们可以存储参数,因此是在一次对话之间保持信息的好方法,您可以按原样使用它们-查看对话的总体状态。但是在定义Intent时,它们还具有其他用途。

在Intent定义中,仅当设置了 all 输入上下文字段中列出的所有上下文(即-寿命大于0)时,才会触发Intent。例如,Dialogflow在制定后续意图时就使用了此方法,这很常见,因此您可以执行诸如“帮助”根据上下文触发不同的意图之类的事情。在输出上下文中,它将自动捕获Intent中指定的所有参数,包括由用户的响应填写的参数,因此这是一种容易记住用户多次讲话的简单方法。

要在注释中回答您的问题-尽管您在使用输出上下文的方式和方法上保持一致,但并没有具体说明先前触发的意图还是最近触发的意图。您给他们的寿命,就可以这样使用。它的意思是您的对话处于什么状态,无论如何,这通常会更好。

记住-意图表示用户所说或所做的事情。它不代表对话。只有系统状态代表这种情况,而我们必须通过上下文控制该状态的一种工具。