[Asterisk-Users] GnuGk and Asterisk IVR

Angel Ivanov a.ivanov at hostmates.com
Thu Mar 23 20:44:53 MST 2006


Hi,

I am working on a H.323 project which involves GnuGk and Asterisk My 
current goal is to provide IVR functionality for the H.323 users which 
register through GnuGk(eg. call credit information)

I have successfully built a H.323 platform using GnuGk - it uses SQL 
accounting and authorisation. Now I am trying to integrate it with 
Asterisk in order to provide IVR functionality as I already have working 
Asterisk platform with all the needed components realised by AGI scripts.

To come to the point...I have added ASterisk as a permanent endpoint 
gateway in GnuGk. What am I trying to accomplish is routing a prefix 
"02" to Asterisk and receiving IVR messages from it. For the preliminary 
tests I am just using the PLayback application but unfortunately I can't 
get it working. Here are the components of the test setup. - GnuGk 
v.2.2.3, PwLib v 1.9.0, OpenH323 v. 1.17.1, Asterisk 
SVN-branch-1.2-r14140, OH323 channel driver for Asterisk: 
asterisk-oh323-0.7.3.

I manage to route the calls to Asterisk but it can't fetch the H323ID of 
the calling party and therefore the channel appears as unknown. Here are 
the configuration files of my servers and the output of Asterisk CLI.


Asterisk CLI output:


*CLI> -- Registered with gatekeeper 'xxx at xxx.xxxx.com'.
-- Inbound H.323 call 'ip$81.29.xxx.xxx:33405/4096-dc39af32' detected.
-- Inbound H.323 call 'ip$81.29.xxx.xxx:33405/4096-dc39af32', channel 
'OH323/unknown at 81.29.xxx.xxx-dc39af32'.
-- Executing Answer("OH323/unknown at 81.29.xxx.xxx-dc39af32", "") in new stack
-- Executing Playback("OH323/unknown at 81.29.xxx.xxx-dc39af32", 
"vm-youhave|skip") in new stack
-- Playing 'vm-youhave' (language 'en')
== Auto fallthrough, channel 'OH323/unknown at 81.29.xxx.xxx-dc39af32' 
status is 'UNKNOWN'
-- Hungup 'OH323/unknown at 81.29.xxx.xxx-dc39af32'
== Setting global variable 'OH323_CALLID' to 
'192d019c-13e7-a244-b096-e852a4d5e898'
== Setting global variable 'OH323_CONFID' to 
'98791985-5bf7-3c44-868e-8532889290fd'
== Setting global variable 'OH323_CHANCODEC' to 'alaw'
== Setting global variable 'OH323_CTOKEN' to 'ip$81.29.xxx.xxx:33405/4096'
== Setting global variable 'OH323_SRCALIAS' to 'unknown (123, 123) 
[81.29.xxx.xxx]'
== Setting global variable 'OH323_DSTALIAS' to '02 02'
== Setting global variable 'OH323_SRCE164' to '123'
== Setting global variable 'OH323_DSTE164' to '02'
== Setting global variable 'OH323_REMOTEAPP' to 'SJ Labs╝ SJphone 
1.60.289a 0/0'
== Setting global variable 'OH323_RADDR' to '81.29.xxx.xxx'
== Setting global variable 'OH323_LADDR' to '81.29.xxx.xxx'
Mar 23 17:12:13 WARNING[5112]: chan_oh323.c:3877 
exception_h323_connection: Call 'ip$81.29.xxx.xxx:33405/4096-dc39af32' 
has no owner. Autodestroying it.
Mar 23 17:12:16 WARNING[5070]: chan_oh323.c:3554 
cleanup_h323_connection: Call 'ip$81.29.xxx.xxx:33405/4096-dc39af32' not 
found (clear).



GnuGk conf:

