Создание функции Twilio для запуска 2 конечных точек веб-перехватчиков (автопилот и FrontApp) для входящих SMS - PullRequest
0 голосов
/ 05 мая 2020

Я хочу создать функцию Twilio, которая будет запускать две конечные точки веб-перехватчика для AutoPilotHQ и FrontApp.

Я пробовал то, что предлагалось здесь , предлагающее создать следующую функцию. Я также не забыл включить зависимости.

const got = require('got');

exports.handler = function(context, event, callback) {
  let twiml = new Twilio.twiml.MessagingResponse();
  Promise.all([
    got.post(FIRST_URL, { body: JSON.stringify(event) }),
    got.post(SECOND_URL, { body: JSON.stringify(event) })
  ]).then(responses => callback(null, twiml));
};

Я получаю следующую ошибку, которую я получаю от twilio:

UnhandledPromiseRejectionWarning: Unhandled promise rejection: HTTPError: Response code 500 (Internal Server Error)
at PromisableRequest.request.once (/var/task/node_modules/got/dist/source/as-promise/index.js:124:28)
at process._tickCallback (internal/process/next_tick.js:68:7)

Веб-перехватчики URL-адресов указаны c для FrontApp и AutopilotHQ соответственно.

1 Ответ

0 голосов
/ 07 мая 2020

Работает ли эта функция Twilio ниже?

Убедитесь, что вы добавили строку запроса и ax ios как функцию Twilio зависимости .

enter image description here

const axios = require('axios');
const qs = require('querystring');

exports.handler = function(context, event, callback) {

  let twiml = new Twilio.twiml.MessagingResponse();

  let { 
      ApiVersion,
      SmsSid,
      SmsStatus,
      SmsMessageSid,
      NumSegments,
      ToState,
      From,
      MessageSid,
      AccountSid,
      ToCity,
      FromCountry,
      ToZip,
      FromCity,
      To,
      FromZip,
      ToCountry,
      Body,
      NumMedia,
      FromState 
  } = event;

  let requestBody = {
      ApiVersion,
      SmsSid,
      SmsStatus,
      SmsMessageSid,
      NumSegments,
      ToState,
      From,
      MessageSid,
      AccountSid,
      ToCity,
      FromCountry,
      ToZip,
      FromCity,
      To,
      FromZip,
      ToCountry,
      Body,
      NumMedia,
      FromState 
  };

    let url1 = "https://example.com/1";
    let url2 = "https://example.com/2";

   const config = {
     headers: {
     'Content-Type': 'application/x-www-form-urlencoded'
     }};

  Promise.all([
       axios.post(url1, qs.stringify(requestBody), config),
       axios.post(url2, qs.stringify(requestBody), config)
       ]).then(result => {
           callback(null, twiml);
       }).catch(err => {
           console.log(err);
           callback(err);
       });
};
...