Отчет о пропущенных за день звонках на почту

в 18:13, , рубрики: asterisk, php, метки: ,

Потребовался скрипт для одного из клиентов, для уведомления на почту о пропущенных за день звонках. Возможно он и не сильно мудреный, но думаю и другим может пригодиться. В запросе выбираются данные о неотвеченных входящих звонках за вчерашний день. Такая информация довольно актуальна многим организациям, ведь если клиенты не дозвонились им, могут дозвониться другим.

Вот сам скрипт:

<?php

/* Переменные для соединения с базой данных */ 
$hostname = "localhost"; 
$username = "dbuser"; 
$password = "dbpass"; 
$dbName = "dbname"; 

/* Таблица MySQL, в которой хранятся данные */ 
$cdrtable = "cdr"; 

/* Переменные для определения вчерашней даты */ 
$time = mktime(date('H'), date('i'), date('s'), date('m'), date('d')-1, date('Y'));
$ydate = date("d.m.Y", $time);

/* создать соединение */ 
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); 

/* выбрать базу данных. Если произойдет ошибка - вывести ее */ 
mysql_select_db($dbName) or die(mysql_error());

/* запрос данных . номерация у нас трехзначная, поэтому LENGTH(  `src` ) >3, отсекаем исходящие вызовы */ 
$query = "SELECT  `dst` ,  `src` ,  `duration` ,  `dstchannel` ,  `calldate`
	  FROM  `cdr`
	  WHERE DATE_SUB( CURDATE( ) , INTERVAL 1 DAY ) <=  `calldate`
		AND CURDATE( ) >  `calldate`
		AND  `disposition` =  'NO ANSWER'
		AND LENGTH(  `src` ) >3"; 

/* Выполнить запрос. Если произойдет ошибка - вывести ее. */ 
$res=mysql_query($query) or die(mysql_error());

/* Как много нашлось строк */ 
$number = mysql_num_rows($res); 

/* заголовок письма */ 
$mes="Отчет о пропущенных вызовах за $ydate.rnrn";

/* готовим текст письма*/ 
if ($number == 0) { 
  $mes .= "Пропущенных вызовов не было"; 
} else { 
  
  /* Получать по одной строке из таблицы в массив $row, пока строки не кончатся */  
  while ($row=mysql_fetch_array($res)) { 
    $mes .= "   ".$row['calldate'].". От ".$row['src'];
    $mes .= " Абонент ".mb_substr($row['dstchannel'],4,3);
    $mes .= ". Ожидание  ".$row['duration']." сек.rn"; 
  } 
}
 
/* Отправляем письмо */ 
mail('admin@mail.domain', $ydate.' report', $mes);
?> 

Постарался комментировать достаточно подробно, если что не будет работать, спрашивайте.

Пример письма:

Отчет о пропущенных вызовах за 29.10.2012.

2012-10-29 11:46:38. От 4959819231 Абонент 109. Ожидание 45 сек.
2012-10-29 13:18:45. От 4956103380 Абонент 104. Ожидание 47 сек.
2012-10-29 14:33:13. От 4959819331 Абонент 104. Ожидание 53 сек.
2012-10-29 16:58:40. От 9030293453 Абонент 101. Ожидание 12 сек.

Автор: xtelekom

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js