Asterisk – подключение через сеть
Обычный способ получения данных тарификации из Asterisk – через импорт лог файла. т. е. Asterisk записывает данные по звонкам в заданный файл, а WinTariff читает этот файл. Импорт возможен в ручном режиме (пункт меню ‘Import log file’ модуля PbxCollect.exe) или в автоматическом (режим ‘Spool folder’; настройка этого режима описана здесь).
Однако было бы удобнее получать данные напрямую, через сеть. Такой способ предложил Денис Фомин — он заключается в использовании утилиты nc (netcat) для пересылки содержимого файла.
Настройки:
- 1.Как обычно, настраиваем выдачу данных из Asterisk и запись в файл на локальном диске. Согласовываем формат данных с WinTariff (см. здесь; проверить согласование можно через импорт файла — см. пункт меню ‘Import log file’ модуля PbxCollect.exe)
- 2.(важно) В настройках WinTariff нужно изменить роль PbxCollect в ситуации клиент-сервер — должно быть: «PbxCollect=server, PBX=client»
- 3.затем добавляем в настройки Asterisk следующий код:
DATE="date +%Y%m%d%H%M%S"
CSV_DIR=/var/log/asterisk/cdr-csv
CSV_FILE=$CSV_DIR/Master.csv
if [ -f $CSV_FILE ]; then
mv $CSV_FILE $CSV_DIR/cdr-$DATE.csv
touch $CSV_FILE
chmod +r $CSV_DIR/cdr-$DATE.csv
nc -n "IP address PbxCollect" "IP port PbxCollect"
fi
Естественно, надо указать свои значения для CSV_DIR и «IP address PbxCollect» + «IP port PbxCollect»
Что делает этот скрипт:
- если существует файл лога, то он перемещается в папку CSV_DIR, при этом для файла генерируется уникальное имя (по текущим дате и времени)
- освежается дата (touch) и даются права на чтение (chmod)
- (!) вызывается netcat для пересылки файла в PbxCollect