- Mitglied seit
- 11. Mai 2023
- Beiträge
- 169
Hallo,
ich habe einmal einen Asterisk Dialplan gebastelt, für die Zeitansage der Deutschen Bundespost:
Die benötigten Dateien sind im Anhang! Den Ordner "sounds" bitte im Verzeichnis /etc/asterisk/ ablegen!
Die 3CX Extension 1003 ist in Asterisk als Trunk angemeldet und nimmt den Anruf in Asterisk entgegen. Daher ist es wichtig, dass in 3CX der Benutzer mit der Extension Nr. 1003 existiert! Sollte die Extension 1003 in 3CX bereits vergeben sein, ist es nötig eine andere Extension Nr. zu verwenden. Bitte beachte dabei, im Asterisk Dialplan die "1003" entsprechend anzupassen.
Solltest Du bis hier hin alles richtig gemacht haben, kann es auch schon losgehen!
EDIT: Aktuell arbeite ich noch daran, dass das Playback Pending in einem Loop abgespielt wird, bis die Zeitansage beginnt. Pending ist die Soundfile, die man zu beginn hört, bevor das erste "Beep" zu hören ist! Die Herausforderung besteht aktuell das Playback zu wiederholen und notfalls zu unterbrechen, wenn eine volle 10er Sekunde erreicht wurde, denn bei einer vollen 10er Sekunde wird ja zur Extension 12345678940 weitergeleitet, diese dann mit dem Beep und "Beim nächsten Ton ist es..." beginnt!
ACHTUNG: Der Dialplan befindet sich derzeit noch in der Testphase und es können unerwartete Fehler auftreten!
Bugs: Wenn die Minute 59 erreicht ist, sollte die Stunde bei der nächsten Ansage um 1 Stunde erhöht werden. Aktuell wird die Stunde aber erst bei der übernächsten Ansage erhöht. Daran arbeite ich noch und werde den neuen Dial Plan online stellen, sobald es funktioniert!
Viel Spaß und viele Grüße!
----------------------------------------------------------------
Beim nächsten Ton ist es...
ich habe einmal einen Asterisk Dialplan gebastelt, für die Zeitansage der Deutschen Bundespost:
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Zeitansage - 3CX Extension ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[1003]
exten => _X.,1,Answer()
same => n,Set(START_TIME=${EPOCH})
same => n,Playback(/etc/asterisk/sounds/zeitansage/pending)
same => n,Set(SECOND=${STRFTIME(${EPOCH},,%S)})
same => n,NoOp(Aktuelle Sekunde: ${SECOND})
same => n,GotoIf($[${SECOND}%10=0]?continue:skipwait)
same => n(skipwait),NoOp(Playback wird vorzeitig beendet)
same => n,Playback(silence/1)
same => n,Set(TIME_TO_WAIT=$[1-${SECOND}%10])
same => n,NoOp(Wartezeit: ${TIME_TO_WAIT})
same => n,Wait(${TIME_TO_WAIT})
same => n(continue),Goto(extern,12345678940,1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Zeitansage ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[extern]
exten => 12345678940,1,Answer()
same => n,Set(SECOND=${STRFTIME(${EPOCH},,%S)})
same => n,Set(SECOND_MOD_10=$[${SECOND} + (10 - ${SECOND} % 10)])
same => n,Set(WAIT_SECONDS=$[${SECOND_MOD_10} - ${SECOND}])
same => n,Wait(${WAIT_SECONDS})
same => n,Set(SECOND_MOD1_10=${IF($[${SECOND} < 10]?10:$[${SECOND} + (10 - ${SECOND} % 10)])})
same => n(playbeep),Playback(/etc/asterisk/sounds/zeitansage/beep)
same => n,Playback(/etc/asterisk/sounds/zeitansage/beim_naechsten_ton_ist_es)
same => n,Playback(/etc/asterisk/sounds/zeitansage/Stunden/${STRFTIME(${EPOCH},,%H)})
same => n,Set(seconds=${STRFTIME(${EPOCH},,%S)})
same => n,Set(minutes=${STRFTIME(${EPOCH},,%M)})
same => n,GotoIf($[${seconds} > 50]?add_minute)
same => n,Set(SECOND_MOD1_10_PLUS_10=$[${SECOND_MOD1_10} + 10])
same => n,Playback(/etc/asterisk/sounds/zeitansage/Minuten/${STRFTIME(${EPOCH},,%M)})
same => n,GotoIf($[${SECOND_MOD1_10_PLUS_10} > 60]?reset:continue)
same => n(add_minute),Set(minutes_plus_one=$[ ${minutes} + 1 ])
same => n,Set(minutes_padded=${STRFTIME(${EPOCH},,%M)})
same => n,GotoIf($[${minutes_plus_one} < 10]?add_leading_zero)
same => n,Playback(/etc/asterisk/sounds/zeitansage/Minuten/${minutes_plus_one})
same => n(add_leading_zero),Playback(/etc/asterisk/sounds/zeitansage/Minuten/0${minutes_plus_one})
same => n,Set(SECOND_MOD1_10_PLUS_10=$[${SECOND_MOD1_10} + 10])
same => n,GotoIf($[${SECOND_MOD1_10_PLUS_10} > 60]?reset:continue)
same => n(reset),Set(SECOND_MOD1_10_PLUS_10=10)
same => n,Playback(/etc/asterisk/sounds/zeitansage/Sekunden/${SECOND_MOD1_10_PLUS_10})
same => n,Goto(extern,12345678940,1)
same => n(continue),Playback(/etc/asterisk/sounds/zeitansage/Sekunden/${SECOND_MOD1_10_PLUS_10})
same => n(restart),Goto(extern,12345678940,1)
Die benötigten Dateien sind im Anhang! Den Ordner "sounds" bitte im Verzeichnis /etc/asterisk/ ablegen!
Die 3CX Extension 1003 ist in Asterisk als Trunk angemeldet und nimmt den Anruf in Asterisk entgegen. Daher ist es wichtig, dass in 3CX der Benutzer mit der Extension Nr. 1003 existiert! Sollte die Extension 1003 in 3CX bereits vergeben sein, ist es nötig eine andere Extension Nr. zu verwenden. Bitte beachte dabei, im Asterisk Dialplan die "1003" entsprechend anzupassen.
Solltest Du bis hier hin alles richtig gemacht haben, kann es auch schon losgehen!
EDIT: Aktuell arbeite ich noch daran, dass das Playback Pending in einem Loop abgespielt wird, bis die Zeitansage beginnt. Pending ist die Soundfile, die man zu beginn hört, bevor das erste "Beep" zu hören ist! Die Herausforderung besteht aktuell das Playback zu wiederholen und notfalls zu unterbrechen, wenn eine volle 10er Sekunde erreicht wurde, denn bei einer vollen 10er Sekunde wird ja zur Extension 12345678940 weitergeleitet, diese dann mit dem Beep und "Beim nächsten Ton ist es..." beginnt!
ACHTUNG: Der Dialplan befindet sich derzeit noch in der Testphase und es können unerwartete Fehler auftreten!
Bugs: Wenn die Minute 59 erreicht ist, sollte die Stunde bei der nächsten Ansage um 1 Stunde erhöht werden. Aktuell wird die Stunde aber erst bei der übernächsten Ansage erhöht. Daran arbeite ich noch und werde den neuen Dial Plan online stellen, sobald es funktioniert!
Viel Spaß und viele Grüße!
----------------------------------------------------------------
Beim nächsten Ton ist es...
Anhänge
Zuletzt bearbeitet: