Openclose.agi: Difference between revisions

From KlavoWiki
Jump to navigationJump to search
(New page: 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.<br> If the office is closed it will info...)
 
No edit summary
Line 21: Line 21:
MINUTE=`date +%M`
MINUTE=`date +%M`
TIMENOW=$HOUR$MINUTE
TIMENOW=$HOUR$MINUTE
#
OPEN=0900
CLOSE=1700
#
#
#
STATUS=closed
STATUS=closed
Line 46: Line 50:
     "$DAY" != "Sat" -a \
     "$DAY" != "Sat" -a \
     "$DAY" != "Sun" -a \
     "$DAY" != "Sun" -a \
     "$TIMENOW" -gt "0900" -a \
     "$TIMENOW" -gt "$OPEN" -a \
     "$TIMENOW" -lt "1700"
     "$TIMENOW" -lt "$CLOSE"
then
then
   STATUS=open
   STATUS=open
Line 53: Line 57:
#
#
#
#
echo "SET VARIABLE status $STATUS"  
echo "SET VARIABLE status $STATUS"
echo "SET VARIABLE open $OPEN"
echo "SET VARIABLE close $CLOSE"
</pre>
</pre>



Revision as of 11:38, 24 October 2011

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
#
OPEN=0900
CLOSE=1700
#
#
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 "$OPEN" -a \
    "$TIMENOW" -lt "$CLOSE"
then
  STATUS=open
fi
#
#
echo "SET VARIABLE status $STATUS"
echo "SET VARIABLE open $OPEN"
echo "SET VARIABLE close $CLOSE"
[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