EXTEN Variable

schef4711

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

hab ein lustiges Problem am Asterisk 1.2 wobei ich jetzt ehrlich gesagt nicht sagen kann obs bei einem 1.0er funktioniert haette.

Aufgrund von der Vereinheitlichung der Rufnummern ist es wichtig, dass wir die EXTEN neu setzen. D.h. z.B. uebersenden wir am E1-PSTN mittels internationalen Format.

Wenn jetzt z.B. einer 06947114711 waehlt dann sollte die EXTEN dann als 496947114711 aussehen was aber irgendwie nicht so funktioniert wie wir das gern haetten.


exten => _X.,1,Dial(Zap/g1/49${EXTEN:1})
---> Problem ist das dan im z.B. CDR noch immer 06947114711 steht
---> der Dial selber funktiert aber mit 496947114711
---> somit ist die Loesung eigentlich nur halbherzig

Die Idee von uns war somit das wir eben die EXTEN umsetzen :

exten => _X.,1,Set(EXTEN=49${EXTEN:1})
exten => _X.,2,Dial(Zap/g1/${EXTEN})
---> Problem ist das er die EXTEN nicht setzt :mad:
---> der Dial funkt nicht wiel 06947114711 gesendet wird (blocking)
---> somit die Frage wie funkts :confused: :confused:

Nein und es geht auch nicht mit SetVar oder mit Set(${EXTEN} odgl. !!! Er ueberschreibts einfach nicht *argl*

Die Vermutung war schon das man die EXTEN nicht ueberschreiben kann was aber echt mist waere. Kann ja eigentlich nicht sein, weil z.B. die CallerID usw. kann man ja auch ueberschreiben.

Vielleicht hat ja jemand eine Idee was es sein koennte das es funktioniert. Leider gibts niergends eine vernueftige Doku dafuer (zumindest da Google hat nichts gefunden).


Gruss
Alexander
 
Die Variable ${EXTEN} ist eine vordefinierte channelgebundene Variable, die sich nicht ändern läßt.

Das was Du machen willst, läßt sich aber doch ganz einfach über die CallerIDNum realisieren - denn das ist die Nummer, die übertragen wird !

Also eine Lösung in der Art: setcidnum(49${EXTEN:1})
 
Hi Beta,

die Set(CallerID(number)=nnn) (oder unter 1.0 SetCIDNum) ist die RUFENDE NUMMER !!!! Die EXTEN ist die GERUFENE NUMMER !!! :idea: :idea:

Das ist ein gewaltiger Unterschied und nicht zu verwechseln. Also es geht hier nicht um die Veraenderung der rufenden Nummer sondern die Nummer die der "client" eingibt bzw. welche er anrufen will.

Weil wenn ich die CIDNum angebe beim Dial waehlt sich der Rufer selber an ;)

Weil im Endeffekt fragen alle Tools, AGI's, etc. die EXTEN ab und schreiben diese dementsprechend auch in die Datenbanken. So wies eben auch das CDR macht. Nur produziert das nur Aufwand, weil man dann wieder auswerten muss und die Nummern wieder umzangeln was man ja eigentlich im DialPlan schon gemacht hat.

Gibts da echt keine Loesung ?

Gruss
Alex
 
Hallo Alex,

schau Dir mal in diesem Thread:
http://www.ip-phone-forum.de/showthread.php?t=85532

Mein posting #14 an. mit SetCDRUserfield kannst Du die korrekte Nummer dann in einem weiteren Feld, was in der CSV Datei dann ganz hinten steht, abspeichern.

cdr_csv.c wie im posting beschrieben ändern und neu kompilieren vorher.

Gruß,
Tin
PS: Man kann die csv Einträge auch umsortieren, so dass das Userfield die Stelle einnimmt wo jetzt {EXTEN} steht, weiß aber im Moment nicht mehr über welche .conf Datei , ggf. bei voip-info.org mal suchen.
 
Der Unterschied zwischen EXTEN und der CallerIDnum ist mir schon klar - davon kannst Du einfach mal ausgehen.

Was mir aber nicht klar ist - was willst Du mit der Nummernmanipulation eigentlich erreichen und wo soll sie wirksam werden ?
 
Hallo,

@Tin : danke mal fuer den Hinweis - werd dort mal nachsuchen - wobei das hier halt auch nur fuer das CDR gilt und eben genau dort sehe ich das Problem des Aufwandes (vorallem dann bei Updates).

