[asterisk-users] ${HANGUPCAUSE} is always 0 in the h extension

Vardan hvardan71 at gmail.com
Tue May 11 02:02:46 CDT 2010


Asterisk variable hangupcause
Page Contents

     * Asterisk variable Hangupcause
           o Recommended SIP <-> ISDN Cause codes (from RFC3398):
           o PRI Hangup Codes
           o Version notes
           o Tip
           o Examples
                 + Example 1
                 + Example 2
                 + Example 3: Macro for handling hangupcause
                 + Example 4: Set the hangup cause text to a variable
           o See also


Asterisk variable Hangupcause
Hangupcause is the latest PRI hangup return code on a zap channel 
connected to a PRI interface. Note that this also works on SIP channels, 
maybe other channels as well.
Tip: The packet isdnutils contains a utility called isdncause that 
provides a textual explanation of the error number that you feed it with 
(watch the entry format).

Previous to CVS 2004-08-12:

 From causes.h:
  #define AST_CAUSE_NOTDEFINED    0
  #define AST_CAUSE_NORMAL        1
  #define AST_CAUSE_BUSY          2
  #define AST_CAUSE_FAILURE       3
  #define AST_CAUSE_CONGESTION    4
  #define AST_CAUSE_UNALLOCATED   5


For CVS head releases after 2004-08-12:

  /* Causes for disconnection (from Q.931) */
  #define AST_CAUSE_UNALLOCATED 1
  #define AST_CAUSE_NO_ROUTE_TRANSIT_NET 2
  #define AST_CAUSE_NO_ROUTE_DESTINATION 3
  #define AST_CAUSE_CHANNEL_UNACCEPTABLE 6
  #define AST_CAUSE_CALL_AWARDED_DELIVERED 7
  #define AST_CAUSE_NORMAL_CLEARING 16
  #define AST_CAUSE_USER_BUSY 17
  #define AST_CAUSE_NO_USER_RESPONSE 18
  #define AST_CAUSE_NO_ANSWER 19
  #define AST_CAUSE_CALL_REJECTED 21
  #define AST_CAUSE_NUMBER_CHANGED 22
  #define AST_CAUSE_DESTINATION_OUT_OF_ORDER 27
  #define AST_CAUSE_INVALID_NUMBER_FORMAT 28
  #define AST_CAUSE_FACILITY_REJECTED 29
  #define AST_CAUSE_RESPONSE_TO_STATUS_ENQUIRY 30
  #define AST_CAUSE_NORMAL_UNSPECIFIED 31
  #define AST_CAUSE_NORMAL_CIRCUIT_CONGESTION 34
  #define AST_CAUSE_NETWORK_OUT_OF_ORDER 38
  #define AST_CAUSE_NORMAL_TEMPORARY_FAILURE 41
  #define AST_CAUSE_SWITCH_CONGESTION 42
  #define AST_CAUSE_ACCESS_INFO_DISCARDED 43
  #define AST_CAUSE_REQUESTED_CHAN_UNAVAIL 44
  #define AST_CAUSE_PRE_EMPTED 45
  #define AST_CAUSE_FACILITY_NOT_SUBSCRIBED   50
  #define AST_CAUSE_OUTGOING_CALL_BARRED      52
  #define AST_CAUSE_INCOMING_CALL_BARRED      54
  #define AST_CAUSE_BEARERCAPABILITY_NOTAUTH 57
  #define AST_CAUSE_BEARERCAPABILITY_NOTAVAIL     58
  #define AST_CAUSE_BEARERCAPABILITY_NOTIMPL 65
  #define AST_CAUSE_CHAN_NOT_IMPLEMENTED      66
  #define AST_CAUSE_FACILITY_NOT_IMPLEMENTED      69
  #define AST_CAUSE_INVALID_CALL_REFERENCE 81
  #define AST_CAUSE_INCOMPATIBLE_DESTINATION 88
  #define AST_CAUSE_INVALID_MSG_UNSPECIFIED   95
  #define AST_CAUSE_MANDATORY_IE_MISSING 96
  #define AST_CAUSE_MESSAGE_TYPE_NONEXIST 97
  #define AST_CAUSE_WRONG_MESSAGE 98
  #define AST_CAUSE_IE_NONEXIST 99
  #define AST_CAUSE_INVALID_IE_CONTENTS 100
  #define AST_CAUSE_WRONG_CALL_STATE 101
  #define AST_CAUSE_RECOVERY_ON_TIMER_EXPIRE 102
  #define AST_CAUSE_MANDATORY_IE_LENGTH_ERROR 103
  #define AST_CAUSE_PROTOCOL_ERROR 111
  #define AST_CAUSE_INTERWORKING 127
  /* Special Asterisk aliases */
  #define AST_CAUSE_BUSY  AST_CAUSE_USER_BUSY
  #define AST_CAUSE_FAILURE  AST_CAUSE_NETWORK_OUT_OF_ORDER
  #define AST_CAUSE_NORMAL  AST_CAUSE_NORMAL_CLEARING
  #define AST_CAUSE_NOANSWER   AST_CAUSE_NO_ANSWER
  #define AST_CAUSE_CONGESTION   AST_CAUSE_NORMAL_CIRCUIT_CONGESTION
  #define AST_CAUSE_NOTDEFINED  0



Note: This does not work in 0.7.1 (maybe other versions) See: 
http://bugs.digium.com/bug_view_page.php?bug_id=0000890

Recommended SIP <-> ISDN Cause codes (from RFC3398):

   ISUP Cause value                        SIP response
   ----------------                        ------------
   1  unallocated number                   404 Not Found
   2  no route to network                  404 Not found
   3  no route to destination              404 Not found
   16 normal call clearing                 --- (*)
   17 user busy                            486 Busy here
   18 no user responding                   408 Request Timeout
   19 no answer from the user              480 Temporarily unavailable
   20 subscriber absent                    480 Temporarily unavailable
   21 call rejected                        403 Forbidden (+)
   22 number changed (w/o diagnostic)      410 Gone
   22 number changed (w/ diagnostic)       301 Moved Permanently
   23 redirection to new destination       410 Gone
   26 non-selected user clearing           404 Not Found (=)
   27 destination out of order             502 Bad Gateway
   28 address incomplete                   484 Address incomplete


Zhang Shukun wrote:
> hi , all
>
>      i want to wtite hangupcause to cdr, but both caller hangup and
> callee hangup result in hangupcause code 16.
>
> how would i know whether caller or callee or system error hangup the phone?
>
> please help.
>
> thanks!
>
> 2010/4/22 Alejandro Recarey<alexrecarey at gmail.com>:
>>> However, as I can see by the verbose command, ${HANGUPCAUSE} is always
>>> 0. I thought it was a channel variable that contained the hangupcause?
>>
>> Just an update, if the call is established, then there is a
>> hangupcause received.
>>
>> The above problem only happens if the caller hangs up before pickup.
>>
>> This is usualy a cause 16, not 0.
>>
>> Alex
>>
>> --
>> _____________________________________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>                http://www.asterisk.org/hello
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-users
>>
>
>
>





More information about the asterisk-users mailing list