Как я могу отправить коды вербовки на мобильные номера в 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));
})