node.js - 在 Dialogflow 中不从上下文中获取任何值
问题描述
我在 Dialogflow 中创建了一个聊天机器人,当调用 Welcome Intent 时,我从 API 接收用户的电子邮件 ID,并将其存储在 context: mail中。我正在另一个意图中访问此电子邮件以注册用户,但我没有得到任何价值。在控制台上打印上下文时,它显示了电子邮件 ID,那么为什么不在 RegisterUser Intent 中呢?我使用内联编辑器在 Dialogflow 中实现。
欢迎意向:
function getmail(agent){
var myJSONOb = {
"param1":param1
};
var options = {
method: 'post',
uri: 'my_API',
body: myJSONOb,
json: true
};
process.env.NODE_TLS_REJECT_UNAUTHORIZED = false;
return rp( options )
.then( body => {
let ctx = {'name': 'mail', 'lifespan': 15, 'parameters': {'email':body.mail}};
agent.setContext(ctx);
// this prints: { name: 'mail', lifespan: 15, parameters: { email: 'mymail@gmail.com' } }
})
.catch( err => {...
});
}
在注册用户中:
function registerUser(agent){
let params = agent.getContext("mail").parameters;
let email = params.email;
agent.add("email "+email);
//this just prints : 'email' and no value
}
解决方案
不知道你是哪个版本?但你也可以像下面那样做。我认为您正在使用 NodeJS 实现 webhook。
// Set the context
agent.context.set({
name: 'global_main_context',
lifespan: 5,
parameters: param
});
// get the context
let globalContext = agent.context.get('global_main_context');
希望这可以帮助!
推荐阅读
- javascript - 理解使用 JS Angular + HTML 的导航语法(ng-click="save(userForm)".....)
- reactjs - 如何使用反应测试库测试 Create-React-App(在 TypeScript 中)的特定元素
- regex - 空手道核心:为什么在匹配数组元素的正则表达式时双反斜杠转义不起作用?
- c# - Unity 中的移动世界规模?
- node.js - 如何跟踪 NodeJS 应用程序中未履行的承诺数量?
- python - Python 类,试图掌握创建类实例以及其他类相关函数的概念
- github-actions - 如何在本地运行 GitHub Actions 工作流程?
- windows - Sqlite3 在 Windows 命令行中不起作用
- python - 将用户-用户和项目-项目相似性矩阵输入神经结构化学习的方法
- r - ggplot中的Quasiquotation问题