从后续意图中获取后续意图中的参数

时间:2019-04-06 14:35:22

标签: node.js dialogflow

我跟进一个意图,让我们说一个“主意图”,让孩子遵循一个意图,而没有回应意图

如果是,我想从主意图中获取参数 我正在尝试使用如下上下文访问它:

var name = agent.context.get('saveContact.saveContact-yes').params['name'];Cannot read property 'get' of undefined

但是我不知道该放入什么 是上下文名称吗?或母版的意图名称或特定子代的意图名称? 我尝试了两者都得到Null

我无法读取未定义的属性“ get” 在日志中。

图书馆:

    "firebase-functions": "^2.0.2",
    "firebase-admin": "^5.13.1",
    "googleapis": "^27.0.0",
    "actions-on-google": "2.2.0",
    "dialogflow-fulfillment": "^0.4.1"

其余代码:

function SaveContact(agent){
 //var name = agent.parameters.name;
 var name = agent.context.get('saveContact.saveContact-yes').params['name'];
 var email = agent.context.get('saveContact.saveContact-yes').params['email'];
// var email=agent.parameters.email;
   return admin.database().ref('/contacts').push({name: name,email:email}).then((snapshot) => {
 // Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
     agent.add('added sucessfully');
// console.log('database write sucessful: ' + snapshot.val());
});
}
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response }); /// Thid is to handle the communication with dialogflow
  let intentMap = new Map();
  intentMap.set('makeAppointment', makeAppointment);  // It maps the intent 'Make Appointment' to the function 'makeAppointment()'
  intentMap.set('saveContact-yes', SaveContact);
  agent.handleRequest(intentMap);

});

1 个答案:

答案 0 :(得分:0)

确保您使用的是最新版本的dialogflow-fillfillment库。看来,从您的package.json开始,您正在使用版本0.4.1,该版本具有使用上下文的另一种方式。

agent.context.get()是在0.6.0版中引入的,但不推荐使用以前的方法。

您可以使用npm install --save dialogflow-fulfillment@latest

更新到最新版本