Как не отправить SMS с пустыми полями в шаблоне?

Проверяйте текст SMS до постановки задачи в очередь: сначала подставьте данные заказа или записи, затем убедитесь, что обязательные поля заполнены, а получившееся сообщение понятно человеку. Если проверка не прошла, сохраните причину ошибки и не отправляйте задачу в SMS-шлюз. Ниже — схема для сайта или CRM: какие поля считать обязательными, как обрабатывать пропуски и что проверить перед запуском автоматической отправки.
Где возникает SMS с пустым полем?
Представьте сообщение о готовом заказе: «Ваш заказ {номер_заказа} готов. Заберите его {адрес}». Сайт создаёт событие, интеграция берёт данные заказа и собирает текст. Если адрес ещё не внесли, клиент получит фразу «Заберите его » — при условии, что интеграция вообще пропустит пустое значение. Шлюз не знает, какой адрес имелся в виду: он получает уже собранное сообщение.
Пробел встречается и там, где поле формально существует. В нём бывают только пробелы, слово «null» или служебное значение, которое осталось после ошибки обмена между системами. Поэтому проверять нужно итоговый текст вместе с исходными данными. Один лишь поиск фигурных скобок поймает забытый {адрес}, но пропустит пустоту после подстановки.
Начните с одного сценария, например уведомления о заказе. Выпишите шаблон и отметьте каждое место, куда интеграция вставляет данные. Затем решите, сможет ли клиент выполнить нужное действие без этого поля. Для заказа номер обычно нужен, чтобы его узнать; обращение по имени можно убрать без потери смысла.
Какие поля блокируют отправку, а какие можно пропустить?
Разделите поля по их роли в сообщении. Обязательное поле отвечает за смысл SMS: без него клиент не поймёт, о каком заказе речь или куда прийти. Необязательное поле помогает сделать текст личнее, но его отсутствие не мешает прочитать уведомление. Такое правило проще поддерживать, чем требование заполнить всё подряд.
| Поле в шаблоне | Если значение пустое | Действие до очереди |
|---|---|---|
| Номер заказа в уведомлении о готовности | Непонятно, какой заказ готов | Остановить отправку и записать ошибку |
| Адрес получения, если клиенту предлагают приехать | Непонятно, куда ехать | Остановить отправку или выбрать другой, заранее утверждённый текст |
| Имя клиента в приветствии | Смысл сообщения сохраняется | Убрать обращение целиком |
| Комментарий сотрудника | Основное уведомление остаётся понятным | Не добавлять фразу с комментарием |
Запасной текст готовьте для всего предложения. Если имени нет, замените «Здравствуйте, {имя}!» на «Здравствуйте!». Если адреса нет, фраза «Заберите его по адресу {адрес}» не превращается автоматически в полезное уведомление. Здесь нужен либо другой согласованный сценарий, либо остановка отправки до уточнения адреса.
Отдельно проверьте поля, которые управляют событием: номер получателя, тип уведомления и идентификатор заказа. Пустой номер исключает отправку, а пустой идентификатор мешает связать SMS с нужным заказом. Даже безупречный текст не исправит ошибку в этих данных.
Как проверить шаблон перед постановкой SMS в очередь?
Поставьте проверку между событием в сайте или CRM и созданием задачи на отправку. Так ошибочный текст не попадёт в очередь, где его уже подхватит шлюз. Для каждого типа уведомления храните шаблон, список обязательных полей и правила для необязательных фраз.
- Получите данные события и убедитесь, что у него есть идентификатор и номер получателя. Если нет, запишите причину остановки.
- Проверьте обязательные значения: уберите пробелы по краям и отклоните пустые строки и служебные значения.
- Соберите SMS, подставляя данные в шаблон. Необязательные фразы добавляйте только вместе со значением, от которого они зависят.
- Проверьте готовый текст: не остались ли в нём {поля}, оборванные фразы или сообщение, которое состоит из одного приветствия.
- Только после успешной проверки создайте задачу в очереди и запишите, по какому событию она появилась.
Причину отказа храните так, чтобы её можно было найти по заказу: «нет адреса получения» полезнее общей записи «ошибка шаблона». Сам текст с пустым полем тоже пригодится при разборе, но в рабочем журнале лучше ясно отмечать, что SMS не ушло. Иначе сотрудник может принять неудачную сборку за сбой доставки.
Проверка текста решает лишь часть задачи. Если сайт повторно передаст то же событие, интеграция должна распознать уже созданную SMS-задачу. Как связать событие, отправку и итоговый статус, разобрано в материале об SMS о доставке через SMPP, API и DLR. Для напоминаний о записи полезно отдельно продумать, что произойдёт, если сотрудник изменит время уже после создания уведомления; пример такого сценария есть в статье об автоматизации SMS-напоминаний о записи.
Как проверить правила до запуска на клиентах?
Возьмите один шаблон и подготовьте набор пробных событий. В первом заполните все поля, во втором оставьте пустым обязательное значение, в третьем — необязательное. Добавьте случай, где в поле стоят только пробелы, и случай, где в шаблоне есть опечатка в названии поля. Для каждого заранее запишите ожидаемый результат: готовый текст или отказ с понятной причиной.
Затем пропустите эти события через ту же сборку текста, которую использует рабочая отправка, но без передачи SMS в шлюз. Сравните получившиеся строки с ожидаемыми. При исправлении шаблона повторите проверку: новая фраза может оставить лишний пробел или знак препинания, хотя все поля уже заполнены.
После проверки текста отправьте пробное уведомление на свой номер через обычный маршрут. Убедитесь, что задача появилась один раз, текст совпал с проверенным вариантом, а результат доставки относится к этому событию. Если SMS не пришло, сначала посмотрите, прошла ли задача проверку и попала ли в очередь: так легче отделить ошибку шаблона от сбоя отправки.
Какие ошибки чаще всего остаются незамеченными?
- Проверяют только наличие поля в данных. Поле есть, но внутри пробелы; исправление — проверять значение после удаления пробелов по краям.
- Убирают пустое значение, но оставляют окружающий текст. Получается «Заберите заказ по адресу .»; исправление — добавлять или убирать фразу целиком.
- Ищут пропуски только в шаблоне. После подстановки скобок уже нет, хотя сообщение пустое по смыслу; исправление — проверять готовый текст.
- Отправляют задачу в очередь до проверки. Ошибку находят, когда SMS уже передано шлюзу; исправление — собирать и проверять сообщение перед созданием задачи.
- Не записывают причину отказа. Сотрудник видит, что клиенту не пришло уведомление, но не знает почему; исправление — сохранять причину рядом с событием.
Откройте один рабочий шаблон SMS и за минуту отметьте в нём поля, без которых клиент не поймёт сообщение. С этого списка можно начать проверку перед очередью.

