[Asterisk-Users] problems with analog interface to PBX

Vic Cross vicc at veejoe.com.au
Thu May 13 01:46:09 MST 2004


On Wed, 12 May 2004, Dan Fernandez wrote:

> Asterisk should answer the call, playback a message, dial another PBX
> extension and if no one answers dial another extension (via IAX).
> 
> The first problem I ran into was that the Flash application doesn't
> really work. To get around this I added another x100p to dial the new
> extension.  The problem I ran here was that even though I specified in
> the Dial app to just dial for 30 seconds, it rang forever as if * cannot
> recongnize that no one had picked up.  Asterisk does seem to detect
> hangups and busy tones (I have busydetect=yes and busycount=10)

In the absence of call progress detection settings, Zap analog channels
tell Dial() that they are Connected more-or-less as soon as they have
completed dialling (I see this on the display of my 7960: I see Proceeding
for a second or two, then Connected, when I dial through an X100P).  So,
the timeout on your Dial() never gets triggered because the channel
reports a connected call almost straight away.

To do what you want, you would need callprogress=yes -- as long as your
Panasonic PBX generates authentic US tones.  busydetect will only detect
busy (!), not ringback or congestion or any of the other tones you would
need to make your application work the way you want -- call progress 
detection tries to do this for you.

The bad news is that even if your PBX generates US tones, reports are that
the detection is not too reliable.

> Am I trying to do something that the x100p is not capable of?  Would
> making changes to the indications.conf help at all?

It's not that the X100P can't do the job, it's more that analogue lines
can't do the job :)  Seriously, if your PBX generates US tones then give 
callprogress=yes a try.  From my reading of the code, the tones specified 
in indications.conf are unrelated to the way the * DSP does call progress 
detection (have a look at functions like ast_dsp_call_progress() in dsp.c 
if you're really curious).

> 2) I would also like to use * for voicemail. The user should be able to
> dial the extension where the x100p is connected and asterisk recognized
> the extension the user is dialing and request for the password? Is this
> possible?

On an analogue channel via an X100P, there is no "called number"  
indication.  So you can't tell what number the caller dialled to reach
you.  If you wanted to use the * box as a voicemail-only machine, you
could drop the caller straight into VoiceMailMain, but if you wanted other
functions (conference rooms, VoIP gateway, etc) you would need to use an
IVR...

   "press 1 to access Voicemail...
    press 2 to reach a Voice-over-IP user...
    press 3 to join a conference...
    ..."

This doesn't really help your original need: to dial another number on the
PBX and get control back if needed.  If callprogress=yes doesn't work for
you, you could try something like this (off the top of my head):

exten => 4,1,Playback(trying-press-*-to-come-back)
exten => 4,2,Dial(Zap/1/1234,,Hg)
exten => 4,3,Goto(103)
exten => 4,103,Playback(sorry-cant-reach)
exten => 4,104,Goto(menu,s,1)

On the Dial(), the option H enables caller hangup using '*', and g says go
on in context when the destination channel hangs up.  This would put your
caller in the driver seat and get them to do the tone detection for you ;)


Hope this helps,
Vic Cross



More information about the asterisk-users mailing list