On Fri, 09 Jul 2004 13:58:30 +1000 Dear Gonzalo Servat, I'm successfully using your wake-up script, but found 1 problem. Other than that it works perfectly good. Thanks man. ^_^ anyway, my problem seems to be the timezone or date problem. I'm using time zone WIT/JAV, But when I run the wake up script, in the * console, it says that it doesn't know my timezone. so I edit the date:manipulate, in the date:maipulate, there's a line JAV + 0700 java, I change it to WIT +0700 java. it works, but the time that I entered using wake-up script, always being added 7 hours later. For example, I put 10:00 it become 05:00 pm. Do you have any idea how to solve this? For the mean time, I edit your configurations a little bit to accomodate the problem, but I can't (haven't understood) how to change the asterisk-voice to accomodate that. For example when I enter 10:00 am, the file for outgoing call has been fixed to the above time, but the asterisk voice stil say 05:00 pm. Sorry for My English, thanks
Gonzalo Servat <[EMAIL PROTECTED]> wrote: > On 9/07/2004 10:21 AM +0700, Isianto Istiadi wrote: > > > Dear guys, > > I'm searching the wake-up call script in wiki, found one, but I have no > > idea how to use it. Can you give some direction how to install it? > > Thanks > > I presume you're talking about this wake up call script: > <http://www.voip-info.org/tiki-index.php?page=Asterisk%20tips%20wake-up> > > Stick the following in cron: > > * * * * * root /path/to/run_wakeups.sh > > /path/to/run_wakeups.sh contains: > > ============= cut ============== > #!/bin/bash > > PENDING=/tmp/wakeups > OUTGOING=/var/spool/asterisk/outgoing > SLEEP=5 > > TIME=$(/bin/date +%H%M) > > for fn in $PENDING/$TIME.*.call > do > if test -r $fn > then > /bin/mv -f $fn $OUTGOING/ > sleep $SLEEP > fi > done > ============= cut ============== > > The following is my wakeup.agi. Changes to the original version are: some > debugging functionality (as I was troubleshooting an issue where it would > read out the wrong time when the script tells you what time the wake up > call was set to), and it also creates the /tmp/wakeups directory if it > doesn't already exist. I suggest using the one on the voip-info.org page > first, and if you decide to use my version then use at your own risk :) > > ============= cut ============== > #!/usr/bin/perl > > use Asterisk::AGI; > use Date::Manip; > > use strict; > > ######### > > # Settings: > > my $pending_dir = '/tmp/wakeups'; > > unless (-d '/tmp/wakeups') { > mkdir('/tmp/wakeups'); > } > > my $local_context = 'default'; > > # values for the call file: > my $maxretries = 60; > my $retrytime = 30; > my $waittime = 35; > > my $debug = 1; > > #my $application = 'MusicOnHold'; > my $application = 'Playback'; > my $data = 'wake-up'; > > my $callerid = 'Wakeup Call Service <297>'; > > ######### > > my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); > > if ($debug) { > my $log = '/tmp/wakeup.log'; > unlink($log); > open (DBG,">>$log") or die "Cannot open debug file: $!"; > print DBG "\n" . "-" x 50 . "\n"; > print DBG "Logging started: " . join('/', $mday, $mon, $year) . " " > . join(':', $hour, $min, $sec) . "\n"; > print DBG "-" x 50 . "\n"; > } > > my $agi = new Asterisk::AGI; > my %stuff = $agi->ReadParse; # MUST DO THIS! -- (add this to > constructor!) > > # this says "1 to create, 2 to confirm, 3 to cancel" > my $func = $agi->get_data('wakeup-menu', 20000, 1); > > exit if $func == -1; > > my ($caller) = $stuff{callerid} =~ /<(\d+)>/; > > if ($func == 1) > { > my $time = $agi->get_data('time', 15000, 4); > exit if $func == -1; > > if ($time =~ /^(\d{2})(\d{2})$/) > { > my $hour = $1 * 1; > my $min = $2; > > print DBG 'HOUR entered: ' . $hour . "\n" if $debug; > print DBG 'MINUTE entered: ' . $min . "\n" if $debug; > > if ($hour > 0 && $hour <= 12 && $min < 60) > { > my $time; > > # $agi->stream_file('pls-enter'); > # $agi->stream_file('digits/1'); > # $agi->stream_file('for'); > # $agi->stream_file('digits/a-m'); > # $agi->stream_file('or'); > # $agi->stream_file('digits/2'); > # $agi->stream_file('for'); > # my $ampm = $agi->get_data('digits/p-m', 15000, 1); > my $ampm = $agi->get_data('am-or-pm', 15000, 1); > exit if $ampm == -1; > > if ($ampm == 1) > { > $time = ParseDate(sprintf("%s:%02s AM", $hour, $min)); > print DBG 'TYPE entered: AM' . "\n" if $debug; > print DBG '$time is set to: ' . $time . "\n" if $debug; > } > elsif ($ampm == 2) > { > $time = ParseDate(sprintf("%s:%02s PM", $hour, $min)); > print DBG 'TYPE entered: PM' . "\n" if $debug; > print DBG '$time is set to: ' . $time . "\n" if $debug; > } > else > { > $agi->stream_file('vm-sorry'); > } > > if ($time) > { > my $h = UnixDate($time, "%I") * 1; > my $m = UnixDate($time, "%M"); > my $a = UnixDate($time, "%p"); > > foreach my $fn (<$pending_dir/*.$caller.call>) > { > unlink $fn; > } > > my $filename = sprintf("%s/%04s.%s.call", $pending_dir, UnixDate($time, > "%H%M"), $caller); > > open(FILE, ">$filename"); > > > printf FILE q{# > Channel: Local/[EMAIL PROTECTED] > > MaxRetries: %s > RetryTime: %s > WaitTime: %s > > Application: %s > Data: %s > > Callerid: %s > }, > $caller, $local_context, > $maxretries, > $retrytime, > $waittime, > $application, > $data, > $callerid, > ; > > close(FILE); > > # say "Your wakeup call" > $agi->stream_file('has-been-set-to'); > print DBG 'UnixDate $time translates to ' . UnixDate($time, "%o") . > "\n" if $debug; > print DBG 'localtime (UnixDate $time) translates to ' . > localtime(UnixDate($time, "%o")) . "\n" if $debug; > $agi->exec('SayUnixTime', sprintf("%s||IMp", UnixDate($time, "%o"))); > > $agi->stream_file('for'); > $agi->stream_file('extension'); > $agi->say_digits($caller); > > $agi->stream_file('auth-thankyou'); > } > } > else > { > $agi->stream_file('vm-sorry'); > } > > } > else > { > $agi->stream_file('vm-sorry'); > } > } > elsif ($func == 2) > { > > my ($fn) = <$pending_dir/*.$caller.call>; > > if ($fn) > { > my ($time) = $fn =~ /\/(\d{4})\.\d+\.call/; > $time =~ s/(\d\d)(\d\d)/$1:$2/; > > $agi->stream_file('is-set-to'); > > $agi->exec('SayUnixTime', sprintf("%s||IMp", UnixDate(ParseDate($time), > "%s"))); > } > else > { > $agi->stream_file('is-not-set'); > } > > $agi->stream_file('auth-thankyou'); > } > elsif ($func == 3) > { > > foreach my $fn (<$pending_dir/*.$caller.call>) > { > unlink $fn; > } > > # say "Your wakeup call" > $agi->stream_file('has-been-cleared'); > $agi->stream_file('auth-thankyou'); > } > elsif ($func eq '*') > { > $agi->stream_file('vm-sorry'); > } > else > { > $agi->stream_file('vm-sorry'); > } > > $agi->hangup; > > if ($debug) { > print DBG "\n" . "-" x 50 . "\n"; > print DBG "Logging ended: " . join('/', $mday, $mon, $year) . " " . > join(':', $hour, $min, $sec) . "\n"; > print DBG "-" x 50 . "\n"; > close(DBG); > } > ============= cut ============== > > Last, but not least, you just need an entry in your extensions.conf similar > to: > > exten => 999,1,AGI(/path/to/wakeup.agi) > > Reload asterisk and you should now be able to dial 999 and set a wakeup > call. Oh, also very important, you need to create the sound files (using > wavepad or some other software to create gsm files) required in this > script. These include: > > wakeup-menu.gsm (eg. "Welcome to the wakeup call service. Please enter the > time for your wakeup call... etc") > for.gsm > extension.gsm > > If you got any problems, check out the asterisk console for any errors. > > Hope this helps. > > Regards, > Gonzalo > _______________________________________________ > Asterisk-Users mailing list > [EMAIL PROTECTED] > http://lists.digium.com/mailman/listinfo/asterisk-users > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > _______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users