google-cloud-platform - 无法在 Dialogflow Fulfillment 中读取上下文(突然未定义)
问题描述
我们使用谷歌云功能作为 webhook 构建了一个 Dialogflow 代理,该代理直到昨天晚上都可以正常工作。当时我将代理导出并稍后重新导入,它工作了一段时间。
停止工作的是agent.context.get('...');
(also agent.getContext('...')
) 确实返回undefined
,即使上下文是根据 UI 和原始 API 响应设置的。
作为一个例子,我有一个意图,它有一个必需的 slot shop
,启用了 slot 填充的 webhook。当我测试代理时,命名的意图info
正确匹配,并且上下文info_dialog_params_store
似乎在那里:
这是根据原始 API 响应的输出上下文的一部分:
"outputContexts": [
{
"name": "projects/MYAGENTNAME/agent/sessions/0b753e8e-b377-587b-3db6-3c8dc898879b/contexts/info_dialog_params_store",
"lifespanCount": 1,
"parameters": {
"store": "",
"store.original": "",
"kpi": "counts",
"date_or_period": "",
"kpi.original": "trafico",
"date_or_period.original": ""
}
}
在 webhook 中,我将意图正确地映射到 js 函数:
let intentMap = new Map();
intentMap.set('info', info);
agent.handleRequest(intentMap);
函数的第一行info
如下所示:
function info(agent) {
store_context = agent.context.get('info_dialog_params_store');
}
哪个返回
TypeError: Cannot read property 'get' of undefined
at info (/user_code/index.js:207:36)
at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:382:9)
at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
at /var/tmp/worker/worker.js:762:7
at /var/tmp/worker/worker.js:745:11
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)
我很确定我没有更改任何可能影响代理正常运行的东西,除了一些重构。
当我读到环境可能存在问题时,我还尝试了激活和停用的 beta 功能,但这并没有改变任何东西。
任何人都知道我可以在哪个方向进一步调查?
解决方案
我有同样的问题,我解决了它更新 package.json 中的 dialogflow-fulfillment:
从 "dialogflow-fulfillment": "^0.5.0" 到"dialogflow-fulfillment": "^0.6.0"
推荐阅读
- php - 致命错误:GRP php 扩展中超过了 30 秒的最大执行时间
- c# - 没有 GA/GC 的千分之一秒字符串的最佳获取
- php - Sonata 管理包,如果用户不选择任何过滤器,如何不显示任何结果并且不对 DB 执行任何查询?
- oracle - 以 UTF8 格式从 oracle 数据库中导出 CLOb 数据
- c# - 在哪里实例化处理 .NET Core 中的服务事件的类?
- javascript - Chart.js 折线图 x 轴标签舍入
- linux - 如何让 Linux 等到我的程序完成其 SIGTERM 操作?
- vue.js - asyncData() 在开发中到达,而不是在发布时到达
- google-apps-script - 我的脚本设置为当前时间,但工作表仍显示为上午而不是下午
- excel - 在 Microsoft Excel 中筛选/排序整个部分