Метод запроса nodeJS не работает, я получаю оплату по мере поступления - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь запустить Railway API из облачной функции firebase, и она выдаёт мне следующую ошибку

Я слышал, что метод запроса не работает в свободном плане, но он все еще не работает даже после того, как я обновился допланируйте оплату по мере поступления

// См. https://github.com/dialogflow/dialogflow-fulfillment-nodejs // для документов, примеров и отчетов по библиотеке выполнения Dialogflow

'use strict';
var request = require('request');
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');

process.env.DEBUG = 'dialogflow:debug'; // enables lib debugging statements

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
  console.log('Dialogflow Request body: ' + JSON.stringify(request.body));


  function fallback(agent) {
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
}

   function welcome(agent) {

      var options = {
            url: 'http://api.railwayapi.com/v2/live/train/' + '17239' + '/date/' + '27-12-2018' + '/apikey/' + 'myjwjpywq4'
        }
        request(options, function (err, resp, body) {
console.log(body);

        })



     agent.add(`This message is from Dialogflow's Cloud Functions for Firebase editor!`);
         agent.add(new Suggestion(`Quick Reply`));
     agent.add(new Suggestion(`Suggestion`));
     agent.setContext({ name: 'weather', lifespan: 2, parameters: { city: 'Rome' }});
   }

  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
 agent.handleRequest(intentMap);
});

Ошибка:

TypeError: request is not a function
    at welcome (/user_code/index.js:33:9)
    at WebhookClient.handleRequest (/user_code/node_modules/dialogflow-fulfillment/src/dialogflow-fulfillment.js:303:44)
    at exports.dialogflowFirebaseFulfillment.functions.https.onRequest (/user_code/index.js:71:9)
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:57:9)
    at /var/tmp/worker/worker.js:725:7
    at /var/tmp/worker/worker.js:708:11
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickDomainCallback (internal/process/next_tick.js:128:9)

1 Ответ

0 голосов
/ 27 декабря 2018

У вас есть два определения для request.Вот первый:

var request = require('request');

Вот второй, и он маскирует первый внутри тела вашей функции:

exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {

Когда вы вызываете request () внутри телаВ вашей функции JavaScript думает, что вы имеете в виду самый внутренний request, который является первым передаваемым ему аргументом.Это явно не то, что вы хотели.В этот момент request не является функцией.

Просто дайте им разные имена, чтобы они не сталкивались друг с другом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...