[Gatekeeper::Main]
FourtyTwo=42
Name=ExB_Gk
;EndpointSuffix=_gnugk
Home=81.29.xxx.xxx;127.0.0.1
StatusTraceLevel=2
UseBroadcastListener=0
TimestampFormat=ISO8601
EndpointSignalPort=1720
EncryptAllPasswords=0
UseMulticastListener=0
StatusPort=7000
SignalCallId=1

[GkStatus::Auth]
rule=password | explicit
81.29.xxx.xxx=allow
Shutdown=allow
gkadmin=eZqojUYXNUc=

[RasSrv::PermanentEndpoints]
195.34.xxx.xxx:1720=gw1;00
81.29.xxx.xxx:1730=astgw;02

[RasSrv::GWPrefixes]
gw1=00
astgw=02

[RasSrv::RRQFeatures]
AcceptEndpointIdentifier=1
AcceptGatewayPrefixes=1
OverwriteEPOnSameAddress=1
IRQPollCount=0

[RasSrv::ARQFeatures]
CallUnregisteredEndpoints=0
ArjReasonRouteCallToGatekeeper=0

[RoutedMode]
GKRouted=1
H245Routed=1
CallSignalPort=1720
AcceptNeighborCalls=1
AcceptUnregisteredCalls=1
RemoveH245AddressOnTunneling=0
RemoveCallOnDRQ=1
DropCallsByReleaseComplete=1
SendReleaseCompleteOnDRQ=1
SupportNATedEndpoints=1
TranslateFacility=1

[Proxy]
Enable=1
ProxyForNAT=1
RTPPortRange=1024-65535

[RoutingPolicy]
00=explicit,internal
02=internal,explicit
Default=explicit,internal,numberanalysis

[CallTable]
GenerateNBCDR=0
GenerateUCCDR=1

[Gatekeeper::Auth]
FileIPAuth=optional;RRQ
SQLPasswordAuth=required;RRQ
SQLAuth=required;ARQ,Setup

[Gatekeeper::Acct]
SQLAcct=required;start,update,stop




oh323.conf:

[general]
listenAddress=81.29.xxx.xxx
listenPort=1730
tcpStart=10000
tcpEnd=20000
udpStart=10000
udpEnd=20000
fastStart=no
h245Tunnelling=no
h245inSetup=no
jitterMin=20
jitterMax=100
ipTos=none
outboundMax=100
inboundMax=100
simultaneousMax=100
;crlCallNumber=20
;crlCallTime=20000
;crlThreshold=30
;bandwidthLimit=1024
wrapLibTraceLevel=0
libTraceLevel=0
libTraceFile=stdout
gatekeeper=ExB_Gk at 81.29.xxx.xxx
gatekeeperTTL=600
userInputMode=Q931
amaFlags=default
accountCode=H323
language=en
context=gnugk


[register]
context=gnugk
alias=astgw
gwprefix=02
;alias=ExB_Gk


[codecs]
codec=G711A
frames=20
codec=G711U
frames=20


extensions.conf
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no


[globals]
CONSOLE=Console/dsp ; Console interface for demo
IAXINFO=guest ; IAXtel username/password
;IAXINFO=myuser:mypass
TRUNK=Zap/g2 ; Trunk interface
TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)
;TRUNK=IAX2/user:pass at provider


[gnugk]
exten => 02,1,Answer
;exten => 02,n,Dial(OH323/${CALLERIDNUM}@81.29.xxx.xxx:1720)
exten => 02,n,Playback(vm-youhave,skip)
exten => 02,n,Hangup



As you can see GnuGk listens on port 1720 and Asterisk on 1730 as they 
are on the same interface. I have tried Using the Dial application but I 
think it is not appropriate as I am not trying to open a new outgoing 
channel but just return a Playback message on the incoming one.

I was wondering whether what I am trying to achieve is possible and if 
yes where are the mistakes in my configuration.

Any help or suggestions would be truly appreciated

Thanks in advance,
Angel Ivanov





More information about the asterisk-users mailing list