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

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

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

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

  • SMS
  • E-mail
  • Telegram
  • PUSH

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

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

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

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

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

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

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

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



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



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



  4. Настройте требуемые параметры и нажмите "Сохранить". Обязательными являются:

    • Адрес СМС шлюза
    • Post параметры
    • MD5 подпись

Следующие параметры настройте по необходимости:

  • Заголовок сообщения - автоматический добавляемая тема email-сообщения, на случай если она не указана в шаблоне или в форме отправки сообщения.
  • Предупреждать о лимите за n дней - количество дней для шаблона сообщения "Предупреждение за n дней" (описано далее в статье).
  • Количество попыток отправки - количество попыток в случае, если сервер, на который передаётся сообщение, не отвечает.
  • Начало тихого часа - начала периода времени, когда сообщения не отправляются (работает и на sms и на email).
  • Окончание тихого часа - конец периода времени, когда сообщения не отправляются (работает и на sms и на email).
  • Убирать + из номера - автоматический убирает + в начале телефонного номера (например, "79121234567" вместо "+79121234567") если этого требует sms-шлюз
Важно:
SMS-шлюз должен уметь принимать параметры отправляемого сообщения POST-запросом по протоколу http (или https). Нет возможности передавать параметры в 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

Настройка 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 в 2017 году, поэтому такой способ отправки сообщений остался в интерфейсе, но по техническим причинам развития функция не получила.

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

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

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


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

Опция Отправлять сообщение отвечает за то нужно отправлять сообщение или нет. Эту галочку можно также поставить в самом шаблоне при редактировании.
Опция Отправлять каждый день работает только для шаблона "Предупреждение за 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 
Ищите метку? просто начните печатать.