Advertisement
apog

gen_autodialout_files.php

Dec 23rd, 2014
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.20 KB | None | 0 0
  1. <?PHP
  2.  
  3. # Скрипт генерирующий файлы автообзвона для Asterisk
  4. # Обзвон производить вечером после рабочего дня
  5. # Если завтра выходной или праздник, то автообзвон не производится
  6.  
  7. require_once (dirname(__FILE__).'/config.php');
  8. require_once (dirname(__FILE__).'/lib/class_db.php');
  9.  
  10. $fb_session = new fbsql_db(FB_HOST, FB_DB, FB_USER, FB_PASS, 'UTF8');
  11.  
  12. $day_of_month = date('j'); // текущее число месяца
  13. $day_of_week = date('w'); // текущий день недели: 0 - воскресенье, 6 - суббота
  14. $full_date = date('Y-m-d'); // текущая дата
  15. $tomorrow = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d')+1, date('Y'))); // завтрашняя дата
  16. $log_file = "gen_autodialout_files.log";
  17.  
  18. // Если сегодня пятница или суббота, то не обзваниваем (ведь завтра не рабочий день)
  19. if ($day_of_week < 5) {
  20.     // Если завтрашний день имеется в файле holiday.txt, то тоже не обзваниваем
  21.     $holiday = file('holiday.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); // получаем содержимое файла в массив
  22.     if (!in_array($tomorrow, $holiday)) {
  23.     // Определяем максимальную сумму долга исходя из текущего дня месяца
  24.     if ($day_of_month < 9) {
  25.         $max_debt_sum = 340; // максимальная сумма долга с 1 по 8 число включительно
  26.     }
  27.     else {
  28.         $max_debt_sum = 200; // максимальная сумма долга для дней с 9-го и до конца месяца
  29.     }
  30.     // Сделаем запрос в БД
  31.     $sql = "select b.cc_value, a.debt_sum, a.account_no, a.cust_code, a.surname, a.initials
  32.             from customer_contacts b inner join customer a on (a.customer_id = b.customer_id)
  33.         where a.cust_state = 1 and
  34.             (b.cc_notice not like '!%' or b.cc_notice is null) and
  35.             (a.prepay = 0 or a.prepay is null) and
  36.             b.cc_type = 0 and
  37.             a.debt_sum > '$max_debt_sum'";
  38.     $fbres = $fb_session->select_assoc_all($sql);
  39.     // Очищаем директорию от старых call-файлов
  40.     foreach (glob("/mnt/nfs/outgoing_temp/*") as $filename) {
  41.         unlink($filename);
  42.     }
  43.     // Формируем строку лога
  44.     $log_str = date("Y-m-d H:i:s").
  45.             " - Всего телефонов для обзвона: ".count($fbres)."\n";
  46.     file_put_contents($log_file, $log_str, FILE_APPEND | LOCK_EX);
  47.     // Обходим массив
  48.     foreach($fbres as $row) {
  49.         $phone = $row['CC_VALUE'];
  50.         // Если формат номера телефона верный, то работаем с ним
  51.             // Наши городские телефоны пятизначные и всегда начинаются с 2-ки или 9-ки
  52.         if (strlen($phone) == 5 and (substr($phone,0,1) == 2 or substr($phone,0,1) == 9)) {
  53.         $arr = array(
  54.             "Channel: Zap/g0/w".$phone."\n",
  55.             "MaxRetries: 10\n",
  56.             "RetryTime: 20\n",
  57.             "WaitTime: 40\n",
  58.             "Context: autodialout\n",
  59.             "Extension: zadolg\n",
  60.             "Priority: 1\n",
  61.             "Archive: Yes\n");
  62.         // Путь и имя формируемого файла
  63.         $file = tempnam("/mnt/nfs/outgoing_temp", $phone."_");
  64.         // Записываем массив в call-файл
  65.         file_put_contents($file, $arr, LOCK_EX);
  66.         // Формируем строку лога
  67.         $log_str = date("Y-m-d H:i:s").
  68.                 " - Л/С: ".$row['ACCOUNT_NO'].
  69.                 ", Абонент: ".$row['SURNAME']." ".$row['INITIALS'].", ".$row['CUST_CODE'].
  70.                 ", Долг: ".round($row['DEBT_SUM'], 0).
  71.                 " руб., Тел: ".$phone."\n";
  72.         file_put_contents($log_file, $log_str, FILE_APPEND | LOCK_EX);
  73.         } // проверка формата номер телефона
  74.     } // конец обхода массива
  75.     } // проверка праздничных дней
  76.     // else { echo "Завтра праздник".PHP_EOL; }
  77. } // проверка дня недели
  78. // else { echo "Завтра не рабочий день".PHP_EOL; }
  79. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement