Модуль chgclid для подстановки СallerID(num) в Asterisk PBX. Автор: Адаменко Юрий

14 views
Skip to first unread message
Message has been deleted
Message has been deleted

YuraSM

unread,
May 31, 2008, 3:46:17 AM5/31/08
to voipinfo_org_ua
http://www.voipinfo.org.ua/chgclid
Автор: Адаменко Юрий

Для чего-же конкретно нужен данный модуль.

В принципе на 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.
http://www.voipinfo.org.ua/downloads

30.05.08 выложено обновление модуля. Добавлена новая функция drop. Она
отбрасывает вызовы не найденных СallerID(num). В настройках ChgClid()
добален аргумент "s". При включенном аргументе функция возвращает
переменную FWSTATUS из Dial-plan двух значений: CALLACCEPT и
CALLREJECT, при этом обрывание вызова не происходит, а при отсутствии
аргумента "s" присходит прекращения вызова (hangup).

YuraSM

unread,
Jun 6, 2008, 4:16:17 AM6/6/08
to voipinfo_org_ua
06.06.08 выложено очередное обновление модуля версия 0.0.3 для версии
1.4. Добавлены команды translam и prefix. Команда translam производит
трансляцию номера по маске, которая имеет большую длину. Команда
prefix добавляет префикс к внутреннему номеру. Подробное описание в
разделе проекты.

YuraSM

unread,
Jun 10, 2008, 10:45:17 AM6/10/08
to voipinfo_org_ua
10.06.08 выложено обновление модуля версия 0.0.3 для версии 1.6.
Функционал даного модуля аналогичен функционалу для версии астериска
1.4. Подробное описание в разделе проекты.
Reply all
Reply to author
Forward
0 new messages