Cisco в качестве SIP клиента, или регистрируемся у провайдера...
Добавлено: 22 сен 2015, 10:03
Задача:
Принять от провайдера 5ть телефонов по SIP
Условие:
Условия были ограничены только фантазией моего провайдера, а она была безгранична...
1) На каждый телефон свой логин-пароль
2) Логин содержит буквы
3) Другую информацию провайдер предоставлять отказался, сказав что она не нужна для соединения, так что вычислять её будем сами.
Дано:
Провайдер:
1.2.3.4 - IP адрес VoIP сервера провайдера
lvz1 - логин для регистрации телефона
11111 - пароль для регистрации телефона
222222 - Наш номер телефона
мы:
Cisco 2821
Реализация:
В данной статье приведены не полные настройки - предполагается что телефония у вас настроена и работает - тут только то, что мне пришлось добавить к работающему конфигу, что бы выполнить задачу.
Итак, для начала пробуем регистрироваться у провайдера
credentials - это для входящих вызовов, что бы нам могли позвонить по тем номерам, что провайдер выдал - этих записей может быть много
authentication - это для исходящих звонков - то есть с этим номером от нас будет уходить вызов - такая запись может быть одна
Итак, мы тут регистрируем 5ть телефонов lvz1-5, логины и пароли нам провайдер сообщил, а вот realm пришлось узнавать самому. В начале в качестве realm я написал ИП адрес провайдера - регистрация не прошла, но в дебагe (командой debug ccsip messages ) я увидел вот такое
и изменил realm с ИП адреса на asterisk
Проверяем что телефоны зарегистрировались у провайдера
Все пять телефонов зарегистрированы - можно попробовать совершить звонок с мобилы на один из наших номеров. В анкете провайдера таких данных не оказалось, но они прописаны в договоре. Итак, звоним с мобилы на наш номер +7(4725) 222222 и смотрим дебаг того, что происходит (по команде deb voip ccapi all выделяя следующее)
тут мы видим:
1) Звонок прошел - это хорошо
2) Звонок пришёл с номера cisco-ani=333333 (допустим это мой сотовый)
3) А вот пришел он на номер dest=lvz1
Последнее стало для меня великим сюрпризом, ибо до этого момента я и помыслить не мог, что номер телефона может содержать буквы. Но провайдер решил иначе. Проблема заключается в том, что вход в пир у меня обычно осуществляется по destination-pattern, но не в данном случае такое не работает, ибо туда нельзя вписать буквы. Потому выход выглядит в виде такого кода:
Итак, звонок у меня входит в 3 пир, где при входе преобразуется по правилу IN_REINFAKOM, которое ссылается на 100 лист преобразования. В нём я отлавливаю последнюю цифровую часть логина (спасибо провайдеру хоть за то, что сохранил хоть какие то циферки) и преобразую в локальные номера АТС. Таким образом звонок от провайдера попадает на мою станцию.
Литература:
http://www.cisco.com/cisco/web/support/ ... onfig.html
Принять от провайдера 5ть телефонов по SIP
Условие:
Условия были ограничены только фантазией моего провайдера, а она была безгранична...
1) На каждый телефон свой логин-пароль
2) Логин содержит буквы
3) Другую информацию провайдер предоставлять отказался, сказав что она не нужна для соединения, так что вычислять её будем сами.
Дано:
Провайдер:
1.2.3.4 - IP адрес VoIP сервера провайдера
lvz1 - логин для регистрации телефона
11111 - пароль для регистрации телефона
222222 - Наш номер телефона
мы:
Cisco 2821
Реализация:
В данной статье приведены не полные настройки - предполагается что телефония у вас настроена и работает - тут только то, что мне пришлось добавить к работающему конфигу, что бы выполнить задачу.
Итак, для начала пробуем регистрироваться у провайдера
Код: Выделить всё
sip-ua
credentials username lvz1 password 11111 realm asterisk
credentials username lvz2 password 22222 realm asterisk
credentials username lvz3 password 33333 realm asterisk
credentials username lvz4 password 44444 realm asterisk
credentials username lvz5 password 55555 realm asterisk
authentication username lvz1 password 11111 realm asterisk
registrar ipv4:1.2.3.4 expires 3600
sip-server ipv4:1.2.3.4
connection-reuse
host-registrar
credentials - это для входящих вызовов, что бы нам могли позвонить по тем номерам, что провайдер выдал - этих записей может быть много
authentication - это для исходящих звонков - то есть с этим номером от нас будет уходить вызов - такая запись может быть одна
Итак, мы тут регистрируем 5ть телефонов lvz1-5, логины и пароли нам провайдер сообщил, а вот realm пришлось узнавать самому. В начале в качестве realm я написал ИП адрес провайдера - регистрация не прошла, но в дебагe (командой debug ccsip messages ) я увидел вот такое
Код: Выделить всё
WWW-Authenticate: Digest realm="asterisk",nonce="d18aa652a6639effeaeca666b8dca5b6",domain="sip:sip.name.ru",stale=false,algorithm=MD5
Проверяем что телефоны зарегистрировались у провайдера
Код: Выделить всё
gw-1#sh sip-ua register status
Line peer expires(sec) registered
================================ ========== ============ ==========
lvz1 -1 2601 yes
lvz2 -1 2631 yes
lvz3 -1 2834 yes
lvz4 -1 2854 yes
lvz5 -1 2873 yes
Код: Выделить всё
cisco-username=233700
----- ccCallInfo IE subfields -----
cisco-ani=333333
cisco-anitype=0
cisco-aniplan=0
cisco-anipi=0
cisco-anisi=0
dest=lvz1
cisco-desttype=0
cisco-destplan=0
cisco-rdie=FFFFFFFF
cisco-rdn=
cisco-lastrdn=
cisco-rdntype=0
cisco-rdnplan=0
cisco-rdnpi=-1
cisco-rdnsi=-1
cisco-redirectreason=-1 fwd_final_type =0
final_redirectNumber =
hunt_group_timeout =0
1) Звонок прошел - это хорошо
2) Звонок пришёл с номера cisco-ani=333333 (допустим это мой сотовый)
3) А вот пришел он на номер dest=lvz1
Последнее стало для меня великим сюрпризом, ибо до этого момента я и помыслить не мог, что номер телефона может содержать буквы. Но провайдер решил иначе. Проблема заключается в том, что вход в пир у меня обычно осуществляется по destination-pattern, но не в данном случае такое не работает, ибо туда нельзя вписать буквы. Потому выход выглядит в виде такого кода:
Код: Выделить всё
voice translation-rule 100
rule 1 /.*1/ /1001/
rule 2 /.*2/ /1002/
rule 3 /.*3/ /1003/
rule 4 /.*4/ /1004/
rule 5 /.*5/ /1005/
!
!
voice translation-profile IN_REINFAKOM
translate called 100
dial-peer voice 3 voip
translation-profile incoming IN_REINFAKOM
voice-class codec 1
voice-class sip dtmf-relay force rtp-nte
session protocol sipv2
session target sip-server
incoming called-number .%
dtmf-relay rtp-nte
no vad
Литература:
http://www.cisco.com/cisco/web/support/ ... onfig.html