Asterisk: Automatisierter Weckruf
In Asterisk gibt es viele Möglichkeiten, eigene Funktionen zu bauen. Man kennt Weckrufe aus Hotels, wo der Empfang das Zimmer anruft. Wenn für dies das Personal aber nicht reicht, so kann man mittels Asterisk sich eine Funktion bauen, die dies für einen übernimmt.
In der extentions.conf
wird nun der Weckruf angelegt. Dafür brauchen wir zwei Funktionsnummern.
;*77*JahrMonatTagStundeMinute => *77* 2023 12 01 11 04
exten => _*77*XXXXXXXXXXXX,1,Answer()
exten => _*77*XXXXXXXXXXXX,n,Set(Jahr=${EXTEN:4:4})
exten => _*77*XXXXXXXXXXXX,n,Set(Monat=${EXTEN:8:2})
exten => _*77*XXXXXXXXXXXX,n,Set(Tag=${EXTEN:10:2})
exten => _*77*XXXXXXXXXXXX,n,Set(Stunden=${EXTEN:12:2})
exten => _*77*XXXXXXXXXXXX,n,Set(Minuten=${EXTEN:14:2})
exten => _*77*XXXXXXXXXXXX,n,NoOp(Weckruf soll fuer die Rufnummer ${CALLERID(num)} soll um ${Stunden}:${Minuten} Uhr am ${Tag}.${Monat}.${Jahr} erfolgen.)
exten => _*77*XXXXXXXXXXXX,n,System(echo "Channel: SIP/${CALLERID(num)}\\nContext: Weckruf\\nExtension: 23\\nRetryTime: 10" > /tmp/${UNIQUEID}.call)
exten => _*77*XXXXXXXXXXXX,n,System(touch -t ${Jahr}${Monat}${Tag}${Stunden}${Minuten} /tmp/${UNIQUEID}.call)
exten => _*77*XXXXXXXXXXXX,n,System(mv /tmp/${UNIQUEID}.call /var/spool/asterisk/outgoing/)
exten => _*77*XXXXXXXXXXXX,n,SayNumber(${Stunden})
exten => _*77*XXXXXXXXXXXX,n,SayNumber(${Minuten})
exten => _*77*XXXXXXXXXXXX,n,Playback(digits/oclock)
exten => _*77*XXXXXXXXXXXX,n,Hangup()
[Weckruf]
exten => 23,1,Answer()
exten => 23,n,Wait(1)
exten => 23,n,Playback(ANSAGE) ;Ansage einfügen
exten => 23,n,Wait(1)
exten => 23,n,Hangup()
Diese Funktion ist wie folgt aufgebaut. Ruft man die *77*
mit dem nummern Zusatz: Jahr (2024)
Monat (12)
Tag (01)
Stunde (11)
Minute (04)
so werden daraus Variablen erstellt.
Dieses Beispiel besagt, dass am 01.12.2024 um 11:04 Uhr der Weckruf starten soll.
*77*202412011104
Dann wird von Asterisk eine Call Datei erstellt. Diese wird erst zu dem Zeitpunkt gestartet und wenn das Datum erreicht wird. In dieser Datei steht welcher Context und welche Extention aus dem Context angerufen werden soll. In diesem Fall den Context Weckruf
und die Extention 23
.
In dem Context Weckruf
und der Extention 23 wird eine zuvor angelegte Ansage abgespielt.