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

Rufumleitung von extern setzen

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von aktivix, 20 Okt. 2011.

  1. aktivix

    aktivix Neuer User

    Registriert seit:
    26 März 2011
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Liebe Leute,

    Ich möchte gerne folgendes verwirklichen:

    1. Nummer wird angerufen von extern
    2. Anrufer muss sich authentifizieren per PIN
    3. Anrufer kann dann per DTMF(?) Nummer eingeben, auf die weitergeleitet werden soll
    4. Auflegen

    Mir ist soweit klar wie ich das umsetze, nur 3. nicht. Ich habe lange danach gesucht, aber die Funktion nicht gefunden. Also wie ich eine Nummer per DTMF (sofern das das richtige Stichwort ist) an Asterisk schicke, die dann ausgewertet wird.

    Wäre super wenn mir jemand auf die Sprünge hilft.
    [1] funktioniert dabei zum Beispiel nur zum Teil, da ich die Umleitung von extern steuern will, nicht intern.

    Danke schonmal

    [1] http://www.das-asterisk-buch.de/2.1/section-callforwarding.html
     
  2. rentier-s

    rentier-s Guest

  3. aktivix

    aktivix Neuer User

    Registriert seit:
    26 März 2011
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    Danke. Ich komme langsam voran, es hängt aber noch an wie ich glaube einer Stelle.
    Erstmal was ich gemacht habe:

    Code:
    exten => 4930XXXXXXXX,1,Authenticate(1234)
    exten => 4930XXXXXXXX,n,Macro(weiterleitung)
    
    [macro-weiterleitung]
    exten => s,1,Background(weiterleitung-hallo&silence/5)
    exten => 1,1,Goto(weiterleitung-setzen,s,1)
    exten => 2,1,Goto(weiterleitung-löschen,s,1)
    
    [weiterleitung-setzen]
    exten => s,1,Answer()
    exten => s,n,Read(NUMBER,weiterleitung-nummer,0,1,0)
    exten => s,n,Set(DB(CF/${CALLERID(num)=4930XXXXXXXX})=${NUMBER})
    exten => s,n,SayDigits(${NUMBER})
    exten => s,n,NoOp(Weiterleitung fuer ${CALLERID(num)=4930XXXXXXXX} auf ${NUMBER} aktiviert.)
    exten => s,n,Hangup()
    
    [weiterleitung-löschen]
    exten => s,1,DBdel(CF/${CALLERID(num)=4930XXXXXXXX})
    exten => s,n,Playback(auth-thankyou)
    exten => s,3,NoOp(Weiterleitung fuer ${CALLERID(num)=4930XXXXXXXX} deaktiviert.)
    exten => s,4,Hangup()
    Das Macro verwende ich oben nur, damit ich "springen" kann. Mit Goto etc. hatte das irgendwie nicht geklappt.

    Jetzt aber zum Problem. Wenn ich das ausführe ist alles gut, bis zur Eingabe von 1 oder 2. Wenn der Anrufer dies macht, meldet Asterisk:

    Ich verstehe die Fehlermeldung jedoch nicht, weil 1 ja definiert ist. :confused:

    Wäre super wenn mir nochmal jemand helfen könnte,
    Danke,
    aktivix
     
  4. rentier-s

    rentier-s Guest

    Genau das Macro ist das Problem. Die Fehlermeldung sagt Dir wortwörtlich, dass die 1 im Context eingehend nicht gefunden wird. Demnach versucht Asterisk, im Originalcontext weiter zu springen, nicht im Macro.

    Du musst das übrigens noch ein wenig umbauen. Im Moment setzt Du eine Rufumleitung für ${CALLERID(num), was intern klappt, aber von extern musst Du zuerst noch abfragen, für welchen Teilnehmer die Rufumleitung gesetzt werden soll.
     
  5. aktivix

    aktivix Neuer User

    Registriert seit:
    26 März 2011
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    danke für die Hilfe. Ich bin dann später selber drauf gekommen, und nun läuft alles, so:

    extensions.conf:
    Code:
    [weiterleitung]
    exten => s,1,Background(weiterleitung-hallo&silence/9)
    exten => 1,1,Goto(weiterleitung-setzen,s,1)
    exten => 2,1,Goto(weiterleitung-löschen,s,1)
    exten => i,1,Goto(weiterleitung,s,1)
    
    [weiterleitung-setzen]
    exten => s,1,Read(NUMBER,weiterleitung-nummer,0,1,0)
    exten => s,n,Set(DB(CF/anlage)=${NUMBER})
    exten => s,n,SayDigits(${NUMBER})
    exten => s,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${NUMBER} aktiviert.)
    exten => s,n,Background(weiterleitung-check&silence/9)
    exten => 1,1,Goto(weiterleitung-setzen,s,1)
    exten => 2,1,Goto(weiterleitung-ende,s,1)
    
    [weiterleitung-löschen]
    exten => s,1,DBdel(CF/anlage)
    exten => s,n,Playback(auth-thankyou)
    exten => s,n,NoOp(Weiterleitung fuer ${CALLERID(num)} deaktiviert.)
    exten => s,n,Hangup()
    
    [weiterleitung-ende]
    exten => s,1,Playback(auth-thankyou)
    exten => s,n,Hangup()
    Und: Vielleicht könnte man so ein Beispiel ja mal sticky machen, oder? Weil die Fragen ja immer und immer und immer wieder auftauchen...?

    lg!
     
  6. rentier-s

    rentier-s Guest

    Das kann so aber noch nicht funktionieren. :gruebel:
    Was gibt denn
    Code:
    exten => s,n,NoOp(Weiterleitung fuer ${CALLERID(num)} auf ${NUMBER} aktiviert.
    aus?

    Wie bereits erwähnt musst Du statt der Callerid doch erst mal die Nebenstelle abfragen, für die die Umleitung gelten soll.

    So viel gibt die Suchfunktion her, da brauchen wir imho wahrlich keinen Sticky.
     
  7. aktivix

    aktivix Neuer User

    Registriert seit:
    26 März 2011
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Doch es funktioniert, ich benutz das in Kombination mit dem:

    Code:
    exten => s,1,NoOp(Anruf von ${CALLERID(num)} fuer ${EXTEN})
    exten => s,n,GotoIf($[foo${DB(CF/anlage)} != foo]?cfanlage:zweiteregel)
    exten => s,n(zweiteregel),GotoIf($[foo${DB(CF/${EXTEN})} != foo]?cfnormal:normal)
    exten => s,n(normal),Goto(kunden-queue,s,1)
    exten => s,n(cfnormal),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/${EXTEN})})
    exten => s,n,Dial(SIP/${DB(CF/${EXTEN})}@172.251.1.1,,r)
    exten => s,n(cfanlage),NoOp(Anruf fuer ${EXTEN} wird verbunden zu ${DB(CF/anlage)})
    exten => s,n,Dial(SIP/${DB(CF/anlage)}@172.251.1.1,,r)
    edit: Ja, ich weiß dass es die Suchfunktion gibt und das die auch was kann. Ich sehe nur immer wieder die gleiche(n) Frage(n) hier (auch wenn ich noch voll neu bin), und dachte vielleicht kann man dem besser begegnen mit sowas. Das gleiche gilt ja für diese MOH-intern=ja,MOH-exten=nein Geschichte.