Difference between revisions of "Telephone system:tijdmelding"
(tijdmelding script toegevoegd) |
(Wrong timezone, ironically the whole reason I've created my own version. Added quick fix) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Note: Since it regards a Dutch clock, | + | Note: Since it regards a Dutch clock, the wiki is written in Dutch as well. |
=== samenvatting === | === samenvatting === | ||
Line 9: | Line 9: | ||
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). | 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). | + | <onlyinclude>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). |
− | + | </onlyinclude> | |
== implementatie == | == implementatie == | ||
Om de [[File:tijdmelding_fragmenten.zip|fragmenten]] 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. | Om de [[File:tijdmelding_fragmenten.zip|fragmenten]] 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. | ||
Line 20: | Line 20: | ||
<condition field="destination_number" expression="^(((\+|00)?31|0)9008)?002"> | <condition field="destination_number" expression="^(((\+|00)?31|0)9008)?002"> | ||
− | |||
<action application="set" data="default_language=nl"/> | <action application="set" data="default_language=nl"/> | ||
Line 26: | Line 25: | ||
<action application="sleep" data="1000"/> | <action application="sleep" data="1000"/> | ||
− | <action application="playback" data="ivr/ | + | <action application="playback" data="$${sounds_dir}/nl/nl/joke/ivr/ivr-this_information_number_costs.wav"/> |
<action application="sleep" data="1000"/> | <action application="sleep" data="1000"/> | ||
Line 44: | Line 43: | ||
=== lang/nl/ivr/time.xml === | === 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 <code>freeswitch.xml</code> dus wel <code><X-PRE-PROCESS cmd="include" data="lang/nl/*.xml"/></code> toegevoegd worden, en <code>lang/nl/nl | + | 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 <code>freeswitch.xml</code> dus wel <code><X-PRE-PROCESS cmd="include" data="lang/nl/*.xml"/></code> toegevoegd worden, en <code>lang/nl/nl.xml</code> heeft dan de aanpassing naar <code><language name="nl" say-module="nl" sound-prefix="$${sounds_dir}/nl/nl/joke" tts-engine="cepstral" tts-voice="callie"></code> 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. | Ook kan deze "phrase macro" een tijd uitspreken aan de hand van drie meegegeven cijfers. | ||
− | |||
− | |||
<pre> | <pre> | ||
Line 57: | Line 54: | ||
<action function="sleep" data="3000"/> | <action function="sleep" data="3000"/> | ||
− | <action function="play-file" data="ivr/ | + | <action function="play-file" data="ivr/ivr-at_the_tone.wav"/> |
<action function="play-file" data="digits/$1.wav"/> | <action function="play-file" data="digits/$1.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/hour.wav"/> |
<action function="play-file" data="digits/$2.wav"/> | <action function="play-file" data="digits/$2.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/minutes.wav"/> |
− | <action function="play-file" data=" | + | <action function="play-file" data="currency/and.wav"/> |
<action function="play-file" data="digits/$3.wav"/> | <action function="play-file" data="digits/$3.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/seconds.wav"/> |
− | |||
</match> | </match> | ||
<nomatch> | <nomatch> | ||
Line 78: | Line 74: | ||
<action function="play-file" data="time/beep.wav"/> | <action function="play-file" data="time/beep.wav"/> | ||
<action function="execute" data="sleep(2000)"/> | <action function="execute" data="sleep(2000)"/> | ||
− | <action function="play-file" data="ivr/ | + | <action function="play-file" data="ivr/ivr-at_the_tone.wav"/> |
<action function="play-file" data="digits/${hours}.wav"/> | <action function="play-file" data="digits/${hours}.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/hour.wav"/> |
<action function="play-file" data="digits/${minutes}.wav"/> | <action function="play-file" data="digits/${minutes}.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/minutes.wav"/> |
− | <action function="play-file" data=" | + | <action function="play-file" data="currency/and.wav"/> |
<action function="play-file" data="digits/${seconds}.wav"/> | <action function="play-file" data="digits/${seconds}.wav"/> | ||
− | <action function="play-file" data="time/ | + | <action function="play-file" data="time/seconds.wav"/> |
− | |||
</nomatch> | </nomatch> | ||
</input> | </input> | ||
− | </macro></pre> | + | </macro> |
− | + | </pre> | |
− | [[Category:Telephony]] | + | === tot slot === |
+ | Let erop dat de datum, tijd en tijdzone goed staat en dat FreeSWITCH in sync is met deze tijd: | ||
+ | * <code>sudo timedatectl set-timezone Europe/Amsterdam</code> | ||
+ | * <code>date MMDDhhmmYY</code>, of <code>sudo apt-get install chrony</code> en <code>systemctl enable --now chronyd</code> | ||
+ | * <code>fs_cli -x 'fsctl sync_clock'</code> | ||
+ | [[Category:Telephony]][[Category:Telephone snippet]][[Category:FreeSWITCH]] |
Latest revision as of 15:50, 30 June 2021
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'