Отправка SMS через API на Node.js: библиотека twilio

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Отправка SMS на JavaScript (Node.js): библиотека twilio

В современной веб-разработке часто требуется отправлять SMS-уведомления пользователям: подтверждение регистрации, коды двухфакторной аутентификации, оповещения о статусе заказа и многое другое. В экосистеме Node.js одной из самых популярных и надёжных библиотек для этой задачи является twilio. Это официальный SDK от компании Twilio, который предоставляет простой и мощный API для программной отправки SMS, голосовых вызовов и работы с другими телекоммуникационными сервисами.

В этой статье мы подробно разберём, как установить, настроить и использовать библиотеку twilio для отправки SMS из вашего Node.js приложения. Вы узнаете основные методы, научитесь обрабатывать ошибки и увидите несколько практических примеров.

Установка и настройка

Для начала работы вам понадобится аккаунт на Twilio. После регистрации вы получите:

  • Account SID — уникальный идентификатор вашего аккаунта.
  • Auth Token — секретный ключ для аутентификации запросов.
  • Twilio phone number — номер телефона, с которого будут отправляться SMS (предоставляется бесплатно для тестирования).

Установите библиотеку через npm:

npm install twilio

После установки создайте файл send-sms.js и подключите библиотеку, передав свои учётные данные:

const twilio = require('twilio');

const accountSid = 'YOUR_ACCOUNT_SID';
const authToken = 'YOUR_AUTH_TOKEN';
const client = twilio(accountSid, authToken);

Базовая отправка SMS

Для отправки сообщения используйте метод client.messages.create(). Он принимает объект с тремя обязательными полями:

  • body — текст сообщения (до 1600 символов для одного SMS).
  • from — ваш Twilio-номер (в формате +1234567890).
  • to — номер получателя (также в международном формате).

Пример отправки простого SMS:

client.messages
  .create({
    body: 'Привет! Это тестовое сообщение с Twilio.',
    from: '+1234567890',
    to: '+79876543210'
  })
  .then(message => console.log('Сообщение отправлено. SID:', message.sid))
  .catch(error => console.error('Ошибка:', error));

После успешной отправки вы получите объект message, содержащий уникальный sid (идентификатор сообщения), статус доставки и другую информацию.

Асинхронная отправка с async/await

Для более современного подхода используйте синтаксис async/await. Оберните вызов в try...catch для обработки ошибок:

const sendSMS = async (to, body) => {
  try {
    const message = await client.messages.create({
      body: body,
      from: '+1234567890',
      to: to
    });
    console.log(`SMS отправлено на ${to}. SID: ${message.sid}`);
    return message;
  } catch (error) {
    console.error('Не удалось отправить SMS:', error.message);
    throw error;
  }
};

// Использование
sendSMS('+79876543210', 'Ваш код подтверждения: 1234');

Дополнительные параметры

Библиотека поддерживает множество опциональных параметров. Вот некоторые из них:

  • mediaUrl — URL изображения или другого медиафайла (для MMS).
  • statusCallback — URL для получения уведомлений о статусе доставки (webhook).
  • applicationSid — SID приложения Twilio для дополнительной конфигурации.

Пример отправки MMS с изображением:

client.messages
  .create({
    from: '+1234567890',
    to: '+79876543210',
    body: 'Посмотрите на это фото!',
    mediaUrl: ['https://example.com/image.jpg']
  })
  .then(message => console.log('MMS отправлено:', message.sid));

Обработка ошибок

При работе с API важно правильно обрабатывать возможные ошибки. Twilio возвращает подробные коды ошибок. Наиболее частые:

  • 21211 — неверный номер получателя.
  • 21608 — недостаточно средств на аккаунте.
  • 21610 — сообщение слишком длинное.

Пример расширенной обработки:

client.messages                    

Рекомендаций