1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233
|
======================================
--- asterisk-oh323 ---
--- OH323 channel driver ---
======================================
Introduction
--------------
The source files and the procedure described below
incorporate H.323 support into the ASTERISK software PBX.
The H.323 protocol stack is provided by the OpenH323 project.
This distribution is broken down into two components:
1: The "wrapper", a library that implements the required glue-logic
and abstraction layer between the internals of OpenH323 and the
application (Asterisk in our case).
2: The "asterisk-driver", a standard Asterisk channel driver.
Required packages
-------------------
In order to build the OH323 Asterisk channel driver you will need
some other packages. We recommend to download their source and build them.
These are the following:
o PWlib (Portable Text and GUI C/C++ Class Library)
download from http://sourceforge.net/projects/openh323 (v1.8.7/Mimas_patch2)
(required)
o OpenH323 (Class Library implementing the H.323 protocol)
download from http://sourceforge.net/projects/openh323 (v1.15.6/Mimas_patch2)
(required)
o Asterisk PBX (Open Source Linux PBX)
download from http://www.asterisk.org (CVS HEAD, 2005-09-08)
(required)
o OhPhone (Command line H.323 client)
download from http://www.openh323.org (v1.13.5)
(optional, used for testing)
o OpenH323 Gatekeeper (H.323 Gatekeeper)
download from http://www.gnugk.org (v2.2.2)
(optional, used for testing)
Although the usage of a gatekeeper is optional, it is
recommended for easier address translation.
This software has been developed and tested with the
aforementioned versions of the above packages. Using other versions
may break things, so try these versions first.
Download
----------
Since this software is still under development, you should
always check that you use the latest version. This can always
be downloaded from:
http://www.inaccessnetworks.com/projects/asterisk-oh323
Compiling
-----------
First of all download Pwlib and OpenH323. These can be found in their official
site <http://sourceforge.net/projects/openh323>. *Be careful to grab the right
versions (these mention above)*. Alternatively, the versions that we used can
always be found at <http://www.inaccessnetworks.com/projects/asterisk-oh323/Libraries>.
Then build the OpenH323/Pwlib libraries. This step usually includes the
following actions:
~$ cd /path/to/pwlib
pwlib$ ./configure
pwlib$ make clean; make opt
pwlib$ cd /path/to/openh323
openh323$ ./configure
openh323$ make clean; make opt
For Asterisk look at <http://www.asterisk.org/index.php?menu=download>
for download/compile instructions.
Then, edit "Makefile" inside the "asterisk-oh323-x.x.x" directory
and set the paths/options according to your system. If you compile asterisk-oh323
with OpenH323/Pwlib older that the Pandora series (e.g. Janus series) something that
we do not recommend, then in the Makefile uncomment the line:
USE_OLD_CAPABILITIES_API=1
Type "make" to build the oh323wrap library and the
ASTERISK OH323 channel driver.
Type "make install" to install the binaries. This will also
install a sample configuration file, if there isn't one.
Next, add to your LD_LIBRARY_PATH the path where the oh323wrap
library was installed (or edit your /etc/ld.so.conf file, add
the library path, and run "ldconfig").
Then, you would like to edit the driver's configuration
file (see below).
Finally, run "asterisk" and try it with a H.323 IP phone
like "ohphone" from OpenH323 site or Netmeeting. See also
the file "TESTS" for detailed configuration and setup.
Configuration of OpenH323 channel driver
------------------------------------------
Configuration info can be found in file "CONFIGURATION".
Console commands
------------------
The following commands are supported from within the ASTERISK's
console:
"oh323 show stats" - Displays statistics for the OpenH323 channel
driver (incoming calls, outgoing calls,
dropped calls, blocked calls, call errors, ...)
"oh323 show channels" - Displays information about all active H.323 calls
(state, direction, format, ...)
"oh323 show conf" - Displays configuration information about the
OpenH323 channel driver.
"oh323 show vars" - Display variables of active H.323 channels. The variables
supported by the OH323 channel driver are shown in
the next section.
"oh323 debug toggle" - Toggle OpenH323 channel driver's internal debug
flag on/off.
OH323 channel variables
-------------------------
Each active OH323 channel uses a set of special channel variables. These
variables can be used to extract detailed information about the active call
or to change the behavior of the driver. The following list shows the
variables and explains their role:
${OH323_CTOKEN} - Contains the H.323 call token.
${OH323_CALLID} - The call ID.
${OH323_CONFID} - The conference ID of the call.
${OH323_SRCALIAS} - Contains the alias(es) of the source EP.
${OH323_DSTALIAS} - Contains the alias(es) of the dest. EP.
${OH323_SRCE164} - Contains the E.164 number of source EP.
${OH323_DSTE164} - Contains the E.164 number of dest. EP.
${OH323_REMOTEAPP} - Contains the name of the remote H.323 app.
${OH323_CHANCODEC} - Contains the name of the codec in use.
${OH323_RADDR} - Contains the remote IP address/port of the connection.
${OH323_LADDR} - Contains the local IP address/port of the connection.
The above variables are updated by the driver on call initiation. They can
be used by other Asterisk applications or AGI scripts to extract detailed
information about each call (e.g. the IP address of the remote endpoint)
and act on them (e.g. block calls from specific IPs).
The variable below can be set from within the dialplan to alter the
configuration of the driver in run-time:
${OH323_OUTCODEC} - The codec to be used by the driver on an outgoing call.
The variable is checked by the driver when Asterisk requests
the initiation of an H.323 call (e.g. in Dial() app).
Valid values for the variable are: g723.1, gsm, ulaw,
alaw, g726, slinear, lpc10, adpcm, g729, speex, ilbc. Note
that not all of these are supported by the current
implementation of the driver.
Usage example:
; Reach 'michael' with a different codec, based on the extension dialed.
exten => 111,1,SetGlobalVar(OH323_OUTCODEC=ulaw)
exten => 112,1,SetGlobalVar(OH323_OUTCODEC=gsm)
exten => 113,1,SetGlobalVar(OH323_OUTCODEC=g729)
exten => _11X,2,Dial(OH323/michael)
Licensing
-----------
"H.323 support for ASTERISK" copyright (c) 2002-2005 InAccess Networks
"H.323 support for ASTERISK" is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation;
either version 2 of the License, or (at your option) any later version.
"H.323 support for ASTERISK" is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
In addition, specific permission is granted to OpenSSL, OpenH323 and PWLib
libraries to link to the wrapper library and the channel driver
of this software.
Credits
---------
Thanks to the following people for providing help with regard to
this software:
- Mark Spencer for providing Asterisk (of course) and for several
suggestions and improvements,
- Derek Smithies and Craig Southeren for suggestions and comments,
- Oliver Daudey for some bug fixes,
- Lubomir Christov for extensive testing,
- Pawel Golaszewski for minor additions in the make process,
- Marian Durkovic (Caller*ID fix and proper queueing of control frames),
- Stefan Grossberger for proper call transfer handling
Enjoy,
Michalis Manousos
Dimitris S. Economou
inAccess Networks S.A.
www.inaccessnetworks.com
|