Voip
Модуль для организации АйПи-телефонии по протоколу SIP или H323.
Возможности
- SIP, H323
- Припейд (предоплата) и постпейд (оплптп по факту) сервис.
- Карточная платформа
- Тарификация по времени и по направлениям.
- Возможность разрешать или запрещать входящие, исходящие звонки.
- Абон. плата.
- Управление шлюзами.
- Выбор оптимального шлюза для звонка.
- Консоль для управления GNU Gatekeeper.
- Бесплатные секунды в звонке
- Предоплаченное время направлений
Как платформу можно использовать:
- Asterisk. (мануал - * abills+asterisk.)
- Или любой другой NAS который поддерживает RADIUS авторизацию и аккаунтинг.
Установка
abills/libexec/config.pl
@MODULES = ( 'Voip' ); %ACCT = (); #For VoIP GNU Gatekeeper accounting $ACCT{gnugk} = 'Voip_aaa'; #For Astrisk accounting $ACCT{asterisk} = 'Voip_aaa'; %AUTH = (); #For VoIP GNU Gatekeeper Auth $AUTH{gnugk} = 'Voip_aaa'; #For Astrisk accounting $AUTH{asterisk} = 'Voip_aaa';
Залить базу:
# mysql -D abills < db/Voip.sql
Работа с системой
Заведение направлений
/ System configuration/ VoIP/ Routes/
Формат экспорта
PREFIX[TAB]NAME[TAB]STATUS[TAB]
Формат импорта
PREFIX[TAB]NAME[TAB]STATUS[TAB]
После заведения направлений нужно в тарифных планах указать цену направлений
PREFIX | Префикс направления Например 0072 |
NAME | Название направления |
STATUS | Статус активности направления: 0 - активно 1- отключено |
Тарификация
/ System configuration/ VoIP/ Tarif Plans/
# | Номер тарифного палата. Если поле не заполнено указывается следуюший по порядку номер |
---|---|
Name: | Название |
Alert: | Отправка предупреждения о израсходованом депозите на E-mail |
Day fee: | Дневная абонплата |
Month fee: | Месячная абонплата |
Simultaneously: | Количество одновременных звонков клиентов |
Time limit (sec) | Лимит времени |
Day | день |
Week | неделя |
Month | месяц |
Activation: | Начисления при активации аккаунта |
---|---|
Change: | Начисления при изменении тарифного плана |
Credit Threshold: | Несёмный минимум |
Max. session time (sec.): | Максимальное время сессии в секундах |
Age (Days): | Время существования учётной записи абонента |
Payment type: | Вод оплаты. Предоплата - Пользователь может работать только при положительном балансе Послеоплата - Пользователь авторизируется и работает без учёта баланса |
Min. session cost: | Минимальная сума которая снимается за активную сессии |
Free Time: | Предоплаченное время звонков. Распространяется на все звонки. Если нужно отдельно предо плаченое время на разные направления нужно использовать расширенную тарифкацию |
---|---|
First period: | |
Step Of first period: | |
Next Period: | |
Step of next period: | |
Time Division (Seconds .): | Интервал тарификации. По умолчанию секунды. Если возникает ситуация что нужно тарифицировать звонки абонентов не по секундно, а скажем за каждые полные или неполные 10 секунд в этом поле указываем 10. Если абонент проговорил 43 секунды система ему посчитает как за 50 секунд. |
Формат импорта цен направлений
PREFIX[TAB]TRUNK[TAB]EXTRA_TARIFICATION[TAB]PRICES1[TAB]PRICES2
PREFIX | Префикс |
TRUNK | ID транка |
EXTRA_TARIFICATION | Расширенная тарификация |
PRICES… | Цены на разные интервалы времени. Указываются через табуляцию |
Формат экспорта
PREFIX[TAB]NAME[TAB]STATUS[TAB]ADD_DATE[TAB]PRICE
Пример
001 US - Continental Активовано 0000-00-00 7.00000 001204 Canada Активовано 0000-00-00 35.00000 001242 Bahamas Активовано 0000-00-00 28.00000
Расширенная тарификация
/ System configuration/ VoIP/ Extra tarification/
Данная функция разрешает дополнить тарификацию тарифного плана дополнительными возможностями.
- Предоплаченные минуты
Опция разрешает задать определённое количество предоплаченных минут для направлений. Предоплаченные минуты считаются суммарно для всех направлений временного интервала входящих в группу предоплаченного времени. Предоплаченно время считается от начала периода тарификации. (Для модуля VOIP период тарификации совпадает с календарным месяцем)
Заведение шлюзов операторов связи
/ System configuration/ VoIP/ Trunks/
VOIP Provider | Название провайдера |
---|---|
Name | Название транка |
Add Prefix | Добавить префикс к номеру |
Delete Prefix | Удалить префикс из номера |
Protocol | Протокол соединения |
Provider IP | Адрес транка |
Extra Parameters | Дополнительные параметры |
Failover Trunk | Транки при недоступности основного |
Курс тарификации
$conf{VOIP_UNIT_TARIFICATION}=1; | При включённой опции цена прописывается в условных единицах которые потом пересчитываются по курсу в реальных деньги. Курс пересчёта заводиться в меню / System configuration/ VoIP/ Exchange rate. Система автоматически пересчитывает цену при каждом изменении курса. При включённой опции администратору предоставляется возможность заводить тарифные планы только в условных единицах. После Сохранения тарификации сума пересчитывается в денежный эквивалент. Если не установлен обменный курс условные еденицы переводятся по курсу один к одному |
---|---|
$conf{VOIP_NUMBER_EXPR}='search_side/replace_side;search_side/replace_side'; | Регулярные выражения преобразования вызываемого номера. search_side/replace_side - права левая часть регулярного выражения $number - зарезервированная переменная номера Регулярные выражения разделяются точкой с запятой (;) Система завершает преобразовании номера после первого удачного преобразования |
Пример обработки номера регулярным выражением:
$conf{VOIP_NUMBER_EXPR} = '^([0-9]{4,6})$/74832$number;'.
'^2([0-9]{6})$/7483$number;'.
'(^9[0-9]{9})/7$number;'.
'^810/;'.
'^8/7;'.
'^*8/7;'.
'^4832/74832';
Курсы тарификации устанавливаются в меню / System configuration/ VoIP/ Exchange rate/. После установки курса система автоматически пересчитывает все тарифы
$conf{VOIP_CALLER_NUMBER_EXPR}='search_side/replace_side;search_side/replace_side'; | Регулярные выражения преобразования номера звонящего. |
---|
Ошибки авторизации
- No price for route prefix '7' number '00748322111'
нужно завести интервал для данного направления в тарифном плане через Тарифный план / Интервалы / Маршруты
. Выбрать интервал и нажать кнопку изменить
- No route '2111'
нужно завести направление с префиксом начинающимся на 2 / Настройка / VoIP / Направления
и повторно в интервалах инициализировать его Тарифный план / Интервалы / Маршруты
Работа с cdr файлами
Для работы с cdr файлами существует программа cdr_analyzer
Программа может запускатся как с cron так и работать в режиме демона
Установка
# cp cdr_analyzer /usr/abills/Abills/modules/Voip/ # ln -s /usr/abills/Abills/modules/Voip/cdr_analyzer /usr/abills/libexec/cdr_analyzer
Аргументы программы
help | справка |
---|---|
CDR_FILE= | Путь к файлу или каталогу содержащему cdr файлы (По умолчанию: /home/asm/abills/var/log/cdr/) |
CDR_EXPR='expr' CALLER_NUMBER CALLED_NUMBER DATE TIME START (2012-01-01 00:00:00) DURATION sec or (00:11:11) | Выражение для анализа файла |
UNKNOWN_CDR_FILE=… | Путь к файлу куда складываются не определённые записи анализируемого cdr файла |
CALLER_NUMBER= | Анализировать только звонки с номера. Остальные записи игнорировать |
CALL_DATE=«xxxx-xx-xx» | Добавить дату к візову если в cdr файле только время звонка |
LOG_FILE=… | Путь к лог файлу программы |
-d | Режим демона |
UPDATE_TIME=… | Время обновление при работе в режиме демона |
BACKUP_DIR=[DIR] | Каталог для проанализированных файлов |
DEBUG=… | Режим отладки 1..8 |
NAS_IDS= | Прикрепить записи о звонкам к определённым серверам доступа |
Пример выражения
cdr Файл
2012-06-09;15:54:00;2037197;3878718;15238 2012-06-10;09:23:00;2037197;3878718;53 2012-06-10;10:34:00;2038938;2662996;840 2012-06-14;15:43:00;2030393;3435545;9 2012-06-14;16:00:00;2030393;3435545;6 2012-06-14;11:38:00;2037047;3376251;16
Выражение
# /usr/abills/libexec/cdr_analyzer CDR_EXPR="(\d{4}-\d{2}-\d{2});(\d{2}:\d{2}:\d{2});(\d+);(\d+);(\d+)|DATE,TIME,CALLER_NUMBER,CALLED_NUMBER,DURATION"