Weckruf recoded ohne AGI

Hi!

Ich benutze Asterisk Version 1.2.13. Welche Verision benutzst du?

Ich habe keine plausible Erklaerung wieso die Variabel bei mir nicht und bei dir doch funktionieren soll. Es sei denn du nutzst 1.0.xx - dann...

Gruss
 
Zuletzt bearbeitet:
Ich hab 1.2.12 wie auch in der Signatur steht...;-)

So jetzt mal ganz langsam, das passiert beim Weckruf setzten:

HTML:
Executing Set("SIP/1234-08a54938", "leitung=SIP/1234-08a54938") in new stack
    -- Executing Cut("SIP/1234-08a54938", "leitung=leitung|/|1") in new stack
    -- Executing NoOp("SIP/1234-08a54938", "SIP") in new stack
    -- Executing SayUnixTime("SIP/1234-08a54938", "||dmR") in new stack
    -- Playing 'digits/4-and' (language 'de')
    -- Playing 'digits/h-20' (language 'de')
    -- Playing 'digits/h-11' (language 'de')
    -- Playing 'digits/13' (language 'de')
    -- Playing 'digits/oclock' (language 'de')
    -- Playing 'digits/1-and' (language 'de')
    -- Playing 'digits/50' (language 'de')
    -- Executing Read("SIP/1234-08a54938", "uhrzeit|vm-weckuhrzeit|4") in new stack
    -- Accepting a maximum of 4 digits.
    -- Playing 'vm-weckuhrzeit' (language 'de')
    -- User entered '1355'
    -- Executing Set("SIP/1234-08a54938", "Stunden=13") in new stack
    -- Executing Set("SIP/1234-08a54938", "Minuten=55") in new stack
    -- Executing GotoIf("SIP/1234-08a54938", "0?s-timesyntax|1") in new stack
    -- Executing Wait("SIP/1234-08a54938", "1") in new stack
    -- Executing Read("SIP/1234-08a54938", "datum|vm-datum|4") in new stack
    -- Accepting a maximum of 4 digits.
    -- Playing 'vm-datum' (language 'de')
    -- User entered '2241'
    -- Executing Set("SIP/1234-08a54938", "Tag=22") in new stack
    -- Executing Set("SIP/1234-08a54938", "Monat=41") in new stack
    -- Executing GotoIf("SIP/1234-08a54938", "1?s-datesyntax|1") in new stack
    -- Goto (default,s-datesyntax,1)
    -- Executing Playback("SIP/1234-08a54938", "privacy-incorrect") in new stack
    -- Playing 'privacy-incorrect' (language 'de')
    -- Executing Goto("SIP/1234-08a54938", "66|12") in new stack
    -- Goto (default,66,12)
    -- Executing Wait("SIP/1234-08a54938", "1") in new stack
    -- Executing Read("SIP/1234-08a54938", "datum|vm-datum|4") in new stack
    -- Accepting a maximum of 4 digits.
    -- Playing 'vm-datum' (language 'de')
    -- User entered '2411'
    -- Executing Set("SIP/1234-08a54938", "Tag=24") in new stack
    -- Executing Set("SIP/1234-08a54938", "Monat=11") in new stack
    -- Executing GotoIf("SIP/1234-08a54938", "0?s-datesyntax|1") in new stack
    -- Executing NoOp("SIP/1234-08a54938", "Wir haben den 24.11.2006| ok ?") in new stack
    -- Executing BackGround("SIP/1234-08a54938", "vm-weckeransage") in new stack
    -- Playing 'vm-weckeransage' (language 'de')
    -- Executing Record("SIP/1234-08a54938", "WakeUp123424111355:gsm|3") in new stack
    -- Playing 'beep' (language 'de')
    -- Executing TrySystem("SIP/1234-08a54938", "echo "" > /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "Channel: SIP/1234" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "MaxRetries: 2" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "RetryTime: 30" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "WaitTime: 30" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "Context: app-weckruf" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "Extension: s" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "Priority: 1" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "echo "Callerid: "Mein Wecker" <1234>" >> /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "touch -d 13:55 /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "touch -t 11241355 /tmp/WakeUp123424111355.call") in new stack
    -- Executing TrySystem("SIP/1234-08a54938", "mv /tmp/WakeUp123424111355.call /var/spool/asterisk/outgoing/WakeUp123424111355.call") in new stack
    -- Executing Playback("SIP/1234-08a54938", "vm-weckvielendank") in new stack
    -- Playing 'vm-weckvielendank' (language 'de')
    -- Executing Hangup("SIP/1234-08a54938", "") in new stack

und das dann beim Wecken:

HTML:
Attempting call on SIP/1234 for s@app-weckruf:1
       > Channel SIP/1234-08a54938 was answered.
    -- Executing Answer("SIP/1234-08a54938", "") in new stack
    -- Executing Wait("SIP/1234-08a54938", "1") in new stack
    -- Executing Set("SIP/1234-08a54938", "Tag=24") in new stack
    -- Executing Set("SIP/1234-08a54938", "Stunde=13") in new stack
    -- Executing Set("SIP/1234-08a54938", "Minute=55") in new stack
    -- Executing Set("SIP/1234-08a54938", "Monat=11") in new stack
    -- Executing Set("SIP/1234-08a54938", "Minute2=54") in new stack
    -- Executing Set("SIP/1234-08a54938", "Minute3=53") in new stack
    -- Executing GotoIf("SIP/1234-08a54938", "0?s-Minutenkorrektur|1") in new stack
    -- Executing BackGround("SIP/1234-08a54938", "WakeUp123424111355") in new stack
    -- Playing 'WakeUp123424111355' (language 'en')
    -- Executing TrySystem("SIP/1234-08a54938", "rm /var/lib/asterisk/sounds/WakeUp123424111355.gsm") in new stack
 
Hi!

Danke fuer dein Log.
Ja, wehr lesen kann, ist klar im vorteil und haette deine Signatur sehen muessen. Sorry, hab wohl Tomaten auf den Augen. ;-)

