Если сотрудник каждый раз выгружает таблицу и нажимает «Отправить», это ручная рассылка. Если сайт, CRM или приложение автоматически передает номер и текст после заказа, записи или входа — это сценарий API. Его качество определяется не одной строкой запроса, а обработкой статусов, ошибок и повторов.
SMS API связывает бизнес-систему с сервисом отправки сообщений. Клиент оформляет заказ, CRM меняет этап сделки, пользователь запрашивает код — ваше приложение передает запрос в SMS Boom и сохраняет результат. Такой подход сокращает ручную работу и позволяет отправлять сообщение в нужный момент, а не после очередной выгрузки.
При этом API не решает за бизнес, кому и что можно отправлять. Тип сообщения, согласие, шаблон, имя отправителя и логика исключений должны быть определены до разработки.
Когда API оправдан, а когда достаточно личного кабинета
API имеет смысл, если хотя бы один сценарий выполняется регулярно и зависит от данных системы:
- коды подтверждения и авторизации;
- статусы заказа, доставки или оплаты;
- напоминания о записи, занятии или бронировании;
- уведомления сотрудникам о критическом событии;
- персональные сообщения из CRM по этапу сделки;
- регулярные кампании по динамическому сегменту.
Для редкой разовой акции по готовому файлу проще использовать личный кабинет или передать кампанию менеджеру. Разработка интеграции окупается за счет повторяемости, скорости и контроля, а не потому, что «API звучит современно».
Как выглядит надежная схема отправки
-
В системе происходит событие
Например, заказ получает статус «готов к выдаче». Событие содержит номер заказа, телефон и необходимые переменные.
-
Бизнес-логика проверяет условия
Есть ли номер, не находится ли он в стоп-листе, подходит ли шаблон, не отправлялось ли такое сообщение раньше.
-
Задание попадает в очередь
Пользователь не должен ждать ответа внешнего сервиса на странице оформления заказа. Очередь отделяет основной процесс от доставки SMS.
-
Сервер вызывает API
Передает телефон, текст или шаблон и имя отправителя с серверными учетными данными.
-
Ответ сохраняется
HTTP-статус, идентификатор сообщения и техническая ошибка привязываются к исходному событию.
-
Обновляется финальный статус
Принятие запроса не всегда равно доставке. Если сценарий критичен, система получает или запрашивает итоговый статус.
Фраза «API вернул успех» должна означать конкретное состояние: запрос принят, сообщение передано оператору или доставлено. Если эти этапы смешаны, отчет будет вводить команду в заблуждение.
Какие события автоматизировать первыми
Начинайте со сценария, где легко проверить пользу и ошибки. Обычно это одно из сервисных сообщений:
| Событие | Когда отправлять | Защита от ошибки |
|---|---|---|
| Код входа | Сразу после запроса пользователя | Срок действия, лимит запросов, отсутствие кода в логах |
| Статус заказа | После подтвержденной смены статуса | Идемпотентность по заказу и этапу |
| Напоминание о записи | За выбранный интервал до визита | Проверка отмены и часового пояса |
| Неуспешная оплата | После финального ответа платежной системы | Не сообщать об ошибке при еще обрабатываемом платеже |
| Реактивация клиента | После попадания в согласованный CRM-сегмент | Согласие на рекламу и частотный лимит |
После одного стабильного сценария легче добавить остальные: уже понятны формат логов, мониторинг и ответственность команды.
Что передавать в запросе и что хранить у себя
На странице примеров кода SMS Boom показана отправка через REST API с серверной авторизацией. Конкретные поля и ответы нужно сверять с актуальной документацией API. Независимо от языка программирования у себя полезно хранить:
- внутренний идентификатор события или задания;
- нормализованный телефон в защищенном виде;
- код шаблона и версию текста;
- имя отправителя и выбранный канал;
- время первой попытки и число повторов;
- идентификатор сообщения со стороны API;
- технический и финальный статус;
- причину отмены или исключения из отправки.
Полный текст сообщения не всегда нужно бесконечно хранить в технических логах. Если там есть код доступа, персональные данные или чувствительная информация, настройте маскирование и срок хранения.
Таймауты, повторы и защита от дублей
Внешний сервис может ответить медленно или временно быть недоступен. Основное приложение не должно из-за этого зависать на минуты. Для API-вызова задают ограниченное время подключения и выполнения, а дальнейшую работу передают очереди.
Контролируемый повтор
Повторяйте только те запросы, для которых это допустимо. Сетевой таймаут не всегда означает, что сообщение не было принято: ответ мог потеряться после обработки запроса. Поэтому каждому бизнес-событию нужен стабильный ключ идемпотентности или внутренняя проверка «это сообщение уже создано».
Страница заказа напрямую вызывает SMS API, ждет без таймаута, а при любой ошибке пользователь нажимает кнопку еще раз. Результат — медленная регистрация, дубли заказов и несколько одинаковых сообщений.
Разделяйте каналы
Отправка SMS, email, Telegram и запись в CRM не должны блокировать друг друга в одной длинной цепочке. Если один канал недоступен, остальные задачи все равно должны выполниться. Для небольшого проекта достаточно фоновой очереди в базе и отдельного обработчика по cron; для более нагруженного — специализированной очереди сообщений.
Минимальные требования безопасности
- Храните логин и пароль API в переменных окружения или закрытой конфигурации вне публичной папки.
- Не помещайте учетные данные в JavaScript, мобильное приложение или публичный репозиторий.
- Передавайте запросы только по HTTPS.
- Ограничьте доступ к логам и маскируйте телефоны и коды.
- Разделите тестовые и боевые учетные данные, если это предусмотрено процессом.
- Настройте лимиты на частоту кодов и повторные действия одного пользователя.
- Меняйте секрет при подозрении на утечку и документируйте, где он используется.
В примерах интеграции допустимы условные значения login и password. Реальные данные не должны попадать в файл страницы или сообщение об ошибке.
Как проверить интеграцию до боевого запуска
-
Позитивный сценарий
Корректный номер, допустимый текст, ожидаемый ответ и изменение статуса в вашей системе.
-
Ошибка данных
Пустой или неверный телефон, слишком длинное поле, неподдерживаемое имя отправителя.
-
Недоступность API
Таймаут не блокирует пользователя, задание остается для повтора, ошибка видна ответственному сотруднику.
-
Повтор события
Двойной webhook, повторное нажатие или перезапуск обработчика не создают два сообщения.
-
Финальная доставка
Принятый запрос и итоговый статус не смешиваются в одном поле.
Как начать интеграцию с SMS Boom
Соберите короткое техническое описание: система-источник, событие, пример текста, ожидаемый объем, требуемая скорость и способ получения статуса. После этого:
- зарегистрируйтесь и согласуйте подходящий канал;
- получите учетные данные и актуальную документацию;
- проверьте готовые модули для CRM — иногда разработка не нужна;
- соберите один тестовый сценарий и журнал статусов;
- после приемки увеличивайте объем и добавляйте новые события.
Если планируется постоянный большой поток, обсудите также SMPP-подключение. Выбор между кабинетом, готовым модулем, REST API и SMPP зависит от частоты, объема и возможностей вашей команды.
Коротко о главном
Можно ли отправлять SMS из CRM через API?
Да. CRM или промежуточный интегратор может вызывать API при изменении сделки, создании записи, оплате или другом событии. Важно хранить идентификатор запроса и итоговый статус сообщения.
Нужно ли размещать логин и пароль API в браузере?
Нет. Учетные данные должны храниться на сервере или в защищенном хранилище секретов. Вызов напрямую из клиентского JavaScript раскроет доступ пользователям страницы.
Что делать, если API временно не отвечает?
Не держать пользовательский запрос бесконечно. Установите таймаут, сохраните задание в очереди, повторите отправку по контролируемой схеме и не создавайте дубль, если первый запрос уже был принят.
