artem
25.12.2017
1744

Автоматический обзвон пропущенных вызовов, поступивших в нерабочее время

Для работы потребуется модуль ODBC.

Соответственно в базе необходимо будет отмечать номера, которые уже участвовали в обзвоне, для этого будем помещать их в другую таблицу, чтобы не увеличивать рабочую.

Для начала создадим базу в MySQL.

create database missed_calls;
use missed_calls;
create table current_numbers (num int(20) not null);//текущие номера
create table old_numbers (num int(20) not null); //отработанные номера

Итак, сейчас настроим запись номеров в данную базу. Использовать будем механизм обработки пропущенных, описанный в статье, добавим к отправке сообщения, добавление номера в базу. Будем отправлять вызовы в нерабочее время на голосовое приветствие, после которого будем заносить номер в таблицу. В файл extensions_ovverride_freepbx.conf вносим изменения.

[app-announcement-2]
exten => h,1,Set(${ODBC_insertmissed(${CALLERID(num)})}=1)
same => n,Macro(hangupcall,)

Проверка записи

Далее приступим к написанию скрипта.

Коннект к базе будем использовать из статьи генерации телефонной книги, за одним отличием, подключаться будем к созданной базе.
Сам механизм обзвона будем реализовывать через call-файлы. Поскольку номеров может быть много, одномоментно используем лишь ограниченное число номеров в выборке (как пример два с перерывом в две минуты).

Рассматривать весь скрипт не будем, остановимся на моменте непосредственного сбора файла.

$i=0;
$j=2;
$dbcount = bd_bridge(‘missed_calls’,”SELECT count(num) FROM current_numbers;”);
$count = mysql_fetch_array($dbcount);
while ($j<=$count[‘count(exten)’]) {
        $result = bd_bridge(‘missed_calls’,”SELECT num FROM current_numbers limit $i,$j;”);
        while ($row = mysql_fetch_array($result)) //выбираем из базы по 2 номера
{
$number=$row[“num”];
$fp = fopen(“/tmp/record_send/”.$number.”.call”, ‘w’);
fwrite($fp, “Channel: Local/600@ext-queues”); //очередь операторов
fwrite($fp, “MaxRetries: 1″.”n”);
fwrite($fp, “RetryTime: 30″.”n”);
fwrite($fp, “WaitTime: 30″.”n”);
fwrite($fp, “Context: from-internal”.”n”); //контекст для исходящего вызова
fwrite($fp, “Extension: $number”.”n”);
fwrite($fp, “Priority: 1″.”n”);
fclose($fp);
$chownfile=`chown asterisk:asterisk /tmp/record_send/ -R`;
$mvfile=`mv /tmp/record_send/$number.call /var/spool/asterisk/outgoing`;
}
$i=$i+2;
$j=$j+2;
Sleep 120; //ожидаем 2 минуты до следующего шага
}
$insforold = bd_bridge(‘missed_calls’,” insert into old_numbers select * from current_numbers;”); //записываем отработанные номера в другую таблицу
$delfromcurr = bd_bridge(‘missed_calls’,” TRUNCATE TABLE current_numbers;”); //удаляем из текущей

Соответственно после обработки всех номеров мы переносим их в таблицу отработки.

Для удобства можете дополнить базу отработки некоторыми значениями вроде отвечен/неотвечен.

После настройки скрипта можно протестировать его на внутренних номерах, запустив вручную.

Тест с внутренними номерами

Тест с внутренними номерами

Тест со внутренними номерами.

А после всех проверок помещаем скрипт в cron на выполнение, например каждый день спустя час после начала рабочего дня, либо в определенные дни.

Запуск из крона.

Настройка завершена. Демонстрация работы

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Першин Артём, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices