В предыдущей статье была рассмотрена настройка Астериска. Всё вроде здорово - сервак крутится, приложения цепляются, звонки ходят. Но было бы совсем здорово интегрировать IP телефонию и сайт. К примеру, на сайте компании размещается кнопка "Позвонить в техподдержку". Посетитель кликает, веб-приложение связывается с астериском и по SIP звонок идёт куда надо. Для таких проектов, как Drupal, Joomla и т.д. есть готовые решения. Ставится модуль, слегка поднастраивается и всё... Делов - на пару кликов! Но что делать, если у вас самописный проект? Для таких целей есть довольно интересное решение - red5phone. ОЧЕНЬ онтересная вещица. Если схемотично - суть её в следующем:

Как видно из описания, софтина крутится под Red5 сервером. Устанавливается До безобразия просто, но есть пара ньюансов!
- Софтина корректно работает только под Red5 версии 0.8 (все остальные версии Red5 не прокатывают - отваливается звук после 2-й секунды)
- Софтину нужно вытаскивать из svn. Версия, что выложена на офф.сайте имеет баги.
Для удобства и Red5 и red5phone протестированные на совместимость прикреплены в аттаче.
Приступим к установке:
Скачайте Red5, распакуйте его в /opt
Скачайте red5phone, распакуйте в папку /opt/red5/webapps. Должно получиться что-то типа /opt/red5/webapps/sip
По большому счёту - всё :)
Запускаем Red5 сервер
# cd /opt/red5 # ./red5.sh
При этом у вас должны быть установлены необходимые либы (java и пр. какие именно - сказать не могу, ставил на том же серваке, что и Asterisk + OpenMeetings).
По экрану побегут строчки. Последней строкой будет что-то типа
[INFO] [Launcher:/installer] org.red5.server.service.Installer - Installer service created
Далее - заходим броузером по адресу http://[IP-вашего-сервака]:5080/sip
Откроется страничка, на кторой будут 3 ссылки
Openlaszlo Phone Template Javascript Phone Template Flex Phone Template
На данном этапе Вы выбираете, какой шаблон для подключения будете использовать. Объяснять что к чему, думаю не имеет смысла - понятно из названий какие шаблоны для чего используются. К примеру, если зайти на Flex Phone Template, увидим следующее окно с настройками подключения

Вколотим данные, созданного аккаунта и нажмём "Login", увидим следующее окошко

Можете набирать номер и звонить. При этом в консоли можно наблюдать все датали процесса звонка.
SipUserAgent - listen -> Init... [SIPUser] register RegisterAgent: Registering contact <sip:0002@192.168.0.177:5070> (it expires in 3600 secs) RegisterAgent: Attempt to set renew time above original renew. Attempted=3600 origrenew=600 Response=SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.0.177:5070;branch=z9hG4bK682370;received=127.0.0.1;rport=5070 From: "0002" <sip:0002@127.0.0.1>;tag=z9hG4bK95608166 To: "0002" <sip:0002@127.0.0.1>;tag=as516dd5ec Call-ID: 207006716015@192.168.0.177 CSeq: 1 REGISTER Server: Asterisk PBX 1.6.1.19 Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO Supported: replaces, timer Expires: 3600 Contact: <sip:0002@192.168.0.177:5070>;expires=3600 Date: Mon, 10 May 2010 01:14:32 GMT Content-Length: 0 RegisterAgent: Registration success: [SIPUser] SIP Registration success 200 OK
Пример лога звонка в конференцрум
[INFO] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - Stream start +++ Audio ts: 64 +++ Audio ts: 128 [WARN] [NioProcessor-1] org.red5.server.stream.ClientBroadcastStream - First Audio timestamp is relative! 64 +++ Audio ts: 192 +++ Audio ts: 256 [SIPUser] streamStatus start +++ Audio ts: 320 +++ Audio ts: 384 +++ Audio ts: 448 +++ Audio ts: 512 *** 65 *** 65 *** 65 *** 65 *** 65 *** 65 *** 65 *** 65 *** 65 [SIPUser] dtmf #
Качество звука - просто замечательное.
В папках /opt/red5/webapps/sip/flex, /opt/red5/webapps/sip/javascript и /opt/red5/webapps/sip/openlaszlo лежат index.html. Покопавшись в нём (index.html) сможете выдернуть код для приручивания данной фитчи к себе на сайт. Помимо этого, покопавшись в конфигах, сможете настроить так, чтобы все данные для подключения к астериску были автоматом вколочены. В астериске - можно создать аккаунт специально для сайта и нарезать ему правил, по которым web-аккаунт сможет звонить только по одному номеру - техподдержке.
Чтобы Red5 стартовал автоматом - создайте файл /etc/init.d/red5 следующего содержания
#! /bin/sh
# red5 initscript
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Red5 flash streaming server"
NAME=red5
DAEMON_HOME=/opt/red5
DAEMON=$DAEMON_HOME/$NAME.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
. /etc/default/$NAME
fi
# Function that starts the daemon/service.
d_start() {
start-stop-daemon --start --pidfile $PIDFILE --chdir $DAEMON_HOME --background --make-pidfile --exec $DAEMON
}
# Function that stops the daemon/service.
d_stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE --name java
rm -f $PIDFILE
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart|force-reload)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
exit 0
Далее раскидаем симлинки по ранлевелам
# chmod 755 /etc/init.d/red5 # update-rc.d red5 defaults
Теперь после перезагрузки системы всё должно работать как надо.
Кстати, поковыврявшись в исходниках можно сделать довольно пристойные вещи!
Ссылка на страничку проекта red5phone
| Вложение | Размер |
|---|---|
| red5-0.8.0.tar_.gz | 33.35 Мб |
| sip.tar_.gz | 8.61 Мб |


Кстати, больше всего
Кстати, больше всего покорило, что НА САЙТ МОЖНО ПОЗВОНИТЬ!!!! Если посетитель будет находиться в момент звонка на страничке с кнопкой и кто-то позвонит на "web-номер" - у посетителя в колонках начнёт бринчать телефонный звонок, Flash запросит разрешение на доступ к микрофону и можно будет поговорить с тем, кто на данный момент будет находиться на сайте и поднимет трубку :) Вот веселуху можно устроить!!! :)
i-wire.net
i-wire.net
Угумс. Что-то типа такого
Угумс. Что-то типа такого можно организовать своими руками дёшево и сердито. При этом получить немного опыта в "настройке очередной хрени"
Вопрос
Уважаемый denis_aka_xaos
Благодаря этой статье удалось запустить эту фишку.
Но столкнулся с некоторыми проблемами, установил Red5 Server 0.9.1 Final + red5phone R53 работает сам телефон отлично, но только при включенном SSH терминале, как только PuTTY отключаю от сервера red5phone падает. Голову сломал почему он так работает. Может подскажите.
За статью огромное спасибо.
Похоже у тебя Red5 Server не
Похоже у тебя Red5 Server не стартует при запуске системы или стартует, но кривенько. Посмотри инит-скрипты запуска, возможно что-то надо подправить. Ну или на крайний случай, поставь screen и запускай Red5 Server в нём. Но при этом, посте перезагрузки системы придётся врукопашную опять запускать Red5
Не регистрируется клиент
Делал все по пунктах. Создал клиента в sip.conf астериска. Вот его настройки:
[405]
type=friend
context = phones
host = dynamic
secret = #405#
В поля SIP Server, SIP Realm, OB Proxy прописал IP сервера, на котором установлен астериск. В Red5 URL оставил - rtmp:/sip.
При этом после нажатия Login ничего не происходит. Подскажите, пожалуйста, в чем может быть причина.
Отправить комментарий