Главная » про WinTariff

Asterisk – подключение через сеть

5 февраля 2020

Обычный способ получения данных тарификации из Asterisk – через импорт лог файла. т. е. Asterisk записывает данные по звонкам в заданный файл, а WinTariff читает этот файл. Импорт возможен в ручном режиме (пункт меню ‘Import log file’ модуля PbxCollect.exe) или в автоматическом (режим ‘Spool folder’; настройка этого режима описана здесь).

Однако было бы удобнее получать данные напрямую, через сеть. Такой способ предложил Денис Фомин — он заключается в использовании утилиты nc (netcat) для пересылки содержимого файла.

Настройки:

  1. 1.Как обычно, настраиваем выдачу данных из Asterisk и запись в файл на локальном диске. Согласовываем формат данных с WinTariff (см. здесь; проверить согласование можно через импорт файла — см. пункт меню ‘Import log file’ модуля PbxCollect.exe)
  2. 2.(важно) В настройках WinTariff нужно изменить роль PbxCollect в ситуации клиент-сервер — должно быть: «PbxCollect=server, PBX=client»
  3. 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