@beta : Naja, so klar war das nicht nach der Antwort :D Erreichen will ich, dass alle Tools, AGI's etc. welche ja die EXTEN Variable auslesen bzw. mit dieser arbeiten dann auch mit dem richtigen Eintrag bzw. Rufnummer im internat. Format arbeiten.

Weil sonst muesste ich alle - so wie Tin auch schreibt - Tools wo die Variablen gelesen werden umkompelieren damit eine andere Variable verwendet werden kann und nur Aufwand bedeutet :(

Oder aber auch bei jediglichen Statistiken oder Auswertungen von den Daten im Nachhinein wieder die Nummer umkonvertieren was aber fast unmoeglich ist durch unterschiedlichen Terminierungsenden (Kennzahlenbereich) :(

Weil mit der EXTEN hast dann Formate wie z.B. +49694711... (int mit +), 0049694711... (int mit 00), 49694711... (int ohne prefix), 0694711...(national), 4711...(local) in den Datenbanken stehen.

Gruss
Alex
 
schef4711 schrieb:
@beta : Naja, so klar war das nicht nach der Antwort :D

Zur Info :mrgreen:

Ich würde das ganze entweder über die interne Datenbank lösen, wo ich den "manipulierten" Wert reinschreibe und dann eben dafür sorge, daß alle Anwendungen auf diesen Wert zugreifen. Auch das Verändern von Werten in der Datenbanktabelle, falls Du CDR über z.B. MySQL machst, ist kein großes Problem. Also Du siehst - für Deine Aufgabenstellung gibt es mehrere Lösungsansätze.

Es ist eine Grundsatzentscheidung, die einmal getroffen und dann auf dem Asterisk konsequent umgesetzt werden muß, dann entfällt auch späterer Pflegeaufwand bei Updates.
 
schef4711 schrieb:
Aufgrund von der Vereinheitlichung der Rufnummern ist es wichtig, dass wir die EXTEN neu setzen. D.h. z.B. uebersenden wir am E1-PSTN mittels internationalen Format.


hallo alex

normalerweise brauchst du dir um sowas keine sorgen zu machen. der exchange deines providers, an dem du über E1 mit deiner PBX angebunden bist, wird 0, 00 und auch das "+" handlen können.
dort werden deine A und B nummern eh so manipuliert, dass sie über SS7 weiter signalisiert werden können.
vom local exchange des B teilnehmers wird dir dann wieder ein prefix drangepeppt :)

wie bekommst du denn eine internationale nummer? mit 00 oder +? ;)

gruss
/alex
 
betateilchen schrieb:
Es ist eine Grundsatzentscheidung, die einmal getroffen und dann auf dem Asterisk konsequent umgesetzt werden muß, dann entfällt auch späterer Pflegeaufwand bei Updates.

Stimmt schon - fuer alles gibts eine Loesung - ist immer die Frage obs den Aufwand halt dann wirklich wert ist weil bis dato hats ja auch so funktioniert und das ganze war ja nur eine Idee von mir.

Werde aber eher den Weg gehen, dass ich die Daten "manipuliere" bzw. werd auf andere Variablen umsteigen, weil im Endeffekt wird der ueberwiegende Teil der jetzt eh schon lauft eh von uns selber geschrieben/supportet.

Gruss
Alex
 
alex-911 schrieb:
hallo alex
normalerweise brauchst du dir um sowas keine sorgen zu machen. der exchange deines providers, an dem du über E1 mit deiner PBX angebunden bist, wird 0, 00 und auch das "+" handlen können.

Naja, das stimmt bedingt weil es gibt entweder die Einstellung "local", national oder international. Ueberlicherweise wird international "quasi" im verkehrten e164-format abgehandelt (ohne vorstellen wie + oder 00 und sonderzeichen).


alex-911 schrieb:
dort werden deine A und B nummern eh so manipuliert, dass sie über SS7 weiter signalisiert werden können. vom local exchange des B teilnehmers wird dir dann wieder ein prefix drangepeppt :)

Da wir seit ca. 1 Jahr selber KDB sind, haben wir die Berechtigung selber die A-Nummer zu setzen/ueberschreiben udgl. :rock: somit schicken wir die Nummern direkt ohne das diese am SS7 noch weiterbearbeitet werden muessen :p

Dadurch haben wir auch den Vorteil das wir dementsprechend guenstige EK-Preise haben und diese wiederspiegeln sich halt in den guenstigen VK-Preise wieder :cool:

alex-911 schrieb:
wie bekommst du denn eine internationale nummer? mit 00 oder +? ;)

