First time here? Check out the FAQ!

Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Freepbx 2.10 модуль CDR Reports

0

Всем привет. Подскажите пожалуйста кто уже делал или сталкивался, как добавить в модуль "CDR reports" возможность скачивания записи разговора? У меня пока получилось добавить кнопку для скачивания и отдельный столбик "Download": image description

Саму кнопку функционалом скачивания наделить не получается, работает как прослушать запись. Дополнительную кнопку сделал путем дублирования в /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;
    }

спросил Jul 25 '13

burn Gravatar burn
222 9 3 14

Comments

а о чем вопрос? это ж чистое программирование на php.

meral (Jul 25 '13)edit

Вопрос занятный, мне он тоже интересен.

romariosar (Jul 26 '13)edit

3 Ответа

1

Замени файл page.cdr.php тем, который скачаешь здесь https://github.com/FreePBX/cdr

ссылка удалить спам редактировать

ответил Jan 19 '15

belov Gravatar belov
11 5 1 2

Comments

Замечательно получилось :-)

SolarW (Jan 20 '15)edit
0

Зайдите в "User Panel" с правами админа, и скачивайте ;)

Пароль посмотрите в Settings>>Advanced Settings

Поля:

User Portal Admin Username
User Portal Admin Password

ссылка удалить спам редактировать

ответил Jul 25 '13

Out Gravatar Out
882 5 3 20

Comments

За ответ спасибо в user panel все работает штатно ;), но речь идет не про "User Panel" а про "CDR report".

burn (Jul 25 '13)edit
0

В версиях 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 с ограничением по доступу"

ссылка удалить спам редактировать

ответил Dec 1 '15

ffrost Gravatar ffrost flag of Russian Federation
1 1

обновил Dec 1 '15

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
2 закладки

подписаться на rss ленту новостей

Статистика

Задан: Jul 25 '13

Просмотрен: 5,435 раз

Обновлен: Dec 01 '15

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.