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

Ansage des Anrufers mit Abweisemöglichkeit?

Dieses Thema im Forum "Asterisk Skripte" wurde erstellt von kaoz123, 15 Okt. 2005.

  1. kaoz123

    kaoz123 Neuer User

    Registriert seit:
    16 Juli 2005
    Beiträge:
    178
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich bin da irgendwie nicht fündig geworden...

    Ich suche eine Möglichkeit, folgendes Szenario zu realisieren:
    Anrufer wird mit Asterisk verbunden, hört MOH während des Dial-Befehls. Soweit, so klar.
    Der Angerufene soll jedoch eine Ansage bekommen (z.B. "Anruf von ${CALLERIDNUM}"), bei der er dann noch vor Übergabe des Gesprächs entscheiden kann, ob er den Anruf annimmt, ihn auf die Mailbox leitet oder ihn an die nächste Priorität im Dialplan weitergibt: "Wenn Sie das Gespräch annehmen möchten, dann drücken Sie 1, für die Mailbox 2 und für die Weiterleitung an die nächste Nummer die 3".
    Das bleibt transparent für den Anrufer, da er nur schöne Musik hört.
     
  2. kaoz123

    kaoz123 Neuer User

    Registriert seit:
    16 Juli 2005
    Beiträge:
    178
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    extensions.conf
    Code:
    [mycontext]
    exten => _X.,n,Dial(SIP/mysipcontext,20,rM(screen^${CALLERIDNUM}))   ;screen^ARG1
    
    [macro-screen] ;das bekommt der Angerufene zu hoeren
    exten => s,1,Wait(0.5)
    exten => s,n,Playback(anrufvonnummer) ;anrufvonnumer.gsm "Sie haben einen Anruf von Nummer"
    exten => s,n,SayDigits(${ARG1})
    exten => s,n,Read(ACCEPT,auswahl,1) ;auswahl.gsm "Moechten Sie den Anruf annehmen, dann druecken Sie 1, fuer die Weiterleitung zum Handy die 2 und zur Weiterleitung an den Anrufbeantworter die 3" (eine einstellige Zahl wird akzeptiert)
    exten => s,n,GotoIf($[${ACCEPT}=1]?Akzept:WeiterAbfrag) ;wenn Eingabe=1 dann zu Akzept springen sonst WeiterAbfrag
    exten => s,n,Hangup ;hier wird hoffentlich nie reingesprungen
    exten => s,n(WeiterAbfrag),GotoIf($[${ACCEPT}=2]?Festnetz:Anrufbeant) ;wenn Eingabe=2 dann zu Festnetz sonst AB
    exten => s,n(WeiterAbfrag+1),NoOp("WeiterAbfrag+1") ;nur zum debuggen
    exten => s,n,Hangup ;Trunk/Leg zum Angerufenen aufhaengen
    exten => s,n(Anrufbeant),SetVar(MACRO_RESULT=GOTO:weiterleitung-anrufbeantworter^s^1) ;springe zum Context,Exten,Prio
    exten => s,n(Anrufbeant+1),NoOp("Anrufbeant+1") ;nur zum debuggen
    exten => s,n(Anrufbeant+2),Hangup ;Trunk/Leg zum Angerufenen aufhaengen
    exten => s,n(Festnetz),SetVar(MACRO_RESULT=GOTO:weiterleitung^s^1) ;springe zum Context,Exten,Prio
    exten => s,n(Festnetz+1),NoOp("Festnetz+1") ;nur zum debuggen
    exten => s,n(Festnetz+2),Hangup ;Trunk/Leg zum Angerufenen aufhaengen
    exten => s,n(Akzept),NoOp(${ACCEPT}) ;Anruf wird durchgestellt
    
    [weiterleitung]
    exten => s,1,Dial(IAX2/handycontext,25,r)
    exten => s,3,VoiceMail(u1@default)
    exten => s,4,Hangup
    
    [weiterleitung-anrufbeantworter]
    exten => s,1,VoiceMail(bu1@default) ; Busy-Nachricht
    exten => s,2,Hangup
    Funktioniert (erst) in Asterisk 1.2!
     
  3. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hast du inzwischen eine funtkionierende Lösung gefunden ?

    Ich habe das obige mal ausprobiert. Jedoch ergibt sich bei mir das Problem, daß nicht aufgelegt wird, wenn ich den Anruf nicht annehmen will.
    * sagt zwar "Executing Hangup("SIP/qscpcn-8aa7", "") in new stack" aber danach werden die beiden Teilnehmer verbunden.

    EDIT:

    Leider funzt auch der "Read"-Befehl nicht.
    Egal, was ich drücke, es steht immer da User entered ''.

    Habe testweise mal "Authenticate" reingetan - da funzt die Erkennung. Leider verbindet mich * jedoch auch wenn ich dreimal das falsche PW eingebe.

    EDIT:

    Das mit dem Read habe ich hinbekommen. Waren 2 Probleme:
    a) Über QSC haut´s mit dem DTMF wohl nicht so recht hin
    b) Habe eine "noanswer"-Option reingetan

    Das Problem, daß die beiden Channels verbunden werden, auch wenn man nicht "1" eingibt, bleibt jedoch bestehen.
    Habe es auch mal mit "MACRO_RESULT =CONTINUE" versucht - jedoch auch ohne Erfolg. Wird wohl von meiner *-Version (1.0.10) noch nicht unterstützt.
    Und bei "Hangup" werden die Chanels trotzdem verbunden. :-(
     
  4. kaoz123

    kaoz123 Neuer User

    Registriert seit:
    16 Juli 2005
    Beiträge:
    178
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ähm... Das war die funktionierende Lösung...

    Wenn ich nichts eingebe, dann landet der Anrufer auf der Mailbox, da einfach der Dial-Befehl im Hauptkontext "ausläuft".

    Dein Problem ist also nicht das Skript, sondern die Nichterkennung der Tonwahleingaben. Ich nutze alaw als Codec und einen Provider, der die MFV-Töne nicht filtert. :wink:
     
  5. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Die Töne und auch deren Erkennung funzen jetzt.
    Dennoch werde ich (nach dem Hangup-Befehl, der auch laut Konsole ausgeführt wird - wie ich oben auch geschrieben habe) verbunden.
     
  6. kaoz123

    kaoz123 Neuer User

    Registriert seit:
    16 Juli 2005
    Beiträge:
    178
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    http://voip-info.org/wiki/view/Asterisk+cmd+Dial
     
  7. Fux

    Fux Mitglied

    Registriert seit:
    3 Juni 2004
    Beiträge:
    420
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ja, das habe ich auch gelesen.
    Das hat mich ja auf die Idee mit dem "CONTINUE" gebracht - welches dann jedoch nicht funzte. Ebenso wenig wie "Hangup". Wat will man machen, geht wohl erst ab 1.2 richtig. Da ich aber nicht weiß, ob und wie gut 1.2 mit Bristuff läuft, muß ich noch warten...