Twilio API с node.js для проверки телефона
Twilio — поставщик услуг связи, предоставляющий аудио, текстовые, видео и другие API-сервисы для приложений. Проверка номера телефона с помощью SMS является очень распространенной задачей для многих приложений, особенно в процессе регистрации, а также при проверке безопасности удаленного входа в систему.

Easiio предоставляет облачную базовую телефонную систему, колл-центр и поддержку в чате на веб-сайте. Автоматический ответ системы, такой как IVR (интерактивный голосовой ответ) и ITR (интерактивный текстовый ответ), можно настроить для вызова API своей стороны, например HTTP API, предоставляемого node.js и JavaScript.
В этом примере я покажу, как легко создать ITR (чат-бот) для сбора номера телефона пользователя, отправить вызов HTTP API к API node.js, написанному на JavaScript, для генерации кода проверки и вызвать Twilio API для отправки SMS. на мобильный телефон посетителя сайта. Тем самым он завершает проверку номера мобильного телефона пользователя и может использоваться для регистрации на веб-сайте, подписки и других приложений. API node.js для кода проверки SMS можно использовать автономно. Вы можете использовать его для своих собственных приложений.
Шаг 1. Напишите API node.js для API Twilio.
API-интерфейс twilio node.js состоит из двух частей. Первая часть — это генерация случайного 6-значного кода проверки и сохранение его в хранилище Redis.
var number = Math.floor(Math.random() * 899999 + 100000);
...
redisClient.set(formData.phone, number);
redisClient.expire(formData.phone, 600); // setting expiry for 10 minutes.
Вторая часть — отправка SMS-сообщения через Twilio API.
client.messages
.create({
body: 'Your Easiio verification code: ' + number,
from: '+15614492296',
to: formData.phone
})
.then(message => console.log(message.sid));
Вот фрагмент кода для отправки SMS. Убедитесь, что вы установили Redis на node.js с помощью команды «npm install redis» и установили API twilio с помощью «npm install twilio».
else if (request.url === "/send_verification_code_itr") {
var requestBody = '';
request.on('data', function(data) {
requestBody += data;
if(requestBody.length > 1e7) {
response.writeHead(413, 'Request Entity Too Large', {'Content-Type': 'text/html'});
response.end('<!doctype html><html><head><title>413</title></head><body>413: Request Entity Too Large</body></html>');
}
});
request.on('end', function() {
console.log("post end", requestBody);
var formData = JSON.parse( requestBody );
var number = Math.floor(Math.random() * 899999 + 100000);
console.log("send sms twilio phone: ", formData.phone);
const client = require('twilio')(accountSid, authToken);
redisClient.set(formData.phone,number);
redisClient.expire(formData.phone,600); // setting expiry for 10 minutes.
// create and send the client message
client.messages
.create({
body: 'Your Easiio verification code: ' + number,
from: '+15614492296',
to: formData.phone
})
.then(message => console.log(message.sid));
response.write('[ { "id": 1, "action": "play", "text": "The varification code send via sms: ' + number + '" }]');
response.end('');
});
}
Запустите node.js, выполнив команду «node twilio_sms.js». Затем вы можете протестировать API с помощью следующей командной строки, используя Curl. Обязательно измените localhost на адрес вашего хоста.
curl -H "Content-Type:application/json" -X POST -d '{"name":"John Doo","phone":"9254449999"}' http://localhost:1337/send_verification_code_itr
После завершения проверки отправки. Есть еще один API для проверки кода. Получив номер телефона и код подтверждения через HTTP API, эта часть может использовать номер телефона для получения кода из Redis и сравнения значения для проверки. Он возвращает успех или неудачу, зависит от результата. Его можно протестировать с помощью командной строки Curl.
else if (request.url === "/check_varification_code") {
var requestBody = '';
request.on('data', function(data) {
requestBody += data;
if(requestBody.length > 1e7) {
response.writeHead(413, 'Request Entity Too Large', {'Content-Type': 'text/html'});
response.end('<!doctype html><html><head><title>413</title></head><body>413: Request Entity Too Large</body></html>');
}
});
request.on('end', function() {
console.log("post end", requestBody);
var formData = JSON.parse( requestBody );
console.log("post end code: ", formData.code, " phone: ", formData.phone);
var code = redisClient.get(formData.phone,function(err,reply) {
if(err) {
console.log ("Error in redis.");
response.write('[ { "id": 1, "action": "play", "text": "Error in redis.' + queryObject.code + '" }]');
response.end('');
}
if(reply === null) {
console.log ("Invalid email address.");
response.write('[ { "id": 1, "action": "play", "text": "Invalid email address: ' + email + '" }]');
response.end('');
return 1;
}
return_code = reply;
console.log ("email check return_code:." + reply);
if (return_code == formData.code) {
console.log("verification successful. ", formData.phone, " ", return_code);
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('<!doctype html><html><head><title>email verification successful</title></head><body>email verification successful</body></html>');
response.end();
} else {
response.writeHead(200, {'Content-Type': 'text/html'});
response.write('<!doctype html><html><head><title>email verification failed</title></head><body>email verification failed. Please try again</body></html>');
response.end();
}
});
});
}
curl -H "Content-Type:application/json" -X POST -d '{"code":"661871","phone":"9254449999"}' http://localhost:1337/check_varification_code
Полный исходный код доступен на GitHub. twilio_sms.js.
Шаг 2. Настройте Easiio ITR (чат-бот) для вызова API
Если у вас нет учетной записи Easiio, зарегистрируйтесь бесплатный. Войдите в серверную часть учетной записи Easiio. Дополнительные инструкции по настройке Easiio можно найти здесь. Руководство по плагину Easiio Web Chat.
Откройте «Расширенные настройки» и выберите «Визуальный IVR». Создайте новую IRT или используйте существующую. В моем случае для тестирования я буду использовать нашу демонстрацию/пекарню ITR. Я создал новую запись в меню первого уровня под названием «Подтвердить номер телефона». Настроил форму так, как показано на следующем рисунке. Обратите внимание на имя формы, которая создается с помощью «Расширенной настройки» рядом с «Формой IVR». Установка URL-адреса API node.js для отправки кода подтверждения в предыдущем разделе. Затем добавьте вызов в форму подтверждения, как только Twilio отправит код подтверждения по SMS.


Во второй форме используется проверка телефона.

Шаг 3. Проверьте Twilio API и ITR.
Проверьте вызов ITR/чат-бота к API Twilio SMS node.js, открыв созданный ITR. В моем случае я открываю https://easiio.com/demo. После появления всплывающего окна чата я выбираю меню «Подтвердить номер телефона». Введите имя и телефон, нажмите «Отправить», чтобы получить мои SMS от службы SMS Twilio. Затем я еще раз ввожу номер телефона и код подтверждения по телефону, затем нажимаю завершить проверку.

Вывод:
В этом блоге показано, как создать API проверки телефона с помощью API Twilio SMS на node.js. API Twilio очень прост в использовании. Этот пример API можно использовать автономно без Easiio. Имейте в виду, что вам понадобится больше кода обработки ошибок, чтобы сделать создание кода более удобным. Easiio предоставляет очень мощный плагин чат-бота для веб-сайта (ITR). Он имеет множество мощных функций, таких как функция формы, показанная в этом примере. Вы можете подписаться на бесплатно и используйте его на своем веб-сайте.
Больше информации: