Модуль рассылки 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"
Автоматически - срабатыванием события у абонента с последующей проверкой на соответствие условий конструктора по конкретному абоненту. К примеру: Абонент пополнил счет. Срабатывает событие "Пополнение счета", модуль ищет все шаблоны с данным типом условия, проверяет условия, если условия удовлетворяются создается запись в задание на рассылку.
Поддерживаемые события
Без события. 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% - логин абонента
%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 - не оплатил
Операторы сравнения:
Примеры
Кейс #1. Пополнение счета. Платная услуга смс-информирования
Задание: Выполнять смс оповещение о пополнение счета при активной подписке "Пополнение счета"
Решение: Создаем условие на рассылку где ID подписки "Смс информирование" равно = 123.
Итог: При пополнении счета и наличии активной подписки с ID=123, абоненту будет создавать задание на рассылку с текстом из указанного шаблона.
Кейс #2. Рассылка за n-дней
Задание: Выполнять смс оповещение об отключении абонета за 3 дня
Решение: Создаем условие на рассылку где значение "Кол-во дней до отключения" равно = 3 и событие "Нет события. CRON"
Итог: При запуске обработчика условий без события командой sender_create_jobs будет создано задание на рассылку всем абонентам у которых кол-во дней до отключения соответствует 3 дням.