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

Asterisk und Enum Preferences

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von Raffi, 25 Juli 2004.

  1. Raffi

    Raffi Neuer User

    Registriert seit:
    25 Juli 2004
    Beiträge:
    179
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Guten Morgen,

    angenommen ich habe folgende Enum Einträge:

    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 60 "u" "E2U+sms" "!^.*$!tel:+49.......!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 70 "u" "E2U+fax" "!^.*$!tel:+49.......!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 10 "u" "E2U+msg" "!^.*$!mailto:name@domain.de!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 20 "u" "E2U+iax" "!^.*$!iax:name@domain.de!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 30 "u" "E2U+sip" "!^.*$!sip:name@domain.de!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 40 "u" "E2U+h323" "!^.*$!h323:name@domain.de!" .
    7.6.5.4.3.2.1.4.4.9.4.e164.arpa. 86400 IN NAPTR 10 50 "u" "E2U+tel" "!^.*$!tel:+49441234567!" .

    Asterisk löst gegen Enum auf und nimmt sich den IAX, SIP, H323 oder TEL Eintrag. Der Preferenceswert scheint dabei völlig egal zu sein, da Asterisk offensichtlich den DNS in Round Robin Manier abfragt.

    Bei Asterisk kann ich's nicht einstellen, deshalb die Frage: Nutz das Feld überhaupt jemand oder ist das rein akademischer Natur? Nach meinem Verständnis sollte das ungefähr so laufen wie bei dem MX Preferences Eintrag; oder hab ich da was nicht verstanden?

    Danke und flotten tag noch.

    Raffi
     
  2. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Asterisk nimmt derzeit den Eintrag, den es als erstes vom DNS-Server zurückgeliefert bekommt. Eigentlich sollte es erst alle nehmen und dann die Prioritäten beachten, aber soweit ich informiert bin wurde das bis dato noch nicht implementiert. (Weiss auch auswendig grade nicht, ob es überhaupt schon einen entsprechenden bug im bugtracker gibt).
     
  3. Raffi

    Raffi Neuer User

    Registriert seit:
    25 Juli 2004
    Beiträge:
    179
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Danke. Im Bugtraker ist es nicht drin.

    Raffi
     
  4. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Raffi,
    kannst du mal deinen Auszug der extensions posten?
    Ich habe da im augenblick kein gutes Demo/template zur Hand.

    Gruß
    Thorsten.
     
  5. Raffi

    Raffi Neuer User

    Registriert seit:
    25 Juli 2004
    Beiträge:
    179
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  6. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hi
    ich kriege immer ein "EnumLookUp Successfull" - also keine Fehlermeldung vom Enum-Befehl.
    Meine num.conf
    [general]
    search => e164.org
    search => e164.arpa
    search => ns.portunity.de

    mein auszug aus der extionsion ist:
    exten => _1.,1,EnumLookup(49${EXTEN:2})
    exten => _1.,2,BackGround(enum-lookup-successful)
    exten => _1.,3,Dial(${ENUM})
    exten => _1.,4,Goto(106)
    exten => _1.,105,BackGround(enum-lookup-failed)
    exten => _1.,105,Dial(CAPI/464480:b${EXTEN:1},,tT)
    exten => _1.,106,hangup()


    Ich kriege vom Enumlookup aber immer einen leeren string zurück.
    Der Dial sieht auf der CLI so aus:
    -- Executing Dial("SIP/24-a6bc", "") in new stack
    Jul 29 20:24:47 WARNING[327698]: app_dial.c:495 dial_exec: Dial argument takes format (technology1/number1&technology2/number2...|optional timeout)

    any hints?

    noch ne frage: wie hast du denn die abrage gemacht deren output du oben gepostet hast? nslookup?

    Gruß
    Thortsen
     
  7. Raffi

    Raffi Neuer User

    Registriert seit:
    25 Juli 2004
    Beiträge:
    179
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Aus der 105 mach mal eine 102. Dann klappert dat.


    Prompt:> dig 7.6.5.4.3.2.1.4.4.9.4.e164.arpa ANY für 0441-234567.

    Flotten Abend noch.

    Raffi
     
  8. Joe

    Joe Neuer User

    Registriert seit:
    28 Juli 2004
    Beiträge:
    30
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  9. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi
    danke!
    jetzt funktioniert mein enum-dialin - jetzt muss nur noch meine enum-registrierung klappen (die hängt derzeit).

    gruß
    thorsten
     
  10. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi
    mal eine Frage an alle die enum-einträge haben:
    über welchen provider habt ihr euren eintrag bekommen und wie sind die kosten dafür?

    ich habe über www.portunity.net beantragt - aber leider kleine probleme beim "processing" des antrags... (kosten derzeit 0 ¤/Jahr)

    gruß
    thorsten
     
  11. Raffi

    Raffi Neuer User

    Registriert seit:
    25 Juli 2004
    Beiträge:
    179
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
  12. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hi

    imho bietet es nicht jeder der dort gelistet ist auch seinen kunden an....

    gruß
    thorsten
     
  13. portunity.net

    portunity.net Neuer User

    Registriert seit:
    24 Mai 2004
    Beiträge:
    28
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @thorsten.gehrig:

    Die beiden enum-domains wurden am freitag vormittag nochmal nach Ihrem support-request angetriggert, wurden am 30.07.2004 12:05:01:
    zur denic geschickt und sind am 30.07.2004 14:36:48 fertig durch gewesen (sollte von unserem Domainrobot auch mitgeteilt worden sein).

    Bzgl. des Generals-Eintrages in der enum.conf reicht "search => e164.arpa", die "search => ns.portunity.de" ist nicht nur nicht nötig sondern technisch auch falsch (weil wir unter der Subdomain keine Telefonnummern weiter als Subdomain einrichten -> das hat nichts mit auf dem DNS-Server eingerichteten Zones zu tun !).

    @all:

    Wer mehr als einen Service-Eintrag aus einer ENUM-Zone per Asterisk in korrekter Reihenfolge auswerten und nacheinander anwählen will muß dazu "selbst hand anlegen" und darf nicht den integrierten ENUMLookup-Befehl verwenden.

    "selbst hand anlegen" bedeuted hier ein kleines AGI-Script schreiben was per dig den Request selbst macht (wie oben bereits von jemanden geposted), auswertet und mehrere Variablen an Asterisk zurückgibt die dann per Goto entsprechend ausgewerted werden können (alternativ die Priorität verändert).

    Wir haben dies in unserer Firmen-Asterisk erfolgreich implementiert, der Aufwand ist aber mit "nicht mal eben" zu beziffern und erfordert auch entsprechende Programmierkenntnisse.

    Für's erste einfach Routing und für die ersten Gehversuche mit ENUM sollte der bestehende Lookup von Asterisk aber ausreichen. Ansonsten bleibt nur auf eine Erweiterung des bestehenden Asterisk-ENUMLookup-Cmds zu hoffen.

    Björn Rücker
     
  14. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    HI
    ich habe folgendes festgestellt:
    wenn Asterisk einen ENUM-Lookup macht - und die Antwort auf ein SIP-Ziel zeigt meldet Asterisk "Enum Lookup successfull" und wählt.
    wenn die ENUM-Antwort eine TEL-Antwort beinhaltet sagt asterisk "Enum Lookup failed" - obwohl die variable ENUM gesetzt ist (mit dem richtigen ergebniss).
    -> Das ist eigentlich doch ein Fehler! (oder?)

    Erschwerend kommt hinzu dass (bekannerweisse) Asterisk die Prioritäten nicht berücksichtigt - wenn man nun also einen TEL und einen SIP eintrag hat (SIP = 1 Prio, TEL = 2 prio) dann kommt es immer mal zu successfull und zu failed ... je nachdem wie Asterisk gerade will...

    Naja - zumindest wird dadurch teures 0900-er umleiten (als ENUM eintrag) auch unmöglich...

    Gruß
    Thorsten
     
  15. rajo

    rajo Admin-Team

    Registriert seit:
    31 März 2004
    Beiträge:
    1,958
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Eigentlich sollte Asterisk auch Tel-URIs berücksichtigen; wobei zu berücksichtigen ist, dass die Priorität in diesem Fall um 51 erhöht wird. (sonst wird normal weitergerechnet)

    Was es jetzt mit dieser Fehlermeldung auf sich hat, weiss ich auch nicht.

    Gut, das Problem, dass Asterisk nicht die Prioritäten berücksichtigt sondern das nimmt, was das DNS als erstes zurückliefert ist ein bekannter Bug.
     
  16. thorsten.gehrig

    thorsten.gehrig Mitglied

    Registriert seit:
    14 Juni 2004
    Beiträge:
    490
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hi
    das mit dem erhöhen um 51 hab ich im WIKI nicht gefunden - sollte vielleicht mal ergänzt werden (vielleicht mache ich das - nachdem ich es getestet habe).

    ist natürlich sehr sehr hilfreich um wirklich teure umleitungen auf 0900 zumindest abzufangen oder per ansage einen hinweiß auszugeben...
    (BTW: gibt es einen befehl der einem die nummer "vorliest" - ohne festival?)
    EDIT: gefunden: saydigits(${ENUM}) sollte gehen...

    gruß
    thorsten
     
  17. Hupe

    Hupe Aktives Mitglied

    Registriert seit:
    8 Apr. 2004
    Beiträge:
    2,586
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ziffer für ziffer geht das mit SayDigits, als ganze Zahl mit SayNumber.
     
  18. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Warum kann dieses "kleine AGI-Script" nicht einfach mal hier - im Interesse der Allgemeinheit - veröffentlicht werden ?
    :roll:
     
  19. schakal2k

    schakal2k Mitglied

    Registriert seit:
    16 Aug. 2004
    Beiträge:
    309
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Gute Idee, das hätte ich auch gern. :)
     
  20. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    So.
    Nachdem keiner die Lösung des "multiplen ENUM" verraten will, habe ich mir mal einige Zeit den Kopf zerbrochen, wie man das Lösen könnte.
    Der entscheidende Tipp kam von PURtel.com : "Frag doch mal ENUMLOOKUP mehrmals hintereinander ab !"

    Danke Volker !

    :groesste:

    Zuerst wußte ich nicht so recht, was er damit meint, und ich weiß auch immer noch nicht, wie PURtel selbst das löst.

    Also hab ich experimentiert und mir - McGuyver-mäßig aus einer Kugelschreibermine und einem Bindfaden - selbst etwas gebastelt.

    Und siehe da - wie allseits bekannt ist, kann man nicht vorhersagen, WELCHER Eintrag zurückgeliefert wird. Aber die Wahrscheinlichkeit, verschiedene Einträge zurückzubekommen, wächst natürlich mit der Anzahl der ENUM-Abfragen auf die gleiche Rufnummer.

    Daraus habe ich mir einfach mal einen Kontext für meine EXTENSIONS.CONF gebastelt, der insgesamt 5 Mal einen Lookup auf die gewählte Rufnummer macht.

    Ich hoffe, das Ganze ist weitgehend selbsterklärend - zumindest habe ich versucht, das entsprechend zu kommentieren.

    Bestimmt läßt sich das Problem auch eleganter lösen - aber so wie hier beschrieben, funktioniert es ohne jegliches Skript - einfach mit Funktionen, die * für den Dialplan mitbringt.

    Sieht nicht "schön" aus - aber es funktioniert

    Nun sind die Skript-Spezialisten

    http://www.ip-phone-forum.de/forum/viewtopic.php?p=34408#34408

    gefordert - vielleicht kann diese Logik ja jemand in eine "professionelle" Verpackung einhüllen.

    Code:
    
    [enum]
    ;
    ; es werden nur SIP und IAX Einträge berücksichtigt
    ; TEL Einträge werden zwischengespeichert und als "letze Möglichkeit" gewählt,
    ; oder wenn gar kein ENUM-Eintrag vorhanden ist ( extension => 102 )
    ; ACHTUNG: Risiko der unbemerkten kostenpflichtigen Weiterleitung
    ; auf Mehrwertnummern möglich !
    ;
    ; 1. Versuch
    exten => _**., 1,EnumLookup(49${EXTEN:3})
    ; wenn erfolglos geht es direkt nach 102 - eine Funktion von app_enumlookup
    ; wenn TEL Eintrag geht es direkt nach 52 - auch eine Funktion von app_enumlookup
    exten => _**., 2,setvar(EN1=${ENUM}) ; ersten Eintrag sichern für spätere Vergleiche
    exten => _**., 3,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?4:5) ; nur SIP oder IAX verwenden
    exten => _**., 4,Dial(${ENUM},10,r)
    
    ; 2. Versuch
    exten => _**., 5,EnumLookup(49${EXTEN:3})
    exten => _**., 6,setvar(EN2=${ENUM}) ; 2. Eintrag sichern
    exten => _**., 7,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?8:10)
    exten => _**., 8,GotoIf($[${EN2} != ${EN1}]?9:10) ; vergleichen, ob wir den Eintrag schon hatten
    exten => _**., 9,Dial(${ENUM},10,r)
    
    ; 3. Versuch
    exten => _**.,10,EnumLookup(49${EXTEN:3})
    exten => _**.,11,setvar(EN3=${ENUM}) ; 3. Eintrag sichern
    exten => _**.,12,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?13:15)
    exten => _**.,13,GotoIf($[$[${EN3} != ${EN1}] & $[${EN3} != ${EN2}]]?14:15)
    exten => _**.,14,Dial(${ENUM},10,r)
    
    ; 4. Versuch
    exten => _**.,15,EnumLookup(49${EXTEN:3})
    exten => _**.,16,setvar(EN4=${ENUM}) ; 4. Eintrag sichern
    exten => _**.,17,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?18:20)
    exten => _**.,18,GotoIf($[$[${EN4} != ${EN1}] & $[${EN4} != ${EN2}] & $[${EN4} != ${EN3}]]?19:20)
    exten => _**.,19,Dial(${ENUM},10,r)
    
    ; 5. Versuch
    ;
    ; wenn der 5. Versuch keinen neuen SIP oder IAX Eintrag gibt es zwei Möglichkeiten
    ; exten 26 = Auflegen
    ; anstatt aufzulegen, kann eine optionale Prüfung auf TEL-Eintrag erfolgen
    ; dazu müssen beide Sprunadressen in den GotoIf von 26 auf 30 geändert werden
    ;
    exten => _**.,20,EnumLookup(49${EXTEN:3})
    exten => _**.,21,setvar(EN5=${ENUM}) ; 5. Eintrag sichern
    exten => _**.,22,GotoIf($[$[${ENUM:0:3} = SIP] | $[${ENUM:0:3} = IAX]]?23:26) ; bei
    exten => _**.,23,GotoIf($[$[${EN5} != ${EN1}] & $[${EN5} != ${EN2}] & $[${EN5} != ${EN3}] & $[${EN5} != ${EN4}]]?24:26)
    exten => _**.,24,Dial(${ENUM},10,r)
    ;exten => _**.,25,Goto,30 ; als Option: zwangsweise auf TEL-Eintrag prüfen
    exten => _**.,26,Hangup
    
    ; prüfen ob zwischenzeitlich ein TEL Eintrag gefunden wurde
    ; Wenn ja - kostenpflichtig wählen
    ; Wenn nein - auflegen
    exten => _**.,30,GotoIf($[${ENTEL}]?31:32)
    exten => _**.,31,Dial(SIP/0${ENTEL:2}@providerxy,30,r)
    exten => _**.,32,Hangup
    
    
    ; falls TEL-Eintrag gefunden wird, wird dieser in der Variablen ENTEL gespeichert
    ; und der nächste ENUM-Lookup durchgeführt
    ; sollten mehrere TEL-Einträge gefunden werden, wird nur der letzte gefundene gespeichert.
    exten => _**.,52,setvar(ENTEL=${ENUM})
    exten => _**.,53,Goto,5
    exten => _**.,56,setvar(ENTEL=${ENUM})
    exten => _**.,57,Goto,10
    exten => _**.,61,setvar(ENTEL=${ENUM})
    exten => _**.,62,Goto,15
    exten => _**.,66,setvar(ENTEL=${ENUM})
    exten => _**.,67,Goto,20
    exten => _**.,71,setvar(ENTEL=${ENUM})
    exten => _**.,72,Goto,31
    
    ; falls überhaupt kein ENUM-Eintrag existiert, wird die Nummer kostenpflichtig gewählt.
    exten => _**.,102,Dial(SIP/${EXTEN:2}@providerxy,30,r)
    exten => _**.,103,Hangup