Соберите записи Asterisk cdr по почте http

Я использую Asterisk и хочу собирать записи CDR. Я некоторое время искал и обнаружил, что уже есть модули, которые мы можем использовать для сбора записей cdr в файлы CSV или MySQL.

Мне интересно, есть ли уже модуль, который позволяет мне собирать записи CDR по http посту. Чтобы после завершения вызова Asterisk разместил записи cdr на предварительно заданном URL-адресе.

Заранее спасибо.

2 ответа

Решение

Я не знаю такого модуля, но вы можете выполнить приложение на Hangup.

Вы могли бы использовать функцию ${CURL(url[,post-data])}:

exten => h,n,Set(result=${CURL(http://SERVER/cdr.php?\
             cdranswer=${CDR(answer)}&exten=${EXTEN}&cidnum=${CALLERID(num)})}) 
exten => h,n,Noop(${result}) 

Другой подход заключается в выполнении сценария при зависании:

exten => h,n,System('php -f /opt/scripts/cdr.php \
                        ${CallerID(num)} ${EXTEN} "${CDR(answer)}" ${EPOCH}');

Возможно, вы также можете использовать ${CDR(billsec)}.

Другим вариантом может быть использование задания CRON для запуска сценария Ruby или PHP каждые несколько минут для извлечения и HTTP POST всех CDR с момента последнего запуска сценария. Я сделал это для клиента, и это работает достаточно хорошо.

Тем не менее, я обнаружил, что если мне нужно, чтобы CDR были доступны "вне компьютера", самый простой способ сделать это в долгосрочной перспективе - настроить репликацию MySQL; запишите CDR на машину УАТС, прочитайте их из реплицированной копии на машине отчетов. Вначале он немного более интенсивен в настройке, но потом делает все остальное намного проще.

Другие вопросы по тегам