Hier mein Log:
Code:
Connected to Asterisk 1.2.13 currently running on coLinux (pid = 28864)
Verbosity is at least 5
    -- Executing Answer("SIP/30-081a8ab0", "") in new stack
    -- Executing Wait("SIP/30-081a8ab0", "1") in new stack
    -- Executing Read("SIP/30-081a8ab0", "nummer|time") in new stack
    -- Playing 'time' (language 'de')
    -- User entered '30'
    -- Executing GotoIf("SIP/30-081a8ab0", "0?s-intext|1:s-intext|3") in new stack
    -- Goto (default,s-intext,3)
    -- Executing SetVar("SIP/30-081a8ab0", "channel="SIP/30"") in new stack
    -- Executing Goto("SIP/30-081a8ab0", "66|5") in new stack
    -- Goto (default,66,5)
    -- Executing Wait("SIP/30-081a8ab0", "1") in new stack
    -- Executing Read("SIP/30-081a8ab0", "uhrzeit|time|4") in new stack
    -- Accepting a maximum of 4 digits.
    -- Playing 'time' (language 'de')
    -- User entered '1459'
    -- Executing SetVar("SIP/30-081a8ab0", "Stunden=14") in new stack
    -- Executing SetVar("SIP/30-081a8ab0", "Minuten=59") in new stack
    -- Executing GotoIf("SIP/30-081a8ab0", "0?s-timesyntax|1") in new stack
    -- Executing SetVar("SIP/30-081a8ab0", "Tag=24") in new stack
    -- Executing SetVar("SIP/30-081a8ab0", "Monat=11") in new stack
    -- Executing NoOp("SIP/30-081a8ab0", "Wir haben den 24.11.2006| ok ?") in new stack
    -- Executing GotoIf("SIP/30-081a8ab0", "0?s-tomorrow|1") in new stack
    -- Executing Wait("SIP/30-081a8ab0", "1") in new stack
    -- Executing BackGround("SIP/30-081a8ab0", "time") in new stack
    -- Playing 'time' (language 'de')
    -- Executing Record("SIP/30-081a8ab0", "WakeUp30:gsm|2") in new stack
    -- Playing 'beep' (language 'de')
    -- Executing Wait("SIP/30-081a8ab0", "0") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "" > /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "Channel: "SIP/30"" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "MaxRetries: 2" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "RetryTime: 30" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "WaitTime: 30" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "Context: weckruf" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "Extension: s" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "echo "Priority: 1" >> /tmp/WakeUp30.call") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "touch -t 11241459 /tmp/WakeUp30.call") in new stack
    -- Executing GotoIf("SIP/30-081a8ab0", "0?s-onecount|1") in new stack
    -- Executing TrySystem("SIP/30-081a8ab0", "mv /tmp/WakeUp30.call /var/spool/asterisk/outgoing/WakeUp30.call") in new stack
    -- Executing BackGround("SIP/30-081a8ab0", "vm-goodbye") in new stack
    -- Playing 'vm-goodbye' (language 'de')
    -- Executing Hangup("SIP/30-081a8ab0", "") in new stack
  == Spawn extension (default, 66, 30) exited non-zero on 'SIP/30-081a8ab0'
