Система отправки сообщений (sms,email и тд). Шаблоны сообщений

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

Описание системы отправки сообщений

Система отправки сообщений Carbon Billing 5 поддерживает четыре метода отправки:

  • SMS
  • E-mail
  • Telegram
  • PUSH

Устаревщие (названия оставлены для совместимости) и нереализованные способы отправки:

  • Agent
  • Winpop
  • WhatsApp

Для работы системы сообщений следует настроить шаблоны и параметры отправки, для каждого метода свои.

Быстрый запуск. Как проверить?

  1. Настройте смс-шлюз.
    Если у Вас демо - то уже настроен шлюз Carbon и этот шаг можно пропустить.
  2. Укажите у оператора связи адрес почты отправителя
  3. Настройте шаблоны сообщений. Уже есть предустановленные почти по всем шаблонам.
  4. Заполните в карточке абонента реквизиты: "Email для оповещений" и "Номер SMS для оповещений" (можно что-то одно)
  5. Отправьте тестовое сообщение

Настройка системы и методов отправки

Включение системы отправки сообщений

Для работы системы отправки сообщений, следует включить этот сервис в настройках биллинга
Для этого необходимо перейти в "Управление абонентами и тарифами - настройки - настройки(в файле) - настройки демона отправки сообщений" и выставить флаг в поле "Включить отправку сообщений"

