如何在内联编辑器对话框中发布帖子请求?

时间:2018-06-07 14:35:26

标签: javascript node.js dialogflow fulfillment

首先,我使用了火焰层,所以没有计费问题。 我还包括了 “要求”:“*”
在package.json依赖项中。 在内联编辑器中查看我的代码index.js:

`

'use strict';
var global_request = require('request');
var myJSONObject = {
        "limit": 10,
        "offset": 0,
        "query": "example"
    };
global_request.post(
    'https://example.com', { 
        json: myJSONObject },
        function (error, res, body) {
            if (!error && res.statusCode == 200) {
                console.log(res);
                console.log(body);
            }
        }
    );

`

但是在firebase日志中我收到以下错误:

Unhandled rejection
Error: Can't set headers after they are sent.

我跟着How to make an HTTP POST request in node.js?寻求帮助。但代码仍有错误。 我在这做错了什么?感谢帮助。

1 个答案:

答案 0 :(得分:0)

如果您正在进行异步操作,Dialogflow库假定您正在使用Promises。

通常,我使用request库而不是request-promise-native库。所以代码块可能看起来像这样:

var rp = require('request-promise-native');
var myJSONObject = {
        "limit": 10,
        "offset": 0,
        "query": "example"
    };
var options = {
  method: 'post',
  uri: 'https://example.com',
  body: myJSONObject,
  json: true
};
return rp( options )
  .then( body => {
    console.log( body );
    // This is also where you'd call the library
    // to send a reply.
    return Promise.resolve( true );
  })
  .catch( err => {
    // You should also return a message here of some sort
    return Promise.resolve( true );
  });