Steve Edwards wrote:
On Tue, 1 May 2007, Jay Austad wrote:

I've got a directory under /var/lib/asterisk/sounds which contains a bunch
of sound files.  I would like to call the Playback command to play the
files, but I need it to select a file to play randomly.  Is there any way
to do this?

I do this with an AGI.

On Wed, 2 May 2007, dave cantera wrote:

here is a way that I solved a similar problem...  have a shell script that
runs and indexes all the files in the directory into an ascii flat file with
a format of
#### filename
0001 directory/tt-weasels
0002 directory/tt-monkeys

in your dialplan use the rand() to pick a number, pass it to the shell script
as an arg[], then the shells script grep()'s and cut()'s the filename puts it
in a db varaible, the dialplan picks it up and plays it...  as you can see, I
haven't done it yet :) but, in theory it works...  you could skip the
dialplan rand() and just use linux rand based on the minutes or seconds value
for current time...

you don't have to zero fill the index either, I seem to like nicely formated
files, they are easier for humans to read.
daveC

Sounds like a lot of effort to avoid writing an AGI. If you have the skills to write the script described above, you have the skills to write an AGI -- you can write AGI's in shell scripts, btw.

AGI's accept stuff from Asterisk on stdin and send stuff back to Asterisk on stdout -- very simple and elegant actually. Take your script and rewrite the "reading arguments" bits to read from stdin and change the "write db" bits to write to stdout (set a channel variable) and you have an AGI and a much cleaner dialplan.

I write AGI's in C for speed and flexibility. No interpreter (bash, perl, php, etc.) to fire up, full access to anything you want to do.

In C, I call ftw() ("ftw - traverse (walk) a file tree"). If I get more than 1 file, I choose one randomly.

Thanks in advance,
------------------------------------------------------------------------
Steve Edwards      [EMAIL PROTECTED]      Voice: +1-760-468-3867 PST
Newline                                             Fax: +1-760-731-3000
_______________________________________________
--Bandwidth and Colocation provided by Easynews.com --

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to