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

Rückruf bei besetzt

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von delmo, 25 Okt. 2006.

  1. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    #1 delmo, 25 Okt. 2006
    Zuletzt bearbeitet: 26 Okt. 2006
    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 abdass besetzt ist
    exten 
    => b_o-BUSY,2,GotoIf($[${key}=1]?b_o-CB|1);Wenn der Anrufer nun die 1 drücktspringe 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 erzeugtdass 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 stehenwelches klingeln soll
    exten 
    => b_o-CB,4,TrySystem(echo "Callerid: ${nummer}>> /tmp/CBC${nummer}.call);so wird auf o.gEndgerä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.Bnicht 62sondern 2
    exten 
    => b_o-CB-kor,2,TrySystem(touch -${Monat}${Tag}${Stunden}0${Minuten} /tmp/CBC${nummer}.call); 2 geht nicht02 wird für touch benötigt
    exten 
    => b_o-CB-kor,3,Goto(b_o-CB,19)

    exten => b_o-CB,18,TrySystem(touch -${Monat}${Tag}${Stunden}${Minuten} /tmp/CBC${nummer}.call);Zeitstempel des Callfiles ändernWenn die Zeit einstellig ist wird dieser Befehl wgungültiger Syntax nicht ausgeführtb_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
     
  2. Guard-X

    Guard-X Aktives Mitglied

    Registriert seit:
    14 Mai 2005
    Beiträge:
    2,497
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Aurich
    Hallo delmo,

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

    mfg Guard-X
     
  3. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    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
     
  4. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    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.
     
  5. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    Richtig, um den Hörer nicht abnehmen zu müssen, müsste man jeweils was telefonspezifisches machen, wenn das Telefon es denn unterstützt...
     
  6. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    automatische Rufannahme am Telefon einschalten.
    Das ist aber ein Sicherheitsrisiko.
     
  7. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    geht nicht bei jedem und macht auch nicht immer Sinn...
     
  8. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    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
     
  9. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    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:
     
  10. o_dapenguin

    o_dapenguin Neuer User

    Registriert seit:
    16 Juni 2005
    Beiträge:
    67
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    BW
    ... letzteres Problem gabs ja schon immer, deshalb müsste man sich aus der Schaltung auch wieder ausbuchen können !
     
  11. Thomas007

    Thomas007 Aktives Mitglied

    Registriert seit:
    18 Sep. 2005
    Beiträge:
    1,455
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  12. delmo

    delmo Neuer User

    Registriert seit:
    12 März 2005
    Beiträge:
    95
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Berlin
    Genau das ist doch in meinem Script realisiert....:noidea:
     
  13. TK_Boy

    TK_Boy Neuer User

    Registriert seit:
    10 Jan. 2008
    Beiträge:
    24
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Und wie geht das?

    Grüße Tk_boy
     
  14. Beebob007

    Beebob007 Neuer User

    Registriert seit:
    26 Mai 2008
    Beiträge:
    80
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo,
    wie und wo füge ich das script ein?in der extension.conf? einfach einfügen?


    gruß
    Beebob