我正在使用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" }
}
上下文已经存在,我认为是正确的。 有什么线索吗?我唯一能想到的就是我们将代理类型从免费更改为企业。
答案 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?