Да задали мне недавно весьма интересную задачку. А именно у заказчика развернут 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
Вот и должно наступить счастье. По крайней мере у меня все заработало.


















