Rückruf bei besetzt

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
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...:

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:

Guard-X

Aktives Mitglied
Mitglied seit
14 Mai 2005
Beiträge
2,497
Punkte für Reaktionen
0
Punkte
0
Hallo delmo,

kannst du dazu noch mal eine kleine Erklärung abgeben?

mfg Guard-X
 

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
Hallo Guard-X,

ich hab mal Kommentare hinzugefügt. Das Prinzip ist:

Wenn besetzt, dann sage das dem Anrufer und guck ob er eine "1" drückt
Tut er das, wird ein Callfile erzeugt, welches diesen Anruf einfach wiederholt
Ein Callfile wird, wenn es in das Asterisk Spooler Verzeichnis geschoben wird, zu seinem Zeitstempel ausgeführt. Dazu setzt dieses Script den Zeitstempel der Datei auf die Systemzeit + ungefähr 2 Minuten (Sekunden werden nicht berückichtigt). Man muss dabei halt den Stundensprung abfangen. Desweiteren darf die Minutenangabe nicht einstellig sein, also z.B. 02 statt nur 2. Das wars eigentlich. Wer noch Fragen hat, kann sie ja stellen.

Gruß
delmo
 

Thomas007

Aktives Mitglied
Mitglied seit
18 Sep 2005
Beiträge
1,455
Punkte für Reaktionen
0
Punkte
0
Ja, aber es klingelt jedesmal und es muss der Hörer abgenommen werden. Erst dann wird der ursprünglich nicht zu erreichende Teilnehmer angerufen.
 

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
Richtig, um den Hörer nicht abnehmen zu müssen, müsste man jeweils was telefonspezifisches machen, wenn das Telefon es denn unterstützt...
 

Thomas007

Aktives Mitglied
Mitglied seit
18 Sep 2005
Beiträge
1,455
Punkte für Reaktionen
0
Punkte
0
automatische Rufannahme am Telefon einschalten.
Das ist aber ein Sicherheitsrisiko.
 

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
geht nicht bei jedem und macht auch nicht immer Sinn...
 

o_dapenguin

Neuer User
Mitglied seit
16 Jun 2005
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
Hi !
Hab mir über dieses Thema auch schon Gedanken gemacht ... mit dem Asterisk ist das schöne alte ISDN-Feature der damals noch an einem Mehrgeräteanschluss laufenden ELMEG Anlage flöten gegangen, bei besetzt einen Rückruf in der T-COM Zentrale zu buchen. Auch ich habe mein Weckruf ohne AGI Script dazu benutzt ... ist halt eine Krücke ! Es klingelt bei mir, ich hebe ab und bekomme erneut ein Besetztzeichen ! Hmm ! Eigentlich müsste eine virtuelle statt eine reale Extension schauen, ob der Teilnehmer nun frei ist oder busy und dann weiteres veranlassen. Kennt sich da einer aus ?

Grüsse

o_dapenguin
 

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
Man müsste halt mit einer anderen Extension anrufen und wenn nicht busy ist klingelt das Telefon. Da gibts aber das Problem, dass evtl. der Auslöser dieses Anrufs nicht mehr am Platz ist und so der Angerufene sich verarscht vorkommt. :noidea:
 

o_dapenguin

Neuer User
Mitglied seit
16 Jun 2005
Beiträge
67
Punkte für Reaktionen
0
Punkte
0
... letzteres Problem gabs ja schon immer, deshalb müsste man sich aus der Schaltung auch wieder ausbuchen können !
 

Thomas007

Aktives Mitglied
Mitglied seit
18 Sep 2005
Beiträge
1,455
Punkte für Reaktionen
0
Punkte
0
o_dapenguin schrieb:
mit dem Asterisk ist das schöne alte ISDN-Feature der damals noch an einem Mehrgeräteanschluss laufenden ELMEG Anlage flöten gegangen, bei besetzt einen Rückruf in der T-COM Zentrale zu buchen.
Für externe Anschlüsse ging das eigentlich eh nie wenn man es gebraucht hat.

Für Asterisk kann man es für interne Telefone sehr komfortabel programmieren.
Ein Anrufer A bucht einen Rückruf zu Telefon B

In der h Extension wird immer geprüft ob für ein Telefon ein Rückrufwunsch vorliegt und falls ja wird bei A signalisiert. A nimmt ab und die Verbindung wird zu B hergestellt.

Für externe Telefone bei Besetzt programmiert man eine Anrufwiederholung oder nimmt gleich RetryDial.
 

delmo

Neuer User
Mitglied seit
12 Mrz 2005
Beiträge
95
Punkte für Reaktionen
0
Punkte
0
Thomas007 schrieb:
.

Für externe Telefone bei Besetzt programmiert man eine Anrufwiederholung oder nimmt gleich RetryDial.
Genau das ist doch in meinem Script realisiert....:noidea:
 

TK_Boy

Neuer User
Mitglied seit
10 Jan 2008
Beiträge
24
Punkte für Reaktionen
0
Punkte
0

Beebob007

Neuer User
Mitglied seit
26 Mai 2008
Beiträge
80
Punkte für Reaktionen
0
Punkte
6
hallo,
wie und wo füge ich das script ein?in der extension.conf? einfach einfügen?


gruß
Beebob
 

Zurzeit aktive Besucher

3CX PBX - GRATIS
Linux / Win / Cloud

Statistik des Forums

Themen
232,878
Beiträge
2,027,684
Mitglieder
351,002
Neuestes Mitglied
trabbimatti1