Openclose.agi
From KlavoWiki
The AGI script will information the caller if the office is:
- open
- closed
- public holiday
If the office is open the the recption phone will ring.
If the office is closed it will information the caller office is open between what hours and go to message bank.
If it is a public holiday user will be information office is closed because of a public holiday and go to message bank.
/var/lib/asterisk/agi-bin/openclose.agi
#!/bin/sh # # Done by Alex Lopez (alex.lopez (at) O p s y s (dot) com) # You may need to change the if/than logic depending on OS and Shell implementation. # TODAY=`date +%d%m%y` # DAY=`date +%a` HOUR=`date +%H` MINUTE=`date +%M` TIMENOW=$HOUR$MINUTE # STATUS=closed # case "$TODAY" in 250408 ) STATUS=holiday;; # Anzac Day 050508 ) STATUS=holiday;; # Labour Day 090608 ) STATUS=holiday;; # Queens Birthday 130808 ) STATUS=holiday;; # Show Day 251208 ) STATUS=holiday;; # Christmas Day 261208 ) STATUS=holiday;; # Boxing Day 010109 ) STATUS=holiday;; # New Years Day 260109 ) STATUS=holiday;; # Australia Day 100409 ) STATUS=holiday;; # Good Friday 130409 ) STATUS=holiday;; # Easter Monday 250409 ) STATUS=holiday;; # Anzac Day 040509 ) STATUS=holiday;; # Labour Day 080609 ) STATUS=holiday;; # Queens Birthday 120809 ) STATUS=holiday;; # Show Day 251209 ) STATUS=holiday;; # Christmas Day 010110 ) STATUS=holiday;; # New Years Day esac # if test "$STATUS" != "holiday" -a \ "$DAY" != "Sat" -a \ "$DAY" != "Sun" -a \ "$TIMENOW" -gt "0900" -a \ "$TIMENOW" -lt "1700" then STATUS=open fi # # echo "SET VARIABLE status $STATUS"
[reception] exten => s,1,Set(TIMEOUT(digit)=2) exten => s,n,Set(TIMEOUT(response)=3) exten => s,n,AGI(openclose.agi) ; check whether the office is open/closed/holiday by running external script exten => s,n,GotoIf($[${STATUS} = open]?open:checkholiday) exten => s,n(checkholiday),Ringing ; run if not open exten => s,n,Wait(2) exten => s,n,Answer exten => s,n,Wait(1) exten => s,n,Background(thankyou) ; Welcome Message exten => s,n,GotoIf($[${STATUS} = holiday]?holiday:closed) ; check if office is closed/holiday exten => s,n,Hangup exten => s,n(holiday),Background(public-holiday) ; run if office is on holiday exten => s,n,Goto(end) exten => s,n(closed),Background(office-closed) ; run if office is closed exten => s,n,Goto(end) exten => s,n(open),Dial(${RECEPTION},20,t) ; run if office is open, ring reception and kitchen only. exten => s,n(CheckMessage),Background(busy) exten => s,n,Background(intergraph/reception-busy) exten => s,n(end),Background(directory-or-message) ; ask user if they want to query directory exten => s,n,Waitexten exten => 1,1,Directory(default|internal) ; voicemail.conf context | context to pass numbers to (4 digit ext numbers) exten => i,1,Playback(invalid) exten => i,n,Goto(s,end) exten => t,1,Voicemail(u1201@default) exten => t,n,HangUp