Feste Extensionlänge

talbotde

Neuer User
Mitglied seit
28 Jan 2009
Beiträge
10
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich bin quasi blutiger Anfänger in Sachen asterisk.

Ich nutze eine Linksys NSLU2 als embedded System um asterisk zu betreiben.

Ich habe vor, das gerät als IVR System einzusetzen. Bisher funktioniert das auch soweit ganz gut. Ich habe mir bei sipgate.de eine Voip Nummer registriert. Die Software verbindet sich ordnungsgemäß mit dem SIP Server und nimmt anrufe entgegen. Die Navigation per Telefon funktioniert soweit auch schon.

Allerdings sollen die Anrufer einen x-stelligen Code eingeben um an bestimmte Informationen zu gelangen.

Zur Zeit löse ich das wie folgt:

Code:
[sipin]

exten => sip-nummer,1,ringing
exten => sip-nummer,2,wait(5)
exten => sip-nummer,3,answer
exten => sip-nummer,4,background(ACSwelcome)
exten => sip-nummer,5,WaitExten(10)
exten => i,1,Goto(wrong,s,1)
exten => t,1,Goto(timeout,s,1)

exten => 2222,1,Goto(hala2,s,1)

Wenn die Anrufer jetz 2222 angeben kommen sie in den richtigen Bereich. Bei einer Fehleingabe kommt (bedingt durch die vorletzte Zeile von [sipin]) sofort eine Ansage, dass der Code nicht gültig ist.

Mein Problem besteht nun darin, dass ich nicht möchte, dass falsche Codes beim ersten Zeichen als falsch angemäkelt werden. Denn so können Anrufer leicht richtige Codes durch wiederholtes Anrufen erraten.

Gibt es eine Möglichkeit, die Länge von extensions festzulegen, so dass asterisk die eingegebene Extension erst dann prüft wenn sie fertig eingegeben ist? Oder kann man das System so konfigurieren, dass die Extensions bestätigt werden müssen? Z.b. das man einen Stern nach der Eingabe des Codes benutzt um die Eingabe abzusenden.

Ich hoffe ihr versteht was ich meine und könnt mir weiterhelfen :)
 
Okay noch eine andere Frage:

Wie realisiere ich am geschicktesten eine case abfrage?

Also Anrufer gibt Code 1 ein, springe nach A.
Anrufer gibt Code 2 ein, springe nach B.
Anrufer gibt Code 3 ein, springe nach C.
Anrufer gibt ungültigen Code ein, springe nach Fehleransage.

Und noch eine kleine Frage am Rande... Ich habe schon öfter gesehen, dass Variablen hinter einem Dollarzeichen in Klammern eingeschlossen gezeigt werden.
also ${fooBar}. Gehe ich recht in der Annahme, dass das einfach nur den Variablenwert ausliest?
 
Hm. Ich habe mir jetzt überlegt das so zu machen:

Code:
exten => sipin-nummer,4,Read(digits|ACSwelcome|8)
exten => sipin-nummer,5,GotoIf(${digits}="12345678"?hala2,s,1)
exten => sipin-nummer,6,GotoIf(${digits}="87654321"?hala3,s,1:wrong,s,1)
exten => t,1,Goto(timeout,s,1)

So werden die If Abfragen durchlaufen und wenn der richtige Code dabei ist, wird der entsprechende Bereich angesprungen (verzeiht mir, mein Vokabular bzgl. Asterisk ist noch nicht so ausgeprägt).

Wenn die letzte Abfrage falsch ist kommt eine Fehleransage.
Ein Timeout gibt eine Timeoutansage aus.

Das sollte doch so funktionieren. Nur sonderlich elegant finde ich das nicht.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.