[asterisk-users] 99 bottles of beer
Steve Murphy
murf at parsetree.com
Thu Aug 16 20:38:23 CDT 2007
On Thu, 2007-08-16 at 07:56 -0400, Russell Bryant wrote:
> Gordon Henderson wrote:
> > ; *99:
> > ; 99 bottles of beer on the wall.
> >
> > exten => *99,1,Noop(99 Bottles of beer on the wall)
> > exten => *99,n,Answer()
> > exten => *99,n,Set(bottles=99)
> > exten => *99,n(loop),Noop(There are ${bottles} bottles of beer on the wall)
> > exten => *99,n,SayNumber(${bottles})
> > exten => *99,n,Noop(Take one done and pass it round and there's)
> > exten => *99,n,Set(bottles=$[${bottles}-1])
> > exten => *99,n,Noop(${bottles} bottles of beer on the wall)
> > exten => *99,n,SayNumber(${bottles})
> > exten => *99,n,GotoIf($["${bottles}" > "0"]?loop)
> > exten => *99,n,Noop(We're out of beer!)
> > exten => *99,n,Hangup()
> >
> > Too much dial plan mashing this morning and I rememberd this site:
> >
> > http://99-bottles-of-beer.net/
>
> And now, in AEL! (This is untested, I just wanted to see how it would look.)
>
> context silly {
> *99 => {
> NoOp(99 Bottles of beer on the wall);
> Answer();
> bottles=99;
> while (${bottles} > 0) {
> NoOp(${bottles} bottles of beer on the wall, ${bottles} bottles of beer);
> SayNumber(${bottles});
> NoOp(Take one down, pass it around);
> bottles=${bottles} - 1;
> NoOp(${bottles} bottles of beer on the wall);
> }
> NoOp(We're out of beer!);
> Hangup();
> }
> }
Lol, Well done, Russell!
How about this one: from an extensions.conf that someone posted on the
internet, I think, and I converted to AEL; I'm sorry, but I can't find
the original author.
(If anybody can find his post, I'd love to give him credit.) I did test
this out,
and it works; just put a call to the macro ( &guessgame(); ) in an
extension in your dialplan....
macro guessgame()
{
startpoint:
while (1)
{
Playback(guessit/intro);
set(GUESS="");
GUESS=${EPOCH}%9;
Set(TIMEOUT(digit)=3);
Set(TIMEOUT(response)=5);
while (1)
{
Read(NUMBER,guessit/input_number,1);
Verbose(Got ${NUMBER} from Read);
if( "${NUMBER}" = "*" || "${NUMBER}" = "#" || "${NUMBER}" = "")
{
Playback(guessit/thatsnotanumber);
}
else if ("${NUMBER}" = "${GUESS}")
{
Playback(guessit/win);
break; // the only way out of this loop!
}
else if ("${NUMBER}" > "${GUESS}")
{
Playback(guessit/less);
}
else if ("${NUMBER}" < "${GUESS}")
{
Playback(guessit/more);
}
else /* what other stuff can the user enter than a number, #,
nothing, or * ? */
{
Playback(guessit/thatsnotanumber);
}
}
/* You get here after a successful guess */
Wait(.5);
Read(AGAIN,guessit/playagain,1);
if ("${AGAIN}" != "1")
break;
}
Playback(guessit/goodbye);
return;
catch t
{
playback(guessit/goodbye);
return;
}
catch i
{
playblack(invalid);
}
}
murf
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3239 bytes
Desc: not available
Url : http://lists.digium.com/pipermail/asterisk-users/attachments/20070816/c3727de4/attachment.bin
More information about the asterisk-users
mailing list