SalesPlatform Vtiger CRM Developers Руководство Создание задачи планировщика

Материал из SalesPlatform Wiki
Перейти к: навигация, поиск

Главная страница руководства


Cистема SalesPlatform Vtiger CRM позволяет автоматически выполнять некоторые повторяющиеся Задачи с заданной частотой при помощи Планировщика Задач.
В системе имеются стандартные Задачи, которые запускает Планировщик:

Если же не достаточно имеющейся функциональности, которая заложена в стандартные Задачи, имеется возможность реализовывать Задачи программно. Для этого необходимо создать файл с 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 = )

в качестве параметров указываются:

Далее определим действия для Задачи Планировщика в файле “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).

Рис. 1: Настройка конфигурации сервера


После того, как Задача Планировщика была зарегистрирована при включении Модуля “Мой Модуль” к списку стандартных Задач Планировщика добавится Ваша Задача “MyTask” (см.Рисунок 2).

Рис. 2: Задачи Планировщика


Произведите запуск Планировщика из командной строки (или дождитесь, когда Планировщик сработает по cron):

 # sh cron/vtigercron.sh

После запуска Планировщиком Задач (в том числе Вашей), в списке записей Модуля “SMS-Уведомления” появится запись об отправке сообщения “С Днем Рождения!” на номера мобильных телефонов Контактам, у который сегодня День Рожденье (см. Рисунок 3).

Рис. 3: Модуль “SMS-Уведомления”


Можно проверить статус данной записи:

Рис. 4: Статус смс-уведомления”



Главная страница руководства

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
Документация
Разработчикам
Присоединяйтесь!
Инструменты