Und das beim wecken...
Code:
-- Attempting call on SIP/30 for s@weckruf:1 (Retry 1)
       > Channel SIP/30-081a8ab0 was answered.
    -- Executing Answer("SIP/30-081a8ab0", "") in new stack
    -- Executing Wait("SIP/30-081a8ab0", "1") in new stack
    -- Executing BackGround("SIP/30-081a8ab0", "WakeUp") in new stack
Nov 24 14:59:07 WARNING[1428]: file.c:512 ast_openstream_full: File WakeUp does not exist in any format
Nov 24 14:59:07 WARNING[1428]: file.c:824 ast_streamfile: Unable to open WakeUp (format g726): No such file or directory
Nov 24 14:59:07 WARNING[1428]: pbx.c:5799 pbx_builtin_background: ast_streamfile failed on SIP/30-081a8ab0 for WakeUp
    -- Executing TrySystem("SIP/30-081a8ab0", "rm /var/lib/asterisk/sounds/WakeUp.gsm") in new stack
    -- Executing Wait("SIP/30-081a8ab0", "2") in new stack
    -- Executing Hangup("SIP/30-081a8ab0", "") in new stack
  == Spawn extension (weckruf, s, 6) exited non-zero on 'SIP/30-081a8ab0'
Wie man sieht wird die GSM Datei als WakeUp30.gsm erstellt. <30> ist die Numemr die angerufen wird.
Nach her aber sucht er nach WakeUp.gsm anstelle von WakeUp30.gsm.
Seltsam...

