dialogflow-es - followupEvent 不符合任何意图
问题描述
我正在使用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" }
}
上下文就在那里,我认为是正确的。有什么线索吗?我唯一能想到的是,我们将代理类型从免费更改为企业。
解决方案
显然,我在提出问题后就找到了解决方案......
问题是上下文的生命周期,我没有设置它,现在它适用于:
|
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?
推荐阅读
- uwp - 按钮触发有争议的听写
- javascript - 调用ajax导出函数返回值
- android - Windows 错误:spawnSync ./gradlew 在模拟器上运行反应本机项目时出现 EACCES 错误
- javascript - setInterval() 没有删除之前绘制的图像
- javascript - 在 React 中使用 UseState 处理事件
- php - PHP将变量添加到json数组
- heroku - Heroku:pg_restore:[存档]文件头中不支持的版本(1.14)
- javascript - 位置无效:纬度必须是数字
- xamarin - Xamarin 形成动态通知
- php - 在 3 li 元素内循环 6 个帖子