Звонок с сайта? Элементарно!

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

Как видно из описания, софтина крутится под Red5 сервером. Устанавливается До безобразия просто, но есть пара ньюансов!

  1. Софтина корректно работает только под Red5 версии 0.8 (все остальные версии Red5 не прокатывают - отваливается звук после 2-й секунды)
  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_.gz33.35 Мб
sip.tar_.gz8.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 ничего не происходит. Подскажите, пожалуйста, в чем может быть причина.

Отправить комментарий

КАПЧА
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Enter the characters shown in the image.