Новое

Подключение SMS API: пошаговая интеграция для разработчика

1. Выбор SMS‑провайдера и регистрация

Перед началом нужно определить платформу, исходя из тарифов, покрытия и API‑документации. Сравнение актуальных провайдеров: Как выбрать SMS‑провайдера обеспечивает структурированную информацию о покрытии и ценах.

1.1 Регистрация и получение ключей

Во время регистрации вы получите API‑ключ и секретный токен. Они обязательны для аутентификации.

2. Подготовка среды разработки

Определите стек: Node.js, Python, PHP или целый же микросервис. Ниже приведён пример настройки на Node.js с использованием axios:

npm install axios

Инициализация клиента:

const axios = require('axios');
const sms = axios.create({
  baseURL: 'https://api.provider.com/v1',
  headers: { 'Authorization': `Bearer ${API_KEY}` }
});

2.1 Проверка подключения

Отправьте запрос к /account для проверки правильности ключей:

sms.get('/account')
  .then(res => console.log('Аккаунт:', res.data))
  .catch(err => console.error(err));

3. Настройка отправки SMS

API обычно поддерживает POST‑запрос к /messages c JSON‑телом. Минимальные поля: to, text. Пример:

const payload = {
  to: '+71234567890',
  text: 'Привет, ваша скидка 20% действует до конца недели!'
};

sms.post('/messages', payload)
  .then(res => console.log('SMS ID:', res.data.id))
  .catch(err => console.error(err));

3.1 Работа с параметрами

  • sender – имя отправителя (только буквы/цифры).
  • schedule_at – дата и время отправки в ISO 8601.
  • callback_url – веб‑хук по которому провайдер будет уведомлять о статусе.

4. Web‑хуки и обработка статусов

Для получения статусов доставки необходимо открыть слушатель HTTP POST‑запросов. Пример на Express:

app.post('/webhook', (req, res) => {
  const { message_id, status } = req.body;
  console.log(`Сообщение ${message_id} - статус: ${status}`);
  res.sendStatus(200);
});

4.1 Проверка подписи

Провайдеры обычно подписывают запросы. Проверьте X-Signature заголовок, расшифровав HMAC‑SHA256 с секретным токеном.

5. Массовые рассылки и лимиты

Большие отправки разбиваются на батчи. Рекомендуется не превышать лимиты, установленные провайдером (часто 100 SMS/мин). Используйте очередь:

const batch = messages.slice(0, 100);
// отправка батча
for (const msg of batch) {
  sms.post('/messages', msg);
}

5.1 Отклонённые сообщения

При отсутствии номера (not_copied) провайдер инкорпорирует словарь «rejected» в ответ. Обрабатывайте списки отписок вручную.

6. Логирование и мониторинг

Включите журналирование всех запросов и ответов. Храните метки времени, статус и любые сообщения об ошибках для аудитов.

6.1 Интеграция с системами мониторинга

Включите метрики в Prometheus‑compatible endpoints: /metrics. Отслеживайте sent_success, failed, delivered.

7. Безопасность и конфиденциальность

Храните ключи в secrets manager, не фиксируйте в репозитории. Используйте HTTPS и ограничьте IP‑доступ к веб‑хуку.

7.1 Соответствие GDPR

Проверьте, хранит ли провайдер данные в зоне ЕС. Добавьте consent_timestamp в payload для подтверждения согласия зарегистрированного пользователя.

8. Оптимизация затрат

Проверяйте заголовки cost_per_sms в ответе. Учитывайте скидки за пакетную покупку. Сравните цены: Полное руководство по SMS API демонстрирует примеры экономии.

9. FAQ

Какие форматы телефонных номеров поддерживаются?
Международный E.164. Например, +71234567890.
Как гарантировать доставку?
Используйте SPF, DKIM и проверенные шлюзы.
Можно ли получить отчёт о доставке в реальном времени?
Да, через веб‑хуки.

Заключение

Интеграция SMS‑API состоит из выбора провайдера, настройки аутентификации, разработки клиента, обработки веб‑хуков и мониторинга. Следуя изложенному руководству, разработчик быстро получает надёжную систему массовых рассылок, готовую к масштабированию и соблюдению требований безопасности и регуляторных норм.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *