Я работал над этой проблемой в течение нескольких часов безуспешно. Я запускаю приведенную ниже функцию для запуска каждые 15 минут. Я вижу из CloudWatch, что функция срабатывает. Из моих журналов я знаю, что функция успешно получает встречи, которые требуют уведомления. Я использую 2 блока try / catch, чтобы попытаться получить какое-либо сообщение об ошибке, но ошибок не регистрируется.
Когда я запускаю эту функцию, используя sls invoke local
, она работает нормально и отправляет ожидаемое текстовое сообщение с правильными номерами. Однако при развертывании и запуске на основе cron он не работает, но и не выдает ошибку - поэтому я в растерянности.
Я думаю, что это проблема асинхронного ожидания. По сути, журналы консоли отображаются в журналах Cloudwatch, но ничего внутри функции twilioClient.messages.create
не появляется в журналах.
Буду признателен за любую помощь - я уверен, что это что-то простое, но я смотрел на это уже несколько часов безуспешно!
function sendNotifications(appointments) {
console.log('require notifications', appointments.length);
appointments.forEach(function(appointment) {
// Create options to send the message
// Appointments show in the logs
console.log('appt', appointment);
console.log('from', process.env.TWILIO_PHONE_NUMBER);
try {
const options = {
to: `${appointment.meta.contact.number}`,
from: process.env.TWILIO_PHONE_NUMBER,
/* eslint-disable max-len */
body: `Hi ${appointment.meta.contact.name}. Just a reminder that you have an property viewing for ${appointment.meta.property.name} at ${appointment.date}, ${appointment.time}. Please reply with CONFIRM to confirm that you'll be attending this viewing or CANCEL BOOKING to cancel this viewing.`
/* eslint-enable max-len */
};
// Send the message! - this log displays
console.log('about to send message');
twilioClient.messages.create(options, function(err, response, callback) {
// Nothing in this block gets printed to the logs
if (err) {
// Just log it for now
console.log('ERROR', err);
} else {
// Log the last few digits of a phone number
let masked = appointment.meta.contact.number.substr(
0,
appointment.meta.contact.number.length - 5
);
masked += '*****';
console.log(`Message sent to ${masked}`);
try {
updateBooking({ booking: appointment, message: response });
} catch (e) {
console.log(e.message);
}
}
// Don't wait on success/failure, just indicate all messages have been
// queued for delivery
if (callback) {
callback.call();
}
});
} catch (e) {
console.log('ERR', e.message, appointment);
}
});
}