SalesPlatform Vtiger CRM Developers Руководство Создание задачи планировщика
Cистема SalesPlatform Vtiger CRM позволяет автоматически выполнять некоторые повторяющиеся Задачи с заданной частотой при помощи Планировщика Задач.
В системе имеются стандартные Задачи, которые запускает Планировщик:
- Обработчики
- Повторяющиеся Счета
- Отправка напоминаний Календаря
- Сканер почты
- Запланированный Импорт
- Загрузка Товаров 1С
- Обмен Заказами 1С
- Запланированные Отчеты
Если же не достаточно имеющейся функциональности, которая заложена в стандартные Задачи, имеется возможность реализовывать Задачи программно. Для этого необходимо создать файл с php-кодом (в нашем случае: MyTask.service), представляющий собой заданные действия Задачи Планировщика.
В качестве примера создадим Задачу Планировщика для Модуля “Мой Модуль”, который будет осуществлять отправку поздравления “С Днем Рождения” в виде смс-сообщения на мобильный телефон Контактам, у которых в этот день День рождения. Задача Планировщика должна запускаться один раз в сутки, выбирая всех Контактов, у которых День рождения, и отправлять им сообщения.
Для реализации такой возможности необходимо зарегистрировать Задачу Планировщика, которая будет выполнять описанную выше операцию. Зарегистрируем Задачу при включении Модуля “Мой Модуль”:
vimport('~~vtlib/Vtiger/Cron.php'); Vtiger_Cron::register('MyTask', 'modules/MyModule/task/MyTask.service', 86400, 'MyModule', 1, 1, 'Рекомендуемая частота обновления - 24 часа.');
где для регистрации Задачи используется метод “register”:
Vtiger_Cron::register($name, $handler_file, $frequency, $module = 'Home', $status = 1, $sequence = 0, $description = , $laststart = , $lastend = )
в качестве параметров указываются:
- name - название файла с php-кодом Задачи Планировщика;
- handler_file - путь к файлу, выполняющему логику задачи;
- frequency - частота в секундах с которой вызывается на выполнение задача;
- module - название Модуля;
- status - состояние метода (0 - не активен, 1 - активен, 2 - в процессе);
- sequence - номер последовательности выполнения метода планировщиком;
- description - описание метода;
- laststart - временная метка последнего запуска задачи (в секундах);
- lastend - временная метрка последнего завершения задачи (в секундах).
Далее определим действия для Задачи Планировщика в файле “MyTask.service” в директории “modules/MyModule/task/”, осуществляющие отправку сообщения (см. выше).
<?php include_once 'modules/SMSNotifier/SMSNotifier.php'; global $adb; $Result_Contacts = $adb->query("SELECT * FROM vtiger_contactdetails INNER JOIN vtiger_crmentity ON vtiger_contactdetails.contactid=vtiger_crmentity.crmid INNER JOIN vtiger_contactsubdetails ON vtiger_contactdetails.contactid=vtiger_contactsubdetails.contactsubscriptionid WHERE vtiger_crmentity.deleted=0 and '".date("d")."' = (SELECT EXTRACT(DAY FROM birthday) AS vtiger_contactsubdetails) and '".date("m")."' = (SELECT EXTRACT(MONTH FROM birthday) AS vtiger_contactsubdetails)"); //получение номеров телефонов Контактов $record_count = $adb->num_rows($Result_Contacts); $tel_array = array(); for($i=0;$i<$record_count;$i++) { $tel_array[$i] = $adb->query_result($Result_Contacts,$i,'mobile'); } //отправка сообщений SMSNotifier::sendsms("С Днем Рождения!", $tel_array, false, false, false);
Отправку сообщений проверим при помощи Модуля “SMS-Уведомления”. При отправке сообщения на мобильный телефон Контактам, у которых сегодня День Рождение, создается автоматически запись в Модуле “SMS-Уведомления”.
Для начала настройте Конфигурацию сервера из Модуля “SMS-Уведомления” (см. Рисунок 1).
После того, как Задача Планировщика была зарегистрирована при включении Модуля “Мой Модуль” к списку стандартных Задач Планировщика добавится Ваша Задача “MyTask” (см.Рисунок 2).
Произведите запуск Планировщика из командной строки (или дождитесь, когда Планировщик сработает по cron):
# sh cron/vtigercron.sh
После запуска Планировщиком Задач (в том числе Вашей), в списке записей Модуля “SMS-Уведомления” появится запись об отправке сообщения “С Днем Рождения!” на номера мобильных телефонов Контактам, у который сегодня День Рожденье (см. Рисунок 3).
Можно проверить статус данной записи: