Office phones have to be online at office hours, otherwise a voicemail should be enabled. They should also be aware of holidays.
The dialplan
; extensions.conf
exten => 1234567,n,GotoIfTime(06:00-22:00,mon-fri,*,*?hcheck:vm)
exten => 1234567,n,GotoIfTime(06:00-11:00,sat,*,*?hcheck:vm)
exten => 1234567,n(hcheck),AGI(isholiday.pl)
exten => 1234567,n,GotoIf($[${ISHOLIDAY} = "YES"]?vm)
exten => 1234567,n(open),NoOp
...
exten => 1234567,n(vm),VoiceMail(1234567,sub)
...
A little perl-script checks for german holidays. The AGI figures out the holiday days for each year, so no updates are needed except a new day was added or removed. The AGI:
#!/usr/bin/perl
# holiday check for asterisk
# /var/lib/asterisk/agi-bin/isholiday.pl
use strict;
my ($isholiday, $today,$ymd);
END { printf "SET VARIABLE ISHOLIDAY %s\n\n", ($isholiday)?"YES":"NO"; }
while() {
chomp;
last unless length($_);
}
use Date::Holidays::DE qw(holidays);
my $feiertage_ref = holidays(
WHERE => [ 'common', 'ni'], # ni = Niedersachsen
FORMAT => "%F",
YEAR => 1900 + (localtime())[5],
ADD => [ 'heil', 'wei1', 'wei2',
'osts', 'ostm', 'pfis',
'pfim', '3okt', 'silv',
'mari' ]);
my (@ymd) = (localtime)[5,4,3];
$today = sprintf "%04d-%02d-%02d", 1900+$ymd[0], 1+$ymd[1], $ymd[2];
for my $d (@$feiertage_ref) {
if ($d eq $today) {
$isholiday = 1;
last;
}
}
Check for a holiday module for your country at http://search.cpan.org
Comments are closed, but trackbacks and pingbacks are open.