.titleBar { margin-bottom: 5px!important; }

CallBack-Script 0.1

Dieses Thema im Forum "Freetz" wurde erstellt von Spooks, 18 Jan. 2007.

  1. Spooks

    Spooks Neuer User

    Registriert seit:
    6 Juni 2005
    Beiträge:
    59
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich habe mal ein wenig rumprobiert um mit dem Callmanager aus dem ds-mod ein Callback abhänging von der Zeit durchzuführen.

    Ich habe Callback mit einer ABox realisiert, das ganze sollte aber auch mit anderen Lösungen (Loopbackkabel) nutzbar sein.

    Meine grundsätzlichen Überlegungen hatte ich hier begonnen:

    http://www.ip-phone-forum.de/showpost.php?p=768496&postcount=380

    Meine erste Code - Idee hat sich dann folgendermaßen dargestellt. Ich muss dazu sagen, dass ich noch nie irgendwelche Bash-Scripte geschrieben habe, wahrscheinlich gibt es "elegantere" Lösungen.


    Code:
    #!/bin/bash
    # Skript:       callback.sh
    # Zweck:        Steuerung der Callback-Eigenschaften abhängig vom Wochentag und der Zeit
    # Lizenz: GPL
    
    
    # Globale Variablen
    SCRIPTNAME=$(basename $0 .sh)
    
    EXIT_SUCCESS=0
    EXIT_FAILURE=1
    EXIT_ERROR=2
    
    # Variablen definieren
    
    PHONE_HOME="024XXXXXX"
    PHONE_OFFICE="024XXXXXX"
    INTERN_PHONE="1" # Interne Nebenstelle
    
    #Holt sich den Wochentag und die Stunde aus dem date Befehl
    WEEKDAY=$(date +%a)
    HOUR=$(date +%k)
    
    
    # Funktionen
    # Funktion usage()
    # Wie wird die Funktion benutzt
    
    usage () {
            echo "Usage: $SCRIPTNAME [ -h | --help ] [ dialstring ]"
    }
    
    # Funktion destination()
    # Rueckgabe 1 wenn Anruf innerhalb der Buerozeiten
    #                   0 wenn Anruf ausserhalb der Buerozeiten
    
    
    destination () {
    
    
        case $WEEKDAY in
            Mon|Tue|Wed|Thu)
                        # Buerozeiten Montag - Donnerstag
                        if [ $HOUR -ge 7 ] && [ $HOUR -le 16 ] ; then
                            return 1
                        else
                            return 0
                        fi
                        ;;
            Fri)
                       # Buerozeit Freitag
                        if [ $HOUR -ge 7 ] && [ $HOUR -le 12 ] ; then
                            return 1
                        else
                            return 0
                        fi
                        ;;
            Sat|Sun)
                        # Samstags und Sonntags wird nicht gearbeitet ;-)
                        return 0
                        ;;
        esac
    
    }
    
    #
    # Hier beginnt das eigentliche Script
    #
    # Ist die Hilfe angefordert?
    
        if  [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
            usage && exit $EXIT_FAILURE
        fi
    
    # Waehlstring wurde uebergeben, also waehlen wir den....
    
        if [ "$1" ]; then
            echo "dial $1 $INTERN_PHONE"
            callaction dial $1 $INTERN_PHONE
            exit $EXIT_SUCCESS
        fi
    
    
    # Kein Waehlstring, also hinterlegte Nummern nutzen.
    
    destination
    
    # Rueckgabewert der Funktion destination() wird ausgewertet
    
    case $? in
        0)  callaction dial $PHONE_HOME $INTERN_PHONE
             exit $EXIT_SUCCESS
             ;;
        1)  callaction dial $PHONE_OFFICE $INTERN_PHONE
            exit $EXIT_SUCCESS
            ;;
    esac
    
    
    # Wenn das Script bis hier her kommt ist was schief gelaufen
    
    exit $EXIT_FAILURE
    
    

    Vielleicht hat ja jemand von euch Lust und Zeit hier noch ein wenig dran rum zu feilen oder eigene Ideen einzubringen.

    ToDo Liste:

    - Wählstring muss numerisch oder eine SIP Adresse sein (Überprüfung einbauen)
    - SIP Adressen können angewählt werden (Geht das mit dem Callmonitor überhaupt)
    - Bei Arbeitszeiten die nicht auf die volle Stunde enden sollten auch die Minuten ausgewertet werden.
    - Addon evtl. mit Konfiguration via Web Interface