Hallo,
inspiriert vom Weckruf Script habe ich ein Rückruf bei besetzt Sript (ohne AGI) gebastelt. Wie auch beim Weckruf wird dazu ein Callfile erzeugt. Bevor jemand meckert, ich weiss daß das Script von 23.58-00.00 Uhr nicht funktioniert, aber auf die Ausnahme hatte ich gerade keine Lust...:
Gruß delmo
inspiriert vom Weckruf Script habe ich ein Rückruf bei besetzt Sript (ohne AGI) gebastelt. Wie auch beim Weckruf wird dazu ein Callfile erzeugt. Bevor jemand meckert, ich weiss daß das Script von 23.58-00.00 Uhr nicht funktioniert, aber auf die Ausnahme hatte ich gerade keine Lust...:
PHP:
exten => _X.,1,SetVar(nummer=${EXTEN});Nummer des Anzurufenden speichern
exten => _X.,2,Dial,SIP/${EXTEN}@raus|45;Anrufen
exten => _X.,3,Goto,b_o-${DIALSTATUS}|1;Überprüfen was passiert und bei besetzt in den Contex b_o-BUSY springen
exten => b_o-BUSY,1,Read(key,besetzt);Spiele die Meldung ab, dass besetzt ist
exten => b_o-BUSY,2,GotoIf($[${key}=1]?b_o-CB|1);Wenn der Anrufer nun die 1 drückt, springe nach b_o-CB
exten => b_o-BUSY,3,Goto(_X.,4);sonst springe nach _X.,4
exten => b_o-CB,1,NoOP(CallFile erzeugen)
exten => b_o-CB,2,TrySystem(echo "" > /tmp/CBC${nummer}.call);Jetzt wird ein Callfile erzeugt, dass später den Callback einleitet
exten => b_o-CB,3,TrySystem(echo "Channel: SIP/35" >> /tmp/CBC${nummer}.call);hier müsste natürlich das entsprechende Endgeräte stehen, welches klingeln soll
exten => b_o-CB,4,TrySystem(echo "Callerid: ${nummer}" >> /tmp/CBC${nummer}.call);so wird auf o.g. Endgerät die Nummer des Anzurufenden angezeigt
exten => b_o-CB,5,TrySystem(echo "Context: broadnet_out" >> /tmp/CBC${nummer}.call);über welchen Context wird rausgewählt?
exten => b_o-CB,6,TrySystem(echo "Extension: ${nummer}" >> /tmp/CBC${nummer}.call);Wer soll angerufen werden?
exten => b_o-CB,7,TrySystem(echo "MaxRetries: 0" >> /tmp/CBC${nummer}.call)
exten => b_o-CB,8,TrySystem(echo "RetryTime: 30" >> /tmp/CBC${nummer}.call)
exten => b_o-CB,9,TrySystem(echo "WaitTime: 30" >> /tmp/CBC${nummer}.call)
exten => b_o-CB,10,NoOP()
exten => b_o-CB,11,TrySystem(echo "Priority: 1" >> /tmp/CBC${nummer}.call)
exten => b_o-CB,12,SetVar(Minuten=$[${TIMESTAMP:-4:2}+2]);Der Anruf soll 1-2 Minuten später ausgeführt werden (je nach Sekundenstand)
exten => b_o-CB,13,SetVar(Stunden=${TIMESTAMP:-6:2});dazu wird die Uhrzeit, die in 1-2 Minuten herrschen wird in den Variablen
exten => b_o-CB,14,SetVar(Tag=${TIMESTAMP:-9:2});Minuten,Stunden,Tag und Monat gespeichert
exten => b_o-CB,15,SetVar(Monat=${TIMESTAMP:-11:2})
exten => b_o-CB,16,GotoIf($[${Minuten}> 59]?b_o-CB-kor|1);Wird beim 2 Minuten Addieren eine neue Stunde angefangen?
exten => b_o-CB,17,GotoIf($[${Minuten} < 10]?b_o-CB-kor|2);Ist die Minutenzahl einstellig?
exten => b_o-CB-kor,1,SetVar(Minuten=$[${Minuten}-60]);beim Stundensprung ists natürlich z.B. nicht 62, sondern 2
exten => b_o-CB-kor,2,TrySystem(touch -t ${Monat}${Tag}${Stunden}0${Minuten} /tmp/CBC${nummer}.call); 2 geht nicht, 02 wird für touch benötigt
exten => b_o-CB-kor,3,Goto(b_o-CB,19)
exten => b_o-CB,18,TrySystem(touch -t ${Monat}${Tag}${Stunden}${Minuten} /tmp/CBC${nummer}.call);Zeitstempel des Callfiles ändern. Wenn die Zeit einstellig ist wird dieser Befehl wg. ungültiger Syntax nicht ausgeführt, b_o-CB-kor,2 hat das aber schon gemacht
exten => b_o-CB,19,TrySystem(mv /tmp/CBC${nummer}.call /var/spool/asterisk/outgoing/CBC${nummer}.call);jetzt ab in den Spooler
exten => b_o-CB,20,Goto(_X.,4);das wars
exten => _X.,4,Hangup;auflegen
Gruß delmo
Zuletzt bearbeitet: