Страница 1 из 1

Внедриться в готовую конфигурацию

Добавлено: 21 июл 2025, 13:24
aniqi
Стоит задача не трогая основую конфигурацию астериска, созданную через веб интерфейс freepbx добавить логирование звонков нужной очереди.

в большом конфиге нашел нужную мне очередь (555) она выглядит так

[from-queue]
include => from-queue-custom
...
exten => 555,1,Goto(from-internal,${QAGENT},1)
...

меня интересует эта очередь 555. Все звонки на нее мне надо записать в лог. Скрипт лога уже подготовил на php AGI
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER: script_log.php
#!/usr/bin/php -q
<?php
require('phpagi.php');
$agi = new AGI();

// дата время текущее
$d = date("Y-m-d H:i:s");
$text = $d . ": ";

// все переданные аргументы записываем в лог
for($i = 1; $i < $argc; $i++) {
$text .= $argv[$i];
if ($i < $argc-1) $text .= "; ";
}

file_put_contents("calls.log", trim($text) . "\n", FILE_APPEND);
exit(0);
?>
цитата с https://asterisk-pbx.ru/wiki/freepbx/custom_context
Стандартный контекст FreePBX from-internal включает в себя файл extensions_custom.conf
Таким образом, если задать какой-либо шаг диалплана в файле extensions_custom.conf
без [имени контекста], это действие будет включено в контекст from-internal и выполняться как диалплан FreePBX.

Подскажите пожалуйста, верно ли я понял, мне надо попасть в контекст from-internal,
чтобы настройки попали в него, надо добавить в файл extensions_custom.conf такую строчку без имени контекста

exten => 555,1,AGI(script_log.php, ${STRFTIME(${EPOCH},,%Y/%m/%d %H:%M:%S)}, ${CALLERID(num)})

передаю скрипту дату звонка и номер абонента

вопрос, что с очередностью верно ли я указываю 555,1 ? не заменит не перетрет ли это какую то настройку?

Re: Внедриться в готовую конфигурацию

Добавлено: 21 июл 2025, 17:29
ded
Макркируете весь контекст

Код: Выделить всё

[from-queue]
include => from-queue-custom
...
exten => 555,1,Goto(from-internal,${QAGENT},1)
...
и копируете его в файл extensions_override_freepbx.conf
Далее, вставляете свою строку с вызовом AGI и ещё что угодно, если нужно.

Делаете dialplan reload -ву а ля! Работает этот контекст, а не тот, который в customs_additionals.conf и он не меняется при релодах.
Таким образом приходит понимание слова overridde.

Re: Внедриться в готовую конфигурацию

Добавлено: 21 июл 2025, 20:20
aniqi
а более мягко без перезаписи можно? За идею перезаписи спасибо возьму на заметку.

Нельзя ли более мягко там сказать добавить конфигурацию точечно?

Re: Внедриться в готовую конфигурацию

Добавлено: 22 июл 2025, 16:17
ded
Сценарий очереди задаётся в вэб интерфейсе множеством параметров. При нажатии на Сохранить - записывается в MySQL. Далее, при нажатии Apply - Применить - выгружается из MySQL через парсер в фалы *_additional.conf + dialplan reload становится рабочим d cbcntvt/
Предложаитте - где в этой последовательности действий, заложенной разработчиками, можно ещё более мягко воткнуть действие?
Лог вашей очереди уже пишется максимально подробно в MySQL - asteriscdrdb таблица cel (Call event logging), это гораздо шире, чем журнал cdr, который там в другой таблице. Вам бы изучить структуру CEL и выбыирать те поля и евенты, клтторые вам нужны, вместо того, чтобы изобретать свой велосипед на треугольных колёсах.
И вся кастомизация там задумана через файлы *custom.conf и контексты, custom.
Если вы создадите контекст from-queue-custom в файле extensions_custom.conf и укажете там свою строку
exten => 555,1,AGI(script_log.php, ${STRFTIME(${EPOCH},,%Y/%m/%d %H:%M:%S)}, ${CALLERID(num)})
то готовьтесь потом иметь неопределённость выполнения диал-плана ввиду неоднозначности первого шага в этом контексте.