Да задали мне недавно весьма интересную задачку. А именно у заказчика развернут Cisco Unified Communication Manager (CUCM) 8.6 версии, который по средством шлюза Cisco ISR 2821 подключен к провайдеру. Подключения между CUCM и ISR 2821 и провайдером осуществлено через SIP trunk рис.1.
Рис.1. Схема подключения.
Вроде бы все хорошо, да вот dtmf сигнал между абонентами заказчика и провайдером не работал. Пообщавшись с провайдером я понял, что провайдер за бесплатно понимает только чистый inband G711 dtmf, при чем при наличии какого либо упоминания про RFC2833 нужно доплачивать монету. Расстроившись жадности провайдера я начал искать возможность транскодировать сигнал.
Вот и задача: CUCM умеет только RFC2833 dtmf а провайдер только inband G711 dtmf, необходимо с помощью Cisco ISR 2821 транскодировать RFC2833 dtmf в inband G711 dtmf.
Проглядев просторы интернета я нашел статьи как это сделать, за что большое спасибо их авторам:
Статья Михалыча - к сожалению упущен важный момент необходимость CCME;
Пост Nickulichev Alexander - все хорошо, вот только я долго не мог понять что к чему относиться и где именно нужно регистрировать ресурс для транскодинга, и зачем мне CCME если у меня есть полноценный CUCM.
Поэтому решил предложить свое описание решения данной задачи.
1. Создаем dial-peer на CUCM c dtmf-relay rtp-nte;
dial-peer voice 7000 voip
description to CUCM 7xxx
destination-pattern 7...
session protocol sipv2
session target ipv4:192.168.1.2
codec g711alaw
dtmf-relay rtp-nte
no vad
2. Создаем dial-peer на ISP без dtmf-relay;
dial-peer voice 1 voip
description to ISP 0xxxxxxxxx
destination-pattern 0.........
session protocol sipv2
session target ipv4:192.168.10.1
codec g711alaw
no vad
3. Определяем ресурс для dspfarm;
voice-card
dsp services dspfarm
А вот тут самое интересное, для активации транскодинга dsp ресурс должен быть зарегистрирован на локальном CCME иначе CUBE он же IPIPGW не начнет транскодировать.
4. Настраиваем взаимодействие sccp на взаимодействие с локальным ссme;
sccp local FastEthernet0/0 - определяем интерфейс, через который будем взаимодействовать с CCME
sccp ccm 192.168.1.1 identifier 1 version 7.0 - определяем адрес CCME приоритет и версию CCME
sccp - просто включаем протокол sccp
5. Определяем sccp группу;
sccp ccm group 1
associate ccm 1 priority 1 - ассоциируем ccme в группу где ccm 1
соответствует sccp ccm с identifier 1
associate profile 1 register TRANSCODER - ассоциируем с dspfarm profile 1 и определяем имя регистрации на ccme - TRANSCODER
6. Создаем dspfarm для транскодирования;
dspfarm profile 1 transcode
codec g711alaw
maximum sessions 4
associate application SCCP
shutdown
7.Активируем локальный CCME на один из интерфейсов в примере на 192.168.1.1.;
telephony-service
sdspfarm units 1
sdspfarm transcode sessions 4 - максимальное количество сессий для транскодирования
sdspfarm tag 1 TRANSCODER - имя профайла для транскодирования
max-ephones 1
max-dn 1
ip source-address 192.168.1.1 port 2000 strict-match
create cnf-files
Вот и должно наступить счастье. По крайней мере у меня все заработало.
Есть вариант упрощённой реализации данного сервиса. Достаточно добавить в пир
ОтветитьУдалить"dtmf-relay h245-signal h245-alphanumeric cisco-rtp rtp-nte".
Очень сомневаюсь. В статье описано inband G711 dtmf, то есть сигнал передается непосредственно в RTP потоке, а ваш dtmf-relay h245-signal h245-alphanumeric cisco-rtp rtp-nte использует H.323 протокол.
УдалитьСогласен, не обратил внимание, что в данном примере используется SIP протокол.
ОтветитьУдалитьЗадумался я, видимо заработался совсем. Короче, у меня эта строка прописана в SIPовом пире, который смотрит в сторону именно SIP провайдера (у которого inband dtmf only), а на входе в пир у меня H.323 с CUCM-a (у которого RFC2833 only). Т.е. разница с представленной схемой только с одной левой ногой. И при этом одна строка в пире решает всю описанную выше проблему, DTMF-ы в сторону провайдера воспринимаются. Что же получается, делаем левую ногу схемы в H.323 и вуаля...
ОтветитьУдалитьМаксим вы прости счастливчик, ваш оператор адекватно и главное бесплатно воспринял RFC2833 inband dtmf. И если быть откровенным таких большенство.
ОтветитьУдалитьНо я описал ситуацию, когда оператор за это хочет денюшку, и воспринимае dtmf только как чистые звуковые колебания, а при появлении rtp-nte DTMF не воспринимается.
h245-alphanumeric and h245-signal—These two methods are available only on H.323 dial peers. This is an out-of-band DTMF relay
rtp-nte—Real-Time Transport Protocol (RTP) Named Telephone Events (NTE). This is an in-band DTMF relay mechanism defined by RFC2833.
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/voice/cube/configuration/cube-book/dtmf-relay.html
Спасибо за подробный ответ. Значит счастье есть)))
УдалитьЗдравствуйте, уважаемый Mwmailster! Очень помогла Ваша статья, огромное Вам спасибо! Есть одна проблема с MVA. Можете помочь?
ОтветитьУдалитьЕсли можете, напишите, пожалуйста, на почту: nikoseol@mail.ru
ОтветитьУдалитьС большим уважением, Сергей.
Добрый день !
ОтветитьУдалитьА как посоветуеье поступить - если в наличии только СМЕ с телефонами SCCP и SIP trunk в сторону оператора, принимающего только inband ?
Здравствуйте,
ОтветитьУдалитьСкажите пожалуйста как быть если у меня задействован MGCP?
Можно транскодинг на кубе без поднятия CME
ОтветитьУдалитьhttps://www.cisco.com/c/en/us/support/docs/voice-unified-communications/unified-border-element/115018-configure-cube-lti.html