Asterisk — ведение журнала событий AMI

Я хочу регистрировать параметры «AMI Event» в другой файл.

Сначала включите «включить отладку диспетчера».

Но возможно ли записать журнал в другой файл, а не в другие данные журнала?


person Ramin Darvishov    schedule 25.08.2019    source источник


Ответы (2)


Asterisk не имеет никакого кода для записи событий в файл и/или базу данных.

Однако не должно быть проблем с созданием внешней программы, которая будет это делать.

Посмотрите это в perl, например https://metacpan.org/pod/Asterisk::AMI

Вы также можете поместить отладку в журнал, см. logger.conf, но это действительно плохая идея.

person arheops    schedule 25.08.2019

Я написал некоторый php-скрипт, который обрабатывает события и записывает их в файл журнала.

<?php
require_once '/var/lib/asterisk/agi-bin/phpagi-asmanager.php';
$manager_ip = "127.0.0.1";
$username = "******";
$secret = "*********";
$dbhost = "127.0.0.1";
$logfile = "/tmp/asterisk-manager.log";
$reconnect = TRUE;


$manager = new AGI_AsteriskManager();
$con = $manager->connect($manager_ip,$username,$secret);
if (!$con) {
    $date_receive = date("[Y-m-d H:i:s] ");
    echo($date_receive);
    echo "Cann't connect to manager\n";
    logger("Can't connect to manager!", $date_receive);
} else {
    $date_receive = date("[Y-m-d H:i:s] ");
    echo($date_receive);
    echo "Connected to manager\n";
    logger("Connected to manager!", $date_receive);
}

    $manager->add_event_handler('MusicOnHoldStart','dump_to_file'); // handle all MusicOnHoldStart events
    //$manager->add_event_handler('*','dump_to_file'); // handle all events

    $response = $manager->wait_response(TRUE);
    while (!$response) {
    if ($reconnect) {
    sleep("1");
    $con = $manager->connect($manager_ip,$username,$secret);
    while (!$con) {
        sleep("1");
        $con = $manager->connect($manager_ip,$username,$secret);
    }
    $response = $manager->wait_response(TRUE);
    } else {
    exit();
    }
 }

 function dump_to_file($ecode, $data, $server, $port) {      
    $date_receive = date("[Y-m-d H:i:s] ");
    echo($date_receive);
    echo(print_r($data,true));
    logger(print_r($data,true), $date_receive);
}    

function logger($message, $date_receive) {
    global $logfile;

    if (!empty($logfile)) {
        $handle = fopen($logfile,"a");
        fwrite($handle,"$date_receive\n$message");
        fwrite($handle,"\n");
        fclose($handle);
    }
}
?>
person Ramin Darvishov    schedule 05.09.2019