[asterisk-users] AGI STREAM FILE not working?

Tony Mountifield tony at mountifield.org
Mon Jun 6 09:39:54 CDT 2011


In article <BANLkTikPxC_JK5xVHYX9aKakLtVL0v6e7g at mail.gmail.com>,
A E [Gmail] <all.eforums at gmail.com> wrote:
> Hello,
> using 1.8.4. using a very simple local AGI script in bash which has only one
> line in it:
> 
> echo -e 'STREAM FILE welcome 123 \n'
> 
> dialplan:
> exten => 5150,1,Answer()
>   same => n,Set(CHANNEL(language)=en_AU)
>   same => n,AGI(testagi.sh)
>   same => n,Hangup
> 
> console output:
>     -- Executing [5150 at AllPhones:1] Answer("SIP/PBX-00000024", "") in new
> stack
>     -- Executing [5150 at AllPhones:2] Set("SIP/PBX-00000024",
> "CHANNEL(language)=en_AU") in new stack
>     -- Executing [5150 at AllPhones:3] AGI("SIP/PBX-00000024", "testagi.sh") in
> new stack
>     -- Launched AGI Script /var/lib/asterisk/agi-bin/testagi.sh
>     -- Playing 'welcome' (escape_digits=1) (sample_offset 0)
>     -- <SIP/PBX-00000024>AGI Script testagi.sh completed, returning 0
>     -- Executing [5150 at AllPhones:4] Hangup("SIP/PBX-00000024", "") in new
> stack
>   == Spawn extension (AllPhones, 5150, 4) exited non-zero on
> 'SIP/PBX-00000024'
> 
> But nothing happens...as in even when it says that it's playing the file (as
> verified in the asterisk 'full' log), I hear nothing on the phone
> 
> What gives? spent 2 hrs Googling but nothing! :(

Firstly, you need to check that you can successfully play files
outside of the AGI environment. Replace the AGI command with:

same => n,Playback(welcome)

If that doesn't work, the problem is nothing to do with AGI.

However, I think what else is happening is that your AGI script is
sending the STREAM FILE command and then immediately exiting. This goes
back to the dialplan and executes a hangup when only a tiny fraction of
the welcome file has been played. You could test this theory in two
different ways, as I'm not sure whether it's the exiting of the AGI or
the subsequent hangup that is aborting the playback.

a) Put a "sleep 5" in your agitest.sh after the echo. As others have
said, you should really use a proper library that reads responses to
AGI commands, but for testing, a sleep will keep the AGI script alive
while the message plays.

b) Put a "same => n,Wait(5)" after the AGI command. If the AGI leaves
the message playing, this would give it some time to play before you
hang up the line.

Hope this helps!

Tony

-- 
Tony Mountifield
Work: tony at softins.co.uk - http://www.softins.co.uk
Play: tony at mountifield.org - http://tony.mountifield.org



More information about the asterisk-users mailing list