artem
17.06.2013
17247

Связка WebRTC и Asterisk

WebRTC — относительно новая технология, позволяющая, в том числе, реализовать функцию звонка с сайта. WebRTC реализована в Asterisk 11, но не работает с распространёнными браузерами без патчей, поэтому для связки Asterisk и WebRTC лучше использовать программу webrtc2sip. webrtc2sip можно использовать с более старыми версиями Asterisk, к тому же донастройка Asterisk практически не требуется.

Сборка WebRTC


Приведенные шаги сборки верны для CentOS 5.8 x86_64. Более подробная инструкция по сборке Doubango IMS Framework и webrtc2sip приведена на странице http://code.google.com/p/webrtc2sip/wiki/Building_Source_v2_0#Building_Doubango_IMS_Framework_and_3rd-party_libraries.

Установка инструментов и библиотек для сборки

yum install autoconf libtool make gcc gcc-c++ subversion cvs openssl-devel speex-devel libxml2-devel

Для получения некоторых исходниках понадобится git, собираем его:

(для сборки git понадобится еще несколько зависимостей)

yum install gettext-devel perl-ExtUtils-MakeMaker

wget http://git-core.googlecode.com/files/git-1.7.10.rc0.tar.gz

tar xzf git-*.gz

cd git-*

./configure

make && make install

Установка libsrtp (Если Вы используете FreePBX, достаточно выполнить yum install libsrtp-devel)

git clone https://github.com/cisco/libsrtp/

cd libsrtp

CFLAGS=»-fPIC» ./configure —enable-pic

make && make install

Установка libgsm (Для поддержки кодека GSM)

wget http://www.quut.com/gsm/gsm-1.0.13.tar.gz

tar -xvzf gsm-1.0.13.tar.gz

cd gsm-1.0-pl13 && make && make install

#cp -rf ./inc/* /usr/local/include

#cp -rf ./lib/* /usr/local/lib

Установка g729

(может понадобится вручную создать поддиректорию m4 в директории с исходным кодом для успешного выполнения скрипта autogen.sh)

svn co http://g729.googlecode.com/svn/trunk/ g729b

cd g729b

./autogen.sh

./configure —enable-static —disable-shared

make && make install

Установка iLBC

svn co http://doubango.googlecode.com/svn/branches/2.0/doubango/thirdparties/scripts/ilbc

cd ilbc

wget http://www.ietf.org/rfc/rfc3951.txt

awk -f extract.awk rfc3951.txt

./autogen.sh

./configure

make && make install

Установка Doubango IMS Framework (может понадобится вручную создать поддиректорию m4 в директории с исходным кодом для успешного выполнения скрипта autogen.sh)

svn checkout http://doubango.googlecode.com/svn/branches/2.0/doubango doubango

cd doubango

./autogen.sh

./configure —with-ssl —with-srtp

make && make install

Установка webrtc2sip

(может понадобится вручную создать поддиректорию m4 в директории с исходным кодом для успешного выполнения скрипта autogen.sh)

svn co http://webrtc2sip.googlecode.com/svn/trunk/ webrtc2sip

cd webrtc2sip

./autogen.sh

./configure —prefix=/opt/webrtc2sip

make && make install

cp -f ./config.xml /opt/webrtc2sip/sbin/config.xml

При сборке могут возникнуть ошибки

src/trtp_srtp.c:71: error: ‘srtp_policy_t’ has no member named ‘window_size’

src/trtp_srtp.c:72: error: ‘srtp_policy_t’ has no member named ‘allow_repeat_tx’

В этом случае нужно в файле ./tinyRTP/src/trtp_srtp.c закментировать строки

ctx->policy.window_size = 2048;

ctx->policy.allow_repeat_tx = 1;

srtp_ctx->rtp.policy.window_size = 2048;

srtp_ctx->rtp.policy.allow_repeat_tx = 1;

Создаем пользователя для запуска webrtc2sip

useradd webrtc2sip

chown -R webrtc2sip /opt/webrtc2sip

Запускаем webrtc2sip

sudo -u webrtc2sip /opt/webrtc2sip/sbin/webrtc2sip

У webrtc2sip отсутствует функция запуска в режиме демона, поэтому webrtc2sip следует запускать в screen

Лог сообщений программы можно писать, например, так

