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

ldapget: die eingehende Rufnummer in einen Namen wandeln

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von yuraukar, 28 Okt. 2005.

  1. yuraukar

    yuraukar Neuer User

    Registriert seit:
    23 Feb. 2005
    Beiträge:
    92
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich möchte gern eingehende Nummern in einen Namen wandeln um zu sehen wer mich anruft. Die Nummern und Namen liegen bereits in einem LDAP Verzeichnis. ldapget wäre hierfür die erste Wahl.

    Aber: es gibt ja nun unterschiedliche gültige Schreibweisen für eine Rufnummer, z.B. sind
    +49 30 9994531
    0049 30 999-4531
    030 999 4531
    (030) 9994531
    alles die gleiche Rufnummer. Wie kann ich nun eine quasi unscharfe Suche machen?
    Schwierig sind (a) Leerzeichen und Bindestriche (b) optionale Ländervorwahlen per + oder 00 (c) Stadtvorwahlen mit oder ohne 0 und Klammern.

    Hat da jemand schon eine Lösung?
     
  2. Dakapo

    Dakapo Mitglied

    Registriert seit:
    10 Aug. 2004
    Beiträge:
    380
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Beruf:
    Dipl. Wirtschaftsinformatiker (FH)
    Ich habe bei mir ein kleines Skript geschrieben, welches die Rufnummern in eine einheitliche Form bringt. Oder sind die Daten im LDAP-Verzeichnis auch auf unterschiedliche Weise hinterlegt?
     
  3. yuraukar

    yuraukar Neuer User

    Registriert seit:
    23 Feb. 2005
    Beiträge:
    92
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Die Daten liegen im LDAP ggf. unterschiedlich vor.

    Insbesondere Leerzeichen und Bindestriche sind dort sogar ausdrücklich gewünscht um die Nummern lesbarer zu gestalten -- sie sind halt nicht nur für Asterisk gedacht.

    Wie sieht Dein script denn ansonsten aus?
     
  4. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Dann hast Du wahrscheinlich ganz schlechte Karten. Denn die Daten, die vom LDAP-Server kommen, kannst Du nicht mal eben so "unscharf" machen.
     
  5. lo4dro

    lo4dro Mitglied

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    656
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Du benötigst ein Script, das
    a) nach dem Auslesen aus dem ldap
    b) und die eingehende Nummer
    "normalisiert" wird.

    Wie so ein Regelwerk aussehen kann, must du dir selber ausdenken.
     
  6. cibi

    cibi Mitglied

    Registriert seit:
    6 Apr. 2005
    Beiträge:
    561
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Ba-Wü
    Älteres Thema, stehe aber gerade vor dem gleichen Problem.

    Ich habe die Rufnummern im Format "+49-1234-567890" gespeichert.
    Bei mir funktioniert folgendes:

    Code:
    [cidname]
    host = localhost
    ; user =
    ; pass =
    base = ou=address,dc=ich,dc=lokal
    filter = (&(objectClass=*)(|(telephoneNumber=*%s)(mobile=*%s)(fax=*%s)(homePhone=*%s)))
    attribute = cn
    convert = UTF-8, ISO-8859-1
    
    Ein AEL Bespiel fuer eingehende Anrufe via ISDN
    Code:
        123456 => {
            clen=${LEN(${CALLERID(number)})};
            NoOp(Length of the caller id ${clen});
            // Nummer sollte nicht zu kurz sein, um falsche Suchergebnisse zu vermeiden
            if (${clen} > 6 ) { // Achtung Klammer nicht versetzten
                num=${CALLERID(number):1}; // Nummer um erste Null kuerzen, fuer internationle Anrufer muesste man das aendern
                LDAPget(CALLERIDNAME=cidname/${num},${num},${num},${num}); // "unscharfe" Suche (in ldap.conf eingestellt) nach CALLERID
            };
            Dial(LOCAL/41,60,tw);
            Hangup();
        };
    

    Allerdings sollte man vorher nochmal genau testen/nachlesen, damit es nicht zu falschen Suchergebnissen kommt.

    Ein Alternative zu einem AGI wäre eventuell wenn man z.B. beim Start von Asterisk oder per cron eine Liste aus dem LDAP Verzeichnis erstellt, das die Rufnummern entsprechend umwandelt und man dann entweder eine extra LDAP Liste anlegt oder die neue Liste in die Asteriskdatenbank schreibt.
    (Natürlich kann man auch die eigentlichen LDAP Einträge ergänzen).
     
  7. betateilchen

    betateilchen Grandstream-Guru

    Registriert seit:
    30 Juni 2004
    Beiträge:
    12,882
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    am Letzenberg
    Wenn alle Nummern im gleichen Format vorliegen, ist das ja alles kein Thema. In der ursprünglichen Fragestellung ging es aber darum, daß das genau nicht der Fall ist.
     
  8. cibi

    cibi Mitglied

    Registriert seit:
    6 Apr. 2005
    Beiträge:
    561
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ort:
    Ba-Wü
    Na ja, zumindest
    0049 30 999-4531
    030 999 4531
    +49 30 9994531
    aus dem ersten Beitrag stellen kein Problem mit meinem BSP dar, (030) 9994531 geht nicht.
    Außerdem war die Frage ja auch noch
    So wie ich zumindest das Thema gelesen hatte, dachte ich, das es mit LDAPget gar nicht geht