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

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

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

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

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

* SMS
* E-mail
* Telegram
* PUSH

Для её работы следует настроить шаблоны и параметры отправки, для каждого метода свои.
Устаревшие и более не используемые способы отправки (названия оставлены для совместимости):
* Agent
* Winpop
* WhatsApp

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

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

# [Настройте смс-шлюз|#configure_gate].;
{info}Если у Вас *демо* \- то уже настроен шлюз Carbon и этот шаг можно пропустить.{info}
# [Укажите у оператора связи адрес почты отправителя|#configure_isp];
# [Настройте шаблоны сообщений|#configure_messages]. Уже есть предуастановленные почти по всем шаблонам.;
# Заполните в карточке абонента реквизиты: "*Email для оповещений*" и "*Номер SMS для оповещений*" (можно что-то одно)
# [Заполните в карточке абонента реквизиты|CarbonBilling:Создание абонента. Заведение абонента. Работа с абонентами. Редактирование абонентов#fill_sms_email_fields]: "*Email для оповещений*" и "*Номер SMS для оповещений*" (можно что-то одно);
# [Отправьте тестовое сообщение|#send_message].

h1. Настройка системы и методов отправки
!demon.png|border=1,width=800!

h2. Настройка SMS-шлюза
h2. Настройка SMS рассылки

# Откройте вкладку "*Настройка сообщений*" в карточке оператора связи. Нажмите кнопку "*Редактировать*" (пиктограмма в виде карандашика в колонке "Действие"
\\
\\ !smsgate_1.png|border=1,width=800!\\
# Настройте требуемые параметры и нажмите "*Сохранить*".
\\
# Снимите опцию "*Использовать СМС шлюз Carbon*" и нажмите "*Сохранить*", Вас автоматический перенаправит на вкладку "*Настройка сообщений*" в карточке оператора связи
\\ !smsgate_5.png|border=0,width=400!
\\
\\ !smsgate_2.png|border=1,width=450!\\
h4. Способы отправки смс:
\\
# Снова нажмите кнопку "*Редактировать*"
\\
\\ !smsgate_3.png|border=1,width=700!\\
\\
# Настройте требуемые параметры и нажмите "*Сохранить*". Обязательными являются:
\\
\\
# POST. Обязательные параметры:
#* Адрес СМС шлюза
#* Post параметры
#* MD5 подпись
\\
\\ !smsgate_4.png|border=1,width=450!
# GET - данные для GET-запроса нужно записать в поле "Post параметры".
# Ростелеком JSON - игнорирует поле "Post параметры" и поле "MD5 подпись".

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

* *Адрес СМС шлюза*
* *Post параметры*
* *Тип запроса к серверу* \- Доступны:
** POST
** GET
** Ростелеком JSON
* *Заголовок сообщения* \- автоматический добавляемая тема email-сообщения, на случай если она не указана в шаблоне или в форме отправки сообщения.
* *Предупреждать о лимите блокировке за n дней* \- количество дней для шаблона сообщения "Предупреждение за n дней" (описано далее в статье).
{note:title=Важно:}
Опция "Предупреждать о блокировке за n дней" не работает вместе с включенной опцией "[Льготный период оплаты (Число месяца, до которого не проверять превышение баланса)|http://docs.carbonsoft.ru/x/aQIFAw]
{note}
* *Количество попыток отправки* \- количество попыток в случае, если сервер, на который передаётся сообщение, не отвечает.
* *Начало тихого часа* \- начала периода времени, когда сообщения не отправляются (работает и на sms и на email).
* *Окончание тихого часа* \- конец периода времени, когда сообщения не отправляются (работает и на sms и на email).
* *MD5 подпись*
* *Убирать "*{*}+" + из номера{+}* +\- автоматический убирает "+" + в начале телефонного номера (например, "79121234567" вместо "+79121234567") если этого требует sms-шлюз
* *Логин сервера sms* \- логин basic авторизации sms сервера.
* *Пароль сервера sms* \- пароль basic авторизации sms сервера.
{info}
Для включения basic-авторизации необходимо одновременно заполнить поля логин\праоль сервера sms.
{info}
* *Имя отправителя sms* \- Имя отправителя. Используется только для типа отправки *Ростелеком JSON*.
{note:title=Важно:}
SMS-шлюз должен уметь принимать параметры отправляемого сообщения GET-запросом по протоколу http (или https). Иными словами, должна быть возможность отправки сообщения путём вставки запроса в адресную строку браузера.
SMS-шлюз должен уметь принимать параметры отправляемого сообщения по протоколу http (или https). Отправка производится POST или GET запросом.
{note}

