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

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (59)

просмотр истории страницы
# [Настройте смс-шлюз|#configure_gate];
# [Укажите у оператора связи адрес почты отправителя|#configure_isp];
# [Настройте шаблоны сообщений|#configure_messages]. Уже есть предуастановленные почти по всем шаблонам;
# [Заполните в карточке абонента реквизиты|CarbonBilling:Создание абонента. Заведение абонента. Работа с абонентами. Редактирование абонентов#fill_sms_email_fields]: "*Email для оповещений*" и "*Номер SMS для оповещений*" (можно что-то одно);
# [Отправьте тестовое сообщение|#send_message].
# Откройте вкладку "*Настройка сообщений*" в карточке оператора связи. Нажмите кнопку "*Редактировать*" (пиктограмма в виде карандашика в колонке "Действие"
\\
\\ !smsgate_1.png|border=1,width=800!\\
\\
# Настройте требуемые параметры и нажмите "*Сохранить*".
\\
** Ростелеком JSON
* *Заголовок сообщения* \- автоматический добавляемая тема email-сообщения, на случай если она не указана в шаблоне или в форме отправки сообщения.
* *Предупреждать о лимите блокировке за n дней* \- количество дней для шаблона сообщения "Предупреждение за n дней" (описано далее в статье).
{note:title=Важно:}
Опция "Предупреждать о блокировке за n дней" не работает вместе с включенной опцией "[Льготный период оплаты (Число месяца, до которого не проверять превышение баланса)|http://docs.carbonsoft.ru/x/aQIFAw]
{note}
* *Количество попыток отправки* \- количество попыток в случае, если сервер, на который передаётся сообщение, не отвечает.
* *Начало тихого часа* \- начала периода времени, когда сообщения не отправляются (работает и на sms и на email).
* *Пароль сервера sms* \- пароль basic авторизации sms сервера.
{info}
Для включения basic -авторизации необходимо одновоерменно одновременно заполнить поля логин\праоль сервера sms.
{info}
* *Имя отправителя sms* \- Имя отправителя. Используется только для типа отправки *Ростелеком JSON*.

