blob: cbf9b16fee1810d93e363feb0cb1cb57a3012984 [file] [log] [blame]
<?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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">
<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 &amp;&amp; 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 &amp;&amp; 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>Increase maxexpiry value to 43200</strong>:<br />
<blockquote>
<i>
maxexpiry=43200<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 />
dsp_drop_silence=yes<br />
denoise=true<br />
<br />
[sip_user]<br />
type=user<br />
end_marked=yes<br />
wait_marked=yes<br />
music_on_hold_when_empty=yes<br />
dsp_drop_silence=yes<br />
denoise=true<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>&lt;bean id="sipDao" class="org.apache.openmeetings.data.conference.dao.SipDao"&gt;</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_2.1</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 public/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>