我想创建一个Twilio函数,该函数将触发AutoPilotHQ和FrontApp的两个webhook端点。
我尝试了here的建议 建议创建以下功能。我确实确保也包括依赖项。
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)
Webhooks的URL分别特定于FrontApp和AutopilotHQ。
答案 0 :(得分:0)
在Twilio Function下可以正常工作吗?
确保将querystring和axios添加为Twilio函数dependencies。
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);
});
};