; handle hangup macro ; this macro attempts to go though and do something intelligent with the HANGUPCAUSE and DIALSTATUS [macro-handle-hangup] exten => s,1,NoOp(HANGUPCAUSE is ${HANGUPCAUSE} and DIALSTATUS is ${DIALSTATUS}) exten => s,n,GotoIf($[${HANGUPCAUSE} = 0]?s,nohc) exten => s,n,Goto(hc-${HANGUPCAUSE},1) exten => s,n(nohc),GotoIf($[${DIALSTATUS} = ANSWER]?hc-16,1) exten => s,n,GotoIf($[${DIALSTATUS} = BUSY]?hc-17,1) exten => s,n,GotoIf($[${DIALSTATUS} = NOANSWER]?hc-19,1) exten => s,n,GotoIf($[${DIALSTATUS} = CONGESTION]?hc-42,1) exten => s,n,GotoIf($[${DIALSTATUS} = CHANUNAVAIL]?hc-44,1) exten => s,n,GotoIf($[${DIALSTATUS} = CANCEL]?hc-0,1) exten => s,n,Goto(hc-0,n) exten => hc-0,1,NoOp(${HANGUPCAUSE} - Not Defined) exten => hc-0,n,Goto(ind-congestion,1) exten => hc-1,1,NoOp(${HANGUPCAUSE} - Unallocated) exten => hc-1,n,Goto(ind-outofservice,1) exten => hc-2,1,NoOp(${HANGUPCAUSE} - No Route to Transit Network) exten => hc-2,n,Goto(ind-congestion,1) exten => hc-3,1,NoOp(${HANGUPCAUSE} - No Route to Destination) exten => hc-3,n,Goto(ind-congestion,1) exten => hc-6,1,NoOp(${HANGUPCAUSE} - Channel Unacceptable) exten => hc-6,n,Goto(ind-congestion,1) exten => hc-7,1,NoOp(${HANGUPCAUSE} - Call Awarded Delivered) exten => hc-7,n,Goto(ind-hangup,1) exten => hc-16,1,NoOp(${HANGUPCAUSE} - Normal Clearing) exten => hc-16,n,Goto(ind-hangup,1) exten => hc-17,1,NoOp(${HANGUPCAUSE} - User Busy) exten => hc-17,n,Goto(ind-busy,1) exten => hc-18,1,NoOp(${HANGUPCAUSE} - No User Response) exten => hc-18,n,Goto(ind-hangup,1) exten => hc-19,1,NoOp(${HANGUPCAUSE} - No Answer) exten => hc-19,n,Goto(ind-hangup,1) exten => hc-21,1,NoOp(${HANGUPCAUSE} - Call Rejected) exten => hc-21,n,Goto(ind-outofservice,1) exten => hc-22,1,NoOp(${HANGUPCAUSE} - Number Changed) exten => hc-22,n,Goto(ind-outofservice,1) exten => hc-27,1,NoOp(${HANGUPCAUSE} - Destination Out-of-Order) exten => hc-27,n,Goto(ind-outofservice,1) exten => hc-28,1,NoOp(${HANGUPCAUSE} - Invalid Number Format) exten => hc-28,n,Goto(ind-congestion,1) exten => hc-29,1,NoOp(${HANGUPCAUSE} - Facility Rejected) exten => hc-29,n,Goto(ind-congestion,1) exten => hc-30,1,NoOp(${HANGUPCAUSE} - Response to Status Enquiry) exten => hc-30,n,Goto(ind-hangup,1) exten => hc-31,1,NoOp(${HANGUPCAUSE} - Normal Unspecified) exten => hc-31,n,Goto(ind-hangup,1) exten => hc-34,1,NoOp(${HANGUPCAUSE} - Normal Circuit Congestion) exten => hc-34,n,Goto(ind-congestion,1) exten => hc-38,1,NoOp(${HANGUPCAUSE} - Network Out-of-Order) exten => hc-38,n,Goto(ind-congestion,1) exten => hc-41,1,NoOp(${HANGUPCAUSE} - Normal Temporary Failure) exten => hc-41,n,Goto(ind-congestion,1) exten => hc-42,1,NoOp(${HANGUPCAUSE} - Switch Congestion) exten => hc-42,n,Goto(ind-congestion,1) exten => hc-43,1,NoOp(${HANGUPCAUSE} - Access Information Discarded) exten => hc-43,n,Goto(ind-hangup,1) exten => hc-44,1,NoOp(${HANGUPCAUSE} - Requested Channel Unavailable) exten => hc-44,n,Goto(ind-congestion,1) exten => hc-45,1,NoOp(${HANGUPCAUSE} - Pre-Empted) exten => hc-45,n,Goto(ind-congestion,1) exten => hc-50,1,NoOp(${HANGUPCAUSE} - Facility Not Subscribed) exten => hc-50,n,Goto(ind-congestion,1) exten => hc-52,1,NoOp(${HANGUPCAUSE} - Outgoing Call Barred) exten => hc-52,n,Goto(ind-congestion,1) exten => hc-54,1,NoOp(${HANGUPCAUSE} - Incoming Call Barred) exten => hc-54,n,Goto(ind-congestion,1) exten => hc-57,1,NoOp(${HANGUPCAUSE} - Bearer Capability Not Authorized) exten => hc-57,n,Goto(ind-congestion,1) exten => hc-58,1,NoOp(${HANGUPCAUSE} - Bearer Capability Not Available) exten => hc-58,n,Goto(ind-congestion,1) exten => hc-65,1,NoOp(${HANGUPCAUSE} - Bearer Capability Not Implemented) exten => hc-65,n,Goto(ind-congestion,1) exten => hc-66,1,NoOp(${HANGUPCAUSE} - Channel Not Implemented) exten => hc-66,n,Goto(ind-congestion,1) exten => hc-69,1,NoOp(${HANGUPCAUSE} - Facility Not Implemented) exten => hc-69,n,Goto(ind-congestion,1) exten => hc-81,1,NoOp(${HANGUPCAUSE} - Invalid Call Reference) exten => hc-81,n,Goto(ind-congestion,1) exten => hc-88,1,NoOp(${HANGUPCAUSE} - Incompatible Destination) exten => hc-88,n,Goto(ind-congestion,1) exten => hc-95,1,NoOp(${HANGUPCAUSE} - Invalid Message - Unspecified) exten => hc-95,n,Goto(ind-congestion,1) exten => hc-96,1,NoOp(${HANGUPCAUSE} - Mandatory IE Missing) exten => hc-96,n,Goto(ind-congestion,1) exten => hc-97,1,NoOp(${HANGUPCAUSE} - Message Type Nonexistant) exten => hc-97,n,Goto(ind-congestion,1) exten => hc-98,1,NoOp(${HANGUPCAUSE} - Wrong Message) exten => hc-98,n,Goto(ind-congestion,1) exten => hc-99,1,NoOp(${HANGUPCAUSE} - IE Nonexistant) exten => hc-99,n,Goto(ind-congestion,1) exten => hc-100,1,NoOp(${HANGUPCAUSE} - Invalid IE Contents) exten => hc-100,n,Goto(ind-congestion,1) exten => hc-101,1,NoOp(${HANGUPCAUSE} - Wrong Call State) exten => hc-101,n,Goto(ind-congestion,1) exten => hc-102,1,NoOp(${HANGUPCAUSE} - Recovery on Timer Expire) exten => hc-102,n,Goto(ind-congestion,1) exten => hc-103,1,NoOp(${HANGUPCAUSE} - Mandatory IE Length Error) exten => hc-103,n,Goto(ind-congestion,1) exten => hc-111,1,NoOp(${HANGUPCAUSE} - Protocol Error) exten => hc-111,n,Goto(ind-congestion,1) exten => hc-127,1,NoOp(${HANGUPCAUSE} - Internetworking) exten => hc-127,n,Goto(ind-congestion,1) exten => ind-hangup,1,Hangup exten => ind-busy,1,Busy exten => ind-congestion,1,Congestion exten => ind-outofservice,1,Zapateller