Схемы Что нового

Сообщения и SMS

Как биллинг пишет клиентам: каналы и шаблоны, тихий час и стоп-лист, почта организаций, SMS-шлюз «Телефоны СмИТ» и SMS-провайдеры.

Содержание раздела

Сообщения

Каналы, по которым биллинг пишет клиентам, и тексты этих сообщений. Вкладки: Email, SMS, Telegram, ВКонтакте, Push и «Шаблоны». У каждой свой адрес — /admin/settings/messaging/<вкладка>/, например /admin/settings/messaging/templates/.

Обучающее видео 1:54

Когда уходят сообщения, почта одной кнопкой, письма от имени организации, Telegram, ВКонтакте и push по организациям, шаблоны. Этот же ролик — первый шаг знакомства на странице.

1920×1080 с озвучкой Скачать

Когда уходят сообщения

Блок «Когда уходят сообщения» над вкладками
«Когда уходят сообщения»: тихий час, можно ли отправлять сейчас, окно звонков робота

Над вкладками — сводка правил отправки: задан ли тихий час и идёт ли он сейчас, какие каналы выключены, в какие часы звонит робот (с модулем автообзвона). Кнопка «Изменить» ведёт в Настройки → Система → Сообщения (/admin/settings/system/messages/) — правила задаются там.

Сообщения и организации

С модулем «Мультиорганизация» каждый канал работает с организациями по-своему:

ЧтоКак с организациями
EmailПисьмо клиенту уходит через SMTP его организации, с её адресом и её названием в теме. Свой SMTP не настроен или не ответил — через общий. См. «Отправитель писем по организациям».
SMSУ организации свой способ отправки и свои SIM-карты; SMS чужой организации с них не уйдёт. См. «Свой способ у организации».
ВКонтактеСообщение уходит от сообщества организации клиента — VK-канала её ящика в Поддержке; своего канала нет — от общего сообщества. См. «Вкладка ВКонтакте».
Telegram, PushОдин бот личного кабинета и одно мобильное приложение на все организации — клиент подписан на них, а не на организацию. На вкладках видно, сколько клиентов каждой организации их подключили.
ШаблоныОбщий шаблон или свой у организации; свой заменяет общий с тем же названием. См. «Шаблоны организаций».
Счётчики на вкладках«Отправлено», «В очереди», «Последние SMS» — по организации, выбранной в шапке, и по правам сотрудника.

Как биллинг выбирает текст и канал, когда случилось событие (платёж, блокировка, порог баланса):