genauso wie sie uebermittelt wird. "quasi" im verkehrten e164-format abgehandelt (ohne vorstellen wie + oder 00 oder sonderzeichen). z.B. 496947111

Gruss
Alex

------------------------------------
58 City-Special's um 1,5c/min
19 Länderspecial's um 1,8c/min
Reseller/Carrier willkommen
 
Zuletzt bearbeitet:
schef4711 schrieb:
Vielleicht hat ja jemand eine Idee was es sein koennte das es funktioniert.

Setze mal einen Befehl irgendwas,34${EXTEN}
in der nächsten Zeile schau dir mal ${EXTEN} an.

Das ENUM-Beispielsript verändert mir EXTEN
 
schef4711 schrieb:
Da wir seit ca. 1 Jahr selber KDB sind, haben wir die Berechtigung selber die A-Nummer zu setzen/ueberschreiben udgl. :rock: somit schicken wir die Nummern direkt ohne das diese am SS7 noch weiterbearbeitet werden muessen :p

da würde mich das setup nun doch mal interessieren. normalerweise hast du doch etwas "grösseres" in deinem netz, um den SS7 verkehr zu handeln. und dort machst du dann die A und B nummer manipulationen.
* ist zwar eine spitzen opensource PBX und bietet etliche möglichkeiten, aber er ist heute (noch) nicht carrier grade....
auf welcher plattform laufen deine STPs? ;)

gruss
/alex
 
kombjuder schrieb:
Setze mal einen Befehl irgendwas,34${EXTEN}
in der nächsten Zeile schau dir mal ${EXTEN} an.

Das ENUM-Beispielsript verändert mir EXTEN

Hatte schon einige Varianten ausprobiert aber ${EXTEN} war dann noch immer das gleiche. Hast du einen 1.0 * oder einen 1.2 * ? Weil ich glaube schoen langsam das der 1.0er was anders macht als der 1.2er :confused:

Gruss
Alex
 
alex-911 schrieb:
da würde mich das setup nun doch mal interessieren. normalerweise hast du doch etwas "grösseres" in deinem netz, um den SS7 verkehr zu handeln. und dort machst du dann die A und B nummer manipulationen.
* ist zwar eine spitzen opensource PBX und bietet etliche möglichkeiten, aber er ist heute (noch) nicht carrier grade....
auf welcher plattform laufen deine STPs? ;)

also was groesseres steht bei uns eigentlich nicht wirklich da. wir bekommen die Uebergabe vom einem Telco via Ethernet-Kabel in einem RZ als E1/PRI und stopfen diese in unsere Server mit Digium-Karten da wir aktuell nur Voice brauchen :p

Beim Telco selber kommt das ganze dann direkt zum SS7 - wie weit der dann das Format noch umzangelt kann ich aktuell ned beantworten wobei lt. Auskunft vom Telco kommt das dort direkt raus und wird direkt weitergeschickt. Wie auch immer ist mir eigentlich schnuppe :D

Wir haben beide Seiten auf "internationale" Uebermittlung eingestellt und wenn das halt nicht so ist dann gibts halt nur ein TUET TUET TUET und es geht nix weil der SS7 das halt dann nicht mehr handeln kann/versteht.

Fuer uns bringt das ganze den Vorteil, dass wir den * nicht mit SS7 laufen lassen muessen aber trotzdem die Moeglichkeit haben alle Nummern selber zu manipulieren, was am PRI ja mit TOA (TON bzw. NPI) ja einwandfrei funkt.

Nachteil ist sicherlich, dass man dann eben etwaige 10xxx Vorwahlen und sowas halt nicht mehr hat weils halt kein herkoemmlicher PRI-Anschluss einer normalen Telekom ist.

Aber somit reicht da dann auch Dual-XEON Server mit Gentoo drauf und fertig ist ein geiler * :cool:

Gruss
Alex
 
So aehnlich habe ich fuer LCR bei meinem uralten Asterisk geloest:

exten => _Z.,1,Goto(0049511${EXTEN},1) ; Ortsgespraech
exten => _0Z.,1,Goto(0049${EXTEN:1},1) ; Ferngespraech
exten => _00Z.,1,NoOp(${EXTEN})

Funktioniert so etwas nicht mehr?

poppy
 
poppy schrieb:
So aehnlich habe ich fuer LCR bei meinem uralten Asterisk geloest:

exten => _Z.,1,Goto(0049511${EXTEN},1) ; Ortsgespraech
exten => _0Z.,1,Goto(0049${EXTEN:1},1) ; Ferngespraech
exten => _00Z.,1,NoOp(${EXTEN})

