Всем привет. Подскажите пожалуйста кто уже делал или сталкивался, как добавить в модуль "CDR reports" возможность скачивания записи разговора? У меня пока получилось добавить кнопку для скачивания и отдельный столбик "Download": 
Саму кнопку функционалом скачивания наделить не получается, работает как прослушать запись. Дополнительную кнопку сделал путем дублирования в /var/www/html/admin/modules/cdr/functions.inc/php:
function cdr_formatRecordingFile($recordingfile, $basename, $id) { global $REC_CRYPT_PASSWORD; if ($recordingfile) { $crypt = new Crypt(); // Encrypt the complete file $audio = urlencode($crypt->encrypt($recordingfile, $REC_CRYPT_PASSWORD)); $recurl=$_SERVER['PHP_SELF']."?display=cdr&action=cdr_play&recordingpath=$audio"; $playbackRow = $id +1; // echo "<td title=\"$basename\"><a href=\"#\" onClick=\"javascript:cdr_play($playbackRow,'$recurl'); return false;\"><img src=\"assets/cdr/images/cdr_sound.png\" alt=\"Call recording\" /></a></td>"; echo "<td title=\"$basename\"><a href=\"#\" onClick=\"javascript:cdr_play($playbackRow,'$recurl'); return false;\"><img src=\"assets/cdr/images/cdr_download.png\" alt=\"Download\" /></a></td>"; } else { echo "<td></td>"; echo "<td></td>";
Новый столбик "Download" добавил в /var/www/html/admin/modules/cdr/page.cdr.php:
}
if ( $totcallsraw ) { echo "
".("Call Detail Record - Search Returned")." ".$totcallsraw." ".("Calls")."
"; echo "";$i = $h_step - 1; $id = -1; // tracker for recording index foreach($results as $row) { ++$id; // Start at table row 1 ++$i; if ($i == $h_step) { ?> <tr> <th class="record_col"><?php echo _("Call Date")?></th> <th class="record_col"><?php echo _("Recording")?></th> <th class="record_col"><?php echo _("Download")?></th> <th class="record_col"><?php echo _("System")?></th> <th class="record_col"><?php echo _("Src Chan.")?></th> <th class="record_col"><?php echo _("Source")?></th> <th class="record_col"><?php echo _("DID")?></th> <th class="record_col"><?php echo _("App.")?></th> <th class="record_col"><?php echo _("Dest.")?></th> <th class="record_col"><?php echo _("Dst. Chan.")?></th> <th class="record_col"><?php echo _("Disposition")?></th> <th class="record_col"><?php echo _("Duration")?></th> <th class="record_col"><?php echo _("Userfield")?></th> <th class="record_col"><?php echo _("Account")?></th> <th class="img_col"><a href="#CDR" title="Go to the top of the CDR table"><img src="images/scrollup.gif" alt="CDR Table" /></a></th> <th class="img_col"><a href="#Graph" title="Go to the top of the CDR graph"><img src="images/scrolldown.gif" alt="CDR Graph" /></a></th> </tr> <?php $i = 0; ++$id; }
Замени файл page.cdr.php тем, который скачаешь здесь https://github.com/FreePBX/cdr
Зайдите в "User Panel" с правами админа, и скачивайте ;)
Пароль посмотрите в Settings>>Advanced Settings
Поля:
User Portal Admin Username
User Portal Admin Password
За ответ спасибо в user panel все работает штатно ;), но речь идет не про "User Panel" а про "CDR report".
burn ( 2013-07-25 16:19:07 +0400 )редактироватьВ версиях 2.10 возможности скачивания записей разговоров из CDR Reports не было. Но сделать это можно и несложно. Необходимо в файле functions.inc.php изменить строку 115
echo "<td title=\"$basename\"><a href=\"#\" onClick=\"javascript:cdr_play($playbackRow,'$recurl'); return false;\"><img src=\"assets/cdr/images/cdr_sound.png\" alt=\"Call recording\" /></a></td>";
чтобы она приняла такой вид:
echo "<td title=\"$basename\"><a href=\"#\" onClick=\"javascript:cdr_play($playbackRow,'$recurl'); return false;\"><img src=\"assets/cdr/images/cdr_sound.png\" alt=\"Call recording\" /></a> <a href=\"".$PHP_SELF."?getRec=".base64_encode($recordingfile)."\" target=\"_blank\"><img src=\"assets/cdr/images/cdr_download.png\" alt=\"Call recording\" /></a></td>";
затем добавить в конец файла до закрывающего php-тега "?>" следующий код:
function recordfile_uri($path) { $size = filesize($path); $name = basename($path); $extension = strtolower(substr(strrchr($name,"."),1)); // This will set the Content-Type to the appropriate setting for the file $ctype =''; switch( $extension ) { case "WAV": $ctype="audio/x-wav"; break; case "wav": $ctype="audio/x-wav"; break; case "ulaw": $ctype="audio/basic"; break; case "alaw": $ctype="audio/x-alaw-basic"; break; case "sln": $ctype="audio/x-wav"; break; case "gsm": $ctype="audio/x-gsm"; break; case "g729": $ctype="audio/x-g729"; break; default: //not downloadable // echo ("<b>404 File not found! foo</b>"); // TODO: what to do if none of the above work? break ; } $fp=fopen($path, "rb"); if ($size && $ctype && $fp) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: audio file"); header("Content-Type: " . $ctype); header("Content-Disposition: attachment; filename=" . $name); header("Content-Transfer-Encoding: binary"); header("Content-length: " . $size); $chunksize = 1*(1024*1024); while (!feof($fp)) { $buffer = fread($fp, $chunksize); echo $buffer; ob_flush(); flush(); } fclose($fp); } } if(isset($_GET['getRec'])){ recordfile_uri(base64_decode($_GET['getRec'])); die(); }
В таблице CDR Reports рядом со значком громкоговорителя появится значок диска, при нажатии на который можно скачать файл, аналогично тому, как это сделано в новых версиях CDR Reports начиная с 2.11. Код модифицирован с использованием материалов хабрастатьи "Asternic CDR Reports. Прослушивание звонков в FreePBX с ограничением по доступу"
Задан: 2013-07-25 15:29:31 +0400
Просмотрен: 5,493 раз
Обновлен: Dec 01 '15
cdr reports перенос данных о звонках
Добавление записи в CDR без Answer()
Как получить информацию из CDR Asterisk'а
asterisk cdr viewer, прослушать/скачать запись в формате *.gsm
Отвеченный вызов выходит из очереди со статусом "NO ANSWER"
посоветуйте биллинг (просмотрщик CDR)
Не добавляются записи CDR. Использую CALL файлы, канал: LOCAL
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.
а о чем вопрос? это ж чистое программирование на php.
meral ( 2013-07-25 16:12:57 +0400 )редактироватьВопрос занятный, мне он тоже интересен.
romariosar ( 2013-07-26 09:07:25 +0400 )редактировать