在Dialogflow v2

时间:2018-06-08 12:33:19

标签: javascript google-api google-cloud-platform dialogflow

我想在响应中打印出对Dialogflow请求时给出的参数但由于某种原因这对我不起作用。

这是请求:

request = {
        session: sessionPath,
        queryInput: {
          event: {
            name: 'questionevt',
            parameters: {
              question: 'this is a question'
            },
            languageCode: 'en-US',
          },
        },
      };

我的Dialogflow响应如下所示: enter image description here

任何想法为什么这不起作用,它显示出空洞,就像那里没有任何东西一样。

编辑: 奇怪的是,当我尝试打印console.log(result.parameters.fields.question);时,我将{ stringValue: '', kind: 'stringValue' }视为一个消息!

1 个答案:

答案 0 :(得分:0)

您不能使用默认的文本响应来执行此操作,实际上,您需要在实现部分中针对该意图启用Webhook调用。我将向您展示我的意图。

Intent

我的实体:

Entity

实现部分中的代码(您需要启用内联编辑器):

'use strict';
const http = require('http');

const kind = 'ticket';
exports.dialogflowFirebaseFulfillment = (req, res) => {
  console.log('Dialogflow Request body: ' + JSON.stringify(req.body));
  
  let question = req.body.queryResult.parameters['question'];
  
  switch(question){
      case "computer":
          res.send(JSON.stringify({ 'fulfillmentText': "Restart the computer."}));
          break;
      case "love":
          res.send(JSON.stringify({ 'fulfillmentText': "Forget him/her."}));
          break;
  }
}

然后,如果您尝试了,它应该可以这样工作:

Result