Я создал небольшой API-интерфейс nodejs, который принимает телефонный номер в качестве ввода, отправляет пользователю текст подтверждения через Twilio, а затем создает нового пользователя.Я звоню Twilio, чтобы отправить текстовое сообщение в функции ниже:
module.exports = function (recipient, message) {
client.messages
.create({
body: message,
from: '+16468464111',
to: recipient
})
.then(message => {
winston.info('Sent invite to ' + recipient + ' with SID ' + message.sid);
})
.catch(error => {
winston.error(error);
});
}
И затем я вызываю эту функцию из моего экспресс-маршрута следующим образом:
router.post('/', async (req, res) => {
const { error } = validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
let user = await User.findOne({ phone: req.body.phone });
if (user) return res.status(400).send('Number already used')
user = new User(_.pick(req.body, ['phone']));
const activationUrl = 'https://www.thebeep.app/activate/' + user._id;
const message = 'Welcome to The Beep! To activate your account and create your username click here: ' + activationUrl;
const phone = '+1' + user.phone;
const sms = await twilio(phone, message);
try {
user = await user.save();
res.send(user);
} catch (ex) {
res.status(400).send('Invalid number ' + ex);
}
});
Что яВы хотите получить возможность прослушать успешный ответ от Twilio (убедившись, что номер действителен) перед созданием пользователя, и в противном случае уведомить пользователя о том, что он ввел неверный номер.Но я не могу понять, как вернуть что-то, кроме неопределенного из обещания Twilio, на мой маршрут.
Спасибо,
Эван