Hier auch noch der Weckruf an sich aus meiner extension.conf. Wobei ich die Ansagen noch nicht aufgezeichnet habe und stattdessen wird einfach das Wort 'Time' abgespielt. ;-)
Code:
[weckruf]
exten => 66,1,Answer
exten => 66,2,Wait(1)
exten => 66,3,Read(nummer,time)
exten => 66,4,GotoIf($[${LEN(${nummer})} > 2]?s-intext|1:s-intext|3)
exten => s-intext,1,SetVar(channel="SIP/${nummer}@lowrate")
exten => s-intext,2,Goto(66,5)
exten => s-intext,3,SetVar(channel="SIP/${nummer}")
exten => s-intext,4,Goto(66,5)
exten => 66,5,Wait(1)
exten => 66,6,Read(uhrzeit,time,4) ;4stellige Zahl als Uhrzeit
exten => 66,7,SetVar(Stunden=${uhrzeit:-4:2})
exten => 66,8,SetVar(Minuten=${uhrzeit:-2})
exten => 66,9,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
exten => s-timesyntax,1,Playback(privacy-incorrect)
exten => s-timesyntax,2,Goto(66,6)
exten => 66,10,SetVar(Tag=${TIMESTAMP:-9:2})
exten => 66,11,SetVar(Monat=${TIMESTAMP:-11:2})
exten => 66,12,NoOp(Wir haben den ${Tag}.${Monat}.2006, ok ?)
exten => 66,13,GotoIf($[${Stunden}${Minuten} < ${TIMESTAMP:-6:4}]?s-tomorrow|1)
exten => s-tomorrow,1,SetVar(Tag=$[${Tag} + 1])
exten => s-tomorrow,2,NoOp(Morgen ist ${Tag}.${Monat}.2006, ok ?)
exten => s-tomorrow,3,Goto(66,14)
exten => 66,14,Wait(1)
exten => 66,15,Background(time)
exten => 66,16,Record(WakeUp${nummer}:gsm,2)
exten => 66,17,Wait(0)
exten => 66,18,TrySystem(echo "" > /tmp/WakeUp${nummer}.call)
exten => 66,19,TrySystem(echo "Channel: ${channel}" >> /tmp/WakeUp${nummer}.call
)
exten => 66,20,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${nummer}.call)
exten => 66,21,TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${nummer}.call)
exten => 66,22,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${nummer}.call)
exten => 66,23,TrySystem(echo "Context: weckruf" >> /tmp/WakeUp${nummer}.call)
exten => 66,24,TrySystem(echo "Extension: s" >> /tmp/WakeUp${nummer}.call)
exten => 66,25,TrySystem(echo "Priority: 1" >> /tmp/WakeUp${nummer}.call)
exten => 66,26,TrySystem(touch -t ${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp
${nummer}.call)
exten => 66,27,GotoIf($[${Tag} < 9]?s-onecount|1)
exten => s-onecount,1,TrySystem(touch -t ${Monat}0${Tag}${Stunden}${Minuten} /tm
p/WakeUp${nummer}.call)
exten => s-onecount,2,Goto(66,28)
exten => 66,28,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoi
ng/WakeUp${nummer}.call)
exten => 66,29,Background(vm-goodbye)
exten => 66,30,Hangup
exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(WakeUp${CALLERIDNUM})
exten => s,4,TrySystem(rm /var/lib/asterisk/sounds/WakeUp${CALLERIDNUM}.gsm)
;exten => s,4,MP3Player(/var/lib/asterisk/mohmp3/fpm-world-mix.mp3
exten => s,5,Wait(2)
exten => s,n,Hangup
 
Poste doch mal den Teil der extension.conf.
 
bin ja genauso blind....
 
versuch doch mal das

exten => s,1,Answer
exten => s,2,Wait(1)
exten => s,3,Background(WakeUp${nummer})
exten => s,4,TrySystem(rm /var/lib/asterisk/sounds/WakeUp${nummer}.gsm)
;exten => s,4,MP3Player(/var/lib/asterisk/mohmp3/fpm-world-mix.mp3
exten => s,5,Wait(2)
exten => s,n,Hangup
 
Hi!

Ich weiss nicht warum, aber auch das funktioniert nicht.
Auf einmal ist ${nummer} ebenfalls leer, obowhl es ein Paar Zeilen weiter oben noch den richtigen Wert hat. :bahnhof:

Gruss

Edit: Kann es sein, das irgendeine andere .conf Datei angepasst werden muss, damit die Varibalen im s-Extension gueltigkeit bekommen?
Habe so eben auf 1.2.12 downgegradet, ich kann aber keine unterschied erkennen.
Edit 2: Und ja, die Datei wird wirklich erstellt: ;-)
Code:
coLinux:~# ls -la /var/lib/asterisk/sounds/WakeUp30.gsm
-rw-r--r--  1 root root 5016 Nov 24 15:21 /var/lib/asterisk/sounds/WakeUp30.gsm
coLinux:~#
 
Hallo,

ich habe ein ähnliches Script und setze einfach alle Weckzeiten < aktuelle Zeit auf den nächsten Tag. Ich habe hier mal den Ursprungsscript erweitert:
Code:
exten => *66,n,GotoIf($[${Stunden}${Minuten} < ${STRFTIME(||%H%M)}]?tomorrow)
exten => *66,n,TrySystem(touch -d ${Stunden}:${Minuten} /tmp/WakeUp${nummer}.call) ; So .. wann solls nochmal losgehen ?
exten => *66,n,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call) ; Ok, Kugel in den Lauf ...
exten => *66,n,Hangup
exten => *66,n(tomorrow),TrySystem(touch -t ${STRFTIME($[86400 + ${EPOCH}]||%m%d)}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call) ; Erst morgen!
exten => *66,n,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call) ; Ok, Kugel in den Lauf ...
exten => *66,n,Hangup

Außerdem habe ich noch einen Timer (Kurzzeitwecker) mit eingebaut:
ein ${STRFTIME($[${minutes} * 60 + ${EPOCH}]||%H:%M)} gibt die Zeit jetzt + x Minuten zurück.
 
Zuletzt bearbeitet:
Weckruf für 1.4.11 in ael2

