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

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; 
    }
удалить закрыть спам изменить тег редактировать

спросил 2013-07-25 15:29:31 +0400

burn Gravatar burn
222 9 3 14

Comments

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

meral ( 2013-07-25 16:12:57 +0400 )редактировать

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

romariosar ( 2013-07-26 09:07:25 +0400 )редактировать

3 Ответа

1

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

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

ответил 2015-01-19 17:53:50 +0400

belov Gravatar belov
11 5 1 2

Comments

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

SolarW ( 2015-01-20 16:35:28 +0400 )редактировать
0

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

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

Поля:

User Portal Admin Username
User Portal Admin Password

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

ответил 2013-07-25 16:13:00 +0400

Out Gravatar Out
882 5 3 20

Comments

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

burn ( 2013-07-25 16:19:07 +0400 )редактировать
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 с ограничением по доступу"

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

ответил 2015-12-01 22:05:36 +0400

ffrost Gravatar ffrost flag of Russian Federation
1 1

обновил 2015-12-01 22:21:46 +0400

Ваш ответ

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 ленту новостей

Статистика

Задан: 2013-07-25 15:29:31 +0400

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

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

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