- PVSM.RU - https://www.pvsm.ru -
Доброго времени суток, Хабровчане.
Хочу поделится с сообществом своим опытом по реализации аудио-звонков c web и мобильных клиентов в Cisco UCCX. Возможно, он кому-нибудь поможет в будущем или в настоящем.
Итак, однажды, передо мной была поставлена задача организовать аудио-звонки с web и мобильных клиентов на в Cisco UCCX. Все знают прекрасные сервисы по типу zingaya, но заказчик четко ограничивал использование сторонних сервисов.
Задача свелась к написанию клиента, выбора SBC и пробрасыванием сигнализации от клиента на Cisco Call Manager.
Проведенный мною анализ остановил меня на трех способах реализации требований:
Я поставил описание этого варианта на первое место, как самый переспективный, который и был реализован.
Для остальных вариантов были написаны демо версии, но в продакш пошел первый.
Она феноменальна, особенно у компаний, которые уже используют Freeswitch в своей работе. Достаточно раскомментировать строчку endpoints/mod_rtmp в modules.conf, скомпилировать модуль (make mod_rtmp-install в src),
поправить конфигурационный файл в $FSPATH/conf/autoload_config/rtmp.conf.xml (а именно выставить ip, порт, диалплан),
подгрузить установленный модуль (load mod_rtmp в fs_cli) и открыть порт в iptables.
Все — можно приступать к разработке клиента.
Freeswitch содержит в себе демо-клиента, написанного на ActionScript3 с JS CallBacks (clients/flex).
Для данной задачи был написан Adobe AIR клиент, реализующий логику управления NetStream и callbacks от Freeswitch, таких как login, logout, call, notify и прочее.
Вкратце, работа происходит следующим образом:
Freeswitch на каждый NetStream назначает uuid канала, и дальше все звонки бриджует через себя. Единственная проблема, которую я словил, это невозможность использовать TTS и ASR (подключенными через unimrcp) MRCPv2 протоколу, при звонке с RTMP клиента.
Затраченное время на разработку — неделя, в две руки (то есть один человек или два одноруких кодера).
Благодаря Adobe AIR в полку клиентов было: desktop-client, tablet-client для iOS и Android, mobile-client для iOS и Android и Flash-client.
Код был один, различие только в layout и иконках, что очень порадовало как меня, так и заказчика.
Как показала практика, данный клиент стабилен на adsl, lan каналах и wifi. На 3G он вел себя непредсказуемо (впрочем как и покрытие МТС 3G). В любом случае, коннекты он держал, и максимум что было — corrupted audio.
Всем известная проблема, спасибо Путину Adobe за это.
Пока не решили для десктопных клиентов, мобильные клиенты используют наушники.
Если удаленная сторона это IP PBX, то Freeswitch возмет транскодинг на себя.
Но между RTMP клиентом и Freeswitch пока ходит Speex.
Нужна доработка mod_rtmp для поддержки G.711.
Для связи 2-х RTMP клиентов всегда нужен сервер.
Данный продукт также рассматривался как переспективный, пока я не потерпел неудачу с
добавлением функционала в Adobe AIR Mobile.
Для Desktop и Web клиентов, у данного продукта есть серьезные преимущества над первым в списке:
1) UDP-based протокол
2) Поддержка H.264 и G.711.
Поведение SIG и RTP абсолюно идентично первому варианту (только UDP вместо TCP).
В общем в связи с его неполной пригодностью для задачи, меня хватило только на его установку,
настройку и тестовый звонок. Она достаточно тривиальна и неплохо описана разработчиком.
Был сделан демо-клиент на Flash — срок разработки 3 дня.
Если признаться, на эту я возлагал наибольшие надежды.
У меня был достаточный опыт работы с Mobicents, поэтому поддержка WebRTC в версии 2.0.0 FINAL стала для меня приятной новостью.
Я всерьез грезил о видео- и аудио-звонках без плагинов и веб-браузеров, но судьба оказалась жестокой.
Я не буду описывать технологию WebRTC, ее без труда можно найти в поиске Хабра.
Отмечу только одно, что мне надо сделать татуировку: «Не используй драфты».
Желательно на лбу, желательно в зеркальном отражении, чтобы при утреннем бритье, я каждый раз вспоминал эту гениальную мысль, пришедшую когда реализация siprec draft для Broadworks не работала с реализацией siprec draft для Cisco (потому что Broadworks использовал siprec 04, а Cisco siprec 11).
Если интересно, то более-менее стабильно работал только Chrome билд 24, ночной Firefox отказывался, а экспериментальный Ericsson Bowser завесил мне и iPad, и мой Nexus S.
Поэтому я напишу гипотетические достоинства, и недостатки.
Был сделан демо-клиент который зависал в Ericsson Bowser и работал только в Chrome build 24 — срок разработки — 3 дня.
RTMP
wiki.freeswitch.org/wiki/Mod_rtmp [1]
RTMFP
flashphoner.com/flash-rtmfp-sip-gateway [2]
WebRTC
code.google.com/p/sipservlets/ [3]
code.google.com/p/sipservlets/wiki/HTML5WebRTCVideoApplication [4]
Надеюсь эта статья была вам полезна и съэкономила вам время при выборе одной из этих технологий.
Автор: drwatson32
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/rtmfp/27368
Ссылки в тексте:
[1] wiki.freeswitch.org/wiki/Mod_rtmp: http://wiki.freeswitch.org/wiki/Mod_rtmp
[2] flashphoner.com/flash-rtmfp-sip-gateway: http://flashphoner.com/flash-rtmfp-sip-gateway
[3] code.google.com/p/sipservlets/: http://code.google.com/p/sipservlets/
[4] code.google.com/p/sipservlets/wiki/HTML5WebRTCVideoApplication: http://code.google.com/p/sipservlets/wiki/HTML5WebRTCVideoApplication
[5] Источник: http://habrahabr.ru/post/169775/
Нажмите здесь для печати.