首页 > 解决方案 > followupEvent 不符合任何意图

问题描述

我正在使用dialogflow-fulfillment来实现基于 dialogflow 的服务后端。有一点我使用方法agent.setFollowupEvent(targetIntent)targetIntent需要一个上下文是可匹配的,我们称之为它targetContext

我无法确切知道它何时停止工作(一周?也许一个月?),但它起作用了,现在它不起作用(而且我认为我没有改变任何可以解释它的东西)。履行永远不会被调用,targetIntent我可以在对话流控制台中看到这是因为触发的请求setFollowupEvent与任何意图都不匹配。

如果我从 中删除 的要求targetContexttargetIntent它可以工作。

我想我正确地设置了上下文:

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" }
}

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

标签: dialogflow-esdialogflow-es-fulfillment

解决方案


显然,我在提出问题后就找到了解决方案......

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

                                 |
                                 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?


推荐阅读