* {color:#008000}%(text)s{color} \- текст сообщения.

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

h2. Примеры интеграции с SMS-шлюзами.
{info} Поле *Предупреждение за n дней* будет работать для всех типов отправки сообщений с шаблоном *Предупреждение за n дней*
{info}

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

h3. [SMSC|https://smsc.ru/?ppcarbon|https://smsc.ru/?ppcarbon]

*Сайт компании:* *[smsc.ru|https://smsc.ru/?ppcarbon|https://smsc.ru/?ppcarbon]*

Обязательные параметры:
# Адрес СМС шлюза:
{code}
https://smsc.ru/sys/send.php?
{code}

# Post параметры:
{code}
charset=utf-8&login='Ваш логин'&psw='Ваш пароль'&phones=%sms%&mes=%text%
charset=utf-8&login=Ваш логин&psw=Ваш пароль&phones=%sms%&mes=%text%
{code}

{note}

h3. Простор СМС
h3. [Digital Direct|https://digital-direct.ru]

*Сайт компании:* *[digital-direct.ru|https://digital-direct.ru]*

Обязательные параметры:
# Адрес СМС шлюза:
{code}
https://direct.i-dgtl.ru/api/v1/message
{code}
# Тип запроса к серверу
{code}
Digital Direct JSON
{code}
# Пароль сервера sms
{info}
В ЛК Digital Direct необходимо получить ключ АПИ и вписать его в поле "Пароль сервера СМС"
{info}
{note}
*Важно:* если ключ будет длиннее 128 символов, обратитесь к нам{note}
# Имя отправителя sms
Здесь нужно указать имя согласованное с провайдером (настраивается в ЛК Digital Direct)
# "Убирать "+" из номера"
Здесь нужно поставить галочку.
# "Post параметры"
При необходимости передачи доп. параметров: записать их в поле "Post параметры" в формате JSON, при этом убедиться что в логе */app/asr_billing/var/log/msgd.log* нет ошибок отправки


h3. [Простор СМС|https://prostor-sms.ru]

*Сайт компании:* *[prostor-sms.ru|https://prostor-sms.ru]*

Обязательные параметры:
# Адрес СМС шлюза:
{code}
http://gate.prostor-sms.ru/send/
{code}
# Post параметры:
{code}
login='Ваш логин'&password='Ваш пароль'&phone=%sms%&text=%text%
{code}

h3. [SMSPILOT.RU|https://smspilot.ru]

*Сайт компании:* *[smspilot.ru|https://smspilot.ru]*

[Описание интеграции в документации SMSPILOT.RU|https://smspilot.ru/faq.php#q61]




Обязательные параметры:
# Адрес СМС шлюза:
{code}
http://smspilot.ru/api.php
{code}
# Post параметры:
{code}
send=%text%&to=%sms%&apikey=XXXYYYZZZ
{code}

Вместо *XXXYYYZZZ* скопируйте API-ключ из настроек: [Личный кабинет|https://smspilot.ru/my.php] \-> Настройки \-> [Настройки API|https://smspilot.ru/my-settings.php#api]

На стороне sms-шлюза Вы [должны быть подключены как бизнес-клиент|https://smspilot.ru/faq.php#q24], либо скопировать шаблоны из Carbon Billing 5 в "[Шаблоны|https://smspilot.ru/my-template.php]" в личном кабинете SMSPILOT.RU

{anchor:configure_isp}

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

На стороне sms-шлюза Вы [должны быть подключены как бизнес-клиент|https://smspilot.ru/faq.php#q24], либо скопировать шаблоны из Carbon Billing 5 в "[Шаблоны|https://smspilot.ru/my-template.php]" в личном кабинете SMSPILOT.RU
*Сайт компании:* *[rt.ru|https://msk.rt.ru]*

Обязательные параметры:
# Адрес СМС шлюза:
{anchor:configure_isp} {code}
https://sms.rt.ru/api/v2/send_message
{code}
# Тип запроса к серверу
{code}
Ростелеком JSON
{code}
# Логин сервера sms
# Пароль сервера sms
# Имя отправителя sms

h2. Настройка отправки Email
h3. [SemySMS|https://semysms.net]

*Сайт компании:* *[semysms.net|https://semysms.net/]*

[Описание интеграции в документации SemySMS|https://semysms.net/api.php]


Обязательные параметры:
# Адрес СМС шлюза
{code}
https://semysms.net/api/3/sms.php
{code}
# Тип запроса к серверу
{code}
POST
{code}
# Post параметры
{code}
token=Ваш токен&device=Код устройства&phone=%2B%sms%&msg=%text%
{code}

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

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

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

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

* SMTP Логин
* SMTP Шифрование TSL
* SMTP расширенное журналирование - Подробное журналирование SMTP-соединений

{info} Чтобы вернуть настройки по умолчанию, необходимо в поле "SMTP Сервер" вписать "localhost", а поля "SMTP Порт", "SMTP Логин" и "SMTP Пароль" оставить пустыми. {info}
{anchor:configure_messages}

h1. Настойка шаблонов сообщений
h3. Отправка Email через Google

!2.png|border=1,width=600!
Подробную информацию по интеграцию сторонних почтовых клиентов с Google, Вы можете найти в [справке сервиса|https://support.google.com/a/answer/176600?hl=ru].

Такие параментры должны работать:
* *Адрес сервера*: smtp.gmail.com
* *Порт*: 587
* *SMTP Шифрование TSL*: включено

h3. Отправка Email через Yandex

Подробную информацию по интеграцию сторонних почтовых клиентов с Google, Вы можете найти в [справке сервиса|https://yandex.ru/support/mail/mail-clients/others.html].

Такие параментры должны работать:
* *Адрес сервера*: smtp.yandex.ru
* *Порт*: 465
* *SMTP Шифрование SSL*: включено
* *SMTP Шифрование TSL*: выключено

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

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


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

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


h2. А что с WhatsApp?

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

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

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

Подробней об условиях Вы можете уточнить у партнёра Facebook в России, компании [Infobip|https://www.infobip.com/products/whatsapp-business]. Если Вы сочтёте их условия приемлемыми, напишите нам - мы реализуем интеграцию в Carbon Billing 5.

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

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

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

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

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

h2. Создание шаблона

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

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

Опция *Отправлять сообщение* отвечает за то нужно отправлять сообщение или нет. Эту галочку можно также поставить в самом шаблоне при редактировании.
h2. Параметры шаблона сообщений
При создания шаблона сообщений доступны параметры:
* *Текст заголовка* - тема e-mail или заголовок смс;
* *Текст шаблона* - непосредственно отправляемый текст;
* *Отправлять сообщение* - опция отвечает за то, нужно отправлять сообщение или нет;
* *Тип отправки* - указывает метод, которым будет отправлено сообщение. Методы описаны в [ниже|Система отправки сообщений (sms,email и тд). Шаблоны сообщений#Способы отправки сообщений];
Опция * *Отправлять каждый день* - работает только для шаблона "Предупреждение за n дней", при её активации сообщение отправится за количество дней указанных в настройках оператора связи в поле "Предупреждать о лимите блокировке за n дней", а так же каждый день до даты когда он будет заблокирован.;
* *Статус абонента* - сообщения будут отправлены только абонентам со [статусом|Статусы абонентов];
* *Отправлять абоненту с типом договора* - тип: юридические или физические лица;
* *Использовать шаблонизатор django* - включает использование набора переменых [django|Система отправки сообщений (sms,email и тд). Шаблоны сообщений#Использование переменных Django].

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 - сумма, которая указана в пороге включения(тариф);
%(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_comment)s - [стандартный реквизит|Реквизиты] "Комментарий"
{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

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

*Текст заголовка* \- тема e-mail или заголовок смс.
*Текст шаблона* \- непосредственно отправляемый текст.
Так же можно получить данные из других моделей используя обратные ссылки. Например, получить значения счётчиков трафика.
{code}
{{ abonent.abonent_id_trafcounters }}
{code}

Пример использования обратной ссылки для отправки в сообщении логина и пароля от учетной записи с типом 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}

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

Включать шаблонизатор 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. Тип сообщения. События.

* *Достигнут порог предупреждения* \- при достижении порога предупреждения (порог предупреждения из опций тарифа);
* *Сообщение из HelpDesk* \- при создании заявки от абонента в HelpDesk (приходит инженерам Helpdesk);
* *Сообщение из CRM* \- при создании задачи в CRM (приходит ответственному исполнителю).;
* *Предупреждение за n дней* \- за n дней до даты когда абонент будет заблокирован;
* *Создание учетной записи из услуги* \- отправляется при создании учетной записи при подключении услуги;
* *Данные для HotSpot* \- данные для авторизации в [HotSpot|Софт HotSpot];
* *Комментарий к заявке HelpDesk* \- при создании коментария к заявке HelpDesk (приходит абоненту);
* *Анонимная заявка с вэб-сайта* \- отправляется при создании [заявки на подкючение|Заявка на подключение];
* *Поздравление* \- поздравление с праздником, подробнее в [статье|Поздравления];
* *Сброс пароля в Личном кабинете* \- данные для сброса пароля от Личного кабинета, подробнее в [статье|Восстановление пароля к личному кабинету].

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

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

!message_template_send_types.png|border=1,height=500!

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

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

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. Отправка сообщений

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

Для отправки сообщений непосредственно одному из абонентов необходимо зайти в раздел Абоненты, выбрать абонента, вкладка Отправить сообщения. !send_message.png|border=1,width=701,height=184!
Выбирается метод отправки и выбирается шаблон сообщения. Для отправки произвольного текста, следует создать шаблон с типом *"Ручная отправка"* и текстом шаблона *%(text)s*

Если выбрать "Метод отправки" и он отличается от того, что настроен в шаблоне сообщения (поле "Тип отправки"), то будет использоваться метод, выбранный на странице создания сообщения.
Например, если в шаблоне настроен тип "SMS", а на форме не выбран метод ("---"), то сообщение отправится только по SMS. Если в шаблоне настроен тип "SMS", но при создании сообщения выбрать "Email", то сообщение отправится только по Email.
!send_message.png|border=1,width=701,height=184!

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

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

# В момент отправки запускаем лог и видим следующее:
{code:title=tail -f /app/asr_billing/var/log/msgd.log | grep -A2 'Отправляем'}
{code:title=Команда}tail -f /app/asr_billing/var/log/msgd.log | grep -A2 'Отправляем'{code}
{code:title=Пример вывода с ошибкой}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
{code}
# Проверим настройки почтового сервера. Если настройки стандартные, нужно проверить встроенный почтовый сервер на localhost. Проверим, запущен ли он:
{code:title=service postfix status}
master остановлен
{code}
{code:title=Команда}service postfix status{code}
{code:title=Пример вывода, сервер остановлен}master остановлен{code}
# Перезапускаем встроенный почтовый сервер:
{code:title=service postfix restart}
{code:title=Команда}service postfix restart{code}
{code:title=Пример вывода, сервер перезапущен (остановлен он был ранее)}Останавливается postfix: [СБОЙ ]
Запускается postfix: [ OK ]
{code}

h3. Не отправляются email-сообщения, используем сторонний smtp сервер, по логу не ясно в чём проблема

Добавьте больше информации в лог:
# Включите опцию расширенного логирования в [настройках|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=49087090#Системаотправкисообщений(sms%2Cemail).Шаблонысообщений-НастройкаотправкиEmail]
!smtp01.png|border=1!
# Перезапустите службу отправки сообщений, для применения настроек
{code}
chroot /app/asr_billing/ service msgd restart
{code}
# Сделайте пробную отправку сообщения
!smtp02.png|border=1!
Выберите метод отправки smtp. Текст и тема произвольные.
!smtp04.png|border=1!
# Проследите в логе службы отправки сообщений за ходом отправки
{code}/app/asr_billing/var/log/msgd.log{code}
Пример:
{code}
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')
{code}
Произошла ошибка № 553, при отправке письма. Просмотреть коды ошибок можно в документации [Google|https://support.google.com/a/answer/3726730?hl=ru&ref_topic=1355150] на руссом или [IANA|https://www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml] на английском.
Если у вас возникнут вопросы по ошибкам в smtp диалоге, сохраните лог отправки и создайте обращение в портале [HelpDesk|https://helpdesk.carbonsoft.ru/login.php].

h3. Перестали отправляться sms-сообщения абонентам, в логе ошибка "SSL certificate problem"

Проверям лог отправки сообщений на наличие ошибок:
{code:title=Команда}grep -i 'error' /app/asr_billing/var/log/msgd.log {code}

Видим сообщение об ошибке сертификата:
{code:title=Пример вывода с ошибкой}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')
{code}
Данная ошибка означает, что биллинг не может подключиться к SMS-шлюзу из-за проблем с корневым SSL-сертификатом в chroot биллинга. Для решения проблемы необходимо обновить корневые SSL-сертификаты в chroot биллинга.
{code:title=Команды}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 {code}

h3. В логе зафиксирована ошибка Can't send message id=#######:HTTPConnectionPool(host='1.1.1.1'('Ваш IP'), port=80):
{code}
2021-09-02 08:02:16,861 - worker - msg_lib - ERROR - Can't send message id=48788: HTTPConnectionPool(host='.1.1.1.1'('Ваш IP'), port=80):-
Max retries exceeded with url: /sms/add.php (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7ff3f093b850>: -
Failed to establish a new connection: [Errno 111] Connection refused',))
{code}
Это говорит о том что не удалось установить новое соединение с смс оператором и в настоящее время невозможно отправить собщение из за превышения максимального количества повторных попыток соединения для отправки смс сообщения. Необходимо обратиться к оператору предоставляющему смс услуги.

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

{code:title=Пример записи аудита}
391045 Системные события 2020-10-19 12:41 test Добавлена запись №44011: таблица ОтправитьСообщения Изменения=([Время отправки=2020-10-20 00:00:54.314402],[Метод отправки=]
{code}
Необходимо проверить в настройках "Оператора" в разделе *Настройка сообщений* время начала и окончания "Тихого часа".

h3. Не отправляются Email-сообщения, используем собственный SMTP-сервер, в логе ошибка "Name or service not known"

{code}2021-06-30 09:33:38,863 - worker - msg_lib - INFO - SMTP params: host=smtp.my-personal-server.ru, port=465, tsl=True, ssl=True, login=info@my-personal-server.ru
2021-06-30 09:33:38,867 - worker - msg_lib - INFO - Отправляем email сообщение абоненту: Тестов Тест Тестович
2021-06-30 09:33:38,923 - worker - msg_lib - ERROR - Can't send:[Errno -2] Name or service not known{code}

Скорей всего проблема в DNS - он не настроен для биллинга, не отвечает, или отдаёт некорректный ответ.

Попробуйте отрезолвить домен SMTP-сервера из биллинга:
{code:title=chroot /app/asr_billing/ nslookup smtp.my-personal-server.ru}Server: 10.10.1.1
Address: 10.10.1.1#53

Name: smtp.my-personal-server.ru
Address: 10.10.0.1{code}
DNS-сервер вернул локальный адрес. Скорей всего ответ неверный, так как обычно у публичного SMTP-сервера будет публичный IP-адрес.

Так же ответ может не прийти вообще, если DNS-сервер недоступен в данный момент, или может его не настроили.

h4. Решение

Настройте исправный 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"

{code}2021-06-30 09:26:52,663 - worker - msg_lib - INFO - Telegram params: token=11111111111:DDDDDDDDDDDDfffffffffFFFFFFFF88888FFFFF, proxy=None
2021-06-30 09:26:53,184 - worker - msg_lib - ERROR - Ошибка запуска Telegram-бота: urllib3 HTTPError HTTPSConnectionPool(host='api.telegram.org', port=443): Max retries exceeded with url: /bot1876073174:AAFmQXtNzLk_aCFguXk6ZX0EfamGhQz9aps/getMe (Caused by NewConnectionError('<telegram.vendor.ptb_urllib3.urllib3.connection.VerifiedHTTPSConnection object at 0x7f2f8e61ea10>: Failed to establish a new connection: [Errno -2] Name or service not known',)){code}

Причина и решение такие же как для ошибки "Name or service not known" при отправке email: что-то не так с DNS-сервером или его настройкой в биллинге. Решение описано чуть выше.

h3. Ошибка в логе Chat not found
{code}2021-08-26 08:39:29,703 - worker - msg_lib - INFO - Отправка сообщения через Telegram абоненту #2731 VIP_CLIENT
2021-08-26 08:39:29,713 - worker - msg_lib - INFO - Абонент #2731 не зарегистрирован в боте
2021-08-26 08:39:29,956 - worker - msg_lib - ERROR - Can't send message #436655: Chat not found{code}
Проверьте, назначен ли абоненту TELEGRAM ID в "Реквизитах", либо сформируйте [отчет|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=175833127#Примерытехническихотчётов-Отчетсоспискомабонентов%2CподключившихоповещениечерезTelegram.SUP651766] для просмотра всех абонентов которые подключили бота.

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

Иногда во время отладки или работе с базой данных на тестовом сервере полезно отключить отправку сообщений.
# Отключите отправку в конфигурационном файле биллинга:
{code:title=Путь конфигурационному файлу}
/app/asr_billing/cfg/config
{code}
{code:title=Служба отправки сообщений включена}
msgd['enabled']='1'
{code}
{code:title=Служба отправки сообщений отключена}
msgd['enabled']='0'
{code}
# Перезапустите службу отправки сообщений для примения измений в силу:
{code}
chroot /app/asr_billing/ service msgd restart
{code}