Первая клиентская рассылка на Теле2 упала: invalid_source_address.
Причина не опечатка, а устройство: имена регистрируются У КАЖДОГО ОПЕРАТОРА
ОТДЕЛЬНО, и написание разное — у МТС согласовано `liderra.ru`, у t2
`Liderra.ru`. Клиентская рассылка несёт ОДНО имя на всех получателей
(campaign.sender_name): имя выбирается на кампанию, а не на канал. Для МТС
оно верное, для t2 — нет.
Проверено опытом на живом t2, а не рассуждением:
имя [liderra.ru] → ОТКАЗ: invalid_source_address
имя [Liderra.ru] → ПРИНЯТО, message-id-kDQU1vVzEMbT
Лечение: канал приводит написание к согласованному с t2 — но ТОЛЬКО когда это
то же самое имя, отличающееся регистром. Чужое имя не трогаем: подменить его
значило бы соврать про отправителя, а честный отказ t2 лучше тихой подмены.
Пустое имя, как и раньше, заменяется именем канала.
🪤 Лечение половинчатое и так и подписано в коде: правильное — реестр имён по
каналам и в клиентском модуле (в модуле отдела продаж он уже есть,
SalesSmsSender::activeByProviderKey). Тогда эта склейка станет не нужна.
Четыре теста на разбор имени: тот же в другом регистре, точное совпадение,
чужое имя, пустое. Всего 82 теста зелёные, Pint чист, статанализ по всему
проекту 0 ошибок.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Канал «SMS-Таргет» (target.t2.ru, HTTP API v2, Basic Auth) обеими половинами:
- отправка через POST /send_message (msisdn числом, shortcode, text);
- опрос судьбы GET /send_message/message-id-{id} — по одному сообщению,
пакетного запроса у t2 нет;
- приёмник обратных звонков GET|POST /api/webhook/t2-delivery/{secret}
со строками ?id=&status=&parts= — форма другая, чем у МТС.
Ловушки, закрытые тестами:
- слово status в ответе встречается дважды: снаружи «запрос удался»,
внутри судьба сообщения. Спутать = объявить доставленным всё подряд;
- отказ приезжает с HTTP 200 — судим по телу, не по коду;
- незнакомое слово статуса судьбу НЕ меняет, сохраняется в delivery_raw.
За «не доставлено» клиенту возвращаются деньги (В-198) — выдумка двигала
бы рубли;
- t2 наш ответ не проверяет и повторов не делает: пропущенный звонок потерян,
поэтому опрос client-sms:poll-delivery остаётся обязательным.
Деньги приёмник не двигает — возврат живёт в команде опроса (В-146).
Защита приёмника как у МТС: секрет не короче 32 знаков (пустой = закрыт
наглухо), список адресов отправителя, счётчик обращений; чужому 404, не 403.
Канал ВЫКЛЮЧЕН и живьём не пробован: имя отправителя Liderra.ru (заявка
№ 31121) на согласовании, без него t2 не выдаёт логин с паролём.
Порядок включения — docs/superpowers/runbooks/2026-08-04-vklyuchenie-kanala-t2.md
Миграций нет: графы судьбы появились ещё при МТС. Теле2 уже был в списке
разрешённых операторов и в тарифах админки — новых экранов не нужно.
Проверено: 78 тестов зелёные, Pint чист, статанализ по ВСЕМУ проекту 0 ошибок,
маршрут зарегистрирован. Против main — только вставки, удалений нет.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>