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

EXTEN Variable

Dieses Thema im Forum "Asterisk Rufnummernplan" wurde erstellt von schef4711, 10 Jan. 2006.

  1. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  2. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    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})
     
  3. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  4. TinTin

    TinTin Aktives Mitglied

    Registriert seit:
    6 Mai 2004
    Beiträge:
    1,864
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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.
     
  5. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    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 ?
     
  6. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  7. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    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.
     
  8. alex-911

    alex-911 Mitglied

    Registriert seit:
    6 Aug. 2005
    Beiträge:
    261
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    inschenjöhr
    Ort:
    Schweiz

    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
     
  9. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  10. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    #10 schef4711, 10 Jan. 2006
    Zuletzt bearbeitet: 10 Jan. 2006
    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).


    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:

    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
     
  11. kombjuder

    kombjuder IPPF-Promi

    Registriert seit:
    2 Nov. 2004
    Beiträge:
    3,086
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Weil am Rhein
    Setze mal einen Befehl irgendwas,34${EXTEN}
    in der nächsten Zeile schau dir mal ${EXTEN} an.

    Das ENUM-Beispielsript verändert mir EXTEN
     
  12. alex-911

    alex-911 Mitglied

    Registriert seit:
    6 Aug. 2005
    Beiträge:
    261
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    inschenjöhr
    Ort:
    Schweiz
    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
     
  13. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  14. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  15. poppy

    poppy Neuer User

    Registriert seit:
    19 Aug. 2004
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    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
     
  16. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  17. poppy

    poppy Neuer User

    Registriert seit:
    19 Aug. 2004
    Beiträge:
    49
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    :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. :)

     
  18. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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
     
  19. toldap

    toldap Neuer User

    Registriert seit:
    9 Aug. 2005
    Beiträge:
    134
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Eine schnelle Frage...
    Kann mir Jemand in Kurzen Worten sagen für was SS7 Primär gebraucht wird?
    Herzlichen Dank
    toldap
     
  20. schef4711

    schef4711 Neuer User

    Registriert seit:
    10 Jan. 2006
    Beiträge:
    54
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Buenos Aires
    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