Funktioniert so etwas nicht mehr?

poppy

na klar funkt das noch. Nur Problem ist halt, dass z.B. das CDR lediglich den Wert aus ${EXTEN} eintraegt bzw. auch viele AGI scripts halt auf das basieren. Fuer den generellen Dialplan geht alles und is auch egal.

Nur in 1 Monat weist dann wennst eine Auswertung aus einer Datenbank machst, nicht ehr wars jetzt ein Orts, Fern, oder Internat. Gespraech :( Genau dort liegt der Haken, aber wir bauen eh gerade schon auf andere Variablen um :cool:

Gruss
Alex
 
poppy schrieb:
exten => _Z.,1,Goto(0049511${EXTEN},1) ; Ortsgespraech
exten => _0Z.,1,Goto(0049${EXTEN:1},1) ; Ferngespraech
exten => _00Z.,1,NoOp(${EXTEN})

Funktioniert so etwas nicht mehr?

schef4711 schrieb:
na klar funkt das noch. Nur Problem ist halt, dass z.B. das CDR lediglich den Wert aus ${EXTEN} eintraegt bzw. auch viele AGI scripts halt auf das basieren. Fuer den generellen Dialplan geht alles und is auch egal.

:confused: Du meinst, das funktioniert nicht bei Asterisk 1.2? Bei 1.0.x laeuft es wie erwartet. Beispiel: Ich tippe am Telefon die Ortsrufnummer 7654321 ein. Die Nummer wird dann in das internationale Rufnummerformat 00495117654321 konvertiert. In der 3. Zeile hat EXTEN also den Wert 00495117654321. Wuerde hier Dial(...) statt NoOp(...) stehen, wuerde auch 00495117654321 in CDR eingetragen.

Aber egal, du hast einen anderen Weg gefunden. :)

schef4711 schrieb:
...aber wir bauen eh gerade schon auf andere Variablen um :cool:
 
poppy schrieb:
:confused: Du meinst, das funktioniert nicht bei Asterisk 1.2? Bei 1.0.x laeuft es wie erwartet. Beispiel: Ich tippe am Telefon die Ortsrufnummer 7654321 ein. Die Nummer wird dann in das internationale Rufnummerformat 00495117654321 konvertiert. In der 3. Zeile hat EXTEN also den Wert 00495117654321. Wuerde hier Dial(...) statt NoOp(...) stehen, wuerde auch 00495117654321 in CDR eingetragen.

naja, bedingt - das einzige was richtig konvertiert wird ist die CallerID in die "src" spalte, weil Du diese ja auch veraendern kannst. Die EXTEN (falsch) selber findet man dann aber eben im "dst" feld aber halt so wie sie gewaehlt wurde. Lediglich im "lastdata" findet man die EXTEN dann richtig weil dies ja auch so im Callaufruf drinnen steht (aber hier wird halt nicht die EXTEN protokolliert !!!).

Wir haben hier aber auch "lastdata" von varchar(27) auch massiv verlaengern muessen, da hier eben das Problem war, dass durch laengere IAX verbindungen sonst da gar nix mehr steht ausser die Anfagszeichen.

Aber wie gesagt - beim CDR kann man sich noch mit dem "lastdata" behelfen aber das wars dann auch schon. Es gibt einige andere Tools/Scripts die halt NUR die "EXTEN" schreiben/verwenden und da hast halt dann genau PECH gehabt weil du da nur die "unveraenderte" Variante hast :(

Gruss
Alex
 
Eine schnelle Frage...
Kann mir Jemand in Kurzen Worten sagen für was SS7 Primär gebraucht wird?
Herzlichen Dank
toldap
 
Hallo,

lies Dir mal die Infos unter http://de.wikipedia.org/wiki/Signalling_System_7 durch, die sollten Dir schon etwas weiterhelfen. Interessant hier sind auch die div. Schichten von SS7. Wobei ich finde das Tutorial (in English) unter http://www.pt.com/tutorials/ss7/ wesentlich besser zum lesen.

Grundsaetzlich wird SS7 von grossen Carriern/Tekekoms verwendet um eben die Abwicklung in einem eigenen Netz zu realisieren und nicht ueber einzelne Nutzungskanaele wie man diese in der herkoemmlichen Form kennt. Dies wird vorallem fuer Mehrwertdienste, internationale Verbindungen etc. verwendet.

Gruss
Alex
 
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.