0

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

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

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);

我得到的只是一条控制台线路,上面写着“你好”。,由此看来,代码没有比 console.log(keyword) 更进一步。

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

提前致谢。

4

0 回答 0