{note:title=Важно:}
SMS-шлюз должен уметь принимать параметры отправляемого сообщения по протоколу http (или https). Отправка производится POST или GET запросом.
* {color:#008000}%(text)s{color} \- текст сообщения.

{note}Для того, чтобы корректно работал шаблон сообщений "*Предупреждение за n дней*", необходимо на вкладке "*Настройка сообщений*" у оператора связи указать параметр "*Предупреждать о лимите блокировке за n дней*" {note}

{info} Поле *Предупреждение за n дней* будет работать для всех типов отправки сообщений с шаблоном *Предупреждение за n дней*

Обязательные параметры:
# Адрес СМС шлюза:
{code}
http://gate.prostor-sms.ru/send/
{code}
# Post параметры:
{code}
login='Ваш логин'&password='Ваш пароль'&phone=%sms%&text=%text%
[Описание интеграции в документации SMSPILOT.RU|https://smspilot.ru/faq.php#q61]


Обязательные параметры:
# Адрес СМС шлюза:
{code}
http://smspilot.ru/api.php
{code}
# Post параметры:
{code}
send=%text%&to=%sms%&apikey=XXXYYYZZZ
[Описание интеграции в документации SemySMS|https://semysms.net/api.php]


Обязательные параметры:
# Адрес СМС шлюза
Мы описали это статье [CarbonBilling:Отправка уведомлений через Telegram]


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

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


h2. А что с WhatsApp?

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

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

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

!2.png|border=1,width=600!
h2. Создание шаблона

h3. Создание в настройках биллинга
В пунте *"Шаблоны сообщений"* можно создать шаблоны доступные всем [операторам связи|Агентские схемы и ведение филиалов]. Для создания нажмите кнопку *"Добавить"*.
!Create_msg_001.png|border=1,width=1200!
Для каждого типа сообщения надо нужно создать свой шаблон.
!3.png|border=1,width=600!

Опция *Отправлять сообщение* отвечает за то нужно отправлять сообщение или нет. Эту галочку можно также поставить в самом шаблоне при редактировании.
Опция *Отправлять каждый день* работает только для шаблона "Предупреждение за n дней", при её активации сообщение отправится за количество дней указанных в настройках оператора связи в поле "Предупреждать о лимите за n дней", а так же каждый день до даты когда он будет заблокирован.
h3. Создание с привязкой к оператору связи
При ведении в биллинге нескольких [опраторов связи|Агентские схемы и ведение филиалов] можно создать различные шаблоны для каждого оператора. Сделать это можно в настройках конкретного оператора связи:
!2.png|border=1,width=600!
При этом шаблон сообщения отобразится в настройках биллинга. У него будет заполнено поле *"Принадлежит оператору"*. Изменить пренадлежность опретору нет возможности. Для измения пренадлежности создайте новый шаблон.

h3. Пример 1. Шаблон сообщения [сброса пароля|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=155713989]
h2. Параметры шаблона сообщений
При создания шаблона сообщений доступны параметры:
* *Текст заголовка* - тема e-mail или заголовок смс;
* *Текст шаблона* - непосредственно отправляемый текст;
* *Отправлять сообщение* - опция отвечает за то, нужно отправлять сообщение или нет;
* *Тип отправки* - указывает метод, которым будет отправлено сообщение. Методы описаны в [ниже|Система отправки сообщений (sms,email и тд). Шаблоны сообщений#Способы отправки сообщений];
* *Отправлять каждый день* - работает только для шаблона "Предупреждение за n дней", при её активации сообщение отправится за количество дней указанных в настройках оператора связи в поле "Предупреждать о блокировке за n дней", а так же каждый день до даты когда он будет заблокирован;
* *Статус абонента* - сообщения будут отправлены только абонентам со [статусом|Статусы абонентов];
* *Отправлять абоненту с типом договора* - тип: юридические или физические лица;
* *Использовать шаблонизатор django* - включает использование набора переменых [django|Система отправки сообщений (sms,email и тд). Шаблоны сообщений#Использование переменных Django].


!Выделение_001.jpg|border=1!


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

В шаблонах можно использовать следующие параметры:
В шаблонах сообщений можно использвать два набора переменных - стандартные перемнные и переменные шаблонизатора [django|Система отправки сообщений (sms,email и тд). Шаблоны сообщений#Использование переменных Django]. В одном шаблоне сообщений можно использовать либо стандартные переменные, либо и переменные шаблонизатора django. Ниже перечислены стандартные переменные:
* %(name)s - ФИО абонента;
* %(contract_number)s - номер договора;
* %(balance)s - текущий баланс;
{info}
Для округления баланса до целого значения используйте параметр %(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 - проверочный код для [сброса пароля Личного кабинета|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=155713989]
{info}
%(gen_pwd)s - это пароль всегда от *первой* учетной записи
* %(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_home)s - адрес абонета, который создал заявку в helpdesk
* %(enough_to_date)s - дата [хватит денег до|Финансовые операции. Учет НДС#Прогнозируемая дата блокировки]
* %(psw_token)s - проверочный код для [сброса пароля личного кабинета|Восстановление пароля к личному кабинету]
{info}
%(gen_pwd)s - это пароль всегда от *первой* учетной записи.
{info}

А также любые *поля* абонента, тарифа, счета и прочих данных, отображаемых на вкладке "Информация" в карточке абонента. Названия переменных можно взять из описания моделей в [CarbonBilling:API REST v2.0]
Пример:
{code:title=Шаблон}
Уважаемый Абонент! Ваши персональные данные: ФИО: %(name)s, Дата выставления Акта: %(next_auto_acount)s, Код в 1С: %(code1c)s, Дата начала предоставления услуг: %(activate_date)s, Лицевой счет: %(account_id)s, Тариф: %(tarif_name)s, Оператор связи: %(operator_name)s.
{code}
{code:title=Сообщение}
Уважаемый Абонент! Ваши персональные данные: ФИО: Новый абонент, Дата выставления Акта: 2017-11-01 00:00:00, Код в 1С: 1sTESTcode, Дата начала предоставления услуг: 2017-10-01 00:00:00, Лицевой счет: 10001319, Тариф: Анлим 0мб, Оператор связи: ООО Лучший провайдер.
{code}

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

Шаблонизатор django содержит более широкий набор переменных. При его использвании можно указать любые *поля* абонента, тарифа, счета и прочих данных, отображённых на вкладке "Информация" в карточке абонента. Названия переменных можно взять из описания моделей в [CarbonBilling:API REST v2.0]. Доступны следующие модели:
* Abonents
* FinanceOperations

Так же можно получить данные из других моделей используя обратные ссылки. Например, получить значения счётчиков трафика.
Например: {code}
{code}Уважаемый Абонент! Ваши персональные данные: ФИО: "%(name)s", Дата выставления Акта: "%(next_auto_acount)s", Код в 1С: "%(code1c)s", Дата начала предоставления услуг: "%(activate_date)s", Лицевой счет: %(account_id)s, Тариф: "%(tarif_name)s", Оператор связи: "%(operator_name)s"{code}
Будет отправлено сообщение приблизительно следующего содержания:
{code}Уважаемый Абонент! Ваши персональные данные: ФИО: "Новый абонент", Дата выставления Акта: "2017-11-01 00:00:00", Код в 1С: "1sTESTcode", Дата начала предоставления услуг: "2017-10-01 00:00:00", Лицевой счет: 10001319, Тариф: "Анлим 30мб", Оператор связи: "ООО Лучший провайдер"{code}
{{ abonent.abonent_id_trafcounters }}
{code}

*Текст заголовка* \- тема e-mail или заголовок смс.
*Текст шаблона* \- непосредственно отправляемый текст.
Пример использования обратной ссылки для отправки в сообщении логина и пароля от учетной записи с типом Internet:
{code}
{% for user in abonent.abonent_id_users.all %}
{% if user.service_type_id == 1 %}
Ваш логин: {{ user.login }}
Ваш новый пароль: {{ user.gen_pwd }}
{% endif %}
{% endfor %}
{code}
Переменные оператора связи можно получить из переменной *Operator*. Например имя оператора связи:
{code}
{{ operator.name }}
{code}

h2. Использование переменных Django
Если вы хотите использовать другие модели, обратитесь в [техническую поддержку|https://helpdesk.carbonsoft.ru].

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

!message_django_01.png|border=1!

Формат переменной. Например, номер договора абонента:
{code}
{{ abonent.contract_number }}
{code}

При включении опции "Использовать шаблонизатор django" можно использовать математические функции django. Например, вычислить сумму, которую должен внести абонент:
{code}
{% load mathfilters %}Обслуживание по л/с {{ abonent.contract_number }} приостановлено. Внесите не менее {% if total_abonpay <= BALANCE %}0{% else %}{{ total_abonpay|sub:BALANCE }}{% endif %} руб.
{code}
Также можно обрезать значение переменной(в примере ниже обрезаются последние 9 знаков). Например для того, чтобы отправить в сообщении только дату из поля Хватит денег до, без времени:
{code}
Денег хватит до {{ enough_to_date|slice:":-9" }}
{code}
В шаблонизаторе django так же можно использвать переменные из стандартного набора. Для этого укажите их в фомате django:
{code:title=Формат стандартного набора}
%(text)s
{code}
{code:title=Формат django}
{{ text }}
{code}

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

h32. Отправитель

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

* Если сообщение системное, например у пользователя кончились деньги на счёте, то в поле отправитель будет указан e-mail, принадлежащий Оператору связи.

* Если сообщение отправлялось вручную с помощью веб-интерфейс администратора Carbon Billing 5, то отправителем будет указан e-mail администратора системы, который это сообщение отправил;

* Если данные поля не заполнены, отправителем будет почта вида root@www.example.com, где www.example.com - доменное имя главного внешнего интерфейса.

{anchor:send_message}

h2. Пример 1. Шаблон сообщения [сброса пароля|Восстановление пароля к личному кабинету]

!Выделение_001.jpg|border=1!

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

Настройте исправный DNS-сервер в меню [базового модуля|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=155353709] по статье [Настройка DNS|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=155353741#%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%28%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B%D1%81%D0%B5%D1%82%D0%B8%29-%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0DNS]


h3. Ошибка: Can't send:(550, '5.1.1 < >: Recipient address rejected: User unknown in local recipient table')
{code}
2021-05-24 09:02:14,562 - worker - msg_lib - INFO - Отправляем email сообщение абоненту:VIP_client
2021-05-24 09:02:14,570 - worker - msg_lib - ERROR - Can't send:{u'\u0065\u006d\u0061\u0069\u006c': (550, '5.1.1 < >: Recipient address rejected: User unknown in local recipient table')}{code}
Проверьте, корректно ли указан "Email для оповещений:" в карточке абонента.

h3. Не отправляются сообщения Telegram, в логе ошибка "Name or service not known"