|
|
(48 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
− | We use '''gnomemeeting''' softphones and a '''gnugk''' gatekeeper.
| + | <big>'''2.1 H323'''</big> |
− | === Configuration of Gnomemeeting ===
| |
− | '''Edit -> Preferences''' | |
| | | |
− | * General: You can fill in your personal data and leave everything default
| + | '''[[H323 analysis]]''' |
− | * H323 Settings: Gatekeeper:
| |
| | | |
− | Registering method: Gatekeeper host
| + | '''[[Our Architecture]]''' |
− | Gatekeeper host: 129.125.71.171:1719
| |
− | Gatekeeper alias: 601
| |
− |
| |
− | ''Gatekeeper host'' is the IP address and port of the gatekeeper. Port 1720 is the standard h323 port . | |
| | | |
− | ''Gatekeeper alias'' is the primary alias with the gatekeeper, also the extension number in Asterisk to keep things simple. | + | '''[[HOWTO SET UP TRIXBOX AS H323 GATEWAY]]''' |
| | | |
− | Tick the "Register this alias as the primary alias with the gatekeeper" box and Apply (sorry, you need to do this after you've installed the gk) :).
| + | <big>'''2.2 Connection to regular telephone network'''</big> |
− | * H323 Settings: Gateway: | + | * [[VoIPBuster]] |
− | ** For H323 to H323 - Do not use a gateway, these calls will only go via the gatekeeper, not the trixbox | + | * [[ZapTel]] |
− | ** However for H323 to SIP a gateway to the trixbox (so trixbox ip) is needed but this messes up the h323 to h323 settings. Right now we don't have another solution than manually check or uncheck the box depending on what kind of call you want to make :S
| + | <big>'''2.3 Configuring videoconferencing'''</big> |
− | * Codecs: Audio Codecs - We enabled all available codecs. | + | * [[Videoswitch support for MeetMe]] |
− | * Codecs: Video Codecs - We have not been able to spend time on this
| + | * [[app_conference]] |
− | * Devices:
| + | <big>'''2.4 Intercom'''</big> |
− | ** Audio Devices:
| |
− | *** Audio Plugin ALSA
| |
− | *** Output device: Intel ICH5 | |
− | *** Input device: Intel ICH5
| |
− | **'''Detect Devices'''
| |
| | | |
− | (All the audio and video devices settings are of course depending on your local system, this is more for our own reference) :)
| + | <big>'''2.5 Updating to newer versions of Trixbox'''</big> |
− | | + | * [[Regarding H323]] |
− | === Alternative: Ekiga ===
| |
− | To check the codec availability we decided to switch back to Ekiga since it supports SIP and H.323. We first made a SIP call and this worked fine. Switching to H.323 and calling a SIP phone and calling from the SIP phone to Ekiga(H.323) does not report any codec problems. (It seems that this is just a consequence of switching to Ekiga, no other parameters were changed).
| |
− | | |
− | === GnuGk Gatekeeper ===
| |
− | Packages for this gatekeeper are not available for CentOS. We found out that this gatekeeper was already installed in Etch. (System administration provided us with two machines with etch so we could get the sound working).
| |
− | | |
− | Almost no configuring here. Just enable PROXY.
| |
− | | |
− | Once the gatekeeper is installed you can register your gnomemeeting clients with the gatekeeper (see section '''gnomemeeting'''.
| |
− | | |
− | We are still playing with the gatekeeper so this section is under construction.
| |
− | | |
− | === Configuration of Trixbox 1.2.3 ===
| |
− | | |
− | We followed mostly the instructions from these two forums on the [http://www.trixbox.org/ Trixbox] site:
| |
− | * [http://www.trixbox.org/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=2865&forum=6 here is the working configuration & tips for oh323]
| |
− | * [http://www.trixbox.org/modules/newbb/viewtopic.php?topic_id=3228&forum=2#forumpost41741 H323, SIP and Gatekeeper]
| |
− | | |
− | There are more forums where people say things about h323 but these seem to be the most helpful.
| |
− | | |
− | Following the suggestions we used Trixbox 1.2.3 with asterisk-addons-1.2.3. In order to do this we deleted the current addons:
| |
− | | |
− | rpm -qa | grep asterisk-addons
| |
− | rpm -e asterisk-addons-1.2.4_1.2.12.1-1.294
| |
− | | |
− | And loaded the older addons: (these can be found ...............)
| |
− | | |
− | rpm -i asterisk-addons-1.2.3-1.219.i386.rpm
| |
− | | |
− | If this is really necessary we can't tell right now. We got things working when changing other things as well so later on we can try if it still works without this step.
| |
− | | |
− | ==== ooh323.conf ====
| |
− | | |
− | Next thing was to edit the ooh323.conf file. This file needs to be copied from the samples first:
| |
− | cp /etc/asterisk-1.2.8-samples/ooh323.conf /etc/asterisk
| |
− | | |
− | Here is our ooh323.conf:
| |
− | | |
− | ; Objective System's H323 Configuration example for Asterisk
| |
− | ; ooh323c driver configuration
| |
− | ;
| |
− | ; [general] section defines global parameters
| |
− | ;
| |
− | ; This is followed by profiles which can be of three types - user/peer/friend
| |
− | ; Name of the user profile should match with the h323id of the user device.
| |
− | ; For peer/friend profiles, host ip address must be provided as "dynamic" is
| |
− | ; not supported as of now.
| |
− | ;
| |
− | ; Syntax for specifying a H323 device in extensions.conf is
| |
− | ; For Registered peers/friends profiles:
| |
− | ; OOH323/name where name is the name of the peer/friend profile.
| |
− | ;
| |
− | ; For unregistered H.323 phones:
| |
− | ; OOH323/ip[:port] OR if gk is used OOH323/alias where alias can be any H323
| |
− | ; alias
| |
− | ;
| |
− | ; For dialing into another asterisk peer at a specific exten
| |
− | ; OOH323/exten/peer OR OOH323/exten@ip
| |
− | ;
| |
− | ; Domain name resolution is not yet supported.
| |
− | ;
| |
− | ; When a H.323 user calls into asterisk, his H323ID is matched with the profile
| |
− | ; name and context is determined to route the call
| |
− | ;
| |
− | ; The channel driver will register all global aliases and aliases defined in
| |
− | ; peer profiles with the gatekeeper, if one exists. So, that when someone
| |
− | ; outside our pbx (non-user) calls an extension, gatekeeper will route that
| |
− | ; call to our asterisk box, from where it will be routed as per dial plan.
| |
− |
| |
− |
| |
− | [general]
| |
− | ;Define the asetrisk server h323 endpoint
| |
− |
| |
− | ;The port asterisk should listen for incoming H323 connections.
| |
− | ;Default - 1720
| |
− | ;port=1720
| |
− | ;CHANGED
| |
− | port=1720
| |
− |
| |
− | ;The dotted IP address asterisk should listen on for incoming H323
| |
− | ;connections
| |
− | ;Default - tries to find out local ip address on it's own
| |
− | bindaddr=0.0.0.0
| |
− |
| |
− | ;This parameter indicates whether channel driver should register with
| |
− | ;gatekeeper as a gateway or an endpoint.
| |
− | ;Default - no
| |
− | ;gateway=no
| |
− | ;CHANGED
| |
− | gateway=yes
| |
− |
| |
− | ;Whether asterisk should use fast-start and tunneling for H323 connections.
| |
− | ;Default - yes
| |
− | ;faststart=no
| |
− | ;h245tunneling=no
| |
− | ;CHANGED
| |
− | h245tunneling=yes
| |
− |
| |
− |
| |
− | ;H323-ID to be used for asterisk server
| |
− | ;Default - Asterisk PBX
| |
− | h323id=ObjSysAsterisk
| |
− | ;e164=100
| |
− | ;CHANGED
| |
− | e164=501
| |
− |
| |
− | ;CallerID to use for calls
| |
− | ;Default - Same as h323id
| |
− | callerid=asterisk
| |
− |
| |
− | ;Whether this asterisk server will use gatekeeper.
| |
− | ;Default - DISABLE
| |
− | ;gatekeeper = DISCOVER
| |
− | ;gatekeeper = DISABLE
| |
− | ;CHANGED
| |
− | gatekeeper = 129.125.71.171
| |
− |
| |
− | ;Location for H323 log file
| |
− | ;Default - /var/log/asterisk/h323_log
| |
− | ;CHANGED
| |
− | logfile=/var/log/asterisk/h323_log
| |
− |
| |
− |
| |
− | ;Following values apply to all users/peers/friends defined below, unless
| |
− | ;overridden within their client definition
| |
− |
| |
− | ;Sets default context all clients will be placed in.
| |
− | ;Default - default
| |
− | context=default
| |
− |
| |
− | ;Sets rtptimeout for all clients, unless overridden
| |
− | ;Default - 60 seconds
| |
− | ;rtptimeout=60 ; Terminate call if 60 seconds of no RTP activity
| |
− | ; when we're not on hold
| |
− | ;CHANGED
| |
− | rtptimeout=3
| |
− | ;Type of Service
| |
− | ;Default - none (lowdelay, thoughput, reliability, mincost, none)
| |
− | ;tos=lowdelay
| |
− |
| |
− | ;amaflags = default
| |
− |
| |
− | ;The account code used by default for all clients.
| |
− | ;accountcode=h3230101
| |
− |
| |
− | ;The codecs to be used for all clients.Only ulaw and gsm supported as of now.
| |
− | ;Default - ulaw
| |
− | ; ONLY ulaw, gsm, g729 and g7231 supported as of now
| |
− | ;disallow=all ;Note order of disallow/allow is important.
| |
− | ;allow=gsm
| |
− | ;allow=ulaw
| |
− | ;;CHANGED
| |
− | ;allow=g729
| |
− | ;allow=g723
| |
− |
| |
− | ;CHANGED
| |
− | allow=all
| |
− |
| |
− | ; dtmf mode to be used by default for all clients. Supports rfc2833, q931keypad
| |
− | ; h245alphanumeric, h245signal.
| |
− | ;Default - rfc 2833
| |
− | dtmfmode=rfc2833
| |
− |
| |
− | ; User/peer/friend definitions:
| |
− | ; User config options Peer config options
| |
− | ; ------------------ -------------------
| |
− | ; context
| |
− | ; disallow disallow
| |
− | ; allow allow
| |
− | ; accountcode accountcode
| |
− | ; amaflags amaflags
| |
− | ; dtmfmode dtmfmode
| |
− | ; rtptimeout ip
| |
− | ; port
| |
− | ; h323id
| |
− | ; email
| |
− | ; url
| |
− | ; e164
| |
− | ; rtptimeout
| |
− |
| |
− | ;
| |
− |
| |
− | ;Define users here
| |
− | ;Section header is extension
| |
− | [myuser1]
| |
− | type=user
| |
− | context=context1
| |
− | disallow=all
| |
− | allow=gsm
| |
− | allow=ulaw
| |
− |
| |
− |
| |
− |
| |
− | [mypeer1]
| |
− | type=peer
| |
− | context=context2
| |
− | ip=a.b.c.d ; UPDATE with appropriate ip address
| |
− | port=1720 ; UPDATE with appropriate port
| |
− | e164=101
| |
− |
| |
− |
| |
− |
| |
− | ;[myfriend1]
| |
− |
| |
− | [friend-Anneke]
| |
− | type=friend
| |
− | ;CHANGED
| |
− | context=from-internal
| |
− | ip=129.125.71.172 ; UPDATE with appropriate ip address
| |
− | ;port=1820 ; UPDATE with appropriate port
| |
− | port=1720
| |
− | disallow=all
| |
− | ;allow=ulaw
| |
− | ;CHANGED
| |
− | allow=gsm
| |
− | allow=ulaw
| |
− | allow=g729
| |
− | allow=g723
| |
− |
| |
− | ;CHANGED
| |
− | ;e164=12345
| |
− | e164=601
| |
− |
| |
− | rtptimeout=3
| |
− | dtmfmode=rfc2833
| |
− |
| |
− |
| |
− | [friend-Fabio]
| |
− | type=friend
| |
− | context=default
| |
− | ip=129.125.71.173 ; UPDATE with appropriate ip address
| |
− | ;port=1820 ; UPDATE with appropriate port
| |
− | port=1720
| |
− | disallow=all
| |
− | ;allow=ulaw
| |
− | ;CHANGED
| |
− | allow=gsm
| |
− | allow=ulaw
| |
− | allow=g729
| |
− | allow=g723
| |
− |
| |
− | ;CHANGED
| |
− | ;e164=12345
| |
− |
| |
− | rtptimeout=3
| |
− | dtmfmode=rfc2833
| |
− |
| |
− | ;[601]
| |
− | ;type=peer
| |
− | ;context=default
| |
− | ;ip=129.125.71.173:1719
| |
− | ;e164=100
| |
− | ;OH323/129.125.71.173:1719
| |
− | ;gatekeeper=ENABLE
| |
− | ;OOH323/601
| |
− | | |
− | | |
− | (Still needs some cleaning up, will do later)
| |
− | | |
− | Comments on this file:
| |
− | * All parameters that have been changed by us are preceded with a comment line ''';CHANGED'''
| |
− | * The Trixbox is going to act as gateway for the gatekeeper hence '''gateway = yes'''
| |
− | * h245tunneling = yes
| |
− | * For some reason it seems that you have to set e164 to the SIP extension number ??? (how to handle multiple extension???)
| |
− | * We will be using a gatekeeper so '''gatekeeper = 129.125.71.173''' (ip-address of the gatekeeper)
| |
− | * The user profile section is a bit messy right now
| |
− | | |
− | ==== Adding H323 extensions ====
| |
− | | |
− | A H323 extension can be added in FreePBX as a custom extension. For example:
| |
− | Extension number: 600
| |
− | Displayname: Anneke h323
| |
− | Dial: OOH323/600@129.125.71.172 (ip-address of machine where extension can be found/maybe gatekeeper?)
| |
− | | |
− | Asterisk saves these extensions in the file extensions_additional.conf
| |
− | | |
− | ==== General remarks ====
| |
− | Whenever you edit anyting in the .conf files makes sure to do
| |
− | amportal stop
| |
− | amportal start
| |
− | | |
− | at you asterisk prompt. If you then do
| |
− | asterisk -vvvvr
| |
− | you get an CLI and here you can type
| |
− | ooh323 debug
| |
− | exit
| |
− | to initiate the debugger
| |
− | | |
− | === Progression ===
| |
− | ==== Using Gnomemeeting ====
| |
− | * H323 -> H323: via gatekeeper only (gateway unchecked in gnomemeeting preferences)
| |
− | * H323 -> SIP : rings but no connection can be establihed (gnomemeeting says: no commmon codec). These calls seem to be terminated by the trixbox.
| |
− | * SIP -> H323 : SIP phone says there is a connection but receiving end gets very short signal followed by the message: call cleared by the gatekeeper. These seem to be terminated by the gatekeeper.
| |
− | | |
− | ==== Using Ekiga ====
| |
− | * H323 -> H323: via gatekeeper only (gateway unchecked in gnomemeeting preferences)
| |
− | * H323 -> SIP : rings but no connection can be establihed.
| |
− | * SIP -> H323 : rings but no connection can be establihed.
| |
− | | |
− | We cannot find errors in the gatekeeper log. The error seems to be in Asterisk. '''Both''' ways the ooh323 debug output says:
| |
− | | |
− | -- Executing Macro("SIP/501-0841a378", "exten-vm|novm|602") in new stack
| |
− | -- Executing Macro("SIP/501-0841a378", "user-callerid") in new stack
| |
− | -- Executing GotoIf("SIP/501-0841a378", "0?report") in new stack
| |
− | -- Executing GotoIf("SIP/501-0841a378", "0?start") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "REALCALLERIDNUM=501") in new stack
| |
− | -- Executing NoOp("SIP/501-0841a378", "REALCALLERIDNUM is 501") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "AMPUSER=501") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "AMPUSERCIDNAME=Anneke SIP freePBX") in new stack
| |
− | -- Executing GotoIf("SIP/501-0841a378", "0?report") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "CALLERID(all)=Anneke SIP freePBX <501>") in new stack
| |
− | -- Executing NoOp("SIP/501-0841a378", "Using CallerID "Anneke SIP freePBX" <501>") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "FROMCONTEXT=exten-vm") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "VMBOX=novm") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "EXTTOCALL=602") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "CFUEXT=") in new stack
| |
− | -- Executing Set("SIP/501-0841a378", "RT=") in new stack
| |
− | -- Executing Macro("SIP/501-0841a378", "record-enable|602|IN") in new stack
| |
− | -- Executing GotoIf("SIP/501-0841a378", "0 > 0?2:4") in new stack
| |
− | -- Goto (macro-record-enable,s,4)
| |
− | -- Executing AGI("SIP/501-0841a378", "recordingcheck|20070226-192222|1172514142.0") in new stack
| |
− | -- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
| |
− | PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/imap.so' - libc-client.so.0: cannot open shared object file: No such file or directory in Unknown on line 0
| |
− | recordingcheck|20070226-192222|1172514142.0: Inbound recording not enabled
| |
− | -- AGI Script recordingcheck completed, returning 0
| |
− | -- Executing NoOp("SIP/501-0841a378", "No recording needed") in new stack
| |
− | -- Executing GotoIf("SIP/501-0841a378", "0?dolocaldial|1") in new stack
| |
− | -- Executing Macro("SIP/501-0841a378", "dial||tr|602") in new stack
| |
− | -- Executing AGI("SIP/501-0841a378", "dialparties.agi") in new stack
| |
− | -- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
| |
− | PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4/imap.so' - libc-client.so.0: cannot open shared object file: No such file or directory in Unknown on line 0
| |
− | dialparties.agi: Starting New Dialparties.agi
| |
− | -- dialparties.agi: priority is 1
| |
− | dialparties.agi: Caller ID name is 'Anneke SIP freePBX' number is '501'
| |
− | dialparties.agi: Methodology of ring is 'none'
| |
− | -- dialparties.agi: Added extension 602 to extension map
| |
− | -- dialparties.agi: Extension 602 cf is disabled
| |
− | -- dialparties.agi: Extension 602 do not disturb is disabled
| |
− | == Parsing '/etc/asterisk/manager.conf': Found
| |
− | == Parsing '/etc/asterisk/manager_custom.conf': Found
| |
− | == Manager 'admin' logged on from 127.0.0.1
| |
− | == Manager 'admin' logged off from 127.0.0.1
| |
− | -- dialparties.agi: Checking CW and CFB status for extension 602
| |
− | -- dialparties.agi: DbSet CALLTRACE/602 to 501
| |
− | -- AGI Script dialparties.agi completed, returning 0
| |
− | -- Executing Dial("SIP/501-0841a378", "OOH323/602||tr") in new stack
| |
− | --- ooh323_request - data 602 format 0x4 (ulaw)
| |
− | --- find_peer
| |
− | +++ find_peer
| |
− | +++ ooh323_request
| |
− | --- ooh323_call- 602
| |
− | +++ ooh323_call
| |
− | -- Called 602
| |
− | --- onNewCallCreated ooh323c_o_1
| |
− | --- find_call
| |
− | +++ find_call
| |
− | setting callid number 501
| |
− | Outgoing call 602(ooh323c_o_1) - Codec prefs - ()
| |
− | Adding capabilities to call(outgoing, ooh323c_o_1)
| |
− | --- configure_local_rtp
| |
− | +++ configure_local_rtp
| |
− | +++ onNewCallCreated ooh323c_o_1
| |
− | --- onAlerting ooh323c_o_1
| |
− | --- find_call
| |
− | +++ find_call
| |
− | +++ onAlerting ooh323c_o_1
| |
− | -- OOH323/602-ed80 is ringing
| |
− | --- onCallEstablished ooh323c_o_1
| |
− | --- find_call
| |
− | +++ find_call
| |
− | +++ onCallEstablished ooh323c_o_1
| |
− | -- OOH323/602-ed80 answered SIP/501-0841a378
| |
− | --- onCallCleared ooh323c_o_1
| |
− | --- find_call
| |
− | +++ find_call
| |
− | --- ooh323_hangup
| |
− | hanging 602
| |
− | +++ ooh323_hangup
| |
− | == Spawn extension (macro-dial, s, 10) exited non-zero on 'SIP/501-0841a378' in macro 'dial'
| |
− | == Spawn extension (macro-dial, s, 10) exited non-zero on 'SIP/501-0841a378' in macro 'exten-vm'
| |
− | == Spawn extension (macro-dial, s, 10) exited non-zero on 'SIP/501-0841a378'
| |
− | --- ooh323_destroy
| |
− | Destroying 602
| |
− | +++ ooh323_destroy
| |
− | | |
− | This output describes the situation where SIP extension 501 tries to call the H323 extension 602. In this experiment the callee's softphone rings, but after accepting the connection on the softphone, the connection is mysteriously dropped.
| |
− | Because the telephone do ring, we can conclude that the H323 name resolution part is correctly carried out by the H323 gatekeeper GnuGK.
| |
− | The next step for a h323 terminal then is to route a connection through the gateway, in this case the h323 channel driver implemented in Asterisk.
| |
− | By carefully looking at the ooh323c channel driver's output, we notice that for both extensions the data declared in freePBX is found and a connection is set up.
| |
− | When the called softphone tries to answer, the connection seems to get established; then the sudden hangup seems to originate in the macro-dial but the exact cause is uncertain.
| |