.titleBar { margin-bottom: 5px!important; }

Weckruf recoded ohne AGI

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von o_dapenguin, 29 Sep. 2005.

  1. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    Hallo !
    Als Dankeschön für all die guten Tips in diesem Forum nun nach und nach immer mehr Schnipsel meines Dialplans. Teilweise recycelt .. A@H hat ein paar recht nette Ansätze, aber insgesamt bin ich doch eher puristisch eingestellt und mag trotz meiner absoluten Begeisterung für Python das Mischen von verschiednen Scriptsprachen nicht sonderlich. Nun gut, die einzige Direktschnittstelle zum OS via Bash wird genutzt, aber eben kein AGI, wo Asterisk doch ebenfalls schon viel kann ...

    Hier mein Weckruf recoded ... die Soundfiles sollten entsprechend aufgenommen werden .. sie gehören nicht zu den Standardvoiceprompts.

    Code:
    [app-weckruf]
    ; Seeehr gut, wenn man zu einer unangenehmen Besprechung muss
    ; und um xx:yy Uhr gerne weggerufen werden will ;-)
    
    exten => *66,1,Answer
    exten => *66,2,Wait(1)
    exten => *66,3,Read(nummer,wr-nummereingeben)
    ; Soll intern (SIP) oder extern (bei mir ZAP) gewählt werden ?
    ; Alles interne hat 2 Stellen, alles externe >= 3
    exten => *66,4,GotoIf($[${LEN(${nummer})} > 2]?s-intext|1:s-intext|3)
    exten => s-intext,1,SetVar(channel="ZAP/g3/")
    exten => s-intext,2,Goto(*66,5)
    exten => s-intext,3,SetVar(channel="SIP/")
    exten => s-intext,4,Goto(*66,5)
    exten => *66,5,Wait(1)
    exten => *66,6,SayUnixTime(,,R) ; damit ich auch weiss, wieviel Uhr wir haben ... leider sehr holprige Ansage ...
    exten => *66,7,Read(uhrzeit,wr-bittezeiteingeben,4) ;4stellige Zahl als Uhrzeit
    ; Gibt die Zeit einen Sinn ?
    exten => *66,8,SetVar(Stunden=${uhrzeit:-4:2})
    exten => *66,9,SetVar(Minuten=${uhrzeit:-2})
    exten => *66,10,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
    exten => s-timesyntax,1,Playback(wr-zeitinkorrekt)
    exten => s-timesyntax,2,Goto(*66,7)
    exten => *66,11,Wait(1)
    exten => *66,12,Background(wr-weckrufaufnehmen)
    ; Ich lasse mir natuerlich von mir selbst was fluestern ...
    exten => *66,13,Record(WakeUp:gsm,3)
    exten => *66,14,Wait(1)
    exten => *66,15,TrySystem(echo "" > /tmp/WakeUp${nummer}.call)
    exten => *66,16,TrySystem(echo "Channel: ${channel}${nummer}" >> /tmp/WakeUp${nummer}.call)
    exten => *66,17,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${nummer}.call)
    exten => *66,18,TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${nummer}.call)
    exten => *66,19,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${nummer}.call)                                     
    exten => *66,20,TrySystem(echo "Context: app-weckruf" >> /tmp/WakeUp${nummer}.call)                                   
    exten => *66,21,TrySystem(echo "Extension: s" >> /tmp/WakeUp${nummer}.call)
    exten => *66,22,TrySystem(echo "Priority: 1" >> /tmp/WakeUp${nummer}.call)    
    exten => *66,23,TrySystem(touch -d ${Stunden}:${Minuten} /tmp/WakeUp${nummer}.call) ; So .. wann solls nochmal losgehen ?
    exten => *66,24,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call) ; Ok, Kugel in den Lauf ...
    exten => *66,25,Hangup
    exten => s,1,Answer
    exten => s,2,Wait(1)
    exten => s,3,Background(WakeUp)
    exten => s,4,Wait(2)
    exten => s,5,Hangup
    
    Und falls ich mirs doch anders überlege und NICHT um 5 Uhr aufstehen will bzw. die Party doch gut ist und ich auf keinen Fall um 23:55 Uhr "nach Hause muss" ...

    Code:
    ; Bitte doch nicht anrufen
    exten => *67,1,Answer
    exten => *67,2,Wait(1)
    exten => *67,3,Read(nummer,wr-nummereingeben)
    exten => *67,4,TrySystem(rm /var/spool/asterisk/outgoing/WakeUp${nummer}.call)
    exten => *67,5,Wait(1)
    exten => *67,6,Hangup
    
    Funktioniert wunderbar und ist wirklich praktisch !
    Vorschläge zur Verbesserung oder gefundene Fehler sind herzlich willkommen !

    Grüße

    o_dapenguin
     
  2. letacla

    letacla Neuer User

    Registriert seit:
    23 Sep. 2004
    Beiträge:
    60
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,
    Super Lösung, und alles ohne AGI.
    Aber was machst Du wenn um 23:00 Uhr ein Weckruf für 6:00 Uhr
    eingestellt wird ??
     
  3. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    .. dann schreibe ich weiter an der conf :lol: ..

    Einfachste Lösung wäre: Datum auch noch mit eingeben lassen .. ist aber in der Praxis zu umständlich. Eine Abfrage mit Voicemenü 1 für heute, 2 für morgen ... naja .. besser wäre eine Bedingung, wenn die Zeit VOR der aktuellen Zeit ist, dann den nächsten Tag zu nehmen .. und exakt da wird es dann halt doch wieder AG(I)lig :roll: ... mal überlegen, vielleicht kommt man ja doch drumherum ...

    Gruß

    o_dapenguin
     
  4. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    Es ließ mir keine Ruhe ... die letzte Lösung gefiel mir am besten .. wenn also 0745 als Weckzeit eingegeben wird, und wir jetzt 2245 Uhr haben, dann wird als Tag der nächste gesetzt:

    Code:
    ; Gibt die Zeit einen Sinn ?
    exten => *66,8,SetVar(Stunden=${uhrzeit:-4:2})
    exten => *66,9,SetVar(Minuten=${uhrzeit:-2})
    exten => *66,10,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
    exten => s-timesyntax,1,Playback(privacy-incorrect)
    exten => s-timesyntax,2,Goto(*66,7)
    ; Standard ist heute, wenn eingegebene Zeit < aktuelle Zeit, dann morgen
    exten => *66,11,SetVar(Tag=${TIMESTAMP:-9:2}) 
    exten => *66,12,SetVar(Monat=${TIMESTAMP:-11:2}) 
    exten => *66,13,NoOp(Wir haben den ${Tag}.${Monat}.2005, ok ?)
    exten => *66,14,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}.2005, ok ?)
    exten => s-tomorrow,3,Goto(*66,15)
    exten => *66,15,Wait(1)
    exten => *66,16,Background(vm-rec-unv)
    ; Ich lasse mir natuerlich von mir selbst was fluestern ...
    
    Touch rufe ich für das Timing dann besser so auf:
    Code:
    exten => *66,27,TrySystem(touch -t ${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call)
    
    Das sollte es tun ... und ohne AGI :D


    Grüße

    o_dapenguin
     
  5. mkbm

    mkbm Neuer User

    Registriert seit:
    4 Juni 2005
    Beiträge:
    41
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich finde das Teil echt cool.
    Nur habe ich ein kleines Prob. Und zwar kann mein SIP Phone zwischen den ankommenden Anrufern unterscheiden.
    Ich möchte das er bei diesem Weckruf dann automatisch abnimmt.

    Bei diesem Anruf wird angezeigt das der asterisk selber anruft.
    Das Problem ist das wenn ich nun meinem SIP Phone sagen das er jeden Anruf vom asterisk annehmen soll er dann auch die anonymen Anrufer annimmt. Da bei diesen ja auch nur dran steht das der asterisk anruft.

    Meine Frage ist es ob ich hier eine CallerID setzen kann.
    Oder kann ich irgendwie für alle anonymen Anrufer eine andere CallerID setzen?

    Danke.


    MFG

    mkbm


    // OK. Hat sich erledigt. Man kann einfach bei schreiben der Spooldatei die CallerID mit reinschreiben.
     
  6. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    eben ... so etwas in der Art einfach noch mit reinpacken ...
    Code:
    exten => *66,17,TrySystem(echo "Callerid: "Mein Weckeeer" <123>" >> /tmp/WakeUp${nummer}.call)
    
    Schön, dass ein wenig Rückmeldung kommt und das gescribble außer mir noch jemandem hilft :lol:

    Grüße

    o_dapenguin
     
  7. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo,

    ich hab mir deine Zeilen auch mal angesehen und würde
    es gerne benutzen.
    Nur scheint es die es die Unterscheidung ob die angegebene Zeit heute oder Morgen ist nicht ganz zu tun.
    Also bei mir jedenfalls ;-)
    Hast du noch nen bisschen an den Skript weiter geschrieben?

    Gruß Beppo
     
  8. Rocky512

    Rocky512 IPPF-Promi

    Registriert seit:
    2 Mai 2004
    Beiträge:
    3,469
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Leipzig
    Bei meinen unchristlichen Arbeitszeiten braucht man einen Wecker. Also hab ich versucht die Sache auch einzusetzen. Es lief alles soweit ohne Probleme bis der neue Monat begann und das Datum nun nur einstellig ist und ein Weckruf für den nächsten Tag programmiert wird.

    PHP:
    [weckruf]
    exten => *66,1,Answer
    exten 
    => *66,2,Wait(1)
    exten => *66,3,Read(nummer,wr-nummereingeben)
    exten => *66,4,SetVar(channel="SIP/")
    exten => *66,5,Wait(1)
    exten => *66,6,SayUnixTime(,,R
    exten => *66,7,Read(uhrzeit,wr-bittezeiteingeben,4) ;4stellige Zahl als Uhrzeit
    exten 
    => *66,8,SetVar(Stunden=${uhrzeit:-4:2})
    exten => *66,9,SetVar(Minuten=${uhrzeit:-2})
    exten => *66,10,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
    exten => s-timesyntax,1,Playback(privacy-incorrect)
    exten => s-timesyntax,2,Goto(*66,7)
    exten => *66,11,SetVar(Tag=${TIMESTAMP:-9:2}) 
    exten => *66,12,SetVar(Monat=${TIMESTAMP:-11:2}) 
    exten => *66,13,NoOp(Wir haben den ${Tag}.${Monat}.2006ok ?)
    exten => *66,14,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}.2006ok ?)
    exten => s-tomorrow,3,Goto(*66,15)
    exten => *66,15,Wait(1)
    exten => *66,16,Background(wr-weckrufaufnehmen)
    exten => *66,17,Record(WakeUp:gsm,3)
    exten => *66,18,Wait(1)
    exten => *66,19,TrySystem(echo "" > /tmp/WakeUp${nummer}.call)
    exten => *66,20,TrySystem(echo "Channel: ${channel}${nummer}>> /tmp/WakeUp${nummer}.call)
    exten => *66,21,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${nummer}.call)
    exten => *66,22,TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${nummer}.call)
    exten => *66,23,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${nummer}.call)
    exten => *66,24,TrySystem(echo "Context: app-weckruf" >> /tmp/WakeUp${nummer}.call)
    exten => *66,25,TrySystem(echo "Extension: s" >> /tmp/WakeUp${nummer}.call)
    exten => *66,26,TrySystem(echo "Priority: 1" >> /tmp/WakeUp${nummer}.call)    
    exten => *66,27,TrySystem(touch -${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call)
    exten => *66,28,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call)
    exten => *66,29,Hangup
    exten 
    => s,1,Answer
    exten 
    => s,2,Wait(1)
    exten => s,3,Background(WakeUp)
    exten => s,4,Wait(2)
    exten => s,5,Hangup
    Cli bringt folgende Zeile die mir aufgefallen ist für eine Programmierung für den 04.03. 00:05 Uhr
    4.03. mit der fehlenden 0 scheint es Probleme zu geben
    PHP:
    -- Executing TrySystem("SIP/31-2622""touch -t 0340005 /tmp/WakeUp30.call"in new stack
    sollte das nicht so aussehen ?
    PHP:
    -- Executing TrySystem("SIP/31-2622""touch -t 03040005 /tmp/WakeUp30.call"in new stack
    Auch wird der Weckruf sofort ausgelöst.

    Der Fehler tritt wie gesagt nur auf, wenn der Tag "einstellig" ist.
    Bei der Programmierung wird ja die Tag-Variable um eins erhöht. Irgendwas läuft da schief. Vor der Addition ist der Wert noch zweistellig, danach leider nicht mehr.
    Wie bekomme ich es hin das dabei die Variable zweistellig bleibt ?

    Und kann mir einer mal bitte die Syntax von TIMESTAMP erklären.
    SetVar(Tag=${TIMESTAMP:-9:2})
    SetVar(Monat=${TIMESTAMP:-11:2})
    edit lesenbildet ;)

    Asterisk-Profis - gebt einem Anfänger bitte einen Tipp

    Ich hätt ja ne Lösung: Vom 1. bis 9. des Monats keine Frühdienste machen, aber das würde meinem Arbeitgeber nicht gefallen, mir schon ;)
     
  9. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi,

    das Problem hatte ich auch...
    Als Lösung hab ich einfach noch ne Datumsabfrage gemacht, so ist man auch nicht auf den aktuellen Tag beschränkt und kann etwas weiter nach vorne sich wecken lassen ;)

    HTML:
    ;neu Datumsangabe
    exten => 66,10,wait(1)
    exten => 66,11,Read(datum,vm-datum,4) ;4tellige Zahl als Datum
    exten => 66,12,Set(Tag=${datum:-4:2})
    exten => 66,13,Set(Monat=${datum:-2})
    exten => 66,14,GotoIf($[${Tag} > 31 | ${Monat} > 12]?s-datesyntax|1)
    exten => s-datesyntax,1,Playback(privacy-incorrect)
    exten => s-datesyntax,2,Goto(66,10)
    
    Das Soundfile vm-datum musst du natürlich selber noch aufnehmen.

    Bis dann
    Beppo
     
  10. Rocky512

    Rocky512 IPPF-Promi

    Registriert seit:
    2 Mai 2004
    Beiträge:
    3,469
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Leipzig
    Danke Beppo - nun läufts wieder wie es soll. :D
    Außerdem habe ich noch den Namen der Wackup Datei in Wackup{uhrzeit}.call geändert. Somit sind mehrere Weckrufe auf dem selben Endgerät programmierbar.
     
  11. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du kannst dir auch noch die Telefonnummer auslesen lassen über die Variable ${CALLERIDNUM} dann brauchst du die nicht mehr angeben und
    dir kann auch keiner nen Weckruf "aufzwingen" ;)

    Grüße Beppo
     
  12. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    Cool !

    Cool Jungs,

    das ist OpenSource .. der Weckruf wurde in meinem Setup bislang lediglich von mir getestet und war für die Anwender deaktiviert - und offenbar noch ziemlich buggy .. also thx4debugging !
    War längere Zeit quasi indisponibel / fern der Heimat und der häuslichen *-Box, sorry also an Beppo für die ausbleibende Antwort, - offenbar hast Du's ja auch über eine PM probiert !

    Grüße

    o_dapenguin
     
  13. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo o_dapenguin,

    kein Problem, ich habs ja auf die Reihe bekommen und mehr gelernt als wenn du es mir erzählt hättest ;-)
    Bis dahin

    Gruß Beppo
     
  14. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    Für alle die dieser Thread noch interessiert. Das Datum Problem habe ich mit einer weiteren GotoIf und dann einer zusätzlichen 0 im touch Befehl recht einfach lösen können:

    PHP:
    [weckruf]
    exten => 66,1,Answer
    exten 
    => 66,2,Wait(1)
    exten => 66,3,Read(nummer,wr-ziel)
    exten => 66,4,SetVar(channel="SIP/")
    exten => 66,5,Wait(1)
    exten => 66,6,Background(wr-esist)
    exten => 66,7,SayUnixTime(,,R)
    exten => 66,8,Read(uhrzeit,wr-zeit,4) ;4stellige Zahl als Uhrzeit
    exten 
    => 66,9,SetVar(Stunden=${uhrzeit:-4:2})
    exten => 66,10,SetVar(Minuten=${uhrzeit:-2})
    exten => 66,11,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
    exten => s-timesyntax,1,Playback(privacy-incorrect)
    exten => s-timesyntax,2,Goto(66,8)
    exten => 66,12,SetVar(Tag=${TIMESTAMP:-9:2})
    exten => 66,13,SetVar(Monat=${TIMESTAMP:-11:2})
    exten => 66,14,NoOp(Wir haben den ${Tag}.${Monat}.2006ok ?)
    exten => 66,15,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}.2006ok ?)
    exten => s-tomorrow,3,Goto(66,16)
    exten => 66,16,Wait(1)
    exten => 66,17,Background(wr-nachricht)
    exten => 66,18,Record(WakeUp:gsm,3)
    exten => 66,19,Wait(1)
    exten => 66,20,TrySystem(echo "" > /tmp/WakeUp${nummer}.call)
    exten => 66,21,TrySystem(echo "Channel: ${channel}${nummer}>> /tmp/WakeUp${nummer}.call)
    exten => 66,22,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${nummer}.call)
    exten => 66,23,TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${nummer}.call)
    exten => 66,24,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${nummer}.call)
    exten => 66,25,TrySystem(echo "Context: weckruf" >> /tmp/WakeUp${nummer}.call)
    exten => 66,26,TrySystem(echo "Extension: s" >> /tmp/WakeUp${nummer}.call)
    exten => 66,27,TrySystem(echo "Priority: 1" >> /tmp/WakeUp${nummer}.call)
    exten => 66,28,TrySystem(touch -${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call)
    exten => 66,29,GotoIf($[${Tag} < 9]?s-onecount|1)
    exten => s-onecount,1,TrySystem(touch -${Monat}0${Tag}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call)
    exten => s-onecount,2,Goto(66,30)
    exten => 66,30,TrySystem(mv /tmp/WakeUp${nummer}.call /var/spool/asterisk/outgoing/WakeUp${nummer}.call)
    exten => 66,31,Background(vm-goodbye)
    exten => 66,32,Hangup
    exten 
    => s,1,Answer
    exten 
    => s,2,Wait(1)
    exten => s,3,Background(WakeUp)
    exten => s,4,Wait(2)
    exten => s,5,Hangup
    Gruß
    delmo
     
  15. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hi!

    Danke fuer den tollen Code zum Weckruf.
    Ich habe aber leider ein Paar Probleme fuer die ich als Anfaenger keine Loesung finde:
    1. Kann es sein das alle Weckaufzeichnungen in einer einzigen Datei gespeichert werden und nicht fuer jede Zielnummer getrennt aufbewahrt werden? Und so, sobald zwei oder mehr Weckrufe gesetzt werden immer nur die letzte Aufzeichnung zu hoeren ist, auch wenn es eine fremde ist.
    Ich habe versucht den Dateiname mit ${nummer} zu erweitern, nur weiss ich nicht wie ich nachher in der s-Extension die gewaehlte Nummer beim Dateinamen angeben kann. Mit ${EXTEN} und ${CALLERIDNUM} komme ich nicht weiter - es wird immer ein 's' an Stelle der Variablen gesetzt.
    2. Hat jemand eine Loesung wie man den Weckruf auch fuer jeden Tag setzen kann ohne jeden Tag anrufen zu muessen?

    Danke und Gruss
     
  16. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo

    zu deiner ersten Frage
    hier "exten => 66,20,TrySystem(echo "" > /tmp/WakeUp${nummer}.call)" wird für jeden Weckruf eine neue Datei angelegt mit dem Namen "WakeUp1234.call" für den Fall das 1234 deine Nummer ist mit der du anrufst. Und die wird auch nur für den einen Anruf genommen.

    ${EXTEN} ist die Nummer die du angerufen hast und ${CALLERIDNUM} ist die Variable für deine eigene Nummer.
    mit den "s" Abschnitten musst du aufpassen das sie immer einen anderen Namen tragen das Asterisk nicht in den Zeilen zurück springt.
    Also so wie s-timesyntax und s-tomorrow z.B.

    wie sieht deine extensions.conf aus?
    Und was sagt Asterisk wenn du dich per asterisk -rc mit der Kommandozeile verbindest und mal "set verbose 4" "set debug 4" setzt und dann deinen Weckruf tätigst.

    zu 2.
    vielleicht mit einem Cronjob... hab ich noch nicht drüber nach gedacht.

    Gruß Beppo
     
  17. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    #17 gerdshi, 24 Nov. 2006
    Zuletzt bearbeitet: 24 Nov. 2006
    Hi!

    Es geht nicht um die Weckruf-Call-Datei, sondern um die WeckUp.gsm Datei mit der Aufzeichnung die abgespielt wird wenn man geweckt wird.

    Siehe hier:
    Code:
    [COLOR=#000000][COLOR=#0000bb]exten [/COLOR][COLOR=#007700]=> [/COLOR][COLOR=#0000bb]66[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]17[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]Background[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]wr[/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000bb]nachricht[/COLOR][COLOR=#007700]) 
    [/COLOR][COLOR=#0000bb]exten [/COLOR][COLOR=#007700]=> [/COLOR][COLOR=#0000bb]66[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]18[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]Record[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]WakeUp[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000bb]gsm[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700]) [/COLOR][/COLOR]
    Und dann hier:
    Code:
    [COLOR=#000000][COLOR=#0000bb]exten [/COLOR][COLOR=#007700]=> [/COLOR][COLOR=#0000bb]s[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]3[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]Background[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]WakeUp[/COLOR][COLOR=#007700]) [/COLOR][/COLOR]
    Tja, eben. ;-)

    In beiden Faellen (WakeUp${nummer} bei der Aufzeichnung, WakeUp${EXTEN} und WakeUp${CALLERIDNUM} beim abspielen) erstellt er WakeUp30.gsm und spielt nacher aber WakeUps.gsm.
    So wie der Sourcecode ist, wird nur eine WakeUp.gsm erstellt, die dann bei alle abgespielt wird! Verstehst du? Jeder weiterer Anruf, um weitere Weckrufe einzustellen, ueberschreiben die WeckUp.gsm.
    Wenn man den Asterisk alleine Benutzt ist es auch nicht besonders schlimm. Aber sobald zwei Personen den Weckruf nutzen, bin ich im Erklaerungsnot, wieso die gesprochene Aufzeichnung von der anderen Person weg ist, nach dem ich mein Weckruf gestzt habe. ;-)

    Bzw. eine andere Idee, wie man fuer jeden WeckRuf seine eigene Aufzeichnung speichern kann? Vielleicht anhand der Uhrzeit? Dann duerfte es kein Problem mit der s-Extension und den Variablen geben? Dann kann es schief gehen wenn mehrere Personen die gleiche Weckzeit haben....
    Channel?

    Gruss
     
  18. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Jo verstehe, irgendwie fehlt auch was so solche Fälle...

    hier mal mein Teil dazu.
    HTML:
    exten => 66,1,answer
    exten => 66,2,Set(LANGUAGE()=de)
    exten => 66,3,Playback(vm-weckansage)
    exten => 66,4,Set(leitung=${CHANNEL})
    exten => 66,5,CUT(leitung=leitung|/|1)
    exten => 66,6,NoOp(${leitung})
    exten => 66,7,SayUnixTime(,,dmR) ; damit ich auch weiss, wieviel Uhr wir haben ... 
    exten => 66,8,Read(uhrzeit,vm-weckuhrzeit,4) ;4stellige Zahl als Uhrzeit
    ; Gibt die Zeit einen Sinn ?
    exten => 66,9,Set(Stunden=${uhrzeit:-4:2})
    exten => 66,10,Set(Minuten=${uhrzeit:-2})
    exten => 66,11,GotoIf($[${Stunden} > 23 | ${Minuten} > 59]?s-timesyntax|1)
    exten => s-timesyntax,1,Playback(privacy-incorrect)
    exten => s-timesyntax,2,Goto(66,7)
    ;neu Datumsangabe
    exten => 66,12,wait(1)
    exten => 66,13,Read(datum,vm-datum,4) ;4tellige Zahl als Datum
    exten => 66,14,Set(Tag=${datum:-4:2})
    exten => 66,15,Set(Monat=${datum:-2})
    exten => 66,16,GotoIf($[${Tag} > 31 | ${Monat} > 12]?s-datesyntax|1)
    exten => s-datesyntax,1,Playback(privacy-incorrect)
    exten => s-datesyntax,2,Goto(66,12)
    ; Standard ist heute, wenn eingegebene Zeit < aktuelle Zeit, dann morgen
    exten => 66,17,NoOp(Wir haben den ${Tag}.${Monat}.2006, ok ?)
    ; Ich lasse mir natuerlich von mir selbst was fluestern ...
    exten => 66,18,Background(vm-weckeransage)
    exten => 66,19,Record(WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}:gsm,3)
    exten => 66,20,TrySystem(echo "" > /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,21,TrySystem(echo "Channel: ${leitung}/${CALLERIDNUM}" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,22,TrySystem(echo "MaxRetries: 2" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,23,TrySystem(echo "RetryTime: 30" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,24,TrySystem(echo "WaitTime: 30" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,25,TrySystem(echo "Context: app-weckruf" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,26,TrySystem(echo "Extension: s" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,27,TrySystem(echo "Priority: 1" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,28,TrySystem(echo "Callerid: "Mein Wecker" <${CALLERIDNUM}>" >> /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,29,TrySystem(touch -d ${Stunden}:${Minuten} /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call) ; So .. wann solls nochmal losgehen ?
    exten => 66,30,TrySystem(touch -t ${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call)
    exten => 66,31,TrySystem(mv /tmp/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call /var/spool/asterisk/outgoing/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunden}${Minuten}.call) 
    exten => 66,32,Playback(vm-weckvielendank)
    exten => 66,33,Hangup
    
    exten => s,1,Answer
    exten => s,2,Wait(1)
    exten => s,3,Set(Tag=${TIMESTAMP:-9:2})
    exten => s,4,Set(Stunde=${TIMESTAMP:-6:2})
    exten => s,5,Set(Minute=${TIMESTAMP:-4:2})
    exten => s,6,Set(Monat=${TIMESTAMP:-11:2})
    exten => s,7,Set(Minute2=${MATH(${TIMESTAMP:-4:2}-1,int})
    exten => s,8,Set(Minute3=${MATH(${TIMESTAMP:-4:2}-2,int})
    exten => s,9,GotoIf($[${Minute2} < 0]?s-Minutenkorrektur|1)
    exten => s-Minutenkorrektur,1,Set(Minute2=00)
    exten => s-Minutenkorrektur,2,Goto(s-Playbackkorrektur,1)
    exten => s,10,Background(WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute})
    exten => s,11,TrySystem(rm /var/lib/asterisk/sounds/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute}.gsm)
    exten => s,12,Goto(s-Playbackkorrektur,1)
    exten => s-Playbackkorrektur,1,Background(WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute2})
    exten => s-Playbackkorrektur,2,TrySystem(rm /var/lib/asterisk/sounds/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute2}.gsm)
    exten => s-Playbackkorrektur,3,Background(WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute3})
    exten => s-Playbackkorrektur,4,TrySystem(rm /var/lib/asterisk/sounds/WakeUp${CALLERIDNUM}${Tag}${Monat}${Stunde}${Minute3}.gsm)
    exten => s-Playbackkorrektur,5,Hangup
     
     
  19. gerdshi

    gerdshi Aktives Mitglied

    Registriert seit:
    8 Mai 2005
    Beiträge:
    865
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hi!

    Hm, seltsam. Bei mir bewirkt in der s-Extension ${CALLERIDNUM} nicht das dort die angerufene Nummer steht. Die Variabel ist dem anscheint nach immer leer. Wieso?
    In meine extension.conf gibt es keine andere s-Extension.
    Woran kann es liegen das am Ende der GSM-Datei beim abspielen nicht die angerufene Nummer steht?
    Die Datei amsonsten wird richtig erstellt - WakeUp30.gsm (Das mit der Uhrzeit kommt spaeter, sobald ich es mit der NUmmer hingekriegt habe.)

    Danke!
    Gruss
     
  20. Beppo

    Beppo Neuer User

    Registriert seit:
    23 Dez. 2004
    Beiträge:
    38
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Das kann ich dir nicht sagen, vielleicht liegt es an deiner asterisk Version ?

    Bei www.voip-info.org kannst du das nachlesen

    ${CALLERIDNUM}: The current Caller ID number (DEPRECATED in 1.2.0 and removed in 1.4. Use ${CALLERID(num)}

    Gruß Beppo