Модуль рассылки Sender
Модуль рассылки Sender - логическая тарнсформация скрипта рассылки от ForBill, который долгие годы успешно использовался и используется нашими клиентами. Данный модуль включил в себя многие пожелания и идеии клиентов которые были собраны за время эксплуатации скрипта. Одно из главных новшеств это то что модуль получил гибкий интерфейс настроек рассылки из админки.
Основные новшества:
- Рассылка по событиям (пополнение счета, крон, смена тарифа, и т.д)
- Возможность составлять свои шаблоны текстовых сообщений
- "Правильная" рассылка за n-дней до отключения с учетом всей бизнесс логики биллинга
- Возможность составлять сложные шаблоны рассылки с помощью конструктора. К примеру "на балансе < 10" + "активна услуга смс рассылка"
Терминология
- шаблоны - справочник загаотовленных текстовых шаблонов используемых для рассылки сообщений. Подерживаются переменные которые можно использовать в тексте.
- условия - конструктор условий согласно которым будет происходить рассылка
- событие - событие в жизни абонента которое служит тригером для проверки условия на рассылку.
- задание - подготовленные к рассылке записи в базе данных с успешно сработанными "условиями"
- обработчик рассылки - консольная команда которая запускает обработчик "заданий".
- обработчик создания условий - консольная команда которая запускает создание "заданий" и обработку "условий" с типом событие "Без события. CRON". Используется к примеру для рассылки за "n-дней"
Консольные команды
- sender_create_jobs - обработчик создания заданий с типом событие "Без события. CRON". Данная команда добавит задания на рассылку для команды sender_run_jobs
- sender_run_jobs - обработчик который запускает рассылку сообщений по ранее подготовленным заданиям. Фактически она будет рассылать подготовленные тексты смс сообщения из заданий
sender_create_jobs - данную команду можно ставить в CRON на 9:00 -10:00 утра когда вы планируете выполнить рассылку по абонентам, к примеру за "n-дней".
Логика работы
Рассылка в модуле происходит следующим образом: команда sender_run_jobs запускает в работу подготовленные ранее задания.
Задания могут быть созданы двумя способами:
- В ручную - запуском команды sender_create_jobs которая обработает условия конструктора с типом события "Без События.CRON"
- Автоматически - срабатыванием события у абонента с последующей проверкой на соответствие условий конструктора по конкретному абоненту. К примеру: Абонент пополнил счет. Срабатывает событие "Пополнение счета", модуль ищет все шаблоны с данным типом условия, проверяет условия, если условия удовлетворяются создается запись в задание на рассылку.
Поддерживаемые события
- Без события. CRON - данный тип события обрабатывается запуском в ручную команды sender_create_jobs
- Пополнение счета - пополнение счета абонента
- Подключение подписки - подключения подписки (услуги)
- Подключение Real IP - подключение услуги "Реальный IP"
- Смена тарифа - смена тарифного плана у абонента
- Смена тарифа. С большей абонплатой" - смена тарифного плана абонента с большей абонплатой
- Смена тарифа. С меньшей абонплатой" - смена тарифного плана абонента с большей абонплатой
Справочник "Sender Шаблоны"
Данный справочник создан для шаблонов текстовых сообщений.
Пример шаблона:
Уважаемый абонент, услуга Интернет будет отключена через %left_day%-дня. На вашем счете %deposit% %currency%. Пополните свой счет.
Поддерживаемые переменные:
- %service_name% - Название подписки. Значение передается только для события "Подключение подписки"
- %new_packet% - Название нового тарифа. Значение передается только для события "Смена тарифа"
- %old_packet% - Названине старого тарифа. Значение передается только для события "Смена тарифа"
- %left_day% - кол-во дней дней до отключения интернета
- %pay_amount% - сумма пополнения счета. Значение передается только для события "Пополнение счета"
- %rec_summa% - рекомендованная сумма пополнения
- %uid% - UID абонента
- %fio% - ФИО абонента
- %deposit% - значение текущего баланса абонента
- %credit% - значение текущего кредита абонента
- %login% - логин абонента
- %password% - пароль абонента
- %dogovor% - номер договора абонента
- %currency% - валюта (из настроек биллинга)
Справочник "Sender Условия"
Данный справочник предназнчен для создания условий на рассылку.
- Активировать - опция отвечающая за то, что будет или нет обработчик модуля обрабатывать данное условие
- Название - название условия
- Событие - событие по которому данное условие будет срабатывать
- Период - период за который будет производится проверка кол-во раз выполнения условия для абонента
- Кол-во раз за период - кол-во раз выполнения данного условия у абонента. Полезна когда есть необходимость к примеру ограничить кол-во рассылок определенного типа в день/месяц/неделю/год. Для того чтобы отключить проверку на "кол-во раз за период" необходимо указать значение равное = 0
- Шаблон - текстовый шаблон рассылки из справочника "Sender Шаблоны"
- Условия - дополнительные условия
По мимо срабатывания самого события, модуль имея гибкую логику, позволяя добавить еще дополнительные условия, которым должен удовлетворять абонент в данный момент.
Сущности:
- Дата договора (прошло дней) - кол-во дней прощедшие со дня заключения договора
- Сумма пополнения - сумма пополнения счета. Данный параметр передается только при событии "Пополнение счета", во всех других случаях значение равно 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, абоненту будет создавать задание на рассылку с текстом из указанного шаблона.
Кейс #2. Рассылка за n-дней
Задание: Выполнять смс оповещение об отключении абонета за 3 дня
Решение: Создаем условие на рассылку где значение "Кол-во дней до отключения" равно = 3 и событие "Нет события. CRON"
Итог: При запуске обработчика условий без события командой sender_create_jobs будет создано задание на рассылку всем абонентам у которых кол-во дней до отключения соответствует 3 дням.