Erstmal ein grosses Danke an euch für die Inspiration und Vorarbeit.

Ich habe das Skript für Asterisk 1.4.11 ael umgebaut und erweitert. Dank der Verwendung von EPOCH müsste das Skript auch am Monatsende und Jahreswechsel funktionieren. Leider gibt es einen Fehler in der Funktion STRPTIME, die ausgerechnet in unserer Zeitzone Auswirkungen hat. Ob mein Workaround dafür funktioniert, werden wir in ein paar Wochen wissen, wenn wir wieder Standard-Zeit haben.
Code:
context weckruf {
    // small wakeup application
    // *77 for a guided wakeup
    // *77XXXX for the impatient. XXXX means HHMM
    // *779999 removes a previously set wakeup
    // the s-extension contains what's gonna happen when we wake you up
    // needs the following additional soundfiles:
    //  - wr-esist    : 'es ist jetzt'
    //  - wr-zeit     : 'geben sie die weckzeit ein'
    //  - wr-nachricht: 'sprechen sie die nachricht'

    *77 => {
        // asks for time and sets up a wakeup call for the calling extension
        Answer();
        NoCDR();
      begin:
        // extract the channel from the ${CHANNEL}-variable
        Set(channel=${CUT($[CHANNEL],-,1)});
        // we have 2-digit extensions
        Set(nummer=${channel:-2});
        Wait(1);
        Background(wr-esist);
        SayUnixTime(||AR);
        Read(uhrzeit|wr-zeit|4);                // wakeup-time in 24h format: HHMM
        Set(Stunden=${uhrzeit:-4:2});
        Set(Minuten=${uhrzeit:-2});
        if ((${Stunden}>23) | (${Minuten}>59)) {
            Playback(privacy-incorrect);
            goto begin;
        }
        Set(wakeuptime=${STRPTIME(${STRFTIME(||%Y%m%d)}${Stunden}${Minuten}||%Y%m%d%H%M)});
        // due to a faulty strptime function  we have to reduce the time by 3600 seconds (1 hour)
        // it has to be tested, if this is still working while no DST.
        // if the offset is +0200 then we have daylight saving time
        // if the offset is +0100 we have standard time
        Set(wakeuptime=$[${wakeuptime}-((${STRFTIME(|Europa/Zurich|%z):2:1}-1)*3600)]);
        if (${wakeuptime}<${EPOCH}) {
            // wakeup time seems to be tomorrow, so we add one day
            Set(wakeuptime=$[${wakeuptime}+86400]);
        }
        Wait(1);
        SayUnixTime(${wakeuptime}||AR);
        Wait(1);
        Background(wr-nachricht);
        Record(WakeUp${nummer}:wav|3);
      write_callfile:
        Wait(1);
        TrySystem(echo "" > /tmp/WakeUp${nummer}.call);
        TrySystem(echo "Channel: ${channel}" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "CallerID: Weckruf <*77>" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "Context: weckruf" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "Extension: s" >> /tmp/WakeUp${nummer}.call);
        TrySystem(echo "Priority: 1" >> /tmp/WakeUp${nummer}.call);
        TrySystem(touch -t ${STRFTIME(${wakeuptime}|Europe/Zurich|%Y%m%d%H%M)} /tmp/WakeUp${nummer}.call);
        TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call);
        Playback(vm-goodbye);
        Hangup();
        }

    _*77XXXX => {
        // expects *77HHMM where HH is the hour and MM the minutes when
        // the wakeup call for the calling party should execute.
        Answer();
        NoCDR();
        Set(channel=${CUT($[CHANNEL],-,1)});
        Set(nummer=${channel:-2});
        Set(Stunden=${EXTEN:3:2});
        Set(Minuten=${EXTEN:5:2});
        if ((${Stunden}>23) | (${Minuten}>59)) {
            // if the time is invalid, jump to the guided wakeup
            Playback(privacy-incorrect);
            goto *77|begin;
        }
        Set(wakeuptime=${STRPTIME(${STRFTIME(||%Y%m%d)}${Stunden}${Minuten}||%Y%m%d%H%M)});
        // for explanation see above at EXTEN *77
        Set(wakeuptime=$[${wakeuptime}-((${STRFTIME(|Europe/Zurich|%z):2:1}-1)*3600)]);
        if (${wakeuptime}<${EPOCH}) {
            // wakeup seems to be tomorrow, so add one day
            Set(wakeuptime=$[${wakeuptime}+86400]);
        }
        Wait(1);
        SayUnixTime(${wakeuptime}||AR);
        goto *77|write_callfile;
        }

    _*779999 => {
        // removes a pending wakeup-call and it's soundfile
        NoCDR();
        Set(channel=${CUT($[CHANNEL],-,1)});
        Set(nummer=${channel:-2});
        TrySystem(rm /var/lib/asterisk/sounds/WakeUp${nummer}.wav);
        System(rm /var/spool/asterisk/outgoing/WakeUp${nummer}.call);
        if ("${SYSTEMSTATUS}" == "SUCCESS") {
            Playback(vm-deleted);
            Wait(1);
            Hangup();
        } else {
            Congestion(5);
        }
        }

    s => {
        // plays the earlier (*77) recorded soundfile and deletes it after that
        NoCDR();
        Set(channel=${CUT($[CHANNEL],-,1)});
        Set(nummer=${channel:-2});
        Playback(WakeUp${nummer});
        if ("${PLAYBACKSTATUS}" == "FAILED") {
            Playback(this-is-yr-wakeup-call);
        }
        TrySystem(rm /var/lib/asterisk/sounds/WakeUp${nummer}.wav);
        Wait(1);
        Hangup();
        }
}
Es gibt viele Möglichkeiten, das Skript für den Anwender noch etwas perfekter zu gestalten. Da ich aber vermutlich mein einziger Anwender bin, muss das vorerst ausreichen :mrgreen:
Anregungen sind natürlich immer willkommen.

