Openclose.agi: Difference between revisions

From KlavoWiki
Jump to navigationJump to search
No edit summary
Line 29: Line 29:
|}
|}


= openclose script =
'''/var/lib/asterisk/agi-bin/openclose.agi'''
<pre>
#!/bin/sh
#!/bin/sh
#
#
# Done by Alex Lopez (alex.lopez (at) O p s y s (dot) com)
# 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.
# You may need to change the if/than logic depending on OS and Shell implementation.
#
#
# Modified by David Klaverstyn to have addational events: special, christmas, stock
# Modified by David Klaverstyn to have addational events: special, christmas, stock
Line 41: Line 39:
# Contact me for information on the how to obtain the WEB pages.
# Contact me for information on the how to obtain the WEB pages.
#
#
# http://www.klaverstyn.com.au/david/wiki/index.php?title=Openclose.agi
TODAY=`date +%d%m%y`
TODAY=`date +%d%m%y`


Line 50: Line 50:
OPEN=0900
OPEN=0900
CLOSE=1700
CLOSE=1700


STATUS=open
STATUS=open
Line 56: Line 55:
case "$TODAY" in
case "$TODAY" in
   260109 ) STATUS=holiday;; # Australia Day
   260109 ) STATUS=holiday;; # Australia Day
  100409 ) STATUS=holiday;; # Good Friday
                  100409 ) STATUS=holiday;; # Good Friday
  130409 ) STATUS=holiday;; # Easter Monday
                  130409 ) STATUS=holiday;; # Easter Monday
  250409 ) STATUS=holiday;; # Anzac Day
                  250409 ) STATUS=holiday;; # Anzac Day
  040509 ) STATUS=holiday;; # Labour Day
                  040509 ) STATUS=holiday;; # Labour Day
  080609 ) STATUS=holiday;; # Queens Birthday
                  080609 ) STATUS=holiday;; # Queens Birthday
  120809 ) STATUS=holiday;; # Show Day
                  120809 ) STATUS=holiday;; # Show Day
  251209 ) STATUS=holiday;; # Christmas Day
                  251209 ) STATUS=holiday;; # Christmas Day
  010110 ) STATUS=holiday;; # New Years Day
                  010110 ) STATUS=holiday;; # New Years Day
  241011 ) STATUS=special;; # Office Closed due to an Emergency
                  241011 ) STATUS=special;; # Office Closed due to an Emergency
  041111 ) STATUS=stock;;  # Closed for Stock Take
                  041111 ) STATUS=stock;;  # Closed for Stock Take
esac
esac


if  test "$DAY" == "Sat" -o \
if  test "$DAY" == "Sat" -o \
         "$DAY" == "Sun"
         "$DAY" == "Sun"
then
then
    STATUS=closed
    STATUS=closed
fi
fi




# Place open days here that ignore Saturday or Sunday
# Place open days here that ignore Saturday or Sunday
case "$TODAY" in
case "$TODAY" in
  221011 ) STATUS=testme;;  # Just Testing
                221011 ) STATUS=testme;;  # Just Testing
  231011 ) STATUS=special;; # Open Sunday
                231011 ) STATUS=special;; # Open Sunday
esac
esac


Line 85: Line 84:
         "$TIMENOW" -gt "$CLOSE"
         "$TIMENOW" -gt "$CLOSE"
then
then
  STATUS=closed
  STATUS=closed
fi
fi


#
#
echo "SET VARIABLE status $STATUS"
echo "SET VARIABLE status $STATUS"
echo "SET VARIABLE open $OPEN"
echo "SET VARIABLE open $OPEN"

Revision as of 22:03, 25 October 2011

The AGI script will check on the status of the day as a call enters the system for reception. The caller is then passed to announcements or scripts based on the dialplan of asterisk and the results of the script.

