如何从POST中调用API.ai代理

时间:2016-11-07 21:18:10

标签: javascript node.js express api-design dialogflow

我知道这可能是javascript / node.js noob问题,所以我提前道歉。在我的辩护中,我精通R ...但我只是想弄清楚node.js所以我可以用API打我的数据库并进行自动R调用。

使用API​​.ai node.js example,我可以运行以下代码:

var apiai = require('apiai');
var app = apiai('f20a022f27dd463fa28f8b24a67ad5e7');

var request = app.textRequest('Hello!', {
  'sessionId': 123456
});

request.on('response', function(response) {
  console.log(response);
  console.log(response.result.fulfillment.speech);
  console.log(response.result.metadata.intentName);
});

request.on('error', function(error) {
  console.log(error);
});

request.end();

获取以下控制台结果:

{ id: '784f3622-7448-435c-a4f0-20a782ae29c5',
  timestamp: '2016-11-07T20:59:10.3Z',
  result:
   { source: 'agent',
     resolvedQuery: 'Hello!',
     action: '',
     actionIncomplete: false,
     parameters: {},
     contexts: [ [Object] ],
     metadata:
      { intentId: '87ac68b3-462d-479a-8dbb-c05d816db3b4',
        webhookUsed: 'false',
        intentName: 'welcome' },
     fulfillment: { speech: 'Welcome to the jungle!', messages: [Object] },
     score: 1 },
  status: { code: 200, errorType: 'success' },
  sessionId: '123456' }
Welcome to the jungle!
welcome

一切都很好。

但我不只是想获得控制台结果。我想将response.result.fulfillment.speech和response.result.metadata.intentName中的值作为API POST调用的输出传递。 (实际上我最终会将它们写入数据库,但由于我甚至无法将它们作为API POST调用的输出发回,所以这还不可行。)

因此。我试过这种方法:

var express    = require("express");
var app = express();
var apiai = require('apiai');
var app2 = apiai('f20a022f27dd463fa28f8b24a67ad5e7');

app.post("/",function(req,res){
  var keyword = req.query.keyword;
  console.log(keyword);

var request = app2.textRequest('Hello.', {'sessionId': 123456});

  request.on('response', function(response) {
    console.log(response);
    res.json(response);
  });

  request.on('error', function(error) {
    console.log(error);

  });
});
app.listen(3000);

我得到的只是一个控制台行,上面写着“Hello。”,看起来代码没有比console.log(关键字)更远。

谁能告诉我为什么这不起作用?即使它很简单。

提前致谢。

0 个答案:

没有答案