Stefan Viljoen
2018-Jul-26  08:08 UTC
[asterisk-users] Asterisk 13.22.0 - "stat" dialplan function clears channel vars?
Hi Guys
I have the following dialplan code that I use to play back recordings, the
filename being provided in an originate statement to the AMI (AJAM) interface:
Action: Originate
ActionID: test
Channel: SIP/3015
Exten: 7777
Context: local
Priority: 1
CallerID: 3015
Account: recordinglisten
ChannelID: abc
OtherChannelID: def
Variable:
CallLimit=3600,recfile=/var/spool/asterisk/monitor/1807/25/2507180836591192526,altfile=/var/spool/asterisk/monitor/archive/1807/25/2507180836591192526
Async: true
Extension 7777 is:
;listen to recording
exten=>7777,1,Answer()
exten=>7777,n,NoOp(Requesting File ${recfile})
exten=>7777,n,Set(${__recfile}=${recfile})
exten=>7777,n,Set(${__altfile}=${altfile})
exten=>7777,n,NoOp(Rec file set to ${recfile})
exten=>7777,n,NoOp(Alt file set to ${altfile})
exten=>7777,n,NoOp(Requesting Alt File ${altfile})
exten=>7777,n,Set(__numbertarget=7777)
exten=>7777,n,Set(haveFile=${STAT(e,${recfile}.gsm)})
exten=>7777,n,NoOp(Original File Exist ${haveFile})
exten=>7777,n,GotoIf($["${haveFile}" = "1"]?play)
exten=>7777,n,NoOp(rec File not found using alt file)
exten=>7777,n,Set(recfile=${altFile})
exten=>7777,n(play),ControlPlayback(${recfile},20000,6,4,8,5,9)
exten=>7777,n,hangup()
However, if the above originate is done, when this line is executed in the
dialplan Asterisk 13.22.0
exten=>7777,n,Set(haveFile=${STAT(e,${recfile}.gsm)})
it clears the variables recfile and altfile - if you NoOp them out below this
line they are blank.
Why would the "STAT" dialplan function in 13.22.0 apparently clear all
variables set on the channel, instead of checking if the given file exists (as
it did in previous Asterisk versions) and leaving the channel variables alone...
Additionally, not only "recfile" which is passed as a STAT parameter
is clear, "altfile" is -also- cleared to blank.
Can anybody assist?
Thank you
Stefan