Настройка SMS рассылки

  1. Откройте вкладку "Настройка сообщений" в карточке оператора связи. Нажмите кнопку "Редактировать" (пиктограмма в виде карандашика в колонке "Действие"



  2. Снимите опцию "Использовать СМС шлюз Carbon" и нажмите "Сохранить", Вас автоматический перенаправит на вкладку "Настройка сообщений" в карточке оператора связи



  3. Снова нажмите кнопку "Редактировать"



  4. Настройте требуемые параметры и нажмите "Сохранить".

Способы отправки смс:

  1. POST. Обязательные параметры:
    • Адрес СМС шлюза
    • Post параметры
    • MD5 подпись
  2. GET - данные для GET-запроса нужно записать в поле "Post параметры".
  3. Ростелеком JSON - игнорирует поле "Post параметры" и поле "MD5 подпись".

Список параметров:

  • Адрес СМС шлюза
  • Post параметры
  • Тип запроса к серверу - Доступны:
    • POST
    • GET
    • Ростелеком JSON
  • Заголовок сообщения - автоматический добавляемая тема email-сообщения, на случай если она не указана в шаблоне или в форме отправки сообщения.
  • Предупреждать о лимите за n дней - количество дней для шаблона сообщения "Предупреждение за n дней" (описано далее в статье).
  • Количество попыток отправки - количество попыток в случае, если сервер, на который передаётся сообщение, не отвечает.
  • Начало тихого часа - начала периода времени, когда сообщения не отправляются (работает и на sms и на email).
  • Окончание тихого часа - конец периода времени, когда сообщения не отправляются (работает и на sms и на email).
  • MD5 подпись
  • Убирать + из номера - автоматический убирает + в начале телефонного номера (например, "79121234567" вместо "+79121234567") если этого требует sms-шлюз
  • Использовать СМС шлюз Carbon
  • Логин сервера sms - логин basic авторизации sms сервера.
  • Пароль сервера sms - пароль basic авторизации sms сервера.
    Для включения basic авторизации необходимо одновоерменно заполнить поля логин\праоль сервера sms.
  • Имя отправителя sms - Имя отправителя. Используется только для типа отправки Ростелеком JSON.
Важно:
SMS-шлюз должен уметь принимать параметры отправляемого сообщения по протоколу http (или https). Отправка производится POST или GET запросом.

Пример запроса к sms-шлюзу

http://smsc.ru?charset=utf-8&login='company'&psw='company123'&phones=79991231122&mes=Тест отправки

Использованы следующие параметры:
smsc.ru - адрес вашего смс шлюза
company - название вашей компании
company123 - пароль, выданный смс-шлюзом
79991231122 - номер для тестовой отправки, на который придет смс
Тест отправки -  текст для отправки, указывается без кавычек

Соответственно, "Адрес СМС шлюза" из настроек сообщений в строке браузера находится слева от символа "?", а "Post параметры СМС шлюза" - справа, при этом используются переменные:

  • %(sms)s - номер телефона
  • %(text)s - текст сообщения.
Для того, чтобы корректно работал шаблон сообщений "Предупреждение за n дней", необходимо в настройках сообщений оператора связи указать параметр "Предупреждать о лимите за n дней"

Примеры интеграции с SMS-шлюзами

SMSC

Сайт компании: smsc.ru

Адрес СМС шлюза:

https://smsc.ru/sys/send.php?

Post параметры:

charset=utf-8&login=Ваш логин&psw=Ваш пароль&phones=%sms%&mes=%text%
Важно:
Чтоб смс отправилось, в карточке абонента должен быть выбран оператор связи с настроенным смс-шлюзом.

Простор СМС

Адрес СМС шлюза:

http://gate.prostor-sms.ru/send/

Post параметры:

login='Ваш логин'&password='Ваш пароль'&phone=%sms%&text=%text%

SMSPILOT.RU

Описание интеграции в документации SMSPILOT.RU

Адрес СМС шлюза:

http://smspilot.ru/api.php

Post параметры:

send=%text%&to=%sms%&apikey=XXXYYYZZZ

Вместо XXXYYYZZZ скопируйте API-ключ из настроек: Личный кабинет -> Настройки -> Настройки API

На стороне sms-шлюза Вы должны быть подключены как бизнес-клиент, либо скопировать шаблоны из Carbon Billing 5 в "Шаблоны" в личном кабинете SMSPILOT.RU

Ростелеком СМС Реклама

Обязательные параметры:

  1. Адрес СМС шлюза:
    https://sms.rt.ru/api/send_message
    
  2. Тип запроса к серверу
    Ростелеко JSON
    
  3. Логин сервера sms
  4. Пароль сервера sms
  5. Имя отправителя sms

Настройка Email рассылки

Для того, чтобы сообщения отправлялись, следует указать "Email для оповещений" в карточке оператора связи.

Например: info@provider.name

Настройка отправки Email со стороннего сервера

По умолчанию биллинг отправляет Email сообщения со встроенного smtp сервера. Для корректной отправки сообщений со встроенного сервера необходимо зарегистровать домен для почтовой рассылки.
Но также есть возможность отправлять Email со стороннего сервера. Это предпочтительней, так как современные сервера пересылки почты используют многоступенчатую систему борьбы со спамом. Использование стороннего почтового сервера избавит вас от конфигурирования собсвенного почтового сервера.
Чтобы попасть в настройки smtp сервера перейдите Настройки -> Настройки (в файле) -> Настройки демона отправки сообщений.

Страница настроек выглядит следующим образом:

Доступны в следующие настройки:

  • SMTP Шифрование SSL
  • SMTP Сервер
  • SMTP Порт
  • SMTP Пароль
  • enabled - включение отправки сообщений
  • SMTP Логин
  • SMTP Шифрование TSL
  • SMTP расширенное журналирование - Подробное журналирование SMTP-соединений
Чтобы вернуть настройки по умолчанию, необходимо в поле "SMTP Сервер" вписать "localhost", а поля "SMTP Порт", "SMTP Логин" и "SMTP Пароль" оставить пустыми.

Отправка Email через Google

Подробную информацию по интеграцию сторонних почтовых клиентов с Google, Вы можете найти в справке сервиса.

Такие параментры должны работать:

  • Адрес сервера: smtp.gmail.com
  • Порт: 587
  • SMTP Шифрование TSL: включено

Настройка Telegram рассылки и интеграция с ботом

Мы описали это статье Отправка уведомлений через Telegram

Настройка PUSH-уведомлений из личного кабинета

Мы описали это статье PUSH-уведомления из личного кабинета

А что с WhatsApp?

WhatsApp Business API, официальный метод интеграции

Пока этот метод не поддерживается. Мы делали тестовую интеграцию с WhatsApp в 2017 году, поэтому такой способ отправки сообщений остался в интерфейсе, но по техническим причинам развития функция не получила.

На текущий момент официальным методом интеграции является подключение к WhatsApp Bisiness API через партнёров Facebook, что несёт с собой некоторую финансовую нагрузку на компанию, рассылающую сообщения - то есть оператора связи.

Подробней об условиях Вы можете уточнить у партнёра Facebook в России, компании Infobip. Если Вы сочтёте их условия приемлемыми, напишите нам - мы реализуем интеграцию в Carbon Billing 5.

Неофициальный метод интеграции, могут заблокировать номер

Как пример подобного сервиса - https://chat-api.com/ru/

Это не очень надёжное решение (WhatsApp может заблокировать номер заподозрив рассылку спама), но распространённое.

Если Вам нужен именно такой метод интеграции с Chat API, либо другим подобным сервисом - пожалуйста, напишите нам. Мы сделаем интеграцию при достаточном спросе сред операторов связи

Настройка шаблонов сообщений


Для каждого типа сообщения надо создать свой шаблон

Опция Отправлять сообщение отвечает за то нужно отправлять сообщение или нет. Эту галочку можно также поставить в самом шаблоне при редактировании.
Опция Отправлять каждый день работает только для шаблона "Предупреждение за n дней", при её активации сообщение отправится за количество дней указанных в настройках оператора связи в поле "Предупреждать о лимите за n дней", а так же каждый день до даты когда он будет заблокирован.

Пример 1. Шаблон сообщения сброса пароля

Возможные переменные

В шаблонах можно использовать следующие параметры:
%(contract_number)s - номер договора;
%(balance)s - текущий баланс;
Для округления баланса до целого значения используйте параметр %(balance).f
%(currecy)s - валюта сокращение (например руб.);
%(text)s - передаваемый текст (сообщение непосредственно конкретному абоненту);
%(operator_name)s - имя оператора связи(по умолчанию "Лучший провайдер");
%(allow_limit)s - сумма, которая указана в пороге включения(тариф);
%(total_abonpay)s - общая сумма абонентской платы по тарифным и нетарифным услугам;
%(tarif_abonpay)s - сумма абонентской платы по тарифным услугам;
%(nontarif_abonpay)s - сумма абонентской платы по нетарифным услугам; вычисляется как разность общей суммы абонентской платы и абонентской платы по тарифным услугам;
%(gen_pwd)s - созданный через админ. панель пароль(не существует, если пароль изменен через ЛК);
%(login)s - логин абонента;
%(tarif_name)s - тариф абонента;
%(plan_comment)s - описание тарифа (например скорость, указывается руками);
%(recomend_pay_sum)5.2f - рекомендуемый платеж
%(recomend_pay_sum_post)5.2f - рекомендуемый платеж постоплата
%(minimal_pay_sum)5.2f - минимальный платеж для разблокировки
%(subscriber_name)s - Имя абонента, который создал заявку в helpdesk
%(abonent_id)s - ID абонента, который создал заявку в helpdesk
%(subscriber_sms) - номер телефона абонента, который создал заявку в helpdesk
%(subscriber_email)s - email абонента, который создал заявку в helpdesk
%(subscriber_comment)s - стандартный реквизит "Комментарий"
%(psw_token)s - проверочный код для сброса пароля Личного кабинета

%(gen_pwd)s - это пароль всегда от первой учетной записи

А также любые поля абонента, тарифа, счета и прочих данных, отображаемых на вкладке "Информация" в карточке абонента. Названия переменных можно взять из описания моделей в API REST v2.0

Например:

Уважаемый Абонент! Ваши персональные данные: ФИО: "%(name)s", Дата выставления Акта: "%(next_auto_acount)s", Код в 1С: "%(code1c)s", Дата начала предоставления услуг: "%(activate_date)s", Лицевой счет: %(account_id)s, Тариф: "%(tarif_name)s", Оператор связи: "%(operator_name)s"

Будет отправлено сообщение приблизительно следующего содержания:

Уважаемый Абонент! Ваши персональные данные: ФИО: "Новый абонент", Дата выставления Акта: "2017-11-01 00:00:00", Код в 1С: "1sTESTcode", Дата начала предоставления услуг: "2017-10-01 00:00:00", Лицевой счет: 10001319, Тариф: "Анлим 30мб", Оператор связи: "ООО Лучший провайдер"

Текст заголовка - тема e-mail или заголовок смс.
Текст шаблона - непосредственно отправляемый текст.

Использование переменных Django

При включении опции "Использовать шаблонизатор django" можно использовать математические функции django, например, вычислить сумму, которую должен внести абонент. Ниже пример такого шаблона сообщения:

{% load mathfilters %}Обслуживание по л/с {{ abonent.contract_number }} приостановлено. Внесите не менее {% if total_abonpay <= BALANCE %}0{% else %}{{ total_abonpay|sub:BALANCE }}{% endif %} руб.

Тип сообщения. События.

Каждый шаблон сообщения может быть отправлен по любому из выбранных событий:

  • Подключение услуги - приходит абоненту при подключении услуги;
  • Положительный баланс - приходит абоненту при переходе абонента в положительный баланс(ниже порога отключения абонента);
  • Отрицательный баланс - приходит абоненту при переходе абонента в отрицательный баланс(выше порога отключения абонента);
  • Выставлен счет - приходит абоненту при выставлении счета абоненту (используется чаще для юр.лиц). Для того, чтобы отправка счета выполнялась вручную из вкладки "Операции", шаблон с данным типом должен быть включен. Вместе со счетом юр.лицам отправляется ещё и акт. Отправка акта выполняется с помощью этого же шаблона сообщений(Выставлен счет);
  • Зачисление денег - приходит абоненту при поступлении средств на счет (при условии что в настройках абонента стоят галочки Юр.лицо и Отправлять Счет/Акт, а также Настройки - Число месяца выставления счетов на предоплату);
  • Ручная отправка сообщения - при ручной отправке;
  • Занесено в Аудит - при занесении информации в Аудит;
  • Достигнут порог предупреждения - при достижении порога предупреждения (порог предупреждения из опций тарифа);
  • Сообщение из HelpDesk - при создании заявки от абонента в HelpDesk (приходит инженерам Helpdesk);
  • Сообщение из CRM - при создании задачи в CRM (приходит ответственному исполнителю);
  • Предупреждение за n дней - за n дней до даты когда абонент будет заблокирован;
  • Создание учетной записи из услуги - отправляется при создании учетной записи при подключении услуги;
  • Данные для HotSpot - данные для авторизации в HotSpot;
  • Комментарий к заявке HelpDesk - при создании коментария к заявке HelpDesk (приходит абоненту);
  • Анонимная заявка с вэб-сайта - отправляется при создании заявки на подкючение;
  • Поздравление - поздравление с праздником, подробнее в статье;
  • Сброс пароля в Личном кабинете - данные для сброса пароля от Личного кабинета, подробнее в статье.

Способы отправки сообщений

В настоящее время поддерживаются четыре способа отправки сообщений пользователям:

  • Письмо электроную почту (e-mail)
  • SMS сообщение на телефон
  • Telegram-бот, через который можно не только получать рассылку, но и получить данные по лицевому счету, услугам и тарифу
  • PUSH-уведомления

Если не выбрать конкретный вид сообщения, то рассылка будет вестись всеми доступными средствами.

Отправитель

Поле отправитель зависит от типа сообщения:

  • Если сообщение системное, например у пользователя кончились деньги на счёте, то в поле отправитель будет указан e-mail, принадлежащий Оператору связи.
  • Если сообщение отправлялось вручную с помощью веб-интерфейс администратора Carbon Billing 5, то отправителем будет указан e-mail администратора системы, который это сообщение отправил;
  • Если данные поля не заполнены, отправителем будет почта вида root@www.example.com, где www.example.com - доменное имя главного внешнего интерфейса.

Отправка сообщений

Важно:
При отправке СМС-сообщений нужно обязательно выбрать шаблон отправки. Если не выбрать шаблон, то сообщения уйдут по всем подходящим шаблонам (например, по всем абонентам в папках вместо одного).

Для отправки сообщений непосредственно одному из абонентов необходимо зайти в раздел Абоненты, выбрать абонента, вкладка Отправить сообщения.
Выбирается метод отправки и выбирается шаблон сообщения. Для отправки произвольного текста, следует создать шаблон с типом "Ручная отправка" и текстом шаблона %(text)s

Если выбрать "Метод отправки" и он отличается от того, что настроен в шаблоне сообщения (поле "Тип отправки"), то будет использоваться метод, выбранный на странице создания сообщения.
Например, если в шаблоне настроен тип "SMS", а на форме не выбран метод ("---"), то сообщение отправится только по SMS. Если в шаблоне настроен тип "SMS", но при создании сообщения выбрать "Email", то сообщение отправится только по Email.

Отладка

Логи работы демона отправки сообщений за текущие сутки находятся в файле

/app/asr_billing/var/log/msgd.log

Логи за прошедшие сутки архивируются в этом же каталоге под названием msgd.log-<date>.gz

Перестали отправляться email-сообщения абонентам, при использовании встроенного smtp сервера

  1. В момент отправки запускаем лог и видим следующее:
    Команда
    tail -f /app/asr_billing/var/log/msgd.log | grep -A2 'Отправляем'
    Пример вывода с ошибкой
    2019-11-18 13:45:37,976 - worker - msg_lib - INFO - Отправляем email сообщение абоненту:Иванов Иван Иванович
    2019-11-18 13:45:37,985 - worker - msg_lib - ERROR - Can't send:[Errno 111] Connection refused
    
  2. Проверим настройки почтового сервера. Если настройки стандартные, нужно проверить встроенный почтовый сервер на localhost. Проверим, запущен ли он:
    Команда
    service postfix status
    Пример вывода, сервер остановлен
    master остановлен
  3. Перезапускаем встроенный почтовый сервер:
    Команда
    service postfix restart
    Пример вывода, сервер перезапущен (остановлен он был ранее)
    Останавливается postfix:                                   [СБОЙ ]
    Запускается postfix:                                       [  OK  ]
    

Проблемы с отправкой email-сообщений, при использовании стороннего smtp сервера

Для отладки отправки smtp сообщений сделайте следующее:

  1. Включите опцию расширенного логирования в настройках
  2. Перезапустите службу отправки сообщений, для применения настроек
    chroot /app/asr_billing/ service msgd restart
    
  3. Сделайте пробную отправку сообщения

    Выберите метод отправки smtp. Текст и тема произвольные.
  4. Проследите в логе службы отпраки сообщений за ходом отправки
    /app/asr_billing/var/log/msgd.log

    Пример:

    fgrep ERROR /app/asr_billing/var/log/msgd.log
    2018-09-02 10:22:26,350 - worker - msg_lib - ERROR - Can't send:(553, '5.7.1 Sender address rejected: not owned by auth user.', u'test@example.com')
    

    Произошла ошибка № 553, при отправке письма. Просмотреть коды ошибок можно в документации Google на руссом или IANA на английском.
    Если у вас возникнут вопросы по ошибкам в smtp диалоге, сохраните лог отправки и создайте заявку в техническую поддержку.

Перестали отправляться sms-сообщения абонентам.

Проверям лог отправки сообщений на наличие ошибок:

Команда
grep -i 'error' /app/asr_billing/var/log/msgd.log 

Видим сообщение об ошибке сертификата:

Пример вывода с ошибкой
2019-12-17 08:01:07,298 - worker - msg_lib - ERROR - Can't send message(Curl error):(60, 'SSL certificate problem: self signed certificate in certificate chain')
2019-12-17 08:01:07,423 - worker - msg_lib - ERROR - Can't send message(Curl error):(60, 'SSL certificate problem: self signed certificate in certificate chain')
2019-12-17 08:01:07,545 - worker - msg_lib - ERROR - Can't send message(Curl error):(60, 'SSL certificate problem: self signed certificate in certificate chain')

Данная ошибка означает, что биллинг не может подключиться к SMS-шлюзу из-за проблем с корневым SSL-сертификатом в chroot биллинга. Для решения проблемы необходимо обновить корневые SSL-сертификаты в chroot биллинга.

Команды
chroot /app/asr_billing
cd /etc/ssl/certs
rm -f ca-bundle.crt ca-bundle.trust.crt
wget https://curl.haxx.se/ca/cacert.pem --no-check-certificate
cp cacert.pem ca-bundle.crt
cp cacert.pem ca-bundle.trust.crt
rm -f cacert.pem 

При отправке сообщения вручную, время отправки указывается некорректно.

Пример записи аудита
391045 	Системные события 	2020-10-19 12:41 test Добавлена запись №44011: таблица ОтправитьСообщения Изменения=([Время отправки=2020-10-20 00:00:54.314402],[Метод отправки=]

Необходимо проверить в настройках "Оператора" в разделе Настройка сообщений время начала и окончания "Тихого часа".

Отключить отпраку сообщений на сервере

Иногда во время отладки или работе с базой данных на тестовом сервере полезно отключтиь отправку сообщений.

  1. Отключите отправку в конфигурационном файле биллинга:
    Путь конфигурационному файлу
    /app/asr_billing/cfg/config
    
    Служба отправки сообщений включена
    msgd['enabled']='1'
    
    Служба отправки сообщений отключена
    msgd['enabled']='0'
    
  2. Перезапустите службу отправки сообщений для примения измений в силу:
    chroot /app/asr_billing/ service msgd restart
    
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.