06.06.08 выложено очередное обновление модуля версия 0.0.3 для версии 1.4. Добавлены команды translam и prefix. Команда translam производит трансляцию номера по маске, которая имеет большую длину. Команда prefix добавляет префикс к внутреннему номеру. Подробное описание в разделе проекты.
30.05.08 выложено обновление модуля. Добавлена новая функция drop. Она отбрасывает вызовы не найденных СallerID(num). В настройках ChgClid() добален аргумент "s". При включенном аргументе функция возвращает переменную FWSTATUS из Dial-plan двух значений: CALLACCEPT и CALLREJECT, при этом обрывание вызова не происходит, а при отсутствии аргумента "s" присходит прекращения вызова (hangup).
26.05.08 выложен chgclid модуль для Asterisk PBX, как по мне то очень полезный. Принцип работы его состоит в том, что он умеет менять СallerID(num) на Asterisk PBX. Более подробную информацию о данном модуле можно узнать в разделе проекты.
Сначала объясню для чего-же конкретно нужен данный модуль.
В принципе на Asterisk PBX нет никаких проблем сделать подстановку СallerID(num) и с помощью команды Set непосредственно в самом dialplan-е, брать соответствие номеров можно из любой базы данных или сделать в самом dialplan-e. Но есть одно но, при данном подходе нужно обязательно для каждого внутреннего телефона делать соответствующую запись в базе данных, что представляет рутинную работу для любого администратора. В данном модуле реализован подход подобно как в Aqua-GK.
Как правило количество внутренних номеров телефонов (дальше будем их называть внутренние CLID) превышает количество номеров выдаваемых оператором внешней связи (дальше будем их называть внешние CLID). Принцип работы модуля состоит в том, что при помощи «регулярных выражений» можно сделать записи компактными и таким образом достичь упрощения администрирования внешних CLID.
Установка:
- Распаковать архив в отдельную директорию;
- Далее make, make install;
- В директорию /etc/asterisk скопировать файл chgclid.conf.
Настройка.
Основной и единственный файл конфигурации является chgclid.conf.
Внимание!!! По мере совершенствования модуля конфигурационный файл может претерпевать изменений.
На данный момент формат записи довольно таки простой.
В квадратных скобках обозначаются направления или имя сервис провайдера, предоставляющего услуги, к примеру, внешней связи.
Пример:
[telekom]
Пока что единственной командой есть команда translate
translate => внешний CLID(условное выражение внутренних CLI n1[| условное выражение внутренних CLI n2|.....])
Пример:
translate => 444570000(1101|110[3-578]|100X)
Все правила читаются с верху в низ, срабатывает первое попавшиеся.
Как видно из примера все номера, которые подходят под условные выражения (условные выражения разделены между собой знаком ' | ') находящиеся в скобках будут транслированы в номер 444570000. Правила составления условных выражений те-же, что и при составлении extension в файле extensions.conf.
Пример файла chgclid.conf.
[teleckom1]
translate => 444570000(1101|110[3-578]|100X)
translate => 444570001(1102|110[69]|)
[telekom2]
translate => 485250000(1101|110[3-578]|100X)
translate => 485250001(1102|110[69]|12XX)
Связующим звеном между dialplan-ом и и конфигурацией chgclid является команда dialplan-а ChgClid(), аргументом которой является имя направления (в нашем случае это сервис провайдер)
Пример в файле extensions.conf.
[macro-dial]
exten => s,1,ChgClid(${ARG4})
exten => s,n,Set(CDR(userfield)=${CALLERID(num)})
exten => s,n,Dial(${ARG3}/${ARG1}@${ARG2},,wW)
exten => s,n,Hangup()
[na_telekom1]
exten => _9XXXXXXX,2,Macro(dial, {EXTEN:1}, cisco, SIP, telecom1)
[na_telekom2]
exten => _9XXXXXXX,2,Macro(dial, {EXTEN:1}, cisco, SIP, telecom2)
Ну или простой вариант
[prosto]
exten => s,1,ChgClid(telecom1)
exten => s,n,Set(CDR(userfield)=${CALLERID(num)})
exten => s,n,Dial(SIP/{EXTEN:1}@cisco)
exten => s,n,Hangup()
Как видно из конфигурационных файлов в результате прохождения вызова, через файл extensions.conf, найдя, к примеру, команду exten => s,1,ChgClid(telecom1), будет произведена замена CallerID(num) согласно правил находящихся в блоке telecom1 файла chgclid.conf. Если это был-бы номер 1104 то он бы транслировался в номер 444570000. Если номера в блоке правил не существует номер не претерпевает изменений.
На странице закачек можно скачать исходный код модуля для версии asterisk 1.4 и 1.6.
Комментариев нет:
Отправить комментарий