Weckruf recoded ohne AGI

o_dapenguin

Neuer User
Mitglied seit
16 Jun 2005
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
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
 
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 ??
 
.. 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
 
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
 
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.
 
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
 
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
 
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}.2006, 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}.2006, ok ?)
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 -t ${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 ;)
 
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
 
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.
 
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
 
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
 
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
 
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}.2006, ok ?)
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}.2006, ok ?)
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 -t ${Monat}${Tag}${Stunden}${Minuten} /tmp/WakeUp${nummer}.call)
exten => 66,29,GotoIf($[${Tag} < 9]?s-onecount|1)
exten => s-onecount,1,TrySystem(touch -t ${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
 
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
 
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
 
Hi!

Beppo schrieb:
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" ...
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]
...${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.
Tja, eben. ;-)

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.
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
 
Zuletzt bearbeitet:
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
 
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
 
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
 
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.