Oder Verknüpfung

stäubel

Neuer User
Mitglied seit
11 Aug 2006
Beiträge
198
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen

Hab da mal wieder eine Frage.
Bei uns möchten einige Teilnehmer mit der Hauptnummer raustelefonieren und die andern mit Ihrer direkten Nummer.

Da dies manchmal wieder ändern kann, möchte ich dies ein wenig elegant lösen, damit es schnell änderbar ist.

Hab mir mal folgenden Code gemacht:

Code:
[globals]
OWNUSERNR = 71 | 75 | 80        ;Diese internen Teilnehmer haben auch extern Ihre eigene Nummer
                                ;z.B. intern 71 = extern 0441234571

                                ;Die restltlichen sollen über die Beispiel Nummer 0441234560 signalisiert werden
                                
exten => _0XXXXXXXXXX,1,Set(_CALLERTON=16) 
exten => _0XXXXXXXXXX,2,GotoIf($[${CALLERIDNUM} = ${OWNUSERNR}]?4)          
exten => _0XXXXXXXXXX,3,Dial(CAPI/EICON/441234560:${EXTEN:1}/b,30) 
exten => _0XXXXXXXXXX,4,Dial(CAPI/EICON/4412345${CALLERIDNUM}:${EXTEN:1}/b,30)

Bei meinen Tests hats funktionier, aber wenn man früher viel C/C++ programmiert hat, tut das schon ein weinig weh.

Meine Frage ist vorallem, darf man das wirklich machen?

GotoIf($[${CALLERIDNUM} = 71 | 75 | 80 ?4)

Also wenn CALLERIDNUM 71 oder 75 oder 80 ist, springe zu 4.
Sonst fahre fort bei 3.

Da ich niergends ein Beispiel gefunden habe, möchte ich fragen, ob
es der "Asterisk-Norm" entspricht, oder ob es vielleicht sogar Zufall ist,
dass es funktioniert? :rolleyes:

Danke vielmal für einen Bescheid.

Greez Stäubel
 
Wenn ich die Doku gerade richtig gelsen habe, wird zuerst der Ausdruck "71 | 75 | 80" ausgewertet und es wird 71 zurückgegeben. Mit anderen Nummern sollte es also nicht funktionieren. Du suchst vermutlich eher sowas wie REGEX.
 
Danke fürs Nachschlagen!!
Dachte mir beinahe, dass es nicht so einfach sein kann :mad:

Aber was meinst du mit, REGEX?
Für mich ist ein REGEX ein Regular Expression.
Also folgendes Fettgedruckte:
exten => _0XXX,1,Dial(SIP/${EXTEN},20)

Aber gibts den keine if oder Switch Anweisung,
wo man mehrere Variablen ODER-Verknüpft mit einem Wert "gleichzeitig" vergleichen kann.

Thanx für deine Hilfe

Gruss Stäubel
 
Hallo Maik
Danke für den Hinweis.
Hab mich mal damit beschäftigt und folgendes hinbekommen:

Code:
exten => _0XXXXXXXXXX,1,Set(_CALLERTON=16)
exten => _0XXXXXXXXXX,2,GotoIf($[ ${REGEX("^80\|^50\|^88" ${CALLERIDNUM})} ]=1?4) 

exten => _0XXXXXXXXXX,3,Dial(CAPI/EICON/441234560:${EXTEN:1}/b,30)
exten => _0XXXXXXXXXX,4,Dial(CAPI/EICON/4412345${CALLERIDNUM}:${EXTEN:1}/b,30)

Nun was komisch ist, ist das Asterisk irgendwie das $-Zeichen nicht schnallt.

Also eigentlich müssten die internen Nummern im Bereich REGEX(.. mit $ abgeschlossen werden.

$ = signalisiert das Zeilen- oder Stringende (Regulärer Ausdruck)

Also: z.B
Code:
exten => _0XXXXXXXXXX,2,GotoIf($[ ${REGEX("^80$\|^50$\|^88$" ${CALLERIDNUM})} ]=1?4)

Aber immerhin funktionierts jetzt mal (ohne $-Zeichen)

Aber stimmt das etwa so?

Vielen Dank

Grüsse Stäubel
 
Warum nicht in der Asterisk-DB zu jedem Teilnehmer die Nummer eintragen, die Übermittelt werden soll? Damit wäre es mit einem Zugriff auf die DB getan, und Änderungen könnten ohne die extensions.conf anzufassen gemacht werden.
 
Hmm, wie könnte ich den bequem die DB bearbeiten?

Kenne nur die Grundbefehle wie z.B.

exten => _123,1,Set(${DB(test/count)=1})
um Daten in die AstDB zu speichern.

Greez Stäubel
 
stäubel schrieb:
Hmm, wie könnte ich den bequem die DB bearbeiten?

Kenne nur die Grundbefehle wie z.B.

exten => _123,1,Set(${DB(test/count)=1})
um Daten in die AstDB zu speichern.
Du willst in der extensions.conf die DB auslesen, Einträge kannst du per Asterisk CLI machen. Sieh dir doch mal die Ausgabe von 'help database' an. Als 'family' würde ich was eindeutiges wie 'callingnumber' oder so nehmen, als 'key' die Nebenstelle und als Wert die Nummer, die Übermittelt werden soll. Falls du nicht für jeden einen Eintrag nehmen willst kannst du einen Default fest in den Dialplan einkodieren oder als Nebenstelle 'default' oder so eintragen.

Ausser dem CLI zum eintragen ginge noch die Management-Schnittstelle (ein passendes Tool vorausgesetzt) oder, falls die Asterisk-DB in einer externen Datenbank liegt, ein dazu passendes anderes Tool.
 
Hallo zusammen

Vielen Dank für die Hinweise, werde dies mal so ausprobieren,
wenn ich mehr Zeit habe.
Vorallem werde ich mich auch mal intensiver mit der AstDB
(Berkeley DB) ausseinandersetzen müssen.

Aber ist trotzdem komisch, dass Asterisk das $-Zeichen nicht schnallt.
$ = ist ja schliesslich ein Regulärer Ausdruck (regular expression) und sollte Zeilen- oder Stringende () signalisieren.

Naja werde dies mal zu meinen Asterisk X-Akten legen.

Danke und viele Grüsse
Stäubel
 
Bei dem Alter des Threads würde ich sagen "42" ;)

jo
 
Ich habe mir jetzt bestimmt 5 Minuten den Kopf darüber zerbrochen, aber ich checke immer noch nicht wie du auf 42 kommst.

Nachtrag: Stimmt, den Film habe ich ja gesehen. *ROFL*
 
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.