====== Модуль рассылки Sender ====== Модуль рассылки Sender - логическая тарнсформация скрипта рассылки от ForBill, который долгие годы успешно использовался и используется нашими клиентами. Данный модуль включил в себя многие пожелания и идеии клиентов которые были собраны за время эксплуатации скрипта. Одно из главных новшеств это то что модуль получил гибкий интерфейс настроек рассылки из админки. Основные новшества: * Рассылка по событиям (пополнение счета, крон, смена тарифа, и т.д) * Возможность составлять свои шаблоны текстовых сообщений * "Правильная" рассылка за n-дней до отключения с учетом всей бизнесс логики биллинга * Возможность составлять сложные шаблоны рассылки с помощью конструктора. К примеру "на балансе < 10" + "активна услуга смс рассылка" ===== Терминология ===== * **шаблоны** - справочник загаотовленных текстовых шаблонов используемых для рассылки сообщений. Подерживаются переменные которые можно использовать в тексте. * **условия** - конструктор условий согласно которым будет происходить рассылка * **событие** - событие в жизни абонента которое служит тригером для проверки условия на рассылку. * **задание** - подготовленные к рассылке записи в базе данных с успешно сработанными "условиями" * **обработчик рассылки** - консольная команда которая запускает обработчик "заданий". * **обработчик создания условий** - консольная команда которая запускает создание "заданий" и обработку "условий" с типом событие "Без события. CRON". Используется к примеру для рассылки за "n-дней" ===== Консольные команды ===== * **sender_create_jobs** - обработчик создания заданий с типом событие "Без события. CRON". Данная команда добавит задания на рассылку для команды sender_run_jobs * **sender_run_jobs** - обработчик который запускает рассылку сообщений по ранее подготовленным заданиям. Фактически она будет рассылать подготовленные тексты смс сообщения из заданий **sender_run_jobs** - данную команду можно ставить в 5-ти минутный CRON. \\ **sender_create_jobs** - данную команду можно ставить в CRON на 9:00 -10:00 утра когда вы планируете выполнить рассылку по абонентам, к примеру за "n-дней". ===== Логика работы ===== Рассылка в модуле происходит следующим образом: команда **sender_run_jobs** запускает в работу подготовленные ранее задания. Задания могут быть созданы двумя способами: * **В ручную** - запуском команды sender_create_jobs которая обработает условия конструктора с типом события "Без События.CRON" * **Автоматически** - срабатыванием события у абонента с последующей проверкой на соответствие условий конструктора по конкретному абоненту. К примеру: Абонент пополнил счет. Срабатывает событие "Пополнение счета", модуль ищет все шаблоны с данным типом условия, проверяет условия, если условия удовлетворяются создается запись в задание на рассылку. ===== Поддерживаемые события ===== {{:billing:preferences:apps:событие.png?400|}} \\ * **Без события. CRON** - данный тип события обрабатывается запуском в ручную команды sender_create_jobs * **Пополнение счета** - пополнение счета абонента * **Подключение подписки** - подключения подписки (услуги) * **Подключение Real IP** - подключение услуги "Реальный IP" * **Смена тарифа** - смена тарифного плана у абонента * **Смена тарифа. С большей абонплатой"** - смена тарифного плана абонента с большей абонплатой * **Смена тарифа. С меньшей абонплатой"** - смена тарифного плана абонента с большей абонплатой ===== Справочник "Sender Шаблоны" ===== {{:billing:preferences:apps:шаблоны_условий.png?300|}} \\ {{:billing:preferences:apps:шаблон_1.png?500|}} \\ Данный справочник создан для шаблонов текстовых сообщений. \\ \\ **Пример шаблона**: Уважаемый абонент, услуга Интернет будет отключена через %left_day%-дня. На вашем счете %deposit% %currency%. Пополните свой счет. **Поддерживаемые переменные:** * **%service_name%** - Название подписки. Значение передается только для события "Подключение подписки" * **%new_packet%** - Название нового тарифа. Значение передается только для события "Смена тарифа" * **%old_packet%** - Названине старого тарифа. Значение передается только для события "Смена тарифа" * **%left_day%** - кол-во дней дней до отключения интернета * **%pay_amount%** - сумма пополнения счета. Значение передается только для события "Пополнение счета" * **%rec_summa%** - рекомендованная сумма пополнения * **%uid%** - UID абонента * **%fio%** - ФИО абонента * **%deposit%** - значение текущего баланса абонента * **%credit%** - значение текущего кредита абонента * **%login%** - логин абонента * **%dogovor%** - номер договора абонента * **%currency%** - валюта (из настроек биллинга) ===== Справочник "Sender Условия" ===== {{:billing:preferences:apps:условия.png?400|}} \\ Данный справочник предназнчен для создания условий на рассылку. {{:billing:preferences:apps:условие_карточка.png?400|}} \\ * **Активировать** - опция отвечающая за то, что будет или нет обработчик модуля обрабатывать данное условие * **Название** - название условия * **Событие** - событие по которому данное условие будет срабатывать * **Период** - период за который будет производится проверка кол-во раз выполнения условия для абонента * **Кол-во раз за период** - кол-во раз выполнения данного условия у абонента. Полезна когда есть необходимость к примеру ограничить кол-во рассылок определенного типа в день/месяц/неделю/год. Для того чтобы отключить проверку на "кол-во раз за период" необходимо указать значение равное = 0 * **Шаблон** - текстовый шаблон рассылки из справочника "Sender Шаблоны" * **Условия** - дополнительные условия \\ По мимо срабатывания самого события, модуль имея гибкую логику, позволяя добавить еще дополнительные условия, которым должен удовлетворять абонент в данный момент. {{:billing:preferences:apps:условие.png?400|}} \\ Сущности: * **Дата договора (прошло дней)** - кол-во дней прощедшие со дня заключения договора * **Сумма пополнения** - сумма пополнения счета. Данный параметр передается только при событии "Пополнение счета", во всех других случаях значение равно 0 * **ID тарифа. Текущий** - ID текущего тарифа абонента, из справочника Тарифов * **ID тарифа. Старый** - ID тарифа который был до смены тарифа. Данный параметр передается только при событии "Смена тарифа", во всех других случаях значение равно 0 * **ID подключаемой подписки** - ID подключаемой подписки. Данный параметр передается только при событии "Подключение подписки", во всех других случаях значение равно 0 * **ID активной подписки из ...** - ID активной(оплаченной) подписки абонента. В данной сущности будут работать только операторы сравнения IN(...) и NOT IN(...) * **Баланс пользователя** - значение текущего баланса абонента * **Интернет включен (1/0)** - текущее состояние галочки "Интернет" в карточке абонента * **Дата. Текущее число месяца** - текущее число месяца * **Кол-во дней предоплаты** - кол-во дней предоплаты абонентом при пополнениии счета. Данный параметр зависит от суммы пополнения счета и передается только при событии "Пополнение счета", во всех других случаях значение равно 0 * **Состояние договора (0,1,2,3)** - текущее состояние договора в карточке абонента: 0- нет данных, 1- действует, 2- приостановлен, 3- закрыт * **Статус абонента** - статус абонента. Возможные значения: 1-обычный, 2-замороженный, 3-отключенный, 4-удаленный * **Интернет отключится через (дней)** - кол-во дней через которые отключится интернет. Значение берется из карточки абонента * **UID абонента** - UID абонента * **ID субпровайдера** - ID субпровайдера, если абонент не принадлежит субпровайдеру значение равно 0 * **Оплачен полный месяц тарифа** - абонент полностью оплатил месячный тариф (рассчитан для Каждый месяц, тип 4), 1 - оплатил, 0 - не оплатил \\ Операторы сравнения: * **>** - больше * **>=** - больше или равно * **=** - равно * **!=** - не равно * ** <=** - меньше или равно * **<** - меньше * **IN(...)** - значение входит в список. Значения перечисляются через запятую * **NOT IN(...)** - значения не входят в список. Значения перечисляются через запятую ===== Примеры ===== ==== Кейс #1. Пополнение счета. Платная услуга смс-информирования ==== **Задание:** Выполнять смс оповещение о пополнение счета при активной подписке "Пополнение счета" **Решение:** Создаем условие на рассылку где ID подписки "Смс информирование" равно = 123. **Итог:** При пополнении счета и наличии активной подписки с ID=123, абоненту будет создавать задание на рассылку с текстом из указанного шаблона. {{:billing:preferences:apps:sender_payment.png?400|}} ==== Кейс #2. Рассылка за n-дней ==== **Задание:** Выполнять смс оповещение об отключении абонета за 3 дня **Решение:** Создаем условие на рассылку где значение "Кол-во дней до отключения" равно = 3 и событие "Нет события. CRON" **Итог:** При запуске обработчика условий без события командой sender_create_jobs будет создано задание на рассылку всем абонентам у которых кол-во дней до отключения соответствует 3 дням. {{:billing:preferences:apps:case_2.png?400|}}