Как я могу отправить коды вербовки на мобильные номера в node.js? (Как nodemailer, но для SMS)
Я отправил письма с подтверждением для пользователей, используя nodemailer для моего проекта. Он работает нормально.
Теперь я хочу отправить коды подтверждения на мобильные номера из node.js, но я не знаю, как это сделать.
Есть ли какой-либо модуль для отправки кодов подтверждения на мобильные номера, например, nodemailer с адресами электронной почты? Или, если нет, как я могу сделать это сам?
Я разрабатываю свой проект, используя node.js и mongodb, JavaScript и jQuery.
Ответы
Ответ 1
Пакет NodeJS https://www.npmjs.com/package/springedge будет легко отправлять смс. Вы можете установить его как
npm install springedge
Пример кода отправки смс:
// send sms
var springedge = require('springedge');
var params = {
'apikey': '', // API Key
'sender': 'SEDEMO', // Sender Name
'to': [
'919019xxxxxxxx' //Moblie Number
],
'message': 'test+message'
};
springedge.messages.send(params, 5000, function (err, response) {
if (err) {
return console.log(err);
}
console.log(response);
});
Ответ 2
Большинство операторов предоставляют шлюз для SMS, на который вы можете отправить электронное письмо и отправить его в виде SMS. Если вам нужен бесплатный способ отправки SMS, который работает с вашей текущей версией nodemailer, это, вероятно, ваш лучший вариант. В противном случае вам может потребоваться поиск платных услуг SMS, с которыми вы можете интегрироваться.
Ниже приведен список шлюзов SMS: http://en.wikipedia.org/wiki/List_of_SMS_gateways
Со ссылкой на страницу Википедии:
Например, чтобы отправить номер, обычно выраженный в США как 987-555-0100, можно отправить по электронной почте 9875550100 @SMS-шлюз.
Ответ 3
Чтобы обеспечить доступ к мобильному пользователю, независимо от его местоположения и сети, вероятно, вам придется посмотреть платный сервис, такой как Nexmo (для кого я работаю) или Twilio.
С помощью этих сервисов вы можете либо создать собственный процесс проверки (2FA - Two Factor Authentication):
- Пользователь вводит свой номер телефона в форме и отправляется в ваше приложение.
- Ваше приложение получает номер телефона
- Вы отправляете пользователю SMS с кодом auth
- Пользователь получает код авторизации
- Пользователь вводит код auth в форму и отправляет в ваше приложение
- Ваше приложение получает код аутентификации и проверяет его код на номер телефона (возможно, используя текущий номер сеанса связи)
- Если код аутентификации является тем, который вы ожидаете, пользователь проверяется
Или вы можете использовать свои продукты аутентификации 2FA (Nexmo - Verify или Twilio - Authy, которые должны помочь упростить этот рабочий процесс.
Используя Nexmo, проверьте, будет ли код:
Отправить запрос подтверждения
var Nexmo = require('nexmo');
var nexmo = new Nexmo({apiKey: API_KEY, apiSecret: API_SECRET});
var verifyRequestId = null; // use in the check process
nexmo.verify.request({number: TO_NUMBER, brand: APP_NAME}, function(err, result) {
if(err) { console.error(err); }
else {
verifyRequestId = result. request_id;
}
});
Проверить код проверки подлинности
nexmo.verify.control({request_id: verifyRequestId, cmd: 'cancel'}, function(err, result) {
if(err) { console.error(err); }
else {
console.log(result);
}
});
Ответ 4
Для тестирования вы должны использовать этот API https://www.fast2sms.com, однако вы можете использовать его и в качестве бизнеса. Перед запуском приведенного ниже кода убедитесь, что вы сгенерировали действительный ключ авторизации API, и для этого вам необходимо зарегистрироваться бесплатно.
Теперь разместите номер мобильного телефона получателя для массового сообщения, и вы можете использовать его как для проверки, так и для целей OTP.
Установите модуль npm в свой проект, где вы хотите внедрить систему SMS.
npm install unirest
Код для метода GET:
var unirest = require("unirest");
var req = unirest("GET", "https://www.fast2sms.com/dev/bulk");
req.query({
"authorization": "YOUR_API_KEY",
"sender_id": "FSTSMS",
"message": "This is a test message",
"language": "english",
"route": "p",
"numbers": "9999999999,8888888888,7777777777",
});
req.headers({
"cache-control": "no-cache"
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
Ответ 5
var request = require('request');
request.post('http://textita.com/text', {
form: {
phone: '9087938341',
message: 'Hello world',
key: 'textita',
},
}, function(err, httpResponse, body) {
if (err) {
console.error('Error:', err);
return;
}
console.log(JSON.parse(body));
})