flowchart TD
    E["Событие у клиента:
платёж, блокировка, порог баланса"] --> N["Шаблон по названию"] N --> O{"У организации клиента
есть свой шаблон?"} O -- "да" --> OW["Свой шаблон организации"] O -- "нет" --> SH["Общий шаблон"] OW --> ON{"Шаблон включён?"} SH --> ON ON -- "нет" --> STOP["Не отправлять"] ON -- "да" --> Q["Очередь сообщений:
каналы, отмеченные в шаблоне"] Q --> P{"Канал включён?
Тихий час для SMS и push?"} P -- "нельзя" --> SK["Пропущено"] P -- "можно" --> M["Email — SMTP организации
или общий"] P -- "можно" --> S["SMS — способ и SIM
организации"] P -- "можно" --> V["ВКонтакте — сообщество
организации или общее"] P -- "можно" --> T["Telegram · Push · ЛК —
общие на все организации"]

Вкладка «Email (SMTP)»

Общий SMTP — через него уходят письма клиентам, если у их организации нет своего: «От кого», сервер, порт, логин, пароль, режим шифрования и проверка сертификата. В полосе сверху — сколько писем отправлено и ждёт в очереди; «i» ведёт сюда.

Вкладка Email: общий SMTP, тестовая отправка и свой почтовый сервер
«Email»: слева общий SMTP с кнопкой «Автонастройка», справа — тестовая отправка и «Свой почтовый сервер»

Тестовая отправка — вверху правой колонки. В поле уже подставлен email из вашего профиля, его можно заменить. Письмо уходит с текущими значениями формы, даже несохранёнными, поэтому настройки можно проверить до сохранения. Можно выбрать оформление: обычный текст или один из фирменных макетов.

Автонастройка своим почтовым сервером

Блок «Свой почтовый сервер»
«Свой почтовый сервер»: домен ящика и кнопка настройки

С модулем «Почтовый сервер» общий SMTP настраивается одной кнопкой — «Автонастройка» в заголовке «Email (SMTP)» или «Настроить общий SMTP» в блоке справа. Выберите домен: на почтовом сервере появится ящик noreply@домен (если он уже есть и его пароль известен — берётся готовый), а сервер mail.домен, порт 587 со STARTTLS, логин и пароль впишутся в общий SMTP. Если у домена подключён Cloudflare, сразу пропишутся записи MX, SPF, DKIM и DMARC — без них письма попадают в спам. Настраивать может администратор (root); без модуля кнопка неактивна, в подсказке написано почему. Действие пишется в журнал.

flowchart LR
    B["«Автонастройка»
домен noreply@…"] --> D["Домен на почтовом сервере"] D --> MB{"Ящик noreply@
уже есть?"} MB -- "нет" --> NEW["Создать ящик,
пароль — случайный"] MB -- "да, пароль известен" --> OLD["Взять готовый"] NEW --> DNS{"Cloudflare
у домена?"} OLD --> DNS DNS -- "да" --> REC["MX · SPF · DKIM · DMARC"] DNS -- "нет" --> S REC --> S["Общий SMTP:
mail.домен:587, STARTTLS"]

Шифрование SMTP — radio-группа

Тип шифрования задаётся одной radio-группой из трёх взаимоисключающих кнопок — включить два режима сразу нельзя:

Авто-подстановка порта. При смене radio JS подставляет порт (587/465/25), если в поле сейчас стоит один из «дефолтных» портов. Если оператор задал кастомный порт (например, 2525) — он сохраняется.

Защита на back-end. Если из формы каким-то образом пришли email_use_tls=True и email_use_ssl=True одновременно (старый кэш браузера, legacy POST), email_test_send и email_settings_save применяют XOR-нормализацию: оставляют тот режим, который соответствует порту (465 → SSL, иначе STARTTLS), второй гасят. В SystemSettings теперь никогда не лежат оба True.

Поле «От кого» и политика отправителя

Большинство SMTP-серверов (включая SmitMailServ) применяют политику «отправитель должен совпадать с авторизованным пользователем». Если у вас логин noreply@вашдомен.ru, но в поле «От кого» вы указали billing@вашдомен.ru — сервер вернёт ошибку:

SMTPRecipientsRefused: 553 5.7.1 <billing@вашдомен.ru>:
Sender address rejected: not owned by user noreply@вашдомен.ru

Решения:

Отправитель писем по организациям

Таблица «Отправитель писем по организациям»
«Отправитель писем по организациям»: адрес, сервер, чей SMTP, «Проверить» и «Настроить»

С модулем «Мультиорганизация» под настройками SMTP есть таблица организаций: от кого уходят письма, через какой сервер и чей SMTP — «свой», «не дозаполнен» (сервер указан, но нет логина или пароля) или «общий».

Письмо клиенту организации уходит с её адреса, в теме — её название. Если свой SMTP не ответил (неверный пароль, истёк сертификат почтового сервера), письмо уходит через общий SMTP с этой вкладки — клиент его всё равно получит, а причина пишется в лог сервера. Поэтому общий SMTP стоит держать настроенным и при своих SMTP у всех организаций.

Свой SMTP организации включается, только когда заполнены сервер, логин и пароль. Если указан один сервер — письма идут через общий SMTP, а в таблице стоит «не дозаполнен». Такую строку лучше очистить в карточке организации или дозаполнить: поле «От кого» организации при этом сохраняется и используется для писем с договором и обмена с 1С.

Письмо ушло, но не дошло

«Отправлено» в истории сообщений значит, что письмо принял ваш почтовый сервер. Дальше его проверяет сервер получателя (Mail.ru, Яндекс, Gmail, iCloud) и может вернуть отказ — он приходит письмом в ящик отправителя (noreply@), в биллинге его не видно.

flowchart LR
    B["Биллинг"] --> S["Ваш почтовый сервер
письмо отправлено"] S --> R{"Сервер получателя
проверяет"} R -- "домен адреса есть
и принимает почту" --> C1{"Обратная запись IP
(PTR) есть?"} R -- "домена нет:
gmail.ru, gmal.com" --> X1["Отказ: адрес не существует"] C1 -- "нет" --> X2["Отказ или спам:
iCloud 550 5.7.1, «IP name lookup failed»"] C1 -- "да" --> C2{"SPF, DKIM, DMARC
совпадают?"} C2 -- "нет" --> X3["Папка «Спам»"] C2 -- "да" --> OK["Входящие"]
Что видно в отказеПричинаЧто сделать
IP name lookup failed, iCloud 550 5.7.1 [HCM2] у IP почтового сервера нет обратной записи (PTR) попросить того, кто ведёт ваш блок IP (провайдер или LIR в RIPE), поставить PTR на имя, которым представляется почтовый сервер (myhostname в postfix), например mx1.вашдомен.ru
Host or domain name not found, User unknown опечатка в адресе клиента: gmail.ru, qmail.com, mai.ru, iclaud.com уточнить адрес у клиента и исправить в карточке
Mailbox full, quota exceeded ящик клиента переполнен ничего — это на стороне клиента
письма в спаме у всех нет или не совпадают SPF, DKIM, DMARC «Настроить» в таблице организаций или DNS вручную

Опечатки в адресах. С версии 3415 сводка карточки клиента проверяет домен при сохранении почты (подробнее). Адреса, записанные раньше, можно найти по всей базе командой — она ничего не меняет, только показывает и сохраняет список:

python manage.py clean_bad_emails --domains --csv /tmp/bad_emails.csv

В списке — договор, клиент, адрес, что не так и вероятный правильный адрес. Исправлять лучше после звонка клиенту: amail.com мог быть и настоящим. Часть доменов-опечаток (iclaud.com, amail.com) скуплена посторонними и письма принимает — такое письмо со счётом уйдёт чужому человеку, поэтому их стоит исправить в первую очередь.

Вкладка «SMS»

Обучающее видео 1:43

Вкладка SMS сверху вниз: чем отправлять и свой способ у организации, номера SIM, баланс и тревоги, SMS от клиентов, статусы доставки. Этот ролик — первый шаг знакомства на вкладке; как подключить телефон — ролик «SMS-шлюз» ниже.

1920×1080 с озвучкой Скачать

Чем отправлять SMS клиентам, выбирается в поле «Чем отправлять»:

Прежняя схема «Android-телефон через sms-gate.app» в списке видна только там, где она уже выбрана; новые подключения — через «Телефоны СмИТ».

Отправка SMS: способ по умолчанию, кнопки скачивания приложения и способы организаций
«Отправка SMS»: способ по умолчанию, кнопки «Скачать в Google Play» и «Скачать APK», таблица «Для организаций»

Свой способ у организации

С модулем «Мультиорганизация» под «Чем отправлять» есть таблица «Для организаций»: у каждой компании можно выбрать свой способ — например, своим SIM-картам одну организацию, а SMSAero другую. «Как выбрано выше» — организация отправляет способом по умолчанию. Логин и пароль SMSAero, SMSC.ru и SMS.ru общие для всех организаций. Таблица показывается, когда в навбаре выбрано «Все»; с выбранной организацией её нет, а настройки организаций не меняются.

Способ выбирается по организации клиента одинаково везде, где биллинг шлёт SMS: очередь уведомлений, CRM-автоматизация, ответы поддержки, голосовая почта, гостевой портал (код — billing/services/sms_router.py).

Телефоны СмИТ — свои SIM-карты

Android-телефон с одной или двумя SIM-картами становится SMS-шлюзом биллинга. Платите только за тариф SIM-карты — договор с агрегатором и плата за каждое сообщение не нужны. Телефонов может быть несколько; каждую SIM можно закрепить за организацией. Телефон подключается к биллингу по логину и паролю администратора — адреса серверов, ключи и вебхуки вводить не нужно.

Обучающее видео 1:50

Телефон как SMS-шлюз, подключение по логину и паролю, телефоны и номера организаций, баланс SIM и лимиты, входящие SMS клиентов.

1920×1080 с озвучкой Скачать
flowchart TD
    B["Биллинг
(очередь SMS, CRM, поддержка)"] -- "SMS: номер, текст, организация" --> L["Сервер лицензий СмИТ
SMS-сервер"] L -- "задание: с какой SIM" --> P1["Телефон 1
SIM 1 · SIM 2"] L -- "задание" --> P2["Телефон 2
SIM 1"] P1 -- "SMS" --> OP["Оператор связи"] --> C["Клиент"] P1 -. "отправлено / доставлено,
входящие SMS, баланс SIM" .-> L L -. "события с подписью" .-> B

Как это устроено: биллинг отдаёт SMS серверу лицензий (модуль «SMS-шлюз» лицензии). Сервер выбирает SIM по организации клиента, основному номеру и лимитам и передаёт задание телефону. Телефон отправляет SMS, сообщает «отправлено» и «доставлено», пересылает входящие SMS и раз в минуту — своё состояние: заряд, сигнал, сеть, разрешения. Биллинг получает это событиями на тот же адрес /api/sms/webhook/sms-gate/, подпись — ключом лицензии.

Подключение телефона
  1. Android-телефон 8.0 или новее с одной или двумя SIM — на зарядке и в сети.
  2. Установите приложение «СмИТ SMS Gateway»: кнопки «Скачать в Google Play», «Скачать в RuStore» и «Скачать APK» на этой вкладке (приложение в RuStore, политика конфиденциальности) (постоянная ссылка на последнюю версию — sms.billing.smit34.ru/mobile/v1/app.apk).
  3. В приложении нажмите «Подключить к биллингу», введите адрес своего биллинга, логин и пароль администратора или сотрудника с правом «Подключение телефонов-шлюзов SMS». Пароль на телефоне не сохраняется.
  4. Выдайте разрешения: SMS, Телефон, Звонки (для баланса по USSD), уведомления; отключите экономию батареи. Приложение показывает, чего не хватает, — строки «Разрешить» и «Исправить» на главной.
  5. Телефон появится в «Телефонах и номерах». Назначьте SIM-картам организации и лимиты.
Онбординг приложения
Первый запуск: пять экранов о шлюзе
Главная приложения до подключения
Главная: состояние, SIM-карты, готовность
Окно подключения к биллингу
«Подключение к биллингу»: адрес, логин, пароль
Окно «Подключить телефон» в биллинге
«Подключить телефон» в биллинге: где скачать приложение и какой адрес ввести; телефон появится в списке сам
Android 13 и новее, приложение установлено из файла. Система молча отклоняет запрос доступа к SMS — «Разрешить» как будто ничего не делает. Приложение покажет окно «Нужны разрешения» с кнопкой «Открыть настройки»: на экране «О приложении» нажмите меню из трёх точек вверху справа → «Разрешить ограниченные настройки», затем «Разрешения» → SMS, Телефон, Звонки. Google Play Защита может не дать поставить APK — временно выключите проверку в Play Маркет → Play Защита.
Телефоны и номера
Телефоны и номера
«Телефоны и номера»: телефон на связи, две SIM с организациями, баланс и остаток пакета
КолонкаЧто показывает
Шапка телефона«на связи» / «нет связи», когда выходил на связь, заряд, кто подключил, версия приложения; кнопка — отключить телефон. Жёлтая плашка — чего не хватает телефону: доступа к SMS, разрешения на USSD, работы в фоне
SIMСлот, оператор, полоски сигнала, 2G/3G/4G/5G, «роуминг»
НомерНомер SIM — только для чтения; ниже — откуда он: из SIM, по USSD, проверочной SMS. Нет номера — «Узнать: по USSD · SMS»
ОрганизацияЧьи клиенты получают SMS с этой SIM («Общий номер» — любой организации); «основной» — основная SIM организации
Сегодня / лимитСколько SMS ушло сегодня и лимит в день (0 — без лимита)
БалансСумма на счёте и «N SMS в пакете» (красным — ниже порога), когда обновлялось, кнопка «обновить», «коды» — свои USSD-коды SIM
Сост.Кружок: зелёный — работает, жёлтый — нет сети, красный — ошибки отправки или SIM заблокирована, серый — выключена или извлечена. Расшифровка — в подсказке
ВклИспользовать SIM для отправки

Уже 700 px (узкая колонка, телефон) каждая SIM показывается карточкой — без горизонтальной прокрутки.

С какой SIM уйдёт SMS
flowchart TD
    S["SMS клиенту организации N"] --> A{"У организации N есть SIM
на связи и с запасом по лимиту?"} A -- "да" --> P{"Есть основная?"} P -- "да, на связи" --> MAIN["Основная SIM организации"] P -- "нет" --> ANY["Любая SIM организации"] A -- "нет" --> F{"«Отправлять с общих номеров»
включено?"} F -- "да" --> SH["Общая SIM (без организации)"] F -- "нет" --> W["Ждёт в очереди до 24 ч"] MAIN -. "3 ошибки подряд" .-> NEXT["Другая SIM этой организации"] ANY -. "3 ошибки подряд" .-> NEXT

После трёх ошибок подряд SIM уступает очередь другой SIM той же организации — даже основная. Первая же удачная отправка возвращает её в строй. Чужой организации SMS не уйдёт никогда. Пауза между SMS (по умолчанию 3–6 секунд) и лимит в день защищают SIM от блокировки оператором за массовую рассылку. Без модуля «Мультиорганизация» все номера общие.

Баланс, остаток пакета и номер SIM

Телефон сам спрашивает у оператора USSD-запросом баланс и остаток пакета SMS — по расписанию (по умолчанию раз в 6 часов) и по кнопке «обновить» у SIM. Ответ оператора разбирает сервер: находит сумму и число SMS, полный текст виден в подсказке. Номер SIM приложение берёт из SIM-карты; если оператор его туда не прописал — запрашивает по USSD, а если и это не помогло — кнопкой «Узнать: SMS» телефон отправляет проверочную SMS с этой SIM на другую вашу SIM с известным номером (в журнал SMS она не попадает).

Рекламу, которую оператор дописывает к ответу («Новинки в книгах… Подкл. *440#»), сервер отрезает — в баланс попадает только «782.04 р.». SMS оператора о платеже, зачислении или списании («Платеж 200,00 руб. зачислен») балансом не считаются.

sequenceDiagram
    participant B as Биллинг
    participant S as SMS-сервер
    participant T as Телефон
    participant O as Оператор
    T->>S: ping (раз в минуту): SIM, сигнал, разрешения
    T->>S: какие USSD-запросы выполнить?
    S-->>T: SIM 1 — баланс *102#, пакет *107#
    T->>O: USSD *102#
    O-->>T: «Баланс 141,00 р.»
    T->>S: ответ оператора как есть
    S->>S: сумма 141,00 ₽, сравнение с порогом
    S-->>B: «мало денег» (если ниже порога, не чаще раза в сутки)
    B->>B: журнал + сообщение в Telegram
ОператорБалансОстаток пакетаНомер
МТС*100#*100*1#*111*0887#
Билайн*102#*107#*110*10#
МегаФон*100#*558#*205#
Tele2 (T2)*105#*155*0#*201#
Yota*100#—*103#

Это коды по умолчанию. Если у вашего тарифа другие — «коды» у SIM: пустое поле означает код оператора (он виден серым).

USSD-коды SIM
«USSD-коды» SIM: свои коды баланса, пакета и номера
Паузы, лимиты, баланс SIM и уведомления
«Паузы, лимиты и баланс SIM»: пауза между SMS, лимит новой SIM, проверка баланса, пороги, «Телефон пропал, мин», уведомления в Telegram

«Уведомлять в Telegram: мало денег на SIM, телефон пропал или вернулся» — три вида сообщений:

«Телефон пропал, мин» = 0 — о пропаже не сообщать. Телефоны, которые молчат больше суток, в проверку не попадают: о давно выключенном телефоне сообщений не будет. Чат выбирается из списка групп бота; не выбран — уходит в чат тревог (Настройки → Интеграции → Telegram). Все события пишутся и в журнал действий.

SMS на главной
Блок SMS на главной странице
Блок «SMS» на главной: итоги за 30 дней и номера SIM с балансом и дневным лимитом

Когда SMS настроены, на главной (/admin/welcome/) есть блок «SMS»: сколько отправлено, доставлено, с ошибкой и в очереди за 30 дней, сколько ушло сегодня и сколько ждут у телефонов. Справа — SIM-карты: номер, организация, оператор и телефон, баланс и «сегодня N из лимита». Точка слева — состояние SIM. Стрелка открывает вкладку SMS. Блок видят сотрудники с доступом к настройкам сообщений; его можно скрыть или переставить, как другие блоки главной.

Статусы доставки
sequenceDiagram
    participant B as Биллинг
    participant S as SMS-сервер
    participant T as Телефон
    B->>S: SMS (msg:id)
    Note over B: в очереди
    S->>T: задание
    T->>S: Sent
    S-->>B: sms:sent
    Note over B: отправлено
    T->>S: Delivered (отчёт оператора)
    S-->>B: sms:delivered
    Note over B: доставлено

Телефон просит у оператора отчёт о доставке. «Доставлено» появляется, когда оператор его прислал; ошибка — с текстом причины. Статус не откатывается назад. Событие, которое биллинг не принял, сервер повторяет: через 1, 5, 15, 60, 180, 720 минут.

Повтор при временной ошибке телефона. Если телефон не смог отправить SMS из-за того, что пропала сеть, был сбой радиомодуля или включён режим полёта, сервер сам повторит отправку через 30 секунд, 2 и 10 минут. Биллинг в это время видит «в очереди». Каждая неудача засчитывается SIM-карте: после трёх подряд повтор уйдёт с другой SIM той же организации. Не вышло за три повтора — статус «ошибка» с причиной словами: «на SIM нет сети», «сбой радиомодуля или SIM» и т. п. Постоянные ошибки (номер запрещён настройками SIM, короткий номер) не повторяются.

flowchart TD
    T["Телефон: не отправилось"] --> Q{"Ошибка временная?
нет сети, сбой радиомодуля"} Q -- "нет" --> F["Ошибка — причина словами"] Q -- "да" --> R{"Повторов уже три?"} R -- "нет" --> W["Повтор через 30 с, 2 или 10 мин
SIM выбирается заново"] W --> T2["Телефон отправляет снова"] R -- "да" --> F2["Ошибка: «после 3 повторов: …»"] style F fill:#7f1d1d,stroke:#dc2626,color:#fff style F2 fill:#7f1d1d,stroke:#dc2626,color:#fff
Значок в «Последних SMS»Статус
две галочкидоставлено (время доставки — в подсказке)
галочкаотправлено, отчёта о доставке ещё нет
часыв очереди
крестикошибка — причина в подсказке

В «Последних SMS» номер получателя показывается в одном виде (+7 905 123-45-67); подсказка у номера — организация, чем отправлено и с какого номера SIM, у текста — полный текст сообщения.

Входящие SMS от клиентов
Входящие SMS от клиентов
«Входящие SMS от клиентов»: команды по умолчанию и настройки каждого номера

Блок есть только у «Телефонов СмИТ». Биллинг читает SMS, пришедшие на ваши SIM, выполняет команды клиентов и отвечает с того же номера: Баланс — баланс и тариф, Оп — обещанный платёж, Да — согласие с его условиями, Блок / Вкл — добровольная блокировка. Остальные SMS становятся обращениями в Поддержке — в ящике организации номера. SMS с буквенных имён и коротких номеров — оповещения МЧС, сообщения оператора, рассылки — в журнал как SMS клиента не попадают (баланс SIM от оператора по-прежнему разбирается). В таблице «По номерам» у каждой SIM свой переключатель «Принимать» и свой набор команд; номер без своих настроек выполняет команды, отмеченные выше. Выключенный номер не принимает SMS клиентов, а сообщения оператора о балансе SIM разбираются всё равно.

Приложение «СмИТ SMS Gateway»
Настройки приложения
Настройки: оформление, для специалиста, о приложении
Журнал приложения на русском
Журнал — на русском
Главная в тёмной теме
Тёмная тема
Онбординг в тёмной теме
Онбординг с видео, тёмная тема
Решение проблем
Телефон «нет связи»
Нет интернета, приложение остановлено или Android «усыпил» его в фоне. Откройте приложение: на главной — «Запустить» и «Работа в фоне → Исправить».
Жёлтая плашка «нет разрешения отправлять SMS»
Разрешения не выданы — см. блок про ограниченные настройки Android 13 выше. SMS при этом стоят в очереди и уйдут после исправления.
Баланс не обновляется, у SIM ошибка USSD
Нет разрешения «Звонки», USSD недоступен на SIM или код не подходит к тарифу — задайте свои коды в «коды».
SMS организации стоят в очереди
У организации нет SIM на связи или исчерпан лимит в день, а «отправлять с общих номеров» выключено. Через 24 часа такие SMS получают статус «ошибка».
Ошибка «на SIM нет сети» или «сбой радиомодуля или SIM»
Телефон три раза пробовал отправить и не смог. Проверьте сигнал и SIM (не заблокирована ли, есть ли деньги), режим полёта. Если у организации есть вторая SIM, повторы уже шли с неё.
Номер «не определён»
Оператор не прописал номер в SIM: «Узнать: по USSD» или «SMS» (нужна вторая SIM с известным номером).

Баланс

Справа на вкладке SMS — карточка «Баланс». Что в ней, зависит от выбранного способа отправки:

Карточка «Баланс SIM-карт телефонов»
Телефоны СмИТ: баланс и пакет SIM, дата последнего ответа оператора
flowchart LR
    G{"Способ отправки"} -- "Телефоны СмИТ" --> U["USSD с каждой SIM
→ баланс и пакет"] G -- "SMSAero / SMSC / SMS.ru" --> API["Запрос баланса
аккаунта у провайдера"] G -- "sms-gate.app" --> IN["Ответное SMS оператора
(нужен приём входящих)"] U --> C["Карточка «Баланс»"] API --> C IN --> C

SMSAero, SMSC.ru, SMS.ru

СервисЛогинПароль
SMSAeroemail аккаунтаAPI-ключ (кабинет → API)
SMSC.ruлогин аккаунтапароль аккаунта
SMS.ruAPI ID (кабинет → Программистам)не нужен

Подпись отправителя регистрируется в кабинете сервиса. «Как подключить» на вкладке показывает инструкцию только для выбранных способов.

Как подключить
«Как подключить» для «Телефонов СмИТ»

Прежняя схема: телефон через sms-gate.app

До модуля «SMS-шлюз» телефон подключался к облаку sms-gate.app, а в биллинге вводились логин, пароль и адрес облака; статусы доставки приходили на /api/sms/webhook/sms-gate/ с подписью SMS_GATE_WEBHOOK_SECRET. Схема работает у тех, у кого она уже выбрана, но не развивается: для перехода установите «СмИТ SMS Gateway» 2.x, подключите телефон по логину и паролю биллинга и выберите «Телефоны СмИТ». Старое приложение подписано другим ключом — его нужно удалить перед установкой нового.

Вкладка «Telegram»

Вкладка Telegram в две колонки
Telegram: слева бот уведомлений, аккаунт агента, «Кто из клиентов есть в Telegram» и «По организациям»; справа «Проверка связи», «Последние сообщения», «Как это устроено» и «Журнал»

Биллинг пишет клиенту в Telegram, когда в шаблоне сообщения включён этот канал: платёж, низкий баланс, блокировка, обещанный платёж, рассылки. Писать человеку первым бот не может, поэтому сообщения получают только клиенты, которые привязали Telegram в личном кабинете: «Профиль» → «Привязать Telegram» → «Старт» в чате с ботом. В полосе сверху — сколько отправлено и ждёт в очереди за 30 дней и сколько клиентов привязали Telegram.

Вкладки Telegram, MAX и ВКонтакте устроены одинаково, в две колонки. Слева — то, что настраивают: бот или сообщество, аккаунт агента с бейджем его организации, проверка клиентов и таблица по организациям. Справа — то, что смотрят каждый день: «Проверка связи» (переключатель «Аккаунт агента / Бот»), «Последние сообщения» (агента и бота отдельно), справка «Как это устроено» и «Журнал» — подключения и падения сессии аккаунта, ошибки доставки.

flowchart LR
    C["Клиент: ЛК → «Привязать
Telegram» → «Старт»"] --> ID["Чат запомнен
в карточке клиента"] E["Событие + шаблон
с каналом Telegram"] --> Q["Очередь сообщений"] Q --> W{"Чат привязан?
Ключ бота задан?"} ID -.-> W W -- "да" --> BOT["Бот ЛК → чат клиента"] W -- "нет" --> SK["Пропущено,
причина в журнале"]

Вкладка «ВКонтакте»

Вкладка ВКонтакте
ВКонтакте: ключи, «По организациям» — от какого сообщества пишет каждая организация

Биллинг пишет клиенту от сообщества ВКонтакте, когда в шаблоне сообщения включён этот канал. Сообщения получают клиенты, которые вошли в личный кабинет через VK или написали сообществу в Поддержку. Нужны App ID и Secret Key приложения (для входа в ЛК) и ключ сообщества с правом «Сообщения сообщества» (для отправки).

flowchart LR
    M["Сообщение клиенту
организации N"] --> L{"Клиент привязал VK?"} L -- "нет" --> SK["Пропущено:
VK не привязан"] L -- "да" --> CH{"У ящика Поддержки
организации N есть
VK-канал с ключом?"} CH -- "да" --> OWN["Сообщество
организации N"] CH -- "нет" --> G{"Общий ключ
сообщества задан?"} G -- "да" --> SH["Общее сообщество"] G -- "нет" --> SK2["Пропущено:
не задан ключ"]

Вкладка «Push»

Вкладка Push
Push: файл ключа Firebase, тестовый push, «По организациям»

Push-уведомления в мобильном приложении клиента через Firebase Cloud Messaging. Приложение одно на все организации.

flowchart LR
    APP["Приложение клиента
первый запуск"] --> TOK["Токен push
в карточке клиента"] E["Событие + шаблон
с каналом Push"] --> Q["Очередь сообщений"] Q --> W{"Токен есть?
Файл ключа найден?
Не тихий час?"} TOK -.-> W W -- "да" --> FCM["Firebase Cloud Messaging"] --> PH["Телефон клиента"] W -- "нет" --> SK["Пропущено,
причина в журнале"]

Важно (сборка 3393). До неё служба отправки брала ключ бота Telegram и путь к ключу Firebase не из настроек биллинга, а из файла окружения сервера, где их не было: сообщения Telegram и push из очереди молча считались отправленными, хотя не уходили. Теперь ключи берутся из настроек, а причина пропуска пишется в журнал.

Подключение аккаунтов Telegram и MAX (агент, который пишет первым)

Бот не может написать человеку первым, пока тот сам не нажал «Старт». Поэтому агент пишет клиенту от аккаунта компании — по номеру из карточки клиента или заявки CRM. Чтобы агент вошёл в этот аккаунт без ввода кода при каждом запуске, используется браузерное расширение «СмИТ — ключ сессии MAX / Telegram»: оно берёт ключ уже открытой в браузере сессии и показывает его для вставки в биллинг.

Расширение работает только на web.telegram.org и web.max.ru, только по клику на иконку и ничего не отправляет во внешнюю сеть — значения видны только в его окне.

Установка из Chrome Web Store: расширение «Ключ сессии СмИТ» (по прямой ссылке; в поиске магазина не публикуется). Ставится в Chrome одной кнопкой «Установить».

Установка без Chrome Web Store (по прямой ссылке — для закрытого контура или пока расширение на проверке):

  1. Скачайте архив: smit-session-key.zip и распакуйте его в постоянную папку (Chrome читает расширение прямо из неё — не удаляйте и не переносите папку после установки).
  2. Откройте chrome://extensions, включите справа вверху «Режим разработчика».
  3. Нажмите «Загрузить распакованное расширение» и выберите распакованную папку.
  4. Значок «Ключ сессии СмИТ» появится на панели Chrome — дальше всё как описано ниже.

Обновление: скачайте новую версию, распакуйте поверх той же папки и нажмите «Обновить» на chrome://extensions. Разрешения те же — Chrome не будет переспрашивать.

Как подключить:

  1. Войдите служебным аккаунтом: для Telegram откройте web.telegram.org, для MAX — web.max.ru (это отдельный аккаунт, не аккаунт Поддержки).
  2. Нажмите иконку расширения «Ключ сессии СмИТ» на этой вкладке. Оно само определит мессенджер и покажет значения:
    • Telegram — «Строку сессии (Telethon)», кнопка «Копировать».
    • MAX — «Токен MAX (__oneme_auth)» и «Device ID».
  3. В биллинге: Настройки → Сообщения → вкладка «Telegram» или «MAX», карточка «Аккаунт, который пишет первым» → кнопка «Подключить» (или «Обновить сессию/токен») → вставьте скопированное → «Сохранить».
  4. Через 10–20 секунд статус аккаунта станет «онлайн». Сценарии, лимиты и журнал — на вкладке «Агент».
Вход служебным аккаунтом на web.telegram.org по QR-коду
Шаг 1. Войдите служебным аккаунтом на web.telegram.org (для MAX — web.max.ru). Например, по QR-коду из приложения Telegram.
Окно расширения «Ключ сессии СмИТ» для Telegram и MAX
Шаг 2. Окно расширения: слева — строка сессии Telegram, справа — токен и Device ID для MAX (значения сокращены). Кнопки «Копировать» переносят их в биллинг.
Вставка строки сессии в биллинге: Настройки → Сообщения → Telegram
Шаг 3. В биллинге: Настройки → Сообщения → Telegram → «Подключить» → вставьте строку сессии и сохраните. api_id/api_hash не нужны.
Аккаунт агента на связи: статус «онлайн», счётчики и кнопки управления
Шаг 4. Через 10–20 секунд аккаунт — «На связи». Рядом: лимиты на день и час, «Обновить сессию», «Вход по номеру», «Пауза».
Запасной путь: вход по номеру — запрос кода
Запасной путь: вход по номеру. Код придёт в Telegram (или по SMS для MAX). Используйте, только если сессия перестала работать — обычно её обновляют расширением.

MAX — токен и Device ID. Для MAX то же расширение берёт из открытой вкладки web.max.ru два значения — «Токен MAX (__oneme_auth)» и «Device ID» — и показывает их для вставки в карточку «Аккаунт MAX, который пишет первым» (Настройки → Сообщения → MAX). Это отдельный аккаунт агента, а не аккаунт Поддержки.

Вход служебным аккаунтом на web.max.ru по QR-коду
Шаг 1. Войдите служебным аккаунтом MAX на web.max.ru — например, по QR-коду из приложения MAX.
Окно расширения «Ключ сессии СмИТ» на вкладке MAX: токен и Device ID
Шаг 2. Окно расширения на вкладке MAX: «Токен MAX» и «Device ID» (значения скрыты). Кнопки «Копировать» переносят их в биллинг.
Окно «Новый аккаунт MAX» в биллинге: вставка токена и Device ID
Шаг 3. Настройки → Сообщения → MAX → «Добавить аккаунт MAX»: выберите ящик, вставьте токен и Device ID из расширения, сохраните. Можно оставить пустыми и войти по коду из SMS.
Аккаунт MAX агента на связи: статус, лимиты и тестовая отправка
Шаг 4. Аккаунт MAX — «На связи». Рядом: дневной и часовой лимиты, «Обновить токен», «Вход по номеру», «Пауза». «Тестовая отправка» шлёт сообщение получателю из профиля — проверка, что аккаунт пишет первым.

Аккаунт ВКонтакте, который пишет первым

Во ВКонтакте агент тоже может писать клиенту первым — от личного аккаунта компании, а не только от сообщества. Нужен токен аккаунта VK: расширение «Ключ сессии СмИТ» на вкладке vk.com или vk.ru отдаёт его по уже открытой сессии, без повторного входа. Токен вставляют в карточку «Аккаунт VK, который пишет первым» (Настройки → Сообщения → VK).

Это отдельный путь от сообщения от сообщества (см. «Вкладку ВКонтакте» выше): сообществу человек должен сам разрешить сообщения, а аккаунт пишет первым. VK ограничивает аккаунты за массовую рассылку незнакомым — начинайте с низких лимитов.

Расширение на vk.ru: кнопка «Получить токен VK»
Шаг 1. Откройте vk.ru (или vk.com) под служебным аккаунтом и нажмите иконку расширения на вкладке VK → «Получить токен VK».
VK ID: подтверждение доступа к сообщениям
Шаг 2. VK попросит подтвердить доступ к сообщениям — «Продолжить».
Токен аккаунта VK получен, кнопка «Копировать»
Шаг 3. Токен получен (значение скрыто) — «Копировать». Рядом — ваш числовой VK id.
Окно «Новый аккаунт ВКонтакте» в биллинге: вставка токена
Шаг 4. Настройки → Сообщения → VK → «Добавить аккаунт ВКонтакте»: выберите ящик, вставьте токен и сохраните.
Аккаунт VK агента на связи: статус, лимиты и тестовая отправка
Шаг 5. Аккаунт VK — «На связи». «Тестовая отправка» идёт по числовому VK id получателя, который разрешил сообщения, — проверка, что аккаунт пишет первым.

Кто из клиентов есть в мессенджере — проверка номеров

На вкладках Telegram, MAX и VK под аккаунтом агента есть блок «Кто из клиентов есть в …». Он постепенно проходит клиентов организации аккаунта и узнаёт, есть ли номер в мессенджере — можно ли написать клиенту первым. Сообщения клиентам при этом не уходят.

Блок «Кто из клиентов есть в Telegram»
Охват по аккаунту: сколько клиентов есть в Telegram, сколько нет или скрыли номер, сколько ещё не проверено

«Проверить клиентов» открывает окно с настройками:

ПолеЧто задаёт
ТемпСколько номеров в минуту, от 1 до 4. Для Telegram начинайте с 1, для MAX — с 2
Не больше в деньДневной лимит. Дошли до него — проверка продолжится на следующий день сама
Кого пропускатьПроверенных за 30 или 90 дней либо никого (проверить всех заново). Клиентов, которые сами писали в мессенджер, не проверяем — они точно там есть

Пока проверка идёт, видны процент и полоса хода, сколько найдено, сколько нет, сколько осталось дней при текущем лимите, и последние номера. Проверку можно поставить на паузу, продолжить или остановить — найденное останется.

Мессенджеры ограничивают массовый поиск по номерам. Если Telegram или MAX временно запретит аккаунту поиск (FLOOD), проверка сама встанет на паузу, а в чат тревог придёт сообщение — продолжите через несколько часов. VK находит только тех, кто разрешил поиск по номеру; клиенты с привязанным VK из личного кабинета отмечаются сразу, без запроса.

Как идёт проверка:

sequenceDiagram
    autonumber
    participant B as Биллинг (раз в минуту)
    participant A as Аккаунт агента
    participant M as Мессенджер
    participant K as Карточка клиента
    B->>B: следующие клиенты организации с номером
(пропуск проверенных и тех, кто писал сам) B->>A: номера — с паузами, не больше лимита в минуту и в день A->>M: поиск по номеру, без сообщения alt номер найден M-->>A: есть, имя в мессенджере A-->>B: «есть» → агент потом пишет без поиска else нет или скрыт M-->>A: не найден A-->>B: «нет» → 30 дней агент сразу идёт к следующему каналу else мессенджер ограничил (FLOOD) M-->>A: временный запрет A-->>B: пауза проверки и сообщение в чат тревог end B->>K: «есть / нет · дата» во вкладке «Сообщения»

Итог виден в карточке клиента: вкладка «Сообщения», рядом с каналами Telegram и MAX — отметка «есть» или «нет» с датой проверки.

На демо-стенде показаны примерные данные, запуск проверки там недоступен.

Сценарии агента: каналы и порядок

В окне сценария на вкладке «Каналы и порядок» — список каналов с номером шага. Переключатель включает канал, стрелки меняют порядок. У каждого канала пояснение: «Где клиент уже писал» — мессенджер, где клиент уже переписывался с нами; Telegram, MAX и ВКонтакте — аккаунты компании; SMS — запасной вариант, текст на вкладке «Сообщения». Если аккаунта мессенджера у организации нет, под ним сказано «аккаунт не подключён — канал пропустится».

Сценарий агента: каналы и порядок
Сценарий «Долг»: сначала мессенджер, где клиент уже писал, затем Telegram, MAX и SMS; ВКонтакте выключен
flowchart TD
    S["Повод сценария:
долг, выезд, заявка, недозвон"] --> C1{"Шаг 1: где клиент
уже писал?"} C1 -- "есть такой мессенджер" --> SEND["Сообщение от аккаунта агента"] C1 -- "нет" --> C2{"Следующий канал по порядку:
аккаунт подключён и номер найден?"} C2 -- "да" --> SEND C2 -- "нет — следующий шаг" --> C2 C2 -- "мессенджеры кончились" --> SMS{"SMS включена
в сценарии?"} SMS -- "да" --> SENDSMS["SMS с текстом сценария"] SMS -- "нет" --> NF["«Нет в мессенджерах»
в журнале агента"]

Вкладка «Шаблоны»

Тексты сообщений клиентам. Системные шаблоны биллинг отправляет сам по событию и находит по названию — «Низкий баланс», «Блокировка», «Задолженность», «Новая услуга» и другие, поэтому название системного шаблона лучше не менять. Остальные выбирают вручную — в рассылке или в ответе клиенту.

Шаблоны: сводка, фильтр каналов значками, организации
«Шаблоны»: сверху сводка, фильтр каналов цветными значками и организации бейджами; в таблице — каналы значками
КолонкаЧто показывает
НазваниеСсылка открывает шаблон. Ниже: «системный», «HTML» — у письма своя HTML-версия, заголовок
ОрганизацияЧей шаблон; «общий» — для клиентов всех организаций (только с модулем «Мультиорганизация»)
ТекстНачало текста, полностью — в подсказке
ДлинаЗнаков в тексте без подстановок и сколько это SMS. Больше двух SMS — жёлтым
Когда уходитСобытие, по которому биллинг отправляет шаблон; «вручную» — сам не отправляет
КаналыДевять цветных значков всегда в одном порядке: личный кабинет, push, SMS, email, Telegram — бот, Telegram — аккаунт, ВКонтакте — сообщество, ВКонтакте — аккаунт, MAX — аккаунт. Значок с человечком — аккаунт компании, который пишет первым. Включённый канал — цветной, выключенный — серый; подсказка у значка
За 30 днейСколько сообщений ушло по шаблону, сколько доставлено и с ошибкой, день последней отправки
ИзменёнДата; время и кто менял — в подсказке
ВклВключён ли шаблон. Выключенный по событию не уходит

Сводка над таблицей: включено из всех, по событию и вручную, отправлено за 30 дней, «Требуют внимания» (включён без каналов, пустой текст, SMS длиннее двух частей, ошибки доставки) и, с модулем «Мультиорганизация», сколько своих шаблонов у организаций. Клик по карточке оставляет в таблице только эти шаблоны, повторный клик снимает фильтр.

Ниже — кнопка «+» (новый шаблон), поиск по названию и тексту (Ctrl+K), фильтр каналов цветными значками с числом шаблонов (можно выбрать несколько) и ряд организаций бейджами: «Все», «Общие» и каждая организация. Под названием шаблона видно «своя версия у N орг.» у общего, «заменяет общий» у своего и причину у проблемного. Кнопка с колонками — какие колонки показывать, набор сохраняется в профиле. На телефоне каждый шаблон — карточка.

Массовые действия

Панель массовых действий над шаблонами
Отмечено три шаблона — панель действий сверху

Отметьте шаблоны галочками — сверху появится панель:

Шаблоны организаций

Шаблон бывает общим — для клиентов всех организаций — или своим у организации. Свой шаблон с тем же названием заменяет общий для её клиентов: например, у организации свой «Низкий баланс» с её названием и телефоном. Выключенный свой шаблон значит «клиентам этой организации не отправлять» — общий вместо него тоже не уйдёт.

Сотрудник с доступом ко всем организациям правит общие шаблоны и шаблоны любой организации. Сотрудник с доступом только к части организаций видит общие шаблоны и шаблоны своих организаций, а править может только свои: общий открывается для просмотра, вместо правки — «Копия для организации». Организация, выбранная в шапке, сужает список до общих и её шаблонов.

Окно шаблона

Четыре вкладки, внизу — «Отмена», «Копия» и «Сохранить».

Окно шаблона, вкладка Текст
«Текст»: редактор, счётчик SMS, кнопка AI и подстановки
Окно шаблона, вкладка Предпросмотр
«Предпросмотр»: SMS на телефоне и письмо в фирменном макете
Окно шаблона, вкладка Параметры
«Параметры»: организация, каналы, режим

Подстановки

ПодстановкаЧто подставится
%(contract_number)sномер договора
%(abonent_name)sФИО клиента
%(balance)sбаланс
%(currency)sвалюта
%(tarif_name)sтариф клиента
%(amount)sсумма операции — платежа, списания
%(service)sназвание услуги
%(text)sдополнительный текст события
%(operator_name)sназвание оператора

Длина SMS: кириллица — 70 знаков в одной SMS, длинная склеивается по 67; только латиница — 160 и 153. Счётчик считает текст без подстановок, а ФИО и тариф добавят знаков, поэтому оставляйте запас.

AI-помощник

Кнопка «AI» над текстом и помощник раздела («Помощник по шаблонам») пишут и правят шаблоны: «напиши SMS о плановых работах завтра с 2 до 4 ночи», «сократи до одной SMS», «сделай HTML-письмо для этого текста». Помощник видит открытый шаблон, его каналы и список подстановок. Готовый черновик открывается кнопкой «Открыть в окне шаблона» — проверьте предпросмотр и сохраните. Сам помощник ничего не сохраняет и не отправляет.

Что берёт каждый канал

КаналЧто уходит
SMSТекст
PushЗаголовок и текст
Telegram, ВКонтакте, личный кабинетТекст
EmailТема — заголовок с названием организации. Тело — «Письмо» в фирменном макете, если оно заполнено, иначе текст шаблона во встроенном письме биллинга для этого события
flowchart LR
    T["Шаблон"] --> H{"Заполнено
«Письмо»?"} H -- "да" --> L["HTML в фирменном макете"] H -- "нет" --> P["Текст шаблона во встроенном
письме по событию"] L --> S{"У организации клиента
свой SMTP?"} P --> S S -- "да" --> OS["SMTP организации"] S -- "нет" --> GS["Общий SMTP"] OS -. "не ответил" .-> GS