synack
Guru
- Joined
- Dec 31, 2013
- Messages
- 227
- Reaction score
- 56
OK big update to the [macro-hangupcall-custom]
It was a bit of a pain as the documentation (even what is in the asterisk source code) is incorrect. I had to dig out the actual variable names from other parts of the source code.
Its quite large so i have commented out some of the database lines I feel are useless either because I only just get zeros or I just don't want them. Feel free to adjust to your own personal taste.
I cannot vouch for the validity of this data, as it's provided by the SIP channel driver.
Speaking of which, this will need to be updated/modified to work with pjsip
As always, this is beta code. It runs fine on *my* asterisk 11/freepbx 11, but use at your own caution.
It was a bit of a pain as the documentation (even what is in the asterisk source code) is incorrect. I had to dig out the actual variable names from other parts of the source code.
Its quite large so i have commented out some of the database lines I feel are useless either because I only just get zeros or I just don't want them. Feel free to adjust to your own personal taste.
I cannot vouch for the validity of this data, as it's provided by the SIP channel driver.
Speaking of which, this will need to be updated/modified to work with pjsip
As always, this is beta code. It runs fine on *my* asterisk 11/freepbx 11, but use at your own caution.
Code:
[macro-hangupcall-custom]
; start of QoS reporting
exten => s,1,NoOp(Start QoS)
exten => s,n,NoOp(Local Stream ID: ${CHANNEL(rtpqos,audio,local_ssrc)})
exten => s,n,NoOp(Remote Stream ID: ${CHANNEL(rtpqos,audio,remote_ssrc)})
exten => s,n,NoOp(Packets Sent: ${CHANNEL(rtpqos,audio,txcount)})
exten => s,n,NoOp(Packets Received: ${CHANNEL(rtpqos,audio,rxcount)})
exten => s,n,NoOp(Local RX Packet Loss Max: ${CHANNEL(rtpqos,audio,local_maxrxploss)})
exten => s,n,NoOp(Local RX Packet Loss Min: ${CHANNEL(rtpqos,audio,local_minrxploss)})
exten => s,n,NoOp(Local RX Packet Loss: ${CHANNEL(rtpqos,audio,rxploss)})
exten => s,n,NoOp(Local RX Packet Loss Norm Dev: ${CHANNEL(rtpqos,audio,local_normdevrxploss)})
exten => s,n,NoOp(Local RX Packet Loss Std Dev: ${CHANNEL(rtpqos,audio,local_stdevrxploss)})
exten => s,n,NoOp(Local TX Packet Loss: ${CHANNEL(rtpqos,audio,txploss)})
exten => s,n,NoOp(Remote RX Packet Loss Max: ${CHANNEL(rtpqos,audio,remote_maxrxploss)})
exten => s,n,NoOp(Remote RX Packet Loss Min: ${CHANNEL(rtpqos,audio,remote_minrxploss)})
exten => s,n,NoOp(Remote RX Packet Loss Norm Deviation: ${CHANNEL(rtpqos,audio,remote_normdevrxploss)})
exten => s,n,NoOp(Remote RX Packet Loss Std Deviation: ${CHANNEL(rtpqos,audio,remote_stdevrxploss)})
exten => s,n,NoOp(Round Trip Time: ${CHANNEL(rtpqos,audio,rtt)})
exten => s,n,NoOp(Round Trip Time Max: ${CHANNEL(rtpqos,audio,maxrtt)})
exten => s,n,NoOp(Round Trip Time Min: ${CHANNEL(rtpqos,audio,minrtt)})
exten => s,n,NoOp(Round Trip Time Norm Dev: ${CHANNEL(rtpqos,audio,normdevrtt)})
exten => s,n,NoOp(Round Trip Time Std Dev: ${CHANNEL(rtpqos,audio,stdevrtt)})
exten => s,n,NoOp(Local RX Jitter: ${CHANNEL(rtpqos,audio,rxjitter)})
exten => s,n,NoOp(Local TX Jitter: ${CHANNEL(rtpqos,audio,txjitter)})
exten => s,n,NoOp(Local Jitter Max: ${CHANNEL(rtpqos,audio,local_maxjitter)})
exten => s,n,NoOp(Local Jitter Min: ${CHANNEL(rtpqos,audio,local_minjitter)})
exten => s,n,NoOp(Local Jitter Norm Dev: ${CHANNEL(rtpqos,audio,local_normdevjitter)})
exten => s,n,NoOp(Local Jitter Std Dev: ${CHANNEL(rtpqos,audio,local_stdevjitter)})
exten => s,n,NoOp(Remote Jitter Max: ${CHANNEL(rtpqos,audio,remote_maxjitter)})
exten => s,n,NoOp(Remote Jitter Min: ${CHANNEL(rtpqos,audio,remote_minjitter)})
exten => s,n,NoOp(Remote Jitter Norm Dev: ${CHANNEL(rtpqos,audio,remote_normdevjitter)})
exten => s,n,NoOp(Remote Jitter Std Dev: ${CHANNEL(rtpqos,audio,remote_stdevjitter)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local Stream ID: ${CHANNEL(rtpqos,audio,local_ssrc)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote Stream ID: ${CHANNEL(rtpqos,audio,remote_ssrc)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Packets Sent: ${CHANNEL(rtpqos,audio,txcount)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Packets Received: ${CHANNEL(rtpqos,audio,rxcount)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Packet Loss Max: ${CHANNEL(rtpqos,audio,local_maxrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Packet Loss Min: ${CHANNEL(rtpqos,audio,local_minrxploss)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Packet Loss: ${CHANNEL(rtpqos,audio,rxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Packet Loss Norm Dev: ${CHANNEL(rtpqos,audio,local_normdevrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Packet Loss Std Dev: ${CHANNEL(rtpqos,audio,local_stdevrxploss)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local TX Packet Loss: ${CHANNEL(rtpqos,audio,txploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote RX Packet Loss Max: ${CHANNEL(rtpqos,audio,remote_maxrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote RX Packet Loss Min: ${CHANNEL(rtpqos,audio,remote_minrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote RX Packet Loss Norm Deviation: ${CHANNEL(rtpqos,audio,remote_normdevrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote RX Packet Loss Std Deviation: ${CHANNEL(rtpqos,audio,remote_stdevrxploss)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Round Trip Time: ${CHANNEL(rtpqos,audio,rtt)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Round Trip Time Max: ${CHANNEL(rtpqos,audio,maxrtt)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Round Trip TIme Min: ${CHANNEL(rtpqos,audio,minrtt)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Round Trip Time Norm Dev: ${CHANNEL(rtpqos,audio,normdevrtt)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Round Trip Time Std Dev: ${CHANNEL(rtpqos,audio,stdevrtt)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local RX Jitter: ${CHANNEL(rtpqos,audio,rxjitter)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local TX Jitter: ${CHANNEL(rtpqos,audio,txjitter)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local Jitter Max: ${CHANNEL(rtpqos,audio,local_maxjitter)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local Jitter Min: ${CHANNEL(rtpqos,audio,local_minjitter)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local Jitter Norm Dev: ${CHANNEL(rtpqos,audio,local_normdevjitter)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local Jitter Std Dev: ${CHANNEL(rtpqos,audio,local_stdevjitter)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote Jitter Max: ${CHANNEL(rtpqos,audio,remote_maxjitter)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote Jitter Min: ${CHANNEL(rtpqos,audio,remote_minjitter)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote Jitter Norm Dev: ${CHANNEL(rtpqos,audio,remote_normdevjitter)})
;exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Remote Jitter Std Dev: ${CHANNEL(rtpqos,audio,remote_stdevjitter)})
exten => s,n(continue),NoOp(End of QoS)