вот такая у меня таблица в базе
- Код: Выделить всё
- CREATE TABLE `cdr` (
 `accountcode` varchar(80) DEFAULT NULL,
 `src` varchar(80) DEFAULT NULL,
 `dst` varchar(80) DEFAULT NULL,
 `dcontext` varchar(80) DEFAULT NULL,
 `clid` varchar(80) DEFAULT NULL,
 `channel` varchar(80) DEFAULT NULL,
 `dstchannel` varchar(80) DEFAULT NULL,
 `lastapp` varchar(80) DEFAULT NULL,
 `lastdata` varchar(80) DEFAULT NULL,
 `start` datetime DEFAULT NULL,
 `answer` datetime DEFAULT NULL,
 `end` datetime DEFAULT NULL,
 `duration` int(11) DEFAULT NULL,
 `billsec` int(11) DEFAULT NULL,
 `disposition` varchar(45) DEFAULT NULL,
 `amaflags` varchar(45) DEFAULT NULL,
 `userfield` varchar(256) DEFAULT NULL,
 `uniqueid` varchar(150) DEFAULT NULL,
 `linkedid` varchar(150) DEFAULT NULL,
 `peeraccount` varchar(80) DEFAULT NULL,
 `sequence` int(11) DEFAULT NULL,
 `recordingfile` varchar(256) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
файл cdr_mysql.conf
- Код: Выделить всё
- [global]
 hostname=localhost
 dbname=asterisk
 table=cdr
 password=asterisk
 user=asterisk
 port=3306
 sock=/tmp/mysql.sock
 [columns]
 .......
 .......
 ;добавил вот такую запись
 alias recfile => recordingfile
 ........
 ........
в контексты пишу такие строчки
- Код: Выделить всё
- [context]
 exten => _X.,1,Set(fname=${STRFTIME(${EPOCH},,%Y%m%d%H%M%S)}-${CALLERID(number)}-${EXTEN})
 exten => _X.,n,MixMonitor(/var/spool/asterisk/monitor/${fname}.wav)
 exten => _X.,n,Set(CDR(recfile)=/var/spool/asterisk/monitor/${fname}.wav)
 .......
 .......
подключаемся к базе и печатаем
- Код: Выделить всё
- <?php
 function con_base()
 {
 $d= date("Y-m-d");
 $nd= "'".$d." "."00:00:00"."'";
 $link = mysqli_connect(
 'localhost', /* Хост, к которому мы подключаемся */
 'asterisk', /* Имя пользователя */
 'asterisk', /* Используемый пароль */
 'asterisk'); /* База данных для запросов по умолчанию */
 
 if (!$link) {
 printf("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error());
 // print("Невозможно подключиться к базе данных. Код ошибки: %s\n", mysqli_connect_error());
 exit;
 }
 return $link;
 }
 function uregsqli($tabl,$src,$dst,$d_from,$d_to,$lm,$ind)
 {
 $cnt_full =0;
 $cnt_answer = 0;
 $cnt_no_answer =0;
 $cnt_busy =0;
 $cnt_congest=0;
 $cnt_fail =0;
 $today = date("H:m:s Y-m-d D");
 $link=con_base();
 switch($ind){
 case 0: $result = mysqli_query($link, "SELECT start, src, dst, billsec, disposition, recordingfile
 FROM $tabl ORDER BY start DESC LIMIT $lm"); break;
 case 1: $result = mysqli_query($link, "SELECT start, src, dst, billsec, disposition, recordingfile
 FROM $tabl WHERE start BETWEEN '$d_from' AND '$d_to'"); break;
 case 2: $result = mysqli_query($link, "SELECT start, src, dst, billsec, disposition, recordingfile
 FROM $tabl WHERE start BETWEEN '$d_from' AND '$d_to' AND src like '%$src%'"); break;
 case 3: $result = mysqli_query($link, "SELECT start, src, dst, billsec, disposition, recordingfile
 FROM $tabl WHERE start BETWEEN '$d_from' AND '$d_to' AND dst like '%$dst%'"); break;
 case 4: $result = mysqli_query($link, "SELECT start, src, dst, billsec, disposition, recordingfile
 FROM $tabl WHERE start BETWEEN '$d_from' AND '$d_to' AND src like '%$src%' AND dst like '%$dst%' ");
 default: break;
 }
 
 // На печать
 
 // print "Rezult OK";echo '<br>';
 /* Выводим результаты в html */
 echo '<br>';
 echo '<br>';
 
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">'.$today.'</td>';
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td bgcolor="#F08080" width="5%" align="center">'."Дата Время".'</td>';
 print '<td bgcolor="#F08080" width="10%" align="center">'."Кто звонил".'</td>';
 print '<td bgcolor="#F08080" width="10%" align="center">'."Куда Звонил".'</td>';
 print '<td bgcolor="#F08080" width="10%" align="center">'."Длительность, сек".'</td>';
 print '<td bgcolor="#F08080" width="10%" align="center">'."Результат".'</td>';
 print '<td bgcolor="#F08080" width="10%" align="center">'."Player".'</td>';
 
 while( $row = mysqli_fetch_assoc($result) ){
 
 print '<tr>';
 
 print '<td width="5%" valign="top" align="left">'.$row['start'].'</td>';
 
 
 print '<td width="10%" align="center">'.$row['src'].'</td>';
 print '<td width="10%" align="center">'.$row['dst'].'</td>';
 print '<td width="10%" valign="center" align="center">'.$row['billsec'].'</td>';
 $cnt_full=$cnt_full + 1;
 switch($row['disposition'])
 
 {
 case 'ANSWERED':
 print '<td bgcolor="#00FF00" width="10%" align="center">'.$row['disposition'].'</td>';
 $cnt_answer=$cnt_answer + 1;
 break;
 
 case 'NO ANSWER':
 print '<td bgcolor="#FF00FF" width="10%" align="center">'.$row['disposition'].'</td>';
 $cnt_no_answer=$cnt_no_answer + 1;
 break;
 
 case 'BUSY':
 print '<td bgcolor="#FFFF00" width="10%" align="center">'.$row['disposition'].'</td>';
 // print '</tr>';
 $cnt_busy=$cnt_busy + 1;
 break;
 
 case 'CONGESTION':
 print '<td bgcolor="#FF0000" width="10%" align="center">'.$row['disposition'].'</td>';
 // print '</tr>';
 $cnt_congest=$cnt_congest + 1;
 break;
 
 case 'FAILED':
 print '<td bgcolor="#FF0000" width="10%" align="center">'.$row['disposition'].'</td>';
 // print '</tr>';
 $cnt_fail=$cnt_fail + 1;
 break;
 
 default:
 print '<td bgcolor="#FF00FF" width="10%" align="center">*******</td>';
 // print '</tr>';
 
 
 }
 
 print '<td width="10%" valign="center" align="center">';
 print '<audio src="download.php?audio='.$row['recordingfile'].'" preload="none" controls></audio>';
 print '</td>';
 print '</tr>';
 }
 
 // end печать
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">';
 print "Выведено записей: ".$cnt_full."\n";
 print '</td>';
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">';
 print "Завершенных ответом: ".$cnt_answer."\n";
 print '</td>';
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">';
 print "Оставшиеся без ответа : ".$cnt_no_answer."\n";
 print '</td>';
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">';
 print "Неотвеченных вследствие перегрузки : ".$cnt_congest."\n";
 print '</td>';
 print '</table>';
 print '<table border="1" cellpadding="7" cellspacing="0">';
 print '<td width="1%" align="left">';
 print "Неотвеченных из-за отказа : ".$cnt_fail."\n";
 print '</td>';
 print '</table>';
 
 //print '</table>';
 
 /* Освобождаем используемую память */
 mysqli_free_result($result);
 
 
 
 
 /* Закрываем соединение */
 mysqli_close($link);
 }
 
 ?>
скачиваем файл с записью
- Код: Выделить всё
- <?php
 $file = ($_REQUEST['audio']);
 $file = str_replace(" ","+",$file);
 header ("Content-Type: application/octet-stream");
 header ("Accept-Ranges: bytes");
 header ("Content-Length: ".filesize($file));
 header ("Content-Disposition: attachment; filename=".$file);
 readfile($file);
 ?>
Полезные источники:
http://subnets.ru/blog/?p=4872
https://github.com/prog-it/Asterisk-CDR-Viewer-Mod
https://www.dmosk.ru/miniinstruktions.php?mini=asterisk-mysql
https://www.google.com





 
 


