steve,
thats Great... my C is old and ftw operated differently on sysV, solaris, sunos, ultrix, and osf... so I went back to bourne... couldn't work through the idiosyncracies of gnu autoconf, etc... although I have a many reasons to, I just couldn't get to production 'C' coding level...
daveC

Steve Edwards wrote:
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




--
Building Strong Relationships w/ Intelligent Customer Service
--

Interlocking Business Solutions, LLC
856-380-0894 x5000


_______________________________________________
--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