================= ========================================
Status Description
================= ========================================
open Office is Open
closed Office is Closed
holiday Public Holiday Announcement
special Specialised Announcement
stock Office is Closed due to Stock Take
christmas The office is closed over the Christmas break
  1. !/bin/sh
  2. Done by Alex Lopez (alex.lopez (at) O p s y s (dot) com)
  3. You may need to change the if/than logic depending on OS and Shell implementation.
  1. Modified by David Klaverstyn to have addational events: special, christmas, stock
  2. A WEB page is avaiable so users can add/edit/delete entries.
  3. Contact me for information on the how to obtain the WEB pages.
  4. http://www.klaverstyn.com.au/david/wiki/index.php?title=Openclose.agi

TODAY=`date +%d%m%y`

DAY=`date +%a` HOUR=`date +%H` MINUTE=`date +%M` TIMENOW=$HOUR$MINUTE

OPEN=0900 CLOSE=1700

STATUS=open

case "$TODAY" in

 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
                 241011 ) STATUS=special;; # Office Closed due to an Emergency
                 041111 ) STATUS=stock;;   # Closed for Stock Take

esac

if test "$DAY" == "Sat" -o \

        "$DAY" == "Sun"

then

   STATUS=closed

fi


  1. Place open days here that ignore Saturday or Sunday

case "$TODAY" in

                221011 ) STATUS=testme;;  # Just Testing
                231011 ) STATUS=special;; # Open Sunday

esac

if test "$TIMENOW" -lt "$OPEN" -o \

        "$TIMENOW" -gt "$CLOSE"

then

  STATUS=closed

fi

echo "SET VARIABLE status $STATUS" echo "SET VARIABLE open $OPEN" echo "SET VARIABLE close $CLOSE"

Dialplan Configuration

[reception]
exten => s,n,AGI(openclose.agi)
exten => s,n,Goto(${result},1)

exten => open,1,Dial(${RECEPTION},20,t)
exten => open,n,Background(busy)
exten => open,n,Background(reception-busy)
exten => open,n,Background(directory-or-message)
exten => open,n,Waitexten

exten => holiday,1,PlayBack(thankyou)
exten => holiday,n,PlayBack(public-holiday)
exten => holiday,n,Goto(t,1)

exten => closed,1,PlayBack(thankyou)
exten => closed,n,PlayBack(office-closed)
exten => closed,n,Goto(t,1)

exten => 1,1,Directory(default,internal)

exten => i,1,Playback(invalid)
exten => i,n,Goto(open,4)

exten => t,1,Voicemail(1201@default,u)
exten => t,n,HangUp

Original openclose

#!/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
  251206 ) STATUS=holiday;; # Christmas Day
  261206 ) STATUS=holiday;; # Boxing Day
  010107 ) STATUS=holiday;; # New Years
  260107 ) STATUS=holiday;; # Australia Day
  060407 ) STATUS=holiday;; # Good Friday
  090407 ) STATUS=holiday;; # Easter Monday
  250407 ) STATUS=holiday;; # Anzac Day
  110607 ) STATUS=holiday;; # Queens Birthday
  060807 ) STATUS=holiday;; # Bank Holiday
  011007 ) STATUS=holiday;; # Labour Day
  251207 ) STATUS=holiday;; # Christmas Day
  261207 ) STATUS=holiday;; # Boxing day
  010108 ) STATUS=holiday;; # New Years Day
  260108 ) STATUS=holiday;; # Australia Day
  210308 ) STATUS=holiday;; # Good Friday
  240308 ) STATUS=holiday;; # Easter Monday
  250408 ) STATUS=holiday;; # Anzac Day
  090608 ) STATUS=holiday;; # Queens Birthday
  061008 ) STATUS=holiday;; # Labour Day
  251208 ) STATUS=holiday;; # Christmas Day
  261208 ) STATUS=holiday;; # Boxing Day
esac
#
if  test "$STATUS" != "holiday" -a \
    "$DAY" != "Sat" -a \
    "$DAY" != "Sun" -a \
    "$TIMENOW" -gt "0900" -a \
    "$TIMENOW" -lt "1730"
then
  STATUS=open
fi
#
#
echo "SET VARIABLE status $STATUS"