首页 > 解决方案 > 在 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
  }

标签: node.jsdialogflow-es

解决方案


不知道你是哪个版本?但你也可以像下面那样做。我认为您正在使用 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');

希望这可以帮助!


推荐阅读