[asterisk-users] Get sip response code

Olle E Johansson oej at edvina.net
Fri May 18 00:17:06 MST 2007


17 maj 2007 kl. 02.57 skrev Robert Lister:

> On Wed, May 16, 2007 at 05:46:21PM -0500, Greg Oliver wrote:
>>> If I push the response code back to the handset (Cisco 7960) then  
>>> it is even
>>> more unhelpful as it uses the same error message for all SIP  
>>> error type
>>> response codes: "Reorder" but does not tell you why the call  
>>> failed to set
>>> up. If it actually put the SIP response error on the display,  
>>> that would be
>>> good, but it doesn't. (at least SIP 8.6 and prior software versions)
>>
>> In order to display the response on the handset, Cisco phones require
>> that you have privileges and CTI control over the phones.  The only
>> un-authenticated things you can display through the phones are  
>> through
>> the services and directories keys.  Unfortunately, they are  
>> keeping that
>> locked up since they want you to use them with their system.   
>> Hopefully
>> they will change their minds one day.
>
> Yes. I know that... This is exactly the limitation I am trying to work
> around, by being able to send back meaningful tones to the phone from
> asterisk in-band rather than sending back the SIP response codes  
> which all
> get displayed by the handset as "Reorder" which is completely  
> useless in
> informing the user what's wrong. (And the US reorder tone sounds  
> too much
> like the UK engaged tone anyway.)
>
> Even if the handset did display the SIP error response, I'm not  
> expecting
> most users to understand the subtleties of what they all mean, so  
> it seems
> better just to simplify it with a few well known tones most users are
> already familiar with (unobtainable, equipment busy, user busy,  
> etc.) And it
> will behave in the same way regardless of the model of handset.
> ("Call worked/Busy/Call failed...")
>
> Unfortunately Dial() DIALSTATUS is a bit limited in that if call  
> setup fails
> for some reason, it mostly returns CONGESTION. Playing a congestion  
> tone for
> perhaps 12 different call setup problems including misdials,  
> doesn't help
> either. I want to play the right tone (for, say, unobtainable,  
> equipment
> busy, etc.)
>
> The ISDN gateway I am using goes to great pains to send back the  
> correct SIP
> response to asterisk, which then just reports it as "CONGESTION"  
> which is a
> bit limiting.
>
> The SIP response code is displayed on asterisk's console, I just  
> cannot see
> a way to get at it in the dial plan....

There are multiple ways to get the result of a dial() operation. The  
most detailed
way is to read the HANGUPCAUSE channel variable, which is translated  
from
each channels signalling protocol response code. As the ISDN gateway,
Asterisk "goes through great pains" to translate SIP codes to the  
ISDN cause
codes which we use as the "esperanto" code within the PBX core, which as
you know is multiprotocol.

The translation from SIP to the cause codes follows available RFCs  
and where
those not cover the code, Cisco's documentation. I am sure that those  
are the
same as your ISDN gateway adheres to.

So in order to do something useful, use the HANGUPCAUSE channel  
variable.

/O


More information about the asterisk-users mailing list