Skip to main content

mod_h323

About​

mod_h323 is an endpoint module based on the H.323plus telephony library.

Click here to expand Table of Contents

Status​

In development

Installation​

Method 1:​

Use the script provided with FreeSWITCH by running the buildopal.sh script in the build directory.

Method 2:​

Ptlib and H323plus need to be installed before you can build mod_h323. You must be sure to install the exact working combination of ptlib / h323plus in order to make this work smoothly.

Working combinations:

ptlib-2.8.2 + h323plus-trunk

ptlib-2.8.2 + h323plus-20100525

ptlib-2.8.1 + h323plus-20100525

You'll need development tools. If in Debian, run:

apt-get install build-essential bison

ptlib (trunk from trunk) (NOT WORKING AS OF 10/05/2010. USE VERSION 2.8.2 THAT FOLLOWS INSTEAD) :

In your home, create a directory e.g. h323

mkdir -p ~/h323 
cd ~/h323 
svn co http://svn.code.sf.net/p/opalvoip/code/ptlib/trunk ptlib 
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig 
export LD_LIBRARY_PATH=/usr/local/lib 
cd ptlib 
./configure 
make 
sudo make install 
cd ..

ptlib (version 2.8.2): (Works on Debian 6 but not 7 AS OF 11/12/2013. For Debian 7, use trunk above)

In your home, create a directory e.g. h323

mkdir -p ~/h323
cd ~/h323
svn co http://svn.code.sf.net/p/opalvoip/code/ptlib/tags/v2_8_2/ ptlib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib
cd ptlib
./configure
make
sudo make install

If you receive error:

configure: error: PTLib needs the GNU Project fast lexical analyzer generator flex 

then:

yum install flex

install h323plus (trunk):

cd ~/h323
cvs -d:pserver:anonymous@h323plus.cvs.sourceforge.net:/cvsroot/h323plus checkout h323plus
export PTLIBDIR=~/h323/ptlib
cd h323plus
./configure
make
sudo make install

or install 20100525 version if you like:

cd ~/h323
wget http://waix.dl.sourceforge.net/project/openh323gk/Sources/2.3.2/h323plus-20100525.tar.gz

tar xzvf h323plus-20100525.tar.gz
cd h323plus-20100525
export PTLIBDIR=~/h323/ptlib
./configure
make
sudo make install

March 2012: It turned out that a good way to make h323plus running is ptlib-2.8.2 with h323plus 1.22.0 (tested under Ubuntu 10.04 64bit and Debian 6)

cd ~/h323
wget http://www.h323plus.org/source/download/h323plus-1.22.0.tar.gz
tar xzvf h323plus-1.22.0
cd h323plus-1.22.0
export PTLIBDIR=~/h323/ptlib
./configure
make
sudo make install

If you get an error: ERROR: you must first run 'aclocal' in ~/h323plus-20100525/plugins than just do it:

cd ~/h323plus-20100525/plugins
$ aclocal
cd ..

build mod_h323:

Assuming you have FreeSWITCH source in your home:

cd ~/freeswitch-trunk
make mod_h323-clean
make mod_h323
sudo make mod_h323-install

If you get an error like this: '/usr/include/openh323/h323caps.h:289:31: error: ../include/codecs.h: No such file or directory' most probably you don't have codecs.h in the correct path or you don't have it at all.

Simply:

cp ~/h323/h323plus-20100525/include/codecs.h /usr/include/

And make the mod_h323 again.

If you get an error like this:

'/usr/src/freeswitch/src/mod/endpoints/mod_h323/mod_h323.h:43:18: error: h323.h: No such file or directory'

then try doing this:

ln -s /usr/local/include/openh323 /usr/include/openh323

If you got errors like "error: 'BOOL' has not been declared" or something like that. Just do following and then do make mod_h323 again.

