[asterisk-users] Detecting Disconnected Numbers - PRI
Eric "ManxPower" Wieling
eric at fnords.org
Mon Jan 22 17:22:22 MST 2007
Michael Collins wrote:
> <original message>
> I am trying to automatically detect disconnected numbers when using the outbound dialer I have written.
>
> * Some numbers hang up immediately with a Cause Code > 0 and no voice treatment
> * Some numbers get voice treatment with a PROGRESS indication and an associated Cause Code > 0
> * Some numbers get voice treatment with a PROGRESS indication and no associated cause code (CC=0)
>
> My application can pick up the PROGRESS indication (if I get one) and handle the hangup, but not if I don't get a cause code!
>
> Is there anything I can do to ensure that I always get a PROGRESS indication with cause code or a hangup with cause code?
> Behaviour of the PRI seems to differ across telcos and also across numbers.
>
> I don't want to just assume hangup on PROGRESS indication as this may not be a disconnected number - it might be a forwarded or redirected number.
>
> I need to achieve consistency and this is proving very difficult.
>
> Has anyone else had this issue and if so, which tree should I be barking up?
>
> </original message>
>
>
> Yep, I experienced this frequently. I have several PRI vendors and they all give me the same line of crap: "Well, PRI is good, but it's not perfect..." Sad but true. I feel comfortable in saying that there is no 100% guaranteed way of detecting disconnected numbers on a PRI. I've done lots of testing and come to the conclusion that you have to do your best to work around it. For example, I know that phone number xxx-yyy-zzzz is disconnected. I dial it 25 times with Asterisk. 18 times I get one cause code (like 'invalid' or fast busy - I don't recall the exact cause code number), 6 times I get PROGRESS indicating ring-no answer and 1 time I get traditional busy. All calls to same phone number, same provider, made one right after the other. Oddly enough, if I call the number on a POTS line I *ALWAYS* get the disconnect message. It's one case where advanced technology yields poorer results than the old stuff.
>
> I know that doesn't help but I wanted you to know that you're not alone.
The correct way to determine the ending cause of a call is the
${HANGUPCAUSE} variable that Dial creats. Just to be sure, set
priindication=outofband in /etc/asterisk/zapata.conf. HANGUPCAUSE
should always be set.
More information about the asterisk-users
mailing list