как сделать запрос на публикацию в диалоговом потоке встроенного редактора?

Во-первых, я использую уровень blaze, поэтому проблем с выставлением счетов нет. Я также включил
"request" : "*"
в зависимости от 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.

Я следовал Как сделать запрос HTTP POST в node. js? за помощью. Но в коде все еще есть ошибки. Что я здесь делаю не так?? Спасибо за помощь.


person ayush___raj    schedule 07.06.2018    source источник


Ответы (1)


Библиотека Dialogflow предполагает, что вы используете промисы, если выполняете асинхронные операции.

Обычно вместо библиотеки 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 );
  });
person Prisoner    schedule 07.06.2018