[asterisk-users] AGI: How to break out of AGI when stream_file escape_digits are detected in middle of long sequence of files?
Lefteris Zafiris
zaf at fastmail.com
Tue Oct 11 03:31:05 CDT 2016
On Mon, 10 Oct 2016, at 22:47, Jonathan H wrote:
> For reasons best known to myself, I call a python agi (PYST2 - love
> it!) which streams a series of very short files in quick succession.
>
> Like this:
>
> escape_digits = str("0")
> agi.stream_file(promptFile,escape_digits)
>
> and this is what I see on the AGI debug:
>
> <Local/s at root-00000061;2>AGI Tx >> 200 result=0 endpos=6784
> <Local/s at root-00000061;2>AGI Rx << STREAM FILE
> /home/DefaultPrompts/en_GB/female/wx/low "0" 0
> -- <Local/s at root-00000061;2> Playing
> '/home/DefaultPrompts/en_GB/female/wx/low.alaw' (escape_digits=0)
> (sample_offset 0) (language 'en_GB')
> <Local/s at root-00000061;2>AGI Tx >> 200 result=48 endpos=1440
>
> The FIRST line is a file that finished normally, with result=0, the
> LAST line is a file that was interrupted, and receives result=48 from
> asterisk.
>
> Yes, zero stops the file playing, but it just goes onto the next file.
>
> So, how do I get that variable? It doesn't become available in python,
> and trying to get it via either
>
> agi.env[result']
> agi.get_variable('result')
>
> just makes python choke and the AGI quits. That would be fine if it
> was a result of result being 48!
>
> I feel like I'm going slightly bonkers here because it's something so
> obvious, and yet I've googled so hard over this!
>
> Thanks.
Hello,
as the docs on stream_file() mention it returns the digit if one was
pressed.
So you might want to try something like:
pressed_digit = agi.stream_file(promptFile,escape_digits)
in you case the raw value 48 is converted to its ascii equivalent so
pressed_digit will have the value 0
--
Lefteris Zafiris
More information about the asterisk-users
mailing list