Коротко: ENUM в IP телефонии

в 11:30, , рубрики: asterisk, enum, ip-телефония, метки: , ,

Как известно, существует рекомендация E.164 ITU-T, определяющая план нумерации для телефонных сетей и формат телефонных номеров. Номера по E.164 могут иметь максимум 15 цифр и обычно записываются с префиксом «+». Кроме того, они могут быть использованы в DNS с помощью электронной нумерации (ENUM, Electronic Numeration) для определения порядка вызова абонента с таким номером. Это дает нам некоторый простор при использовании традиционных сетей телефонии и сетей пакетной передачи данных. В частности, это позволит нам сэкономить пару рублей на звонках уже сегодня.

Итак, подобно ip адресам с обратным DNS, использующим зону in-addr.arpa, телефонным номерам при помощи зоны e164.arpa могут быть сопоставлены записи, определяющие возможности по связи с абонентским номером. Например, номеру +7 123 123-23-23 будут соответствовать записи в зоне 3.2.3.2.3.2.1.3.2.1.7.e164.arpa — разумеется, в этом случае, как и с ip адресами, можно делегировать зону более высокого уровня для управления оператором, который использует соответствующий пул номеров. Получить зону в e164.arpa может только национальный координатор, выбираемый правительством. Сами понимаете, в нашей стране этот бюрократический вопрос не решен и когда будет решен — не известно никому. На этом можно было бы и закрыть вопрос, если бы не существовало альтернативных ENUM сервисов, например e164.org, регистрация в которых доступна любому абоненту.
В соответствующей номеру зоне хранятся NAPTR записи, определяющие возможности для вызова абонента, например:

$ORIGIN 3.2.3.2.3.2.1.3.2.1.7.e164.org.
 IN NAPTR 100 10 "u" "E2U+sip"  "!^.*$!sip:mysipid@example.net!" .
 IN NAPTR 102 10 "u" "E2U+mailto" "!^.*$!mailto:myemail@example.com!" .

Тут, в зависимости от того, что именно мы хотим абоненту передать, можно либо вызвать его голосом по SIP, либо, если планировалось отправить факс, эти данные можно сразу послать по e-mail. Возможно описание переадресации вызова, работа с http и другими ресурсами, в зависимости от того, на что способны терминалы сторон.
И, в заключение, пример работы с ENUM из Asterisk:

exten => _+7.,1,Noop(${EXTEN:1})                                                                                                                                                              
exten => _+7.,2,Set(peer=${ENUMLOOKUP(${EXTEN},sip,,1,e164.org)})                                                                                                                          
exten => _+7.,3,GotoIf($["${peer}" != ""]?4:failed)                                                                                                                                           
exten => _+7.,4,Dial(SIP/${peer})                                                                                                                                                             
exten => _+7.,5,Hangup                                                                                                                                                                        
exten => _+7.,n(failed), ...                                                                                                                                                   

Это вводная статья, которая позволит вам сделать быстрый старт. Если тема будет интересна, могу написать еще несколько статей о ENUM и DUNDi. Прошу в комментариях оставить ваше мнение о нужности этой тематики. Помните, чем больше нас, тем в итоге интереснее использование ip-телефонии.

Автор: Rumka

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js