• Eigenständig gehostete oder lokal installierte Instanzen sind komplexer in der Einrichtung und Fehlerbehebung und erfordern daher kostenpflichtigen technischen Support. Kostenlosen Support erhalten Sie mit 3CX StartUP oder einer gehosteten 3CX-Installation mit einen unterstützten SIP-Trunk-Anbieter.

Zeitansage der Deutschen Bundespost / Deutschen Telekom

CISCOX

Basic Certified
Mitglied seit
11. Mai 2023
Beiträge
169
Hallo,

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

  • sounds.zip
    1,9 MB · Aufrufe: 1
Zuletzt bearbeitet:
Update 1:

- Stundenansage korrigiert und weitere Dialplan-Korrekturen
- Das einpendeln der Zeit erfolgt nun "schneller"
- Audiodatei wurde angepasst
(neue Soundfiles in sounds.zip zu entnehmen und das Verzeichnis vollständig ersetzen!)


/etc/asterisk/extensions.conf:

Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Zeitansage - 3CX Extension ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[1003]
exten => _X.,1,Answer()
same => n,Set(SECOND=${STRFTIME(${EPOCH},,%S)})
same => n,GotoIf($[${SECOND}%10>7]?transfer:check)
same => n(check),GotoIf($[${SECOND}%10=1]?playback:next)
same => n(next),GotoIf($[${SECOND}%10=5]?playback:wait)
same => n(wait),Wait(1)
same => n,Goto(_X.,1)
same => n(playback),Playback(/etc/asterisk/sounds/zeitansage/pending)
same => n,Goto(_X.,1)
same => n(transfer),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(hour=${STRFTIME(${new_epoch},,%H)})
same => n,Set(new_epoch=$[${EPOCH} + 20])
same => n,Set(SECOND_MOD1_10=${IF($[${SECOND} < 10]?10:$[${SECOND} + (10 - ${SECOND} % 10)])})
same => n,Set(new_time=${STRFTIME(${new_epoch},,%H:%M:%S)})
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/${hour})
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,Playback(/etc/asterisk/sounds/zeitansage/Minuten/${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)
 

Anhänge

  • sounds.zip
    2 MB · Aufrufe: 1
Zuletzt bearbeitet:

Statistik des Forums

Themen
21.249
Beiträge
106.852
Mitglieder
70.398
Neuestes Mitglied
SankopieNaumurg
Holen Sie sich 3CX - völlig kostenlos!

Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX register cta
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.