Статистика по звонкам в различные регионы, веб интерфейс
Ранее был рассмотрен способ формирования статистики, по звонкам в регионы России, однако тогда она создавалась в виде файла csv, что не всегда удобно или вообще нужно. В данной статье рассмотрим способ формирования такой статистики в веб интерфейс, также с возможностью выгрузить в файл. Подготовительные этапы можно посмотреть в статье выше, а именно создание базы регионов […]
Ранее был рассмотрен способ формирования статистики, по звонкам в регионы России, однако тогда она создавалась в виде файла csv, что не всегда удобно или вообще нужно. В данной статье рассмотрим способ формирования такой статистики в веб интерфейс, также с возможностью выгрузить в файл.
Подготовительные этапы можно посмотреть в статье выше, а именно создание базы регионов и заполнение ее из базы Россвязи.
Вывод на страницу полей ввода даты и времени:
echo "
<form action='' method=post>
Дни: <input name=date1 type='date' required> - <input name=date2 type='date' required><br />
Время: <input name=time1 type='time' value=00:00 required> - <input name=time2 type='time' value=23:59 required><br />
<input name='interval' type=submit value=Отобразить> </br>
</form>";
Далее обработчик нажатия кнопки:
if(isset($_POST['interval']))
{
$prefix = array(); //Массивы нужны для дальнейшей обработки и вывода данных.
$tel_num = array();
$billsec = array();
$region = array();
$count = array();
$calldate1=$_POST['date1']." ".$_POST['time1'].":00";
$calldate2=$_POST['date2']." ".$_POST['time2'].":59";
$result = bd_bridge("asteriskcdrdb","SELECT dst, billsec FROM asteriskcdrdb.cdr where billsec>'0' and dst REGEXP '^[0-9][0-9][0-9][0-9][0-9]+' and dst like '_________%' and calldate>'".$calldate1."' AND calldate<'".$calldate2."' group by dst;");
Запросили данные из базы, теперь их необходимо обработать по аналогии с прошлой статьей:
while ($row = mysqli_fetch_array($result))
{
$len=strlen($row['dst']);
if ($len=='11') {
$prefix[]=substr($row['dst'], 1, 3);
$tel_num[]=substr($row['dst'], 4);
} elseif ($len=='10') {
$prefix[$i]=substr($row['dst'], 0, 3);
$tel_num[$i]=substr($row['dst'], 3);
$i++;
}
}
Префиксы и номера собраны в массивы, для обработки используем цикл for (можно использовать также foreach по желанию):
echo "<table border=1><tr><td>Номер</td><td>Регион</td><td>Длительность (в сек.)</td><td>Количество вызовов</td></tr>";
for ($i=0;$i<count($prefix);$i++) {
$num=$prefix[$i].$tel_num[$i];
$requestsec = bd_bridge("asteriskcdrdb","SELECT SUM(billsec),count(*) FROM asteriskcdrdb.cdr where dst like '%".$num."%' and billsec<>'0' and calldate>='".$calldate1."' AND calldate<='".$calldate2."';");
$rowsec = mysqli_fetch_array($requestsec);
$billsec[$i]=$rowsec['SUM(billsec)'];
$count[$i]=$rowsec['count(*)'];
//Тут получаем длительность и количество вызовов по данному номеру.
$requestreg = bd_bridge("asteriskcdrdb","SELECT region FROM tel_codes WHERE prefix='".$prefix[$i]."' AND num_from<='".$tel_num[$i]."' AND num_to>='".$tel_num[$i]."' LIMIT 1;");
$rowreg = mysqli_fetch_array($requestreg);
$region[$i]=$rowreg['region'];
echo "
<tr>
<td>".$num."</td><td>".$region[$i]."</td><td>".$billsec[$i]."</td><td>".$count[$i]."</td>
</tr>
";
}
echo "</table>";
Теперь необходимо добавить возможность выгрузки данных в csv.
Для загрузки файла опишем функцию в начале файла:
function file_force_download($file) {
if (file_exists($file)) {
// сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
// если этого не сделать файл будет читаться в память полностью!
if (ob_get_level()) {
ob_end_clean();
}
// заставляем браузер показать окно сохранения файла
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
// читаем файл и отправляем его пользователю
readfile($file);
exit;
}
}
До первого запроса в базу прописываем:
$fp = fopen("/usr/src/test/regions-stat.csv", 'w');
fputcsv($fp, array('Номер', 'Регион', 'Длительность', 'Количество')); //Шапка таблицы
И вместо заполнения таблицы указываем заполнение файла:
fputcsv($fp, array($num, $region[$i], $billsec[$i], $count[$i]));
В конце обработчика выгружаем файл:
file_force_download('/usr/src/test/regions-stat.csv');
Остались вопросы?
Я - Кондрашин Игорь, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.
категории
- DECT
- Linux
- Вспомогательный софт при работе с Asterisk
- Интеграция с CRM и другими системами
- Интеграция с другими АТС
- Использование Elastix
- Использование FreePBX
- Книга
- Мониторинг и траблшутинг
- Настройка Asterisk
- Настройка IP-телефонов
- Настройка VoIP-оборудования
- Новости и Статьи
- Подключение операторов связи
- Разработка под Asterisk
- Установка Asterisk
VoIP оборудование
ближайшие курсы
Новые статьи
10 доводов в пользу Asterisk
Распространяется бесплатно.
Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.
Безопасен в использовании.
Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.
Надежен в эксплуатации.
Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.
Гибкий в настройке.
Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.
Имеет огромный функционал.
Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.
Интегрируется с любыми системами.
То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.
Позволяет телефонизировать офис за считанные часы.
В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.
Отличная масштабируемость.
Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.
Повышает управляемость бизнеса.
Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.
Снижает расходы на связь.
Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.