Потребовался скрипт для одного из клиентов, для уведомления на почту о пропущенных за день звонках. Возможно он и не сильно мудреный, но думаю и другим может пригодиться. В запросе выбираются данные о неотвеченных входящих звонках за вчерашний день. Такая информация довольно актуальна многим организациям, ведь если клиенты не дозвонились им, могут дозвониться другим.
Вот сам скрипт:
<?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