<?xml version="1.0" encoding="UTF-8"?> | |
<!-- | |
Licensed under the Apache License, Version 2.0 (the "License"); | |
you may not use this file except in compliance with the License. | |
You may obtain a copy of the License at | |
http://www.apache.org/licenses/LICENSE-2.0 | |
Unless required by applicable law or agreed to in writing, software | |
distributed under the License is distributed on an "AS IS" BASIS, | |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
See the License for the specific language governing permissions and | |
limitations under the License. | |
--> | |
<document> | |
<properties> | |
<title>SIP-Transport Integration</title> | |
<author email="solomax@apache.org">OpenMeetings Team</author> | |
</properties> | |
<body> | |
<section name="SIP-Transport Integration"> | |
<p>You need Apache OpenMeetings <strong>version 2.1</strong> to apply this guide!</p> | |
<p>You need Asterisk <strong>version 11</strong> to apply this guide!</p> | |
<p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 12.10.</p> | |
</section> | |
<section name="Prerequisites"> | |
<div> | |
Run the commands | |
<blockquote> | |
<i> | |
sudo apt-get update && sudo apt-get upgrade<br /> | |
sudo apt-get install build-essential linux-headers-`uname -r` libxml2-dev libncurses5-dev libsqlite3-dev sqlite3 openssl libssl-dev<br /> | |
</i> | |
</blockquote> | |
</div> | |
</section> | |
<section name="ODBC Setup"> | |
<div> | |
Run the commands | |
<blockquote> | |
<i> | |
sudo apt-get update<br /> | |
sudo apt-get install unixODBC unixODBC-dev libmyodbc | |
</i> | |
</blockquote> | |
</div> | |
<div> | |
Set up Asterisk connector:<br /><br /> | |
Modify file <tt>/etc/odbc.ini</tt> as follows: (replace USER, PASSWORD and Socket with values relative to your system) | |
<blockquote> | |
<i> | |
[asterisk-connector]<br /> | |
Description = MySQL connection to 'openmeetings' database<br /> | |
Driver = MySQL<br /> | |
Database = openmeetings<br /> | |
Server = localhost<br /> | |
USER = root<br /> | |
PASSWORD =<br /> | |
Port = 3306<br /> | |
Socket = /var/run/mysqld/mysqld.sock<br /> | |
</i> | |
</blockquote><br /><br /> | |
Modify file <tt>/etc/odbcinst.ini</tt> as follows: (replace the path to the *.so files below with the real paths on your system) | |
<blockquote> | |
(The path below is for x32 server, x64 version is most probably located at <tt>/usr/lib/x86_64-linux-gnu/odbc</tt>)<br/> | |
<i> | |
[MySQL]<br /> | |
Description = ODBC for MySQL<br /> | |
Driver = /usr/lib/i386-linux-gnu/odbc/libmyodbc.so<br /> | |
Setup = /usr/lib/i386-linux-gnu/odbc/libodbcmyS.so<br /> | |
FileUsage = 1<br /> | |
</i> | |
</blockquote><br /><br /> | |
Run the following command to ensure everything works as expected: | |
<blockquote> | |
<i>echo "select 1" | isql -v asterisk-connector</i> | |
</blockquote> | |
</div> | |
</section> | |
<section name="Building and setting up Asterisk"> | |
<div> | |
Run the commands | |
<blockquote> | |
<i> | |
sudo mkdir /usr/src/asterisk && cd /usr/src/asterisk<br /> | |
sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-11.2.1.tar.gz<br /> | |
sudo tar -xvzf asterisk-11.2.1.tar.gz<br /> | |
cd ./asterisk-11.2.1<br /> | |
sudo make clean<br /> | |
sudo ./configure<br /> | |
sudo make<br /> | |
sudo make install<br /> | |
sudo make samples<br /> | |
sudo make config<br /> | |
sudo service asterisk start<br /> | |
</i> | |
</blockquote> | |
</div> | |
</section> | |
<section name="Configure Asterisk"> | |
<div> | |
Enable asterisk ODBC module:<br /><br /> | |
Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br /> | |
<strong>Add/uncomment the following lines</strong> | |
<blockquote> | |
<i> | |
preload => res_odbc.so<br /> | |
preload => res_config_odbc.so<br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Create/update "[asterisk]" section in <tt>/etc/asterisk/res_odbc.conf</tt>: | |
<blockquote> | |
<i> | |
[asterisk]<br /> | |
enabled => yes<br /> | |
dsn => asterisk-connector<br /> | |
pre-connect => yes | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Modify <tt>/etc/asterisk/sip.conf</tt><br /> | |
<strong>Add/uncomment the following line</strong>:<br /> | |
<blockquote> | |
<i> | |
videosupport=yes<br /> | |
rtcachefriends=yes<br /> | |
</i> | |
</blockquote> | |
<strong>Add user for the "SIP Transport"</strong>:<br /> | |
<blockquote> | |
<i> | |
[red5sip_user]<br /> | |
type=friend<br /> | |
secret=12345<br /> | |
disallow=all<br /> | |
allow=ulaw<br /> | |
allow=h264<br /> | |
host=dynamic<br /> | |
nat=force_rport,comedia<br /> | |
context=rooms-red5sip<br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>: | |
<blockquote> | |
<i> | |
[settings]<br /> | |
sippeers => odbc,asterisk,sipusers<br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Modify <tt>/etc/asterisk/extensions.conf</tt><br /> | |
<strong>Add the following section</strong>:<br /> | |
<blockquote> | |
<i> | |
[rooms]<br /> | |
exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail)<br /> | |
exten => _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})})<br /> | |
exten => _400X!,n,Set(CONFBRIDGE(user,template)=sip_user)<br /> | |
exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN})<br /> | |
exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,)<br /> | |
exten => _400X!,n,Hangup<br /> | |
exten => _400X!,n(notavail),Answer()<br /> | |
exten => _400X!,n,Playback(invalid)<br /> | |
exten => _400X!,n,Hangup<br /> | |
<br /> | |
[rooms-originate]<br /> | |
exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user)<br /> | |
exten => _400X!,n,Hangup<br /> | |
<br /> | |
[rooms-out]<br /> | |
; *****************************************************<br /> | |
; Extensions for outgoing calls from Openmeetings room.<br /> | |
; *****************************************************<br /> | |
<br /> | |
[rooms-red5sip]<br /> | |
exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavil)<br /> | |
exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user)<br /> | |
exten => _400X!,n(notavail),Hangup <br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Modify <tt>/etc/asterisk/confbridge.conf</tt><br /> | |
<strong>Add/Modify the following secions</strong>:<br /> | |
<blockquote> | |
<i> | |
[general]<br /> | |
<br /> | |
[red5sip_user]<br /> | |
type=user<br /> | |
marked=yes<br /> | |
<br /> | |
[sip_user]<br /> | |
type=user<br /> | |
end_marked=yes<br /> | |
wait_marked=yes<br /> | |
music_on_hold_when_empty=yes<br /> | |
<br /> | |
[default_bridge]<br /> | |
type=bridge<br /> | |
video_mode=follow_talker<br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br /> | |
<strong>Add/Modify the following sections</strong>:<br /> | |
<blockquote> | |
<i> | |
[general]<br /> | |
enabled = yes<br /> | |
webenabled = no<br /> | |
port = 5038<br /> | |
bindaddr = 127.0.0.1<br /> | |
<br /> | |
[openmeetings]<br /> | |
secret = 12345<br /> | |
deny=0.0.0.0/0.0.0.0<br /> | |
permit=127.0.0.1/255.255.255.0<br /> | |
read = all<br /> | |
write = all<br /> | |
</i> | |
</blockquote> | |
</div><br /> | |
<div> | |
Update Openmeetings with creadentials for Asterisk manager. | |
Modify <tt>/opt/red5/webapps/openmeetings/WEB-INF/openmeetings-applicationContext.xml</tt><br /> | |
find <strong><bean id="sipDao" class="org.apache.openmeetings.data.conference.dao.SipDao"></strong> | |
uncomment its parameters and set it to your custom values. | |
<p style="font-size: larger; color: blue;"> | |
IMPORTANT: this step should be done <strong>BEFORE</strong> system install/restore | |
otherwise all SIP related room information will be lost | |
</p> | |
</div><br /> | |
<div> | |
Restart asterisk: | |
<blockquote> | |
<i>service asterisk restart</i> | |
</blockquote> | |
</div><br /> | |
</section> | |
<section name="Setup red5sip transport"> | |
<div> | |
Download red5sip from | |
<blockquote>http://red5phone.googlecode.com/svn/branches/red5sip</blockquote> | |
</div> | |
<div> | |
Build with Apache Ant | |
<blockquote> | |
<i>ant</i> | |
</blockquote> | |
</div> | |
<div> | |
Insert proper values to the <tt>/opt/red5sip/settings.properties</tt> | |
<blockquote> | |
<i> | |
red5.host=127.0.0.1 # red5 server address<br /> | |
om.context=openmeetings # Openmeetings context<br /> | |
red5.codec=asao<br /> | |
red5.codec.rate=22 # should correlate with mic settings in config.xml<br /> | |
sip.obproxy=127.0.0.1 # asterisk adderss<br /> | |
sip.phone=red5sip_user # sip phone number<br /> | |
sip.authid=red5sip_user # sip auth id<br /> | |
sip.secret=12345 # sip password<br /> | |
sip.realm=asterisk # sip realm<br /> | |
sip.proxy=127.0.0.1 # address of sip proxy <br /> | |
rooms.forceStart=no # TBD <br /> | |
rooms=1 # TBD (not in use) <br /> | |
</i> | |
</blockquote> | |
</div> | |
<div> | |
Add red5sip to autostart: | |
<blockquote> | |
<i> | |
sudo cp /opt/red5sip/red5sip /etc/init.d/<br /> | |
sudo chmod a+x /etc/init.d/red5sip<br /> | |
sudo update-rc.d red5sip defaults | |
</i> | |
</blockquote> | |
</div> | |
<div> | |
Start openmeetings | |
<blockquote> | |
<i>service red5 start</i> | |
</blockquote> | |
</div> | |
<div> | |
Start red5sip | |
<blockquote> | |
<i>service red5sip start</i> | |
</blockquote> | |
</div> | |
</section> | |
</body> | |
</document> |