Telephone system:tijdmelding
Note: Since it regards a Dutch clock, the wiki is written in Dutch as well.
Contents
samenvatting
De tijdmelding, 'bekend' onder de nummers 393131, 002, 06-8002, 0900-8002, als Tante Cor (Hoogendam), Willie Brill en Joke Driessen is gegarandeerd gebeld door iedereen ouder dan 30 jaar.
Tegenwoordig zijn DCF77-atoomklokken, GPS-gestuurde klokken, internet-tijd, teletekst-tijd en de GSM die synchroniseert met de mast vaker gebruikte referenties, maar nog steeds wordt 0900-8002(10cpm) regelmatig gebeld (met name tijdens de wisseling van het jaar en de zomer/wintertijd).
Omdat de tijdmelding gebruikt als inspiratie van dit script (sip:tijd@ptt-tele.com) de UTC-tijd uitspreekt, heb ik besloten zelf een versie te schrijven (die de tijdzone honoreert).
Dit script is een bescheiden ode aan de bekende tijdmelding, die inmiddels al 25 jaar dezelfde stem draagt, al 87 jaar bestaat (met 83 jaar gesproken tijdmelding).
implementatie
Om de File:Tijdmelding fragmenten.zip te verzamelen, moet men elke minuut een seconde of 15 aan de lijn blijven. De kosten hiervan zullen tussen de €5,40 en €9,06 bedragen.
dialplan/default/09_talking_clock.xml
<extension name="talking Dutch clock" > <condition field="destination_number" expression="^(((\+|00)?31|0)9008)?002"> <action application="set" data="default_language=nl"/> <action application="answer"/> <action application="sleep" data="1000"/> <action application="playback" data="$${sounds_dir}/nl/nl/joke/ivr/ivr-this_information_number_costs.wav"/> <action application="sleep" data="1000"/> <!-- Since the chime starts after four seconds, play it in advance --> <action application="phrase" data="speak_time"/> <!-- Put caller in endless queue with a time chime every ~14 seconds --> <action application="set" data="fifo_chime_list=phrase:speak_time"/> <action application="set" data="fifo_chime_freq=4"/> <action application="fifo" data="endless_queue in"/> </condition> </extension>
lang/nl/ivr/time.xml
Merk op dat de standaardinstallatie van FreeSWITCH geen Nederlandse taal heeft geïnstalleerd; voor het uitspreken van de nummers is dit geen probleem, aangezien de 60 nummers los van elkaar zijn ingesproken. Er moet in freeswitch.xml
dus wel <X-PRE-PROCESS cmd="include" data="lang/nl/*.xml"/>
toegevoegd worden, en lang/nl/nl.xml
heeft dan de aanpassing naar <language name="nl" say-module="nl" sound-prefix="$${sounds_dir}/nl/nl/joke" tts-engine="cepstral" tts-voice="callie">
om de audio-map 'joke' in te laden (ervan uitgaande dat de stem Joke Driessen is)
Ook kan deze "phrase macro" een tijd uitspreken aan de hand van drie meegegeven cijfers.
<macro name="speak_time"> <input pattern="^(\d+),(\d+),(\d+)$"> <match> <action function="play-file" data="time/beep.wav"/> <action function="sleep" data="3000"/> <action function="play-file" data="ivr/ivr-at_the_tone.wav"/> <action function="play-file" data="digits/$1.wav"/> <action function="play-file" data="time/hour.wav"/> <action function="play-file" data="digits/$2.wav"/> <action function="play-file" data="time/minutes.wav"/> <action function="play-file" data="currency/and.wav"/> <action function="play-file" data="digits/$3.wav"/> <action function="play-file" data="time/seconds.wav"/> </match> <nomatch> <!-- Calculate Dutch time of day in seconds, 14 seconds in advance --> <action function="execute" data="set(futuretime=${expr(${strftime_tz(Europe/Amsterdam 60*(%M+60*%H)+%S)}+14))"/> <!-- Distill hours, minutes and seconds (as integers, wrapping around 0-23h, 0-59m 0-59s) --> <action function="execute" data="set(hours=${expr(mod(ipart(${futuretime}/3600),24))})"/> <action function="execute" data="set(minutes=${expr(mod(ipart(${futuretime}/60),60))})"/> <action function="execute" data="set(seconds=${expr(mod(${futuretime},60))})"/> <action function="play-file" data="time/beep.wav"/> <action function="execute" data="sleep(2000)"/> <action function="play-file" data="ivr/ivr-at_the_tone.wav"/> <action function="play-file" data="digits/${hours}.wav"/> <action function="play-file" data="time/hour.wav"/> <action function="play-file" data="digits/${minutes}.wav"/> <action function="play-file" data="time/minutes.wav"/> <action function="play-file" data="currency/and.wav"/> <action function="play-file" data="digits/${seconds}.wav"/> <action function="play-file" data="time/seconds.wav"/> </nomatch> </input> </macro>
tot slot
Let erop dat de datum, tijd en tijdzone goed staat en dat FreeSWITCH in sync is met deze tijd:
sudo timedatectl set-timezone Europe/Amsterdam
date MMDDhhmmYY
, ofsudo apt-get install chrony
ensystemctl enable --now chronyd
fs_cli -x 'fsctl sync_clock'