chmod +w /usr/include/openh323/*
sed -i "s/BOOL/PBoolean/g" /usr/include/openh323/*
chmod -w /usr/include/openh323/*

Configuration​

The configuration is almost the same as for mod_opal so no big surprises here.

h323.conf.xml:

<configuration name="h323.conf" description="H323 Endpoints">
<settings>
<param name="trace-level" value="6"/>
<param name="context" value="default"/>
<param name="dialplan" value="XML"/>
<param name="codec-prefs" value="PCMA,PCMU,GSM,G729"/>
<param name="use-rtp-timer" value="true"/> <!-- enable RTP timer - should always be enabled -->
<param name="rtp-timer-name" value="soft"/> <!-- Timer name, soft is default -->
<!-- <param name="ptime-override-value" value="20"/> --> <!-- Override negotiated ptime value with this value -->
<param name="gk-address" value=""/> <!-- empty to disable, "*" to search LAN -->
<param name="gk-identifer" value=""/> <!-- optional name of gk (BUG: this parameter is currently mandatory)-->
<param name="gk-interface" value=""/> <!-- mandatory listener interface name -->
<param name="gk-retry" value="30"/> <!-- optional GK register retry timer -->
<param name="gk-prefix" value="777"/> <!-- optional register with this prefix -->
<param name="gk-prefix" value="779"/> <!-- optional register with this prefix -->
<param name="faststart" value="true"/> <!-- optional -->
<param name="h245tunneling" value="true"/> <!-- optional -->
<param name="h245insetup" value="true"/> <!-- optional -->
<param name="dtmfinband" value="false"/> <!-- optional -->
<param name="jitter-size" value="60"/> <!-- optional -->
<param name="progress-indication" value="8"/> <!-- optional - PI value in progress message-->
<param name="alerting-indication" value="8"/> <!-- optional - PI value in alerting message-->
<param name="endpoint-name" value="fs"/>
<param name="fax-old-asn" value="true"/>
</settings>
<listeners>
<listener name="default">
<param name="h323-ip" value="$${local_ip_v4}"/>
<param name="h323-port" value="1720"/>
</listener>
</listeners>
</configuration>

settings​

  • trace-level: it is the level of logging you will get on console (0-4, default 0)
  • context: context the incoming call through mod_h323 will fall in (default set to public)
  • dialplan: the type of dialplan used (default XML)
  • codec-prefs: comma separated list of supported codecs (Note: the order of the codecs won't be used. It will only enable or disable them. Codecs are always sent in the same order: PCMA, PCMU, GSM, G723, G729b, G729, G729a, , G729ab, G723.1. Check in mod_h323.cpp for a table called h323_formats).

listeners (you can have more than one listener)​

  • name: just a name
  • h323-ip: an ip address for mod_h323 to bind
  • h323-port: a port for mod_h323 to bind

Add this into vars.xml files to allow incoming calls to extensions (this needs to be tested!!!):

<X-PRE-PROCESS cmd="set" data="domain_name=$${local_ip_v4}"/>

Usage​

create a file in $FS_DIR/conf/dialplan/default/ (e.g. 10_outgoing_via_h323.xml) and add the something like this:

<include> <extension name="OUTGOING_VIA_H323"> <condition field="destination_number" expression="^([2-8]\d{6,7}|0[1-9]\d{7,8}|00[1-9]\d{8,16})$"> <action application="set" data="effective_caller_id_number=385${ani}"/> <action application="set" data="PEER_IP=10.1.1.1"/> <action application="set" data="call_timeout=30"/> <action application="set" data="hangup_after_bridge=true"/> <action application="bridge" data="h323/$1@${PEER_IP}"/> </condition> </extension> </include>

In your $FS_DIR/conf/dialplan/public.xml make sure you have:

<extension name="public_extensions"> <condition field="destination_number" expression="^(10[01][0-9])$"> <action application="transfer" data="$1 XML default"/> </condition> </extension>

All incoming calls via mod_h323 will be transferred to context default.

Applications​

needs to be updated!

API commands​

needs to be updated!

Events​

needs to be updated!

Channel Variables​

needs to be updated!

Known Bugs​

faststart and codecs v CallProceeding due to h323plus, grep "Very Frustrating - S.H." in h323plus source and uncomment commented lines. (should be fixed in H323Plus as of 2011-05-17)

missing features.

Troubleshooting​

freeswitch@nemesis> load mod_h323
2010-10-02 20:16:37.660670 [INFO] mod_enum.c:808 ENUM Reloaded
2010-10-02 20:16:37.660670 [INFO] switch_time.c:950 Timezone reloaded 530 definitions
2010-10-02 20:16:37.717932 [CRIT] switch_loadable_module.c:928 Error Loading module /usr/local/freeswitch/mod/mod_h323.so
**libpt.so.2.8.2: cannot open shared object file: No such file or directory**

+OK Reloading XML
-ERR [module load file routine returned an error]

This is a common problem when libpt.so is not in path. Simply:

ln -sf /usr/local/lib/libpt.so.2.8.2 /usr/local/freeswitch/lib/libpt.so.2.8.2
freeswitch@fs01> load mod_h323
2012-03-20 12:45:25.826535 [CRIT] switch_loadable_module.c:1290 Error Loading module /usr/local/freeswitch/mod/mod_h323.so
**libh323_linux_x86_64_.so.1.22.0: cannot open shared object file: No such file or directory**
+OK Reloading XML
-ERR [module load file routine returned an error]

This is a common problem when libh323_linux_x86_64_.so.1.22.0 is not in path. Simply:

ln -sf /usr/local/lib/libh323_linux_x86_64_.so.1.22.0 /usr/local/freeswitch/lib/libh323_linux_x86_64_.so.1.22.0

See Also​