| <?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="http://maven.apache.org/XDOC/2.0" |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> |
| <properties> |
| <title>VoIP and SIP Integration</title> |
| <author email="dev@openmeetings.apache.org">Apache OpenMeetings Team</author> |
| </properties> |
| <body> |
| <section name="Not implemented"> |
| <div class="bd-callout bd-callout-danger"> |
| Please NOTE: this functionality is not yet implemented in 5.0.x |
| </div> |
| </section> |
| |
| <section name="VoIP and SIP Integration"> |
| <p> |
| There are multiple ways to integrate with VoIP and or SIP. |
| OpenMeetings does not provide out of the box a ready to run VoIP |
| integration / integration to cell phone or usual land lane. |
| The |
| nature of such integrations is that it depends heavily on the |
| infrastructure that you are using and where you would like to |
| integrate OpenMeetings into. |
| <br /> |
| <br /> |
| It also depends on a number of factors of which OpenMeetings is |
| impossible to set up for you, for example setting up your VoIP |
| server or provide you with a range of telephone numbers reserved for |
| conference calls in your national phone network. |
| Such an integration |
| project is likely to become a consulting job for a |
| telecommunications consultant. |
| <br /> |
| <br /> |
| To get help on the integration you can contact the |
| <a href="mailing-lists.html">mailing lists</a> |
| or for example somebody from the list of |
| <a href="commercial-support.html">commercial support</a>. |
| <br/><br/> |
| </p> |
| </section> |
| <section name="SIP-Transport Integration"> |
| <p>You need Apache OpenMeetings <strong>version 4.0+</strong> to apply this guide!</p> |
| <p>You need Asterisk <strong>version 13+</strong> to apply this guide!</p> |
| <p>Here is instruction how-to set up red5sip transport integration with OpenMeetings on Ubuntu 16.04.</p> |
| </section> |
| <section name="Prerequisites"> |
| <div> |
| Run the commands |
| <source> |
| <![CDATA[ |
| sudo apt update && sudo apt upgrade |
| ]]> |
| </source> |
| </div> |
| </section> |
| <section name="Building and setting up Asterisk"> |
| <div> |
| Run the commands |
| <source> |
| <![CDATA[ |
| sudo mkdir /usr/src/asterisk && cd /usr/src/asterisk |
| sudo wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-13.17.0.tar.gz |
| sudo tar -xvzf asterisk-13.17.0.tar.gz |
| cd ./asterisk-13.17.0 |
| sudo make clean |
| sudo contrib/scripts/install_prereq install |
| sudo ./configure |
| sudo make menuconfig |
| ]]> |
| </source> |
| Make sure you have selected <tt>Add-ons -> res_config_mysql</tt>, Press F12 to save |
| <source> |
| <![CDATA[ |
| sudo make |
| sudo make install |
| sudo make samples |
| sudo make config |
| sudo service asterisk start |
| ]]> |
| </source> |
| </div> |
| </section> |
| <section name="Configure Asterisk"> |
| <div> |
| Enable asterisk MySQL module:<br /><br /> |
| Modify "[modules]" section of <tt>/etc/asterisk/modules.conf</tt> as follows:<br /> |
| <strong>Add/uncomment the following lines</strong> |
| <source> |
| <![CDATA[ |
| preload => res_config_mysql.so |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Configure MySQL module:<br /><br /> |
| Set valid data for MySQL in <tt>/etc/asterisk/res_config_mysql.conf</tt> :<br /> |
| <strong>Example</strong> |
| <source> |
| <![CDATA[ |
| [general] |
| dbhost = 127.0.0.1 |
| dbname = openmeetings |
| dbuser = root |
| dbpass = |
| dbport = 3306 |
| dbsock = /var/lib/mysql/mysql.sock |
| dbcharset = utf8 |
| requirements=warn |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Modify <tt>/etc/asterisk/sip.conf</tt><br /> |
| <strong>Add/uncomment the following line</strong>:<br /> |
| <source> |
| <![CDATA[ |
| videosupport=yes |
| rtcachefriends=yes |
| ]]> |
| </source> |
| <strong>Increase maxexpiry value to 43200</strong>:<br /> |
| <source> |
| <![CDATA[ |
| maxexpiry=43200 |
| ]]> |
| </source> |
| <strong>Add user for the "SIP Transport"</strong>:<br /> |
| <source> |
| <![CDATA[ |
| [red5sip_user] |
| type=friend |
| secret=12345 |
| disallow=all |
| allow=ulaw |
| allow=h263 |
| host=dynamic |
| nat=force_rport,comedia |
| context=rooms-red5sip |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Add next lines into the <tt>/etc/asterisk/extconfig.conf</tt>: |
| <source> |
| <![CDATA[ |
| [settings] |
| sippeers => mysql,general,sipusers |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Modify <tt>/etc/asterisk/extensions.conf</tt><br /> |
| <strong>Add the following section</strong>:<br /> |
| <source> |
| <![CDATA[ |
| ; ***************************************************** |
| ; The below dial plan is used to dial into a Openmeetings Conference room |
| ; The first line DB_EXISTS(openmeetings/room/ does not belong to the openmeetings application but is the name of astDB containing the astDB family/key pair and values |
| ; To Check if your astDB has been created do the following in a terminal window type the following: |
| ; asterisk –rx “database show” |
| ; If you do not receive an output with that resembles openmeetings/rooms/400## where “##” will equal the extension assigned when you created your room |
| ; If you do not receive the above output check your parameters in /opt/om/webapps/openmeetings/WEB-INF/classes/applicationContext.xml |
| ; Go back into the Administrator Panel and remove the PIN number in each room save the record with no PIN number and then re-enter the pin again resave the record. |
| ; ***************************************************** |
| |
| [rooms] |
| exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail) |
| exten => _400X!,n(ok),SET(PIN=${DB(openmeetings/rooms/${EXTEN})}) |
| exten => _400X!,n,Set(CONFBRIDGE(user,template)=sip_user) |
| exten => _400X!,n,Set(CONFBRIDGE(user,pin)=${PIN}) |
| exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,) |
| exten => _400X!,n,Hangup |
| exten => _400X!,n(notavail),Answer() |
| exten => _400X!,n,Playback(invalid) |
| exten => _400X!,n,Hangup |
| |
| [rooms-originate] |
| exten => _400X!,1,Confbridge(${EXTEN},default_bridge,sip_user) |
| exten => _400X!,n,Hangup |
| |
| [rooms-out] |
| ; ***************************************************** |
| ; Extensions for outgoing calls from Openmeetings room. |
| ; ***************************************************** |
| |
| [rooms-red5sip] |
| exten => _400X!,1,GotoIf($[${DB_EXISTS(openmeetings/rooms/${EXTEN})}]?ok:notavail) |
| exten => _400X!,n(ok),Confbridge(${EXTEN},default_bridge,red5sip_user) |
| exten => _400X!,n(notavail),Hangup |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Modify <tt>/etc/asterisk/confbridge.conf</tt><br /> |
| <strong>Add/Modify the following secions</strong>:<br /> |
| <source> |
| <![CDATA[ |
| [general] |
| |
| [red5sip_user] |
| type=user |
| marked=yes |
| dsp_drop_silence=yes |
| denoise=true |
| |
| [sip_user] |
| type=user |
| end_marked=yes |
| wait_marked=yes |
| music_on_hold_when_empty=yes |
| dsp_drop_silence=yes |
| denoise=true |
| |
| [default_bridge] |
| type=bridge |
| video_mode=follow_talker |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| To enable Asterisk Manager API modify <tt>/etc/asterisk/manager.conf</tt><br /> |
| <strong>Add/Modify the following sections</strong>:<br /> |
| <source> |
| <![CDATA[ |
| [general] |
| enabled = yes |
| webenabled = no |
| port = 5038 |
| bindaddr = 127.0.0.1 |
| |
| [openmeetings] |
| secret = 12345 |
| deny=0.0.0.0/0.0.0.0 |
| permit=127.0.0.1/255.255.255.0 |
| read = all |
| write = all |
| ]]> |
| </source> |
| </div><br /> |
| <div> |
| Update OpenMeetings with credentials for Asterisk manager. |
| Modify <tt>/opt/om/webapps/openmeetings/WEB-INF/classes/applicationContext.xml</tt><br /> |
| find <strong><bean id="sipDao" class="org.apache.openmeetings.db.dao.room.SipDao"></strong> |
| uncomment its parameters and set it to your custom values.<br/> |
| set value for <tt>uid</tt> property to unique secret value (can be generated here <a href="https://www.uuidtools.com">https://www.uuidtools.com</a>) |
| and sync it with <tt>settings.properties</tt> of red5sip (see below) |
| <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: |
| <source> |
| <![CDATA[ |
| service asterisk restart |
| ]]> |
| </source> |
| </div><br /> |
| </section> |
| |
| <section name="Setup red5sip transport"> |
| <ul> |
| <li>Download red5sip from <tt>https://github.com/openmeetings/red5sip</tt> |
| <source> |
| <![CDATA[ |
| git clone https://github.com/openmeetings/red5sip.git |
| ]]> |
| </source> |
| </li> |
| <li>Build with Apache Maven |
| <source> |
| <![CDATA[ |
| cd red5sip |
| mvn clean package |
| ]]> |
| </source> |
| </li> |
| <li>All necessary files will be available in <tt>target</tt> folder, copy/move it to /opt/red5sip/</li> |
| <li>Insert proper values to the <tt>/opt/red5sip/settings.properties</tt> |
| <source> |
| <![CDATA[ |
| red5.host=127.0.0.1 # red5 server address |
| om.context=openmeetings # Openmeetings context |
| red5.codec=asao |
| red5.codec.rate=22 # should correlate with mic setting in Admin->Config `flash.mic.rate` |
| sip.obproxy=127.0.0.1 # asterisk adderss |
| sip.phone=red5sip_user # sip phone number |
| sip.authid=red5sip_user # sip auth id |
| sip.secret=12345 # sip password |
| sip.realm=asterisk # sip realm |
| sip.proxy=127.0.0.1 # address of sip proxy |
| rooms.forceStart=no # TBD |
| uid=87dddad4-9ca5-475b-860f-2e0825d02b76 #can be generated here: https://www.uuidtools.com/ |
| rooms=1 # TBD (not in use) |
| ]]> |
| </source> |
| </li> |
| <li>Set correct permissions on red5sip files: |
| <source> |
| <![CDATA[ |
| sudo chown -R nobody:nogroup /opt/red5sip |
| ]]> |
| </source> |
| </li> |
| <li>Add red5sip to autostart: |
| <source> |
| <![CDATA[ |
| sudo cp /opt/red5sip/red5sip /etc/init.d/ |
| sudo chmod a+x /etc/init.d/red5sip |
| sudo update-rc.d red5sip defaults |
| ]]> |
| </source> |
| </li> |
| <li>Start openmeetings |
| <source> |
| <![CDATA[ |
| service red5 start |
| ]]> |
| </source> |
| </li> |
| <li> |
| Enable <tt>SIP</tt> in openmeetings: <br/> |
| <tt>Administration->Configuration->red5sip.enable == yes</tt> |
| </li> |
| <li> |
| Enable SIP for particular room(s): <br/> |
| <tt>Administration->Conference rooms->Room->Enable SIP transport in the room == checked</tt><br/> |
| (SIP number will be assigned to room if everything is OK) |
| </li> |
| <li>Start red5sip |
| <source> |
| <![CDATA[ |
| service red5sip start |
| ]]> |
| </source> |
| </li> |
| </ul> |
| </section> |
| </body> |
| </document> |