Viele Grüsse,
Sachmet.
 
Weckruf mit Datumsangabe und Soundfiles

Ich habe das Script an unsere Bedürfnisse angepasst.
Jetzt mit Datumsangabe und bei Programmierung eines Weckrufes auf das Jahr 0000 wird der Weckruf gelöscht - von den Benutzern so gewünscht :rolleyes:

Ich habe die mit TextAloud generierten Soundfiles dazugepackt...

Vielleicht nützt es jemandem was ;)

Code:
; AUSZUG AUS
; extensions.conf

[wake_up]
exten => wake_up,1,Goto(wake_up,wake_up,2) ;Verschiedene Schreibweisen auswerten
exten => Wake_Up,1,Goto(wake_up,wake_up,2)
exten => Wake_up,1,Goto(wake_up,wake_up,2)
exten => 70,1,Goto(wake_up,wake_up,2)

exten => wake_up,2,GotoIf($[ ${LEN($CALLERID(name))} < 2 ]?3:5) ;Wenn CallerID-Name nicht vorhanden oder zu kurz
exten => wake_up,3,Set(ToDial=${CALLERIDNUMBER}) ;Nummer zum wählen verwenden
exten => wake_up,4,Goto(wake_up,6)
exten => wake_up,5,Set(ToDial=${CALLERIDNAME}) ;Name verwenden
exten => wake_up,6,Answer
exten => wake_up,7,Wait(1)
exten => wake_up,8,Read(EnteredDate,censec_wakeup-enterdate,8) ;8stellige Zahl als Datum einlesen
exten => wake_up,9,SetVar(edYear=${EnteredDate:-8:4})   ;Datum in Bestandteile aufgliedern, Jahr
exten => wake_up,10,SetVar(edMonth=${EnteredDate:-4:2}) ;Monat
exten => wake_up,11,SetVar(edDay=${EnteredDate:-2})     ;Tag

exten => wake_up,12,GotoIf($[${edYear} = 0000]?s-deletewakeup|1) ;Wenn Jahr = 0000, dann
exten => s-deletewakeup,1,TrySystem(rm /var/spool/asterisk/outgoing/WakeUp_${ToDial}.call) ;Wakeup-call löschen
exten => s-deletewakeup,n,Wait(1)
exten => s-deletewakeup,n,Playback(censec_wakeup-deleted)
exten => s-deletewakeup,n,Hangup()

exten => wake_up,13,GotoIf($[${edMonth} > 12 | ${edDay} > 31]?s-datesyntax|1) ;Datum prüfen
exten => s-datesyntax,1,Playback(censec_dateincorrect) ;Über falsche Datumseingabe beschweren
exten => s-datesyntax,2,Goto(wake_up,8) ;Datum nochmal eingeben lassen

