WaitExten mit LDAP

Kronosa

Neuer User
Mitglied seit
3 Nov 2009
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich hoffe ihr könnt mir vielleicht helfen. Ich habe einen Asterisk 1.6.0 auf Debian 5.0.4 aufgebaut. Und verwalte meine Telefone über LDAP. Das funktioniert auch einwandfrei. SIP auf SIP, SIP auf Festnetz funktionieren wunderbar, auch eingehende Gespräche, die direkt auf die SIPs gehen. Ist eigentlich alles so ähnlich, wie wenn man mit eine Datenbank arbeitet.;)

Ich möchte jetzt bei einer festen Rufnummer, sagen wir 3000 einen "Vermittlung" einbauen. Die einen Ansagetext bringt und dann auf die Eingabe einer Extension wartet und an das entsprechende SIP durchstellt.

Hier mal das was ich bis jetzt habe:
Code:
[ankommend] ;ankommende Anrufe landen hier
exten => s,n,NoOp(Ankommend auf: ${EXTEN})
exten => 3000,1,Goto(mainmenu,s,1)

[mainmenu]
switch => Realtime/intern@extensions
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,Background(enter-ext-of-person)
exten => s,n,WaitExten(10)

exten => s,n,NoOp(gewaehlte Nummer: ${EXTEN})

exten => t,1,Playback(goodbye)
exten => t,n,Hangup

exten => i,1,Playback(invalid) ; "Ungueltige Eingabe. Bitte wiederholen."

Mein Problem ist nun, das Asterisk die Extensions nicht findet und sofort sagt, dass die Nummer invalid ist.
Bei der normalen Benutzung der WaitExten ist es ja so, dass jede Extension mit
Code:
exten => 1000,n,Dial(SIP/1000)
zb. darin vorkommt. Kann mir hier vielleicht jemand helfen einen Lösungsansatz zu finden?

Ich hab auch ein bischen Probleme die switch Anweisung richtig zu verstehen. Hier auf dieser Seite gibt es ein Beispiel:
Code:
[macro-localsip]
exten => s,1,Set(LANGUAGE()=de)
exten => s,n,Dial(SIP/${ARG1},10,tT)
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,n,Hangup
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,n,Hangup

[default]
switch => Realtime/@extensions macro-localsip]
Bei dem ein Macro in die Switch Einweisung angehängt wird. Dies hat aber bei mir nicht funktioniert als ich dies ausprobiert habe.
 
Zuletzt bearbeitet:
Hallo Kronosa,

in WaitExten kommt gar nichts vor, mit WaitExten kann man lediglich zu einer vorhandenen exten springen.

Der switch Befehl sagt Asterisk, dass er in der jeweiligen Datenbank nach einer passenden exten suchen soll. Gibt es dort keine Passende, sucht er im Context weiter und schickt Dich letzten Endes in die i-extension. Was er dabei nicht beachtet ist die s-extension. Dein Context ist also grundsätzlich richtig, nur müsstest Du Deine exten=>s durch exten=>3000 ersetzen.

Edit:
Jetzt fällt mir grad noch was auf. Meinst Du, dass Asterisk die Extensions nach dem WaitExten nicht findet? Dann könntest Du das WaitExten weg lassen und gleich Read() benutzen, Dir die gewählte exten in einer Variable liefern lassen und dann mit Goto neu in den Context und gleich in die richtige exten rein springen. Oder das Background durch Playback ersetzen, dass wirklich nur WaitExten die Eingabe bekommt.
Im Zweifel zeig mal die Ausgabe der CLI, damit man sieht, was da genau passiert.

Rentier
 
Zuletzt bearbeitet von einem Moderator:
Ich seh gerade ich hab vergessen den Context [ankommend] mit reinzunehmen, editiert.

Meinst Du, dass Asterisk die Extensions nach dem WaitExten nicht findet?

Genau das mein ich. Ich probier jetzt mal deinen Vorschlag.
 
Probiers mal anstatt "s" mit "_X."

Das war das, woran ich auch als erstes gedacht hatte. Aber er schreibt ja jetzt, dass es nach der Eingabe der Nebenstelle nicht weiter geht. Also kommt er in die s, aber danach nicht weiter. Background wird wahrscheinlich mit Realtime nicht klar kommen, vermute ich, und bis zum WaitExten kommt er wegen dem Timeout 10 erst gar nicht.

Rentier
 
Der Dailplan funktioniert einwandfrei. Wenn ich die Extension direkt eintrage!
Code:
[mainmenu]
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,Background(enter-ext-of-person)
exten => s,n,WaitExten(10)

[B]exten => 1000,n,Dial(SIP/1000)[/B]

Das WaitExten überprüft bei der Eingabe einer Digit sofort, ob eine entsprechende Dial Anweisung mit der Extension vorhanden ist.
Sprich wenn jemand eine 1 eintippt schaut Asterisk nach, hab ich was das mit 1 beginnt. Wenn man dann eine 0 eintippt schaut Asterisk nach hab ich etwas das mit 10 beginnt. Sollte jetzt eine 2 folgen stellt Asterisk fest etwas das mit 102 beginnt gibt es nicht und geht dann auf die invalid Teil.
Wenn ich dann aber die Switch Anweisung mit Verweis auf dem LDAP benütze und dort den fettmarkierten Teil entsprechend im LDAP eintrage. Funktioniert nichts mehr und egal welche Nummer man wählt geht Asterisk direkt auf den invalid Teil.
 
Dann probier mal folgendes:
Code:
[mainmenu]
switch => Realtime/intern@extensions
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Read(nummer,enter-ext-of-person,4,,1,5)
exten => s,n,Goto(mainmenu,${nummer},1)

Rentier
 
rentier-s, vielen Dank.
:groesste:

Ok, also jetzt funktioniert, das genau so wie du es geschrieben hast, rentier-s. Anscheinend hatte ich noch einen kleinen Fehler reingebracht als ich das in meinen Dialplan geschrieben hab.

Code:
[ankommend] ;ankommende Anrufe landen hier
exten => 3000,1,Goto(mainmenu,s,1)

[mainmenu]
switch => Realtime/intern@extensions
exten => s,1,Wait(1)
exten => s,n,Answer
exten => s,n,Read(nummer,enter-ext-of-person,4,,1,5)
exten => s,n,Goto(mainmenu,${nummer},1)
 
Zuletzt bearbeitet:
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.