Подготовка телефонных номеров для SMS: формат, дубли и ошибки импорта
Как привести телефонные номера из CRM и таблиц к единому виду, обработать неоднозначные записи и дубли и не спутать проверку формата с доступностью абонента.

Содержание
Один клиент записан в CRM с пробелами в телефоне, в таблице — с национальным префиксом, а в форме — в международном виде. Для человека это может быть один номер. Для интеграции это три разных строки, которые приводят к дублям, отказам и ошибочной статистике. Подготовка базы должна происходить до создания заданий на отправку.
Сохраните исходную запись
Храните исходную строку, источник, дату импорта и результат обработки отдельно. Например: phoneRaw, phoneNormalized, validationStatus и validationReason. Это позволяет объяснить, почему адресат был принят или отправлен на уточнение.
В таблицах номер нужно обрабатывать как текст. Если при экспорте исчезли ведущие символы или значение превратилось в научную запись, восстановить исходные данные по догадке нельзя. Вернитесь к источнику и исправьте экспорт.
Нормализация не должна незаметно менять бизнес-объект. Сначала подготовьте отчёт преобразований, затем применяйте изменения по согласованным правилам.
Разбирайте номер с контекстом страны
Строка без международного префикса может иметь несколько трактовок. Регион берут из достоверного контекста записи либо запрашивают у пользователя, а не определяют по языку интерфейса.
Префиксы и ведущие нули обрабатываются по правилам конкретного плана нумерации. Почему универсальная замена не работает, объясняет FAQ проекта libphonenumber. Библиотека разбора помогает привести запись к стандартному представлению; неоднозначные случаи всё равно требуют явной политики.
Не исправляйте лишние цифры и буквы случайным удалением до «подходящей длины». Лучше сохранить причину отказа и вернуть запись на уточнение.
Разделите формат и фактическую возможность доставки
Проверка структуры не доказывает, что номер сейчас используется нужным человеком и принимает SMS. Это отдельные свойства, которые нельзя получить простым удалением пробелов.
| Уровень проверки | Что он даёт |
|---|---|
| Разбор строки | Понятное представление номера и региона |
| Проверка по плану нумерации | Соответствие известным правилам |
| Результат отправки | Статус конкретного сообщения по конкретному маршруту |
| Подтверждение контакта | Связь адресата с текущим пользователем в вашем процессе |
Сохраняйте эти результаты раздельно. Статус «формат корректен» не должен превращаться в отметку «абонент подтверждён».
Убирайте дубли в границах задачи
Одинаковый нормализованный номер не означает, что карточки клиентов можно объединить: одним телефоном могут пользоваться несколько сотрудников или членов семьи.
Для рассылки определите ключ подавления повторов. Например, кампания и номер могут ограничивать повтор рекламного сообщения, а уведомления о разных заказах могут быть самостоятельными событиями. Правило зависит от назначения коммуникации.
Согласуйте его с жизненным циклом SMS-шаблонов и идемпотентной обработкой событий. Дедупликация контактов, заданий и повторных технических запросов решает разные задачи.
Проверяйте импорт на небольшом наборе
До массовой отправки соберите примеры разных стран, пустых значений, добавочных номеров, повреждённого экспорта и нескольких вариантов одной записи. Сверьте ожидаемые результаты вручную.
В отчёте показывайте количество принятых, отклонённых, неоднозначных и повторных записей. Разрешение на отправку храните отдельно от результата проверки телефона. В интеграции с QuickTel такой контроль помогает передавать подготовленные адреса и расследовать ошибки без переписывания исходной базы.


