- Mitglied seit
- 25 Jan 2005
- Beiträge
- 75
- Punkte für Reaktionen
- 0
- Punkte
- 0
Hallo zusammen,
ich wollte auf der Fritzbox eine per Telefon programmierbare Weckruf-Funktion basteln, und zwar nach dieser Anleitung von Stefan Wintermeyer:
http://www.das-asterisk-buch.de/1.0/call-file-weckruf.html
Offensichtlich beherrscht das "touch-Programm" der busybox den Parameter "-t" nicht, so dass man den Zeitstempel der Datei nicht ändern kann und die Anleitung so nicht umgesetzt werden kann.
Im folgenden meine Lösung zu diesem Thema, die auf dem Konzept von Stefan Wintermeyer aufbaut.
Anregungen bzw. Verbesserungen sind gerne willkommen.
extensions.conf
Zur Erklärung:
Es wird zunächst mal das Protokoll gecheckt: Nebenstellen beginnend mit "8" sind IAX2, alles andere ist SIP.
Dann werden die per Telefon eingegeben Zahlen den Variablen zugewiesen.
Man hat die Möglichkeit, einen persönlichen Ansagetext aufzunehmen, der dann bei dem Weck- Erinnerungsruf abgespielt wird. Ansonsten wird ein Standard Sprachbaustein genommen.
Damit das ganze funktioniert, läuft bei mir permanent ein weiteres Skript, welches alle 40 Sekunden die vorhandenen callfiles in das richtige Verzeichnis verschiebt.
Wer seine Box gefreetz hat, kann das komfortabel per cronjob machen.
Ich behelfe mich da mit einer zusätzlichen Zeile in der /var/flash/debug.conf und einer Endlos-Schleife innerhalb des Skriptes.
Hier das Skript:
Ich habe das noch so verfeinert, dass fehlgeschlagene Anrufe (z.Bsp. weil die NST nicht angemeldet ist) per Mail verschickt werden (kann ich bei Interesse auch noch posten).
HINWEIS:
Alle Sprachbausteine müssen natürlich angelegt und im Verzeichnis "/var/lib/asterisk/sounds" abgelegt werden!
So, nun warte ich auf Reaktionen.
Viele Grüße
lipperreiher
ich wollte auf der Fritzbox eine per Telefon programmierbare Weckruf-Funktion basteln, und zwar nach dieser Anleitung von Stefan Wintermeyer:
http://www.das-asterisk-buch.de/1.0/call-file-weckruf.html
Offensichtlich beherrscht das "touch-Programm" der busybox den Parameter "-t" nicht, so dass man den Zeitstempel der Datei nicht ändern kann und die Anleitung so nicht umgesetzt werden kann.
Im folgenden meine Lösung zu diesem Thema, die auf dem Konzept von Stefan Wintermeyer aufbaut.
Anregungen bzw. Verbesserungen sind gerne willkommen.
extensions.conf
Code:
[weckruf-erstellen]
exten => _4000XXXXXXXXXXXX,1,Answer()
exten => _4000XXXXXXXXXXXX,n,Set(Protokoll=${IF($[ ${CALLERID(num):0:1} = 8]?IAX2:SIP)})
exten => _4000XXXXXXXXXXXX,n,Set(Jahr=${EXTEN:4:4})
exten => _4000XXXXXXXXXXXX,n,Set(Monat=${EXTEN:8:2})
exten => _4000XXXXXXXXXXXX,n,Set(Tag=${EXTEN:10:2})
exten => _4000XXXXXXXXXXXX,n,Set(Stunden=${EXTEN:12:2})
exten => _4000XXXXXXXXXXXX,n,Set(Minuten=${EXTEN:14:2})
exten => _4000XXXXXXXXXXXX,n,Set(Filename=${Jahr}${Monat}${Tag}${Stunden}${Minuten}-${CALLERID(num)}.call)
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "Channel: ${Protokoll}/${CALLERID(num)}" > /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "Context: Weckruf" >> /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "Extension: 777" >> /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "Archive: yes" >> /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "CallerID: ${CALLERID(num)}" >> /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,Playback(weckruf-aktiviert)
exten => _4000XXXXXXXXXXXX,n,SayNumber(${Stunden})
exten => _4000XXXXXXXXXXXX,n,Playback(digits/oclock)
exten => _4000XXXXXXXXXXXX,n,SayNumber(${Minuten})
exten => _4000XXXXXXXXXXXX,n,Playback(option-erinnerungstext)
exten => _4000XXXXXXXXXXXX,n,Wait,2
exten => _4000XXXXXXXXXXXX,n,system,chroot /oldroot echo "Set: RECORDFILE=${UNIQUEID}-${CALLERID(num)}" >> /var/tmp/${Filename}
exten => _4000XXXXXXXXXXXX,n,record,/var/lib/asterisk/sounds/${UNIQUEID}-${CALLERID(num)}.gsm|3|60
exten => _4000XXXXXXXXXXXX,n,Hangup()
[weckruf-loeschen]
exten => 4001,1,Answer()
exten => 4001,n,Wait,1
exten => 4001,n,Background(weckauftrag-loeschen-hinweis)
exten => 5,1,Playback(weckauftrag-loeschen-aktiviert)
exten => 5,n,system,chroot /oldroot /bin/rm -f /var/tmp/2*-${CALLERID(num)}.call
exten => 5,n,system,chroot /oldroot /bin/rm -f /var/lib/asterisk/sounds/*-${CALLERID(num)}.gsm
exten => 5,n,Hangup()
[Weckruf]
exten => 777,1,Answer()
exten => 777,n,Wait(1)
exten => 777,n,Wait(1)
exten => 777,n,GotoIf($[${EXISTS(${RECORDFILE})}]?playanddelete:notdelete)
exten => 777,n(notdelete),NoOp("Die Variable RECORDFILE ist nicht gefuellt, wir spielen den Standardsound ...")
exten => 777,n,Playback(weckruf)
exten => 777,n,Hangup()
exten => 777,n(playanddelete),Playback(${RECORDFILE})
exten => 777,n,system,chroot /oldroot /bin/rm -f /var/lib/asterisk/sounds/${RECORDFILE}.gsm
exten => 777,n,Hangup()
Zur Erklärung:
Es wird zunächst mal das Protokoll gecheckt: Nebenstellen beginnend mit "8" sind IAX2, alles andere ist SIP.
Dann werden die per Telefon eingegeben Zahlen den Variablen zugewiesen.
Man hat die Möglichkeit, einen persönlichen Ansagetext aufzunehmen, der dann bei dem Weck- Erinnerungsruf abgespielt wird. Ansonsten wird ein Standard Sprachbaustein genommen.
Damit das ganze funktioniert, läuft bei mir permanent ein weiteres Skript, welches alle 40 Sekunden die vorhandenen callfiles in das richtige Verzeichnis verschiebt.
Wer seine Box gefreetz hat, kann das komfortabel per cronjob machen.
Ich behelfe mich da mit einer zusätzlichen Zeile in der /var/flash/debug.conf und einer Endlos-Schleife innerhalb des Skriptes.
Hier das Skript:
Code:
#!/bin/sh
###
### Zeit, nach der die Schleife erneut durchlaufen wird
###
SLEEPTIME=40
###
### Pfad, in der die Dateien zu finden sind
###
SOURCE="/var/tmp"
###
### Pfad, wo die Dateien landen sollen
###
TARGET="/var/spool/asterisk/outgoing"
while true
do
###
### aktuelles Datum ermitteln
###
DATUM=`date +'%Y%m%d%H%M'`
###
### alle in Frage kommenden Dateien ermitteln
###
FILELIST=`/bin/ls ${SOURCE}/${DATUM}*.call`
###
### Dateien verschieben
###
for file in $FILELIST
do
/bin/mv $file $TARGET/
done
sleep $SLEEPTIME
done
Ich habe das noch so verfeinert, dass fehlgeschlagene Anrufe (z.Bsp. weil die NST nicht angemeldet ist) per Mail verschickt werden (kann ich bei Interesse auch noch posten).
HINWEIS:
Alle Sprachbausteine müssen natürlich angelegt und im Verzeichnis "/var/lib/asterisk/sounds" abgelegt werden!
So, nun warte ich auf Reaktionen.
Viele Grüße
lipperreiher
Zuletzt bearbeitet: