Add the following bits to have asterisk include hangup code & reason when logging at a verbose level.
This bit goes in ## /etc/asterisk/extensions_custom.conf ##
; add hangup codes/reasons in AstDB
; http://astbook.asteriskdocs.org/en/2nd_Edition/asterisk-book-html-chunk/asterisk-CHP-6-SECT-6.html
; http://www.voip-info.org/wiki/index.php?page=Asterisk+variable+hangupcause
; these will then be used by the macro-hangupcall to give a reason for
; call termination in the whatever log is capturing verbose info
[hangupcodes]
exten => s,1,Set(DB(hangupcode/0=“NOTDEFINED”)
exten => s,n,Set(DB(hangupcode/1=“UNALLOCATED”)
exten => s,n,Set(DB(hangupcode/2=“NO_ROUTE_TRANSIT_NET”)
exten => s,n,Set(DB(hangupcode/3=“NO_ROUTE_DESTINATION”)
exten => s,n,Set(DB(hangupcode/6=“CHANNEL_UNACCEPTABLE”)
exten => s,n,Set(DB(hangupcode/7=“CALL_AWARDED_DELIVERED”)
exten => s,n,Set(DB(hangupcode/16=“NORMAL_CLEARING”)
exten => s,n,Set(DB(hangupcode/17=“USER_BUSY”)
exten => s,n,Set(DB(hangupcode/18=“NO_USER_RESPONSE”)
exten => s,n,Set(DB(hangupcode/19=“NO_ANSWER”)
exten => s,n,Set(DB(hangupcode/21=“CALL_REJECTED”)
exten => s,n,Set(DB(hangupcode/22=“NUMBER_CHANGED”)
exten => s,n,Set(DB(hangupcode/27=“DESTINATION_OUT_OF_ORDER”)
exten => s,n,Set(DB(hangupcode/28=“INVALID_NUMBER_FORMAT”)
exten => s,n,Set(DB(hangupcode/29=“FACILITY_REJECTED”)
exten => s,n,Set(DB(hangupcode/30=“RESPONSE_TO_STATUS_ENQUIRY”)
exten => s,n,Set(DB(hangupcode/31=“NORMAL_UNSPECIFIED”)
exten => s,n,Set(DB(hangupcode/34=“NORMAL_CIRCUIT_CONGESTION”)
exten => s,n,Set(DB(hangupcode/38=“NETWORK_OUT_OF_ORDER”)
exten => s,n,Set(DB(hangupcode/41=“NORMAL_TEMPORARY_FAILURE”)
exten => s,n,Set(DB(hangupcode/42=“SWITCH_CONGESTION”)
exten => s,n,Set(DB(hangupcode/43=“ACCESS_INFO_DISCARDED”)
exten => s,n,Set(DB(hangupcode/44=“REQUESTED_CHAN_UNAVAIL”)
exten => s,n,Set(DB(hangupcode/45=“PRE_EMPTED”)
exten => s,n,Set(DB(hangupcode/50=“FACILITY_NOT_SUBSCRIBED”)
exten => s,n,Set(DB(hangupcode/52=“OUTGOING_CALL_BARRED”)
exten => s,n,Set(DB(hangupcode/54=“INCOMING_CALL_BARRED”)
exten => s,n,Set(DB(hangupcode/57=“BEARERCAPABILITY_NOTAUTH”)
exten => s,n,Set(DB(hangupcode/58=“BEARERCAPABILITY_NOTAVAIL”)
exten => s,n,Set(DB(hangupcode/65=“BEARERCAPABILITY_NOTIMPL”)
exten => s,n,Set(DB(hangupcode/66=“CHAN_NOT_IMPLEMENTED”)
exten => s,n,Set(DB(hangupcode/69=“FACILITY_NOT_IMPLEMENTED”)
exten => s,n,Set(DB(hangupcode/81=“INVALID_CALL_REFERENCE”)
exten => s,n,Set(DB(hangupcode/88=“INCOMPATIBLE_DESTINATION”)
exten => s,n,Set(DB(hangupcode/95=“INVALID_MSG_UNSPECIFIED”)
exten => s,n,Set(DB(hangupcode/96=“MANDATORY_IE_MISSING”)
exten => s,n,Set(DB(hangupcode/97=“MESSAGE_TYPE_NONEXIST”)
exten => s,n,Set(DB(hangupcode/98=“WRONG_MESSAGE”)
exten => s,n,Set(DB(hangupcode/99=“IE_NONEXIST”)
exten => s,n,Set(DB(hangupcode/100=“INVALID_IE_CONTENTS”)
exten => s,n,Set(DB(hangupcode/101=“WRONG_CALL_STATE”)
exten => s,n,Set(DB(hangupcode/102=“RECOVERY_ON_TIMER_EXPIRE”)
exten => s,n,Set(DB(hangupcode/103=“MANDATORY_IE_LENGTH_ERROR”)
exten => s,n,Set(DB(hangupcode/111=“PROTOCOL_ERROR”)
exten => s,n,Set(DB(hangupcode/127=“INTERWORKING”)
Next we redefine the hangupcall macro by adding the following to
/etc/asterisk/extensions_override_freepbx.conf
; lets record the hangup reason to help with trouble-shooting
; http://www.voip-info.org/wiki/view/Asterisk+variable+hangupcause
[macro-hangupcall]
exten => s,1,Noop(HANGUPCAUSE_CODE=${HANGUPCAUSE})
exten => s,n,Noop(HANGUPCAUSE_REASON=${DB(hangupcode/${HANGUPCAUSE})})
exten => s,n,ResetCDR(w)
exten => s,n,NoCDR()