Unknown or unavailable item requested - QoS Variables Missing

We are currently using asterisk version 13.14.0 with a freepbx implementation and are keenly interested in QoS. The following are our configs

extensions_custom.conf
[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)} 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: ${CHANNEL(rtpqos,audio,rxploss)})
exten => s,n,Set(CDR(userfield)=${CDR(userfield)} Local TX Packet Loss: ${CHANNEL(rtpqos,audio,txploss)})
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(continue),NoOp(End of QoS)

We are able to get QoS stats on “from-trunk” context but are not able to get from any other dial plan.

We get the following errors on asterisk full log
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,txcount’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:31] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,rxcount’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:32] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,rxploss’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:33] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,txploss’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:34] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,rxjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:35] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,txjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:36] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: Local TX Jitter: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,local_maxjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:37] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: Local TX Jitter: Local Jitter Max: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,local_minjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:38] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: Local TX Jitter: Local Jitter Max: Local Jitter Min: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,local_normdevjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:39] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: Local TX Jitter: Local Jitter Max: Local Jitter Min: Local Jitter Norm Dev: ") in new stack
[2017-04-12 23:26:41] WARNING[17049][C-00000006] func_channel.c: Unknown or unavailable item requested: ‘rtpqos,audio,local_stdevjitter’
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:40] Set(“PJSIP/1001-00000006”, "CDR(userfield)= Packets Sent: Packets Received: Local RX Packet Loss: Local TX Packet Loss: Local RX Jitter: Local TX Jitter: Local Jitter Max: Local Jitter Min: Local Jitter Norm Dev: Local Jitter Std Dev: ") in new stack
[2017-04-12 23:26:41] VERBOSE[17049][C-00000006] pbx.c: Executing [s@macro-hangupcall-custom:41] NoOp(“PJSIP/1001-00000006”, “End of QoS”) in new stack

Kindly assist.

That is using a PJSIP channel which uses different parameters to the CHANNEL dialplan function for extracting that information. They are documented on the wiki under the PJSIP technology[1].

[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+14+Function_CHANNEL

@jcolp Thank you for your prompt response.

The parameters I have used on the extensions_custom.conf are similar to what you have in the link.

Could it be a positioning issue or syntax?

Kindly let me know how you would get QoS stats for for example rxjitter - Received packet jitter.
exten => ???

Cheers

They are similar, but not what PJSIP supports - thus the unknown or unavailable item warning. Here’s an example:

${CHANNEL(rtcp,rxjitter)}

@jcolp, Many many, thanks that worked!!!

Now I just need to figure out why I get stats from calls that go to voice mail but not from calls that have been picked.

Cheers