Office phones have to be online at office hours, otherwise a voicemail should be enabled. They should also be aware of holidays. A little perl-script checks for german holidays:
The dialplan
; extensions.conf
exten => 1234567,n,GotoIfTime(09:00-18:00,mon-fri,*,*?hcheck:vm)
exten => 1234567,n,GotoIfTime(09:00-14: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)
...
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(<STDIN>) {
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 "%s-%s-%s", 1900+$ymd[0], 1+$ymd[1], $ymd[2];
for my $d (@$feiertage_ref) {
if ($d eq $today) {
$isholiday = 1;
last;
}
}




![Balancing On The Edge [Strawberry Cream Splash]](http://farm7.staticflickr.com/6149/5977303079_ea75d9abbc_s.jpg)

