followupEvent与任何意图都不符

时间:2019-05-29 08:39:38

标签: dialogflow dialogflow-fulfillment

我正在使用dialogflow-fulfillment来基于dialogflow实现我的服务的后端。在某种程度上,我使用了方法agent.setFollowupEvent(targetIntent)targetIntent要求上下文是可匹配的,我们称之为targetContext

我不能确切地说出它什么时候停止工作(也许一个星期?一个月?),但是现在它不工作了(我不认为我已经改变了可以解释它的任何东西)。 targetIntent的实现从未被调用,我在对话流控制台中看到这是因为setFollowupEvent触发的请求与任何意图都不匹配。

如果我从targetContext中删除了targetIntent的要求,它将起作用。

我认为我正确设置了上下文:

agent.context.set(targetContext, null, null);
agent.setFollowupEvent(targetIntent);

检查 dialogflow-fulfillment 发送给dialogflow的响应的正文,我看到:

{
    "outputContexts": [{ "name": "projects/<myprojectid>/agent/sessions/<mysessionid>/contexts/<targetContext>" }],
    "followupEventInput": { "name": "<targetIntent>", "languageCode": "it" }
}

上下文已经存在,我认为是正确的。 有什么线索吗?我唯一能想到的就是我们将代理类型从免费更改为企业。

1 个答案:

答案 0 :(得分:0)

很明显,我在问了问题之后就找到了解决方案...

问题是上下文的生命周期,我没有设置它,现在可以使用:

                                 |
                                 V
agent.context.set(targetContext, 1, null);
agent.setFollowupEvent(targetIntent);

所以输出变为:

{
    "outputContexts": [{ "name": "projects/<myprojectid>/agent/sessions/<mysessionid>/contexts/<targetContext>", "lifespanCount": 1 }],
    "followupEventInput": { "name": "<targetIntent>", "languageCode": "it" }
}

我还是很确定它以前可以工作,也许没有将使用期限默认设置为1?