exten => wake_up,14,Read(EnteredTime,censec_wakeup-entertime,4)  ;4stellige Zahl als Uhrzeit einlesen
exten => wake_up,15,SetVar(etHours=${EnteredTime:-4:2}) ;Uhrzeit in Bestandteile aufgliedern, Stunden
exten => wake_up,16,SetVar(etMinutes=${EnteredTime:-2})   ;Minuten
exten => wake_up,17,GotoIf($[${etHours} > 23 | ${etMinutes} > 59]?s-timesyntax|1) ;Uhrzeit prüfen
exten => s-timesyntax,1,Playback(censec_timeincorrect) ;Über falsche Uhrzeiteingabe beschweren
exten => s-timesyntax,2,Goto(wake_up,14) ;Uhrzeit nochmal eingeben lassen

exten => wake_up,18,Wait(1)
exten => wake_up,19,TrySystem(echo "" > /tmp/WakeUp_${ToDial}.call) ;Callfile erstellen in temp-Verzeichnis
exten => wake_up,20,TrySystem(echo "Channel: Local/auto_${ToDial}@in_sip_censec" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,21,TrySystem(echo "CallerID: wake_up <70>" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,22,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,23,TrySystem(echo "RetryTime: 60" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,24,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,25,TrySystem(echo "Context: wake_up" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,26,TrySystem(echo "Extension: wake_up_autocall" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,27,TrySystem(echo "Priority: 1" >> /tmp/WakeUp_${ToDial}.call)
exten => wake_up,28,TrySystem(touch -t ${edYear}${edMonth}${edDay}${etHours}${etMinutes} /tmp/WakeUp_${ToDial}.call) ;Änderungszeit des Callfiles anpassen
exten => wake_up,29,TrySystem(mv /tmp/WakeUp_${ToDial}.call /var/spool/asterisk/outgoing/WakeUp_${ToDial}.call) ;Callfile ins Asterisk-Verzeichnis verschieben
exten => wake_up,30,Wait(1) ;Warten, da sonst manchmal Teile der Ansagen verschluckt werden
exten => wake_up,31,Background(censec_wakeup-callsaved) ;Benutzer über erfolgreiche Speicherung informieren
exten => wake_up,31,Hangup


exten => wake_up_autocall,1,Answer
exten => wake_up_autocall,n,Wait(1)
exten => wake_up_autocall,n,Set(LANGUAGE()=de) ;Ohne diesen Befehl wird die englische Ansage abgespielt (???)
exten => wake_up_autocall,n,Playback(censec_wakeup-yourwakeupcall)
;exten => wake_up_autocall,n,MP3Player(/var/lib/asterisk/mohmp3/fpm-world-mix.mp3)
exten => wake_up_autocall,n,Wait(2)
exten => wake_up_autocall,n,Hangup


exten => wake_up_delete,1,Goto(wake_up,wake_up_delete,2) ;Verschiedene Schreibweisen auswerten
exten => Wake_up_delete,1,Goto(wake_up,wake_up_delete,2)
exten => Wake_Up_Delete,1,Goto(wake_up,wake_up_delete,2)
exten => 71,1,Goto(wake_up,wake_up_delete,2)

exten => wake_up_delete,2,GotoIf($[ ${LEN($CALLERID(name))} < 2 ]?3:5) ;Wenn CallerID-Name nicht vorhanden oder zu kurz
exten => wake_up_delete,3,Set(ToDial=${CALLERIDNUMBER}) ;Nummer zum wählen verwenden
exten => wake_up_delete,4,Goto(wake_up,6)
exten => wake_up_delete,5,Set(ToDial=${CALLERIDNAME}) ;Name verwenden
exten => wake_up_delete,6,TrySystem(rm /var/spool/asterisk/outgoing/WakeUp_${ToDial}.call) ;Wakeup-call löschen
exten => wake_up_delete,7,Wait(1)
exten => wake_up_delete,8,Playback(censec_wakeup-deleted)
exten => wake_up_delete,9,Hangup()
 

Anhänge

  • Weckruf.zip
    151.9 KB · Aufrufe: 17
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
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.