- База знаний
- Пример файла конфигурации XML для Cisco 8851 phone
- Пример файла конфигурации XML для Cisco 7970 phone
- Пример файла конфигурации XML для Cisco 9971
- Отладка VoIP звонка с Wireshark
- Книги
- Использование поля Diversion в SIP пакете
- Астериск и Н.323
- ISDN release cause codes
- Пример файла конфигурации голосового шлюза Cisco
- Пример конфигурации интерфейса E1 PRI в голосовом шлюзе Cisco
- Аналоговое зло
- Интернациональные телефонные коды стран
- Практикум по интеграции Астериск в комплексе с OpenBSC/Osmocom
- Факс по IP
Команда EnumLookup()
Назначение:
Поиск номера в ENUMОписание:
EnumLookup(exten)Поиск номера абонента, используя ENUM, и установка переменной 'ENUM'. Екстеншен должен быть задан в полном международном формате, включая код страны, но без пробелов или любых других символов перед кодом страны, по типу 46XXXXXXXX_ для Шведского номера телефона.
Коды возврата
На данный момент , этот сервис работает с каналами SIP, IAX и TEL. Если в результате будет получена правильная запись для канала SIP, то будет выполнена команда со следующим приоритетом. Если получена правильная TEL запись, то приоритет будет увеличен на 51 (если такой есть).Если поиск закончился неудачно и существует команда с приоритетом по смещению n + 101, то тогда следующей будет выполнена команда с этим приоритетом.
Пример
[fullaccess]exten=> _0[1-9]XXX.,1,BackGround(nic.at/enum-doing)
exten=> _0[1-9]XXX.,2,EnumLookup(431${EXTEN:1})
; ${EXTEN:1} - номер, набранный пользователем с обрезанным ведущим нулем.
; "431${EXTEN:1}" - номер в формате E.164.
;EnumLookup установит переменную ${ENUM} при удачном поиске. При неудачном - будет выполнен переход на приоритет +101.
exten=> _0[1-9]XXX.,3,BackGround(nic.at/enum-successful)
exten=> _0[1-9]XXX.,4,Dial(${ENUM},30)
exten=> _0[1-9]XXX.,5,Goto(104); По каналу SIP нет ответа, используем PSTN
exten=> _0[1-9]XXX.,103,BackGround(nic.at/enum-failed)
exten=> _0[1-9]XXX.,104,Dial,${TRUNK}/${EXTEN:1}
Другие примеры можно найти в разделе Asterisk E164 Call Routing.
Замечания
- Запуская свою локальную систему с ENUM подобными записями в DNS, для поддержки поиска направлений по E.164 номеру в DNS, вы сделаете невозможным поиск в глобальной ENUM базе, которая используется в разных странах мира. Для того, чтобы сконфигурировать поиск записей ENUM, используя несколько доменов, добавляйте Ваш локальный Enum DNS домен до глобального Enum домена, e164.arpa в файле конфигурации Asterisk: enum.conf.
- Для того, чтобы построить шаблонную NAPTR запись, в которой будут работать регулярные выражения, Вам понадобиться DNS сервер одних из последних версий, для BIND нужна, как минимум, версия 9 . Иначе, вторичный DNS сервер при получении зоны получит ее в искаженном виде, где конструкция "\\" будет заменена одиночным символом \.
- Если будет получена запись с типом канала TEL, EnumLookup установит в переменной только номерную часть URI, без префикса "tel:". Для других URL, префикс будет преобразован в вид SIP/ и т.д. , что дает нам возможность использовать результат в команде dial без каких либо преобразований в нашем плане набора.
- Asterisk может работать только с первой полученной NAPTR записью, он не получает все записи, которые соответствуют запросу, но имеющие разные приоритеты.
Если Вам необходимо получить ВСЕ записи ENUM и далее работать, с назначенными в ENUM записях приоритетами, прочтите этот раздел: Asterisk and multiple ENUM entries
Ссылки по теме:
- Asterisk and multiple ENUM entries: Asterisk AGI for use of any number of ENUM-entries
- ENUM: СтандартENUM
- enum.conf: конфигурация enum.conf
- Asterisk variables
- NIC.AT presentation on Asterisk and ENUM
- E164.org
- VPF ENUM Registry
- LCDial.sh AGI script: Asterisk AGI script for least cost dialing which also transparently attempts an ENUM lookup