sudo -u webrtc2sip /opt/webrtc2sip/sbin/webrtc2sip > >(tee /opt/webrtc2sip/sbin/log) 2> >(tee /opt/webrtc2sip/sbin/log >&2)

Создаем SIP-пир на Asterisk, подойдут стандартные настройки.

Протестировать работу WebRTC можно на странице http://www.sipml5.org/call.htm

Заполняем поля следующим образом (Здесь 1.1.1.1 — IP-адрес хоста Asterisk, 101 — SIP-пир, настроенный на Asterisk):

Display Name: что-угодно

Private Identity: 101

Public Identity: 101@1.1.1.1

Password: пароль

Realm: 1.1.1.1

В «Expert mode»:

Disable Video: <отмечаем>

Enable RTCWeb Breaker: <отмечаем> (для перекодирования медиа в приемлемый для Asterisk формат)

WebSocket Server URL: ws://1.1.1.1:10062

На основной странице жмем «Login». Если всё сделано правильно и sipML5 удасться подключиться, то над настройками появится слово «Connected». После этого sipML5 может принимать и совершать вызовы.

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

10 доводов в пользу Asterisk

Распространяется бесплатно.

Asterisk – программное обеспечение с открытым исходным кодом, распространяется по лицензии GPL. Следовательно, установив один раз Asterisk вам не придется дополнительно платить за новых абонентов, подключение новых транков, расширение функционала и прочие лицензии. Это приближает стоимость владения станцией к нулю.

Безопасен в использовании.

Любое программное обеспечение может стать объектом интереса злоумышленников, в том числе телефонная станция. Однако, сам Asterisk, а также операционная система, на которой он работает, дают множество инструментов защиты от любых атак. При грамотной настройке безопасности у злоумышленников нет никаких шансов попасть на станцию.

Надежен в эксплуатации.

Время работы серверов некоторых наших клиентов исчисляется годами. Это значит, что Asterisk работает несколько лет, ему не требуются никакие перезагрузки или принудительные отключения. А еще это говорит о том, что в районе отличная ситуация с электроэнергией, но это уже не заслуга Asterisk.

Гибкий в настройке.

Зачастую возможности Asterisk ограничивает только фантазия пользователя. Ни один конструктор шаблонов не сравнится с Asterisk по гибкости настройки. Это позволяет решать с помощью Asterisk любые бизнес задачи, даже те, в которых выбор в его пользу не кажется изначально очевидным.

Имеет огромный функционал.

Во многом именно Asterisk показал какой должна быть современная телефонная станция. За многие годы развития функциональность Asterisk расширилась, а все основные возможности по-прежнему доступны бесплатно сразу после установки.

Интегрируется с любыми системами.

То, что Asterisk не умеет сам, он позволяет реализовать за счет интеграции. Это могут быть интеграции с коммерческими телефонными станциями, CRM, ERP системами, биллингом, сервисами колл-трекинга, колл-бэка и модулями статистики и аналитики.

Позволяет телефонизировать офис за считанные часы.

В нашей практике были проекты, реализованные за один рабочий день. Это значит, что утром к нам обращался клиент, а уже через несколько часов он пользовался новой IP-АТС. Безусловно, такая скорость редкость, ведь АТС – инструмент зарабатывания денег для многих компаний и спешка во внедрении не уместна. Но в случае острой необходимости Asterisk готов к быстрому старту.

Отличная масштабируемость.

Очень утомительно постоянно возвращаться к одному и тому же вопросу. Такое часто бывает в случае некачественного исполнения работ или выбора заведомо неподходящего бизнес-решения. С Asterisk точно не будет такой проблемы! Телефонная станция, построенная на Asterisk может быть масштабируема до немыслимых размеров. Главное – правильно подобрать оборудование.

Повышает управляемость бизнеса.

Asterisk дает не просто набор полезных функций, он повышает управляемость организации, качества и комфортности управления, а также увеличивает прозрачность бизнеса для руководства. Достичь этого можно, например, за счет автоматизации отчетов, подключения бота в Telegram, санкционированного доступа к станции из любой точки мира.

Снижает расходы на связь.

Связь между внутренними абонентами IP-АТС бесплатна всегда, независимо от их географического расположения. Также к Asterisk можно подключить любых операторов телефонии, в том числе GSM сим-карты и настроить маршрутизацию вызовов по наиболее выгодному тарифу. Всё это позволяет экономить с первых минут пользования станцией.