在 twilio 函数中获取回调函数错误
getting callback function error in twilio functions
我的调试器不断向我发送此函数的回调错误(请参阅下面的 img link)。我还想继续我的工作回到工作室,工作室文档说我需要 "A successful return (HTTP 20X)" 我错过了什么
exports.handler = function(context, event, callback) {
const client = require('twilio')();
const msg = event.Msg;
client.messages
.create({
body: msg,
from: '+17322222222',
to: '+13477777777'
})
.then(message => console.log(message.sid));
};
Error msg from Debugger
如果我在代码末尾插入 callback(),我会获得成功 return 但消息不会被发送。
exports.handler = function(context, event, callback) {
const client = require('twilio')();
const msg = event.Msg;
client.messages
.create({
body: msg,
from: '+17322222222',
to: '+13477777777'
});
callback();
};
您需要在消息发送成功后执行回调。
这可以使用 promises 或 async/await 语法来完成,如下所示:
exports.handler = function(context, event, callback) {
let twilioClient = context.getTwilioClient();
twilioClient.messages
.create({
body: 'Hello World',
to: '+13477777777',
from: '+17322222222',
}).then(message => {
console.log(message.sid);
callback(null, {result: "success"});
})
.catch(error => {
console.log(error);
callback({result: "error"});
});
};
或
exports.handler = async function(context, event, callback) {
let twilioClient = context.getTwilioClient();
let sendSMS = () => {
try {
let result = twilioClient.messages
.create({
body: 'Hello World',
to: '+13477777777',
from: '+17322222222',
});
return result;
} catch(e) {
console.log(e);
callback(e);
}
};
let result = await sendSMS();
callback(null, result);
};
在回调@markokstate 之前发送多条消息
exports.handler = function(context, event, callback) {
const twilioClient = context.getTwilioClient();
numbers = ['+14075551212','+18025551212'];
body = event.Body || 'The British are Coming!';
Promise.all(
numbers.map(number => {
return twilioClient.messages.create({
to: number,
from: '+15095551212',
body: body
});
})
)
.then(messages => {
console.log('Messages sent!');
callback(null, 'Messages sent!');
})
.catch(err => {
console.error(err);
callback(null, 'ERROR');
});
};
我的调试器不断向我发送此函数的回调错误(请参阅下面的 img link)。我还想继续我的工作回到工作室,工作室文档说我需要 "A successful return (HTTP 20X)" 我错过了什么
exports.handler = function(context, event, callback) {
const client = require('twilio')();
const msg = event.Msg;
client.messages
.create({
body: msg,
from: '+17322222222',
to: '+13477777777'
})
.then(message => console.log(message.sid));
};
Error msg from Debugger
如果我在代码末尾插入 callback(),我会获得成功 return 但消息不会被发送。
exports.handler = function(context, event, callback) {
const client = require('twilio')();
const msg = event.Msg;
client.messages
.create({
body: msg,
from: '+17322222222',
to: '+13477777777'
});
callback();
};
您需要在消息发送成功后执行回调。
这可以使用 promises 或 async/await 语法来完成,如下所示:
exports.handler = function(context, event, callback) {
let twilioClient = context.getTwilioClient();
twilioClient.messages
.create({
body: 'Hello World',
to: '+13477777777',
from: '+17322222222',
}).then(message => {
console.log(message.sid);
callback(null, {result: "success"});
})
.catch(error => {
console.log(error);
callback({result: "error"});
});
};
或
exports.handler = async function(context, event, callback) {
let twilioClient = context.getTwilioClient();
let sendSMS = () => {
try {
let result = twilioClient.messages
.create({
body: 'Hello World',
to: '+13477777777',
from: '+17322222222',
});
return result;
} catch(e) {
console.log(e);
callback(e);
}
};
let result = await sendSMS();
callback(null, result);
};
在回调@markokstate 之前发送多条消息
exports.handler = function(context, event, callback) {
const twilioClient = context.getTwilioClient();
numbers = ['+14075551212','+18025551212'];
body = event.Body || 'The British are Coming!';
Promise.all(
numbers.map(number => {
return twilioClient.messages.create({
to: number,
from: '+15095551212',
body: body
});
})
)
.then(messages => {
console.log('Messages sent!');
callback(null, 'Messages sent!');
})
.catch(err => {
console.error(err);
callback(null, 'ERROR');
});
};