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

Asterisk mit LDAP und PHP

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von xtr|BasiX, 20 Okt. 2006.

  1. xtr|BasiX

    xtr|BasiX Neuer User

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    Habe einen Asterisk Server aufgesetzt und ein Adressbuch über LDAP realisiert.
    Das ganze habe ich dann noch in eine PHP Page eingebunden (zum wählen von Nummern oder Suchen von Adressbuch einträgen mit Direkwahlfunktion etc.).

    Wenn jemand sich auch mit so etwas beschäftigen sollte und Fragen hat kann er die ja hier posten ;)
     
  2. Peterli

    Peterli Neuer User

    Registriert seit:
    21 Okt. 2005
    Beiträge:
    51
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Hallo,
    ich möchte mein Snom320 gerne auch LDAP fähig machen. Alle erforderlichen Werte habe ich eingetragen(Server, Port usw), doch wie kann ich diese aufrufen? Im Adressbuch habe ich 3 Einträge manuell hinzugefügt, muss ich diese erst löschen? Wie genau lautet das Format, was ich unter "basis" eingeben muss?

    Gruß Peter
     
  3. xtr|BasiX

    xtr|BasiX Neuer User

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also das LDAP Adressbuch erfüllt primär 2 Funktionen.
    Zum einen kann man sich auf dem Display den Namen des Anrufers anzeigen lassen, sofen dieser als Eintrag im LDAP Verzeichnis existiert.
    Zum zweiten kann man über ein Webinterface in dem LDAP Verzeichnis Einträge suchen und diese auch als Anrufe initiieren.

    Punkt eins erfordert Konfigurationen der ldap.conf und der extentions.conf.
    (relativ simpel)

    Punkt zwei ist relativ komplex da man dieses Webinterface ja selbst implementieren muss. Hierbei kommt es nun darauf an wieviele SIP-Teilnehmer vorhanden sind etc.
    Sicherheit und Zuordnung der einzelnen Telefone zu den Rechnern sind hierbei denke ich die wichtigsten Knackpunkte.

    Nun müsstest du mir sagen wie genau die Lösung für dich aussehen sollte damit ich dir weiterhalfen kann. zB. Nur ein SIP Telefon würde die Angelegenheit sehr vereinfachen.

    Also am besten beschreibst du hier nochmal was du genau brauchst oder du meldest dich per email(xtr_basix@web.de)

    PS: Am besten eigenet sich meiner Meinung nach "Kolab" als LDAP-Verzeichnis
     
  4. Peterli

    Peterli Neuer User

    Registriert seit:
    21 Okt. 2005
    Beiträge:
    51
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Nachdem ich Deinen Eintrag noch einmal gelesen habe, ist mir aufgefallen, dass wir unterschiedliche Ausgangssituationen haben. Ich habe versucht, ein Snom320 direkt per LDAP aufs AD zugreifen zu lassen und Du hast das ja direkt vom Asterisk eingerichtet.
    Unabhängig von meiner Situation bin ich natürlich sehr an Deiner Lösung interessiert. Wär super, wenn Du mir noch Fragen beantworten könntest:
    Welches Display von welchem Gerät meinst Du?
    Wie muss bei Deinem Punkt 1 ldap.conf und extentions.conf optimal konfiguriert werden?
    Ich bin dabei, gerade alle Möglichkeiten einmal auszuprobieren, daher bin ich nicht auf eine Lösung festgelegt. Wie sieht denn Deine (php-) Lösung aus?
    Grüße und Danke für die Antwort!
    Peter
     
  5. foschi

    foschi Guest

    Keine Werbung! ;-)

    Zitat Website: "Unser "Phonebook for Snom-Phones" ist frei verwendbar, steht unter der GPL und ist unser Beitrag an die Asterisk-Community und alle Snom Anwender. Es ermöglicht den Zugriff auf unternehmensweite Telefonbücher, die als LDAP-Verzeichnis oder als MySQL-Datenbank vorliegen."

    http://www.bevuta.com/phoneapps/
     
  6. xtr|BasiX

    xtr|BasiX Neuer User

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    [Edit foschi: bitte demnächst code-Tag benutzen!]

    Welches Display von welchem Gerät meinst Du?
    - Das von deinem Snom320 Telefon

    Wie muss bei Deinem Punkt 1 ldap.conf und extentions.conf optimal konfiguriert werden?
    1) ldap.conf

    Code:
    ; Dieser Eintrag ist für die Suche im Ldap wichtig
    [cidname]
    host = 192.168.xxx.xxx 			; dein Ldap Host (default: localhost)
    port = 389						; dein Ldap Port (default: 389)
    version = 2						; <ldap version> (default: 2)
    timeout = 10					      ; (default: 10s)
    ;User-Account-Daten (optional)
    ;user = 						   ; <user dn> (default: anonymous bind)
    ;pass =        
    base = dc=int,dc=webmatic,dc=de      ; Base DN (deine Ldap Wurzel)
    ; Wo soll gesucht werden (default : sub = ganzer Baum)
    scope = sub 								
    ; Suchfilter (Suche Objekte der Klasse InetOrgPerson mit der übergebenen 
    ; TelefonNr.)
    filter = (&(objectClass=kolabInetOrgPerson)(telephoneNumber=%s)) 
    ; Angabe des Attributes welches zurückgegeben werden soll	
    attribute = cn						; Common Name
    ; Konvertierung (optional)
    ;convert = <source charset>,<destination charset>
    ; example: convert=UTF-8,ISO-8859-1;
    
    Hier siehst du das du dir einen Context(cidname) angelegt hast über den du nun aus deiner extentions.conf eine LDAP-Suche initiieren kannst.

    2) Ausschnitt aus der extentions.conf
    Code:
    ;Anruf annehmen
    exten = _X.,1,Answer()
    ;LDAP-Suche, belege CIDNAME mit dem Ergebnis der Suche
    ;übergib hierzu an den Kontext cidname die Nummer des Anrufers 
    exten = _X.,2,LDAPget(CIDNAME=cidname/${CALLERIDNUM})
    ;Belege den "Displaynamen" des Anrufers mit CIDNAME
    exten = _X.,3,Set(CALLERID(name)=${CIDNAME})
    ;Setze Dialbefehl ab
    exten = _X.,4,Dial(.....,rtT)
    ;Weitere Abarbeitung
    exten = _X.,5,.....
    ;Falls LDAPget fehlschlägt Setze wieder die Nummer als Displayname
    exten = s,103,Set(CALLERID(name)=${CALLERIDNUM})
    ; und gehe zur Priorität 4 zurück
    exten = s,104,Goto(4)
    
    Wie sieht denn Deine (php-) Lösung aus?
    PHP unterstützt verschiedene Befehle (Ldap wie auch Asterisk) ab Vesion 4 glaube ich (ich hab 4.4.2-1 build 1)
    Also du baust dir ne PHP Page und dort kannst du zB. die Befehle :
    Code:
    ldap_connect() , ldap_bind() , ldap_list() , ldap_get_attributes() usw.
    oder auch für Asterisk zB. für die Anmeldung am Ast-Server :
    	# Öffnen einer Socketverbindung zum Asterisk-Server
    	$socket = fsockopen(.....);
    	# Anmelden am Asterisk-Server (manger.conf-Account )
    	fputs($socket, "Action: Login\r\n");
    	fputs($socket, "UserName: " . NAME . "\r\n");
    	fputs($socket, "Secret: " . PASSWORT . "\r\n\r\n");
    
    Für genauere Fragen/Antworten zur PHP Lösung(also Quelltextauszüge etc.) schreib mich bitte per email(xtr_basix@web.de) oder ICQ(254151514) an
     
  7. Peterli

    Peterli Neuer User

    Registriert seit:
    21 Okt. 2005
    Beiträge:
    51
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    #7 Peterli, 11 Jan. 2007
    Zuletzt bearbeitet: 15 Jan. 2007
    Ich habe dazu folgende Seite gefunden: http://www.mezzo.net/asterisk/app_ldap.html und habe nach der Implementation noch ein paar kleine Probleme:
    Beim Filter in der ldap.conf:
    filter = (&(objectClass=...)(telephoneNumber=%s))
    In dem Beipiel auf o.g. Seite und auch auf anderen Seiten steht manchmal vor telephoneNummer eine Pipe -> "|", weiß jemand warum? Wofür ist das?
    Wie ist der Filter aufgebaut bzw wie kann ich mit "%", "*", "s" usw arbeiten und was bewirken sie (Siehe auch o.g. Seite? Gibts einen guten Link?
    Wie ist das mit Umlauten? Ich habe testweise die Konvertierung von UTF-8 zu ISO-8859-1 rausgenommen, da er sonst Fehler meldet. Trotzdem zeigt er mir keine Umlaute an. Was muss ich machen?
    Gruß
     
  8. pbiene

    pbiene Neuer User

    Registriert seit:
    16 Okt. 2006
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Peterli,

    das Zeichen "|" staht nicht für eine pipe, sondern für eine logische "oder"-Verknüpfung. Die Syntax der filter ist übrigens in RFCs beschrieben, insbesondere RFC2254 bzw. RFC3377.

    Ein Überblick findet sich beispielsweise in http://www.selfadsi.de/ldapfilter.htm.

    Peter
     
  9. Peterli

    Peterli Neuer User

    Registriert seit:
    21 Okt. 2005
    Beiträge:
    51
    Zustimmungen:
    0
    Punkte für Erfolge:
    6
    Super! Danke Peter! So was hab ich gesucht.
    Also die Abfrage und die Syntax ist mir jetzt klar und funktioniert auch. Ich habe leider nur noch das Problem mit den Umlauten. Beipiel:

    Die richtigen Namen werden gesucht und gefunden und auch als CIDNAME richtig an die CALLERID "übergeben". Bei verpassten Anrufen bekomme ich auch die Mail aus der Voicemail-Benachrichtigung mit dem richtigen Namen mit Umlauten in der Mail angezeigt!
    Nur auf dem Snom320 wird der Name nach einem Umlaut abgeschnitten...:-(
    Wenn ich von UTF-8 nach ISO-8859-1 konvertiere, dann bringt er mir nur komplett komische Zeichen. Was muss ich machen, damit der Name auf dem Snom richtig dargestellt wird?
    MFG
     
  10. pbiene

    pbiene Neuer User

    Registriert seit:
    16 Okt. 2006
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo Peterli,

    soweit bin ich leider noch nicht. Ich habe über Weihnachten gerade mal ein gemeinsames LDAP-Verzeichnis für VoIP und Thunderbird aufgebaut und musste mich in diesem Zusammenhang mit Filtern beschäftigen. Wegen anderer Prioritäten ist der Routinebetrieb aber bei mir erst mal geschoben.

    Peter
     
  11. southy

    southy Mitglied

    Registriert seit:
    6 Okt. 2004
    Beiträge:
    385
    Zustimmungen:
    0
    Punkte für Erfolge:
    0

    Hallo Peter,

    ui, das klingt jetzt mal sehr interessant.
    Kannst Du da mal genaueres zu preisgeben? Wie weit bist Du denn gekommen? Magst Du das mal irgendwo ein wenig dokumentieren? Würde mich schon interessieren.
    Ich nehme an, daß LDAP für VoIP = als Adressbuch für ein SNOM bedeutet, oder?

    Viele Grüße,
    Southy
     
  12. pbiene

    pbiene Neuer User

    Registriert seit:
    16 Okt. 2006
    Beiträge:
    10
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #12 pbiene, 2 Feb. 2007
    Zuletzt bearbeitet: 2 Feb. 2007
    Hallo Southy,

    im wesentlichen geht es um drei Problembereiche:
    1) Snom und Thunderbird sollten den gleichen Namen anzeigen (andernfalls werden die Mitarbeiter irritiert).
    2) Snom sollte keine Namen anzeigen, für die keine Telefonnummer angegeben ist.
    3) Thunderbird sollte keine Namen anzeigen, dür die es keine Mail-Adresse gibt.

    zu 1) Es gibt im wesentlichen zwei Einträge, die angezeigt werden: displayName und cn. Hier favorisieren die Snoms offensichtlich displayName, während Thunderbird eher auf cn setzt, da Thunderbird von seiner eigenen Struktur eines Adressbuchs ausgeht und diese lediglich auf LDAP umsetzt, vgl:

    http://www.mozilla.org/projects/thunderbird/specs/ldap.html

    Um zu einem einheitlichen Namen zu gelangen, darf also displayName nicht gesetzt sein, so daß in jedem Fall cn angezeigt wird.

    Thunderbird braucht darüber hinaus noch sein eigenes Schema, vgl.

    http://www.pro-linux.de/t_office/openldap-adressbuch.html

    Luma unter KDE ist zwar arg gewöhnungsbedürftig, aber der beste Editor, den ich bisher finden konnte.

    zu 2) Die Snoms bereiten kein weiteres Problem (zumindest nach meiner bisherigen Erfahrung).

    zu 3) Um dem Thunderbird beizubringen, nur Adressen anzuzeigen, für die ein EMail-Eintrag vorliegt, muß man bei der Konfiguration des Adressbuchs auf den Reiter "Erweitert" gehen und kann dort seinen Filter definieren (womit wir beim Thema des Threads wären). Ein einfaches

    (mail=*)

    macht m.E. alles, was es soll.

    Alle übrigen Angaben im Adressbuch sind optional und interessieren weder die Snoms noch Thunderbird.

    Um Mißverständnissen vorzubeugen: am den Snoms gilt das nur für das Wählern per LDAP. Um die zugehörigen Namen eingehender Anrufer anzuzeigen, verwende ich eine serverseitige Lösung (LPADGet), vgl.

    http://www.voip-info.org/wiki-Asterisk+cmd+LDAPget

    Dort funktioniert zumindest bei mir entgegen der Dokumentation der Default-Automatismus für den Filter nicht, so daß man den Filter händisch (z.B. auf den Default-Wert) setzen muß.

    So, das sind in Kurzform meine gesammelten Erfahrungen der Weihnachtszeit. Wie gesagt, wegen anderer Prioritäten werde ich erst Mitte Februar in der Lage sein, weiterzumachen. Ich hoffe, es hat trotzden ein wenig geholfen.

    Peter
     
  13. xtr|BasiX

    xtr|BasiX Neuer User

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Also ich hab mein projekt jetzt erstmal abgeschlossen.
    Asterisk telefon anlage, anrufe über browser initiierbar, adressbuch per ldap, suche im adressbuch mit direkt wahl funktion, auslesen der telefonlogdateien, telefonate(in den logs) deren nummer noch nicht im adressbuch erfasst ist per mausklick einfügen und und und....
    wenn jemand interesse hat einfach mal nachfragen !!!
    für firmen bin ich gegen eine gewisse gegenleistung auch bereit ein ähnliches interface zu erstellen !
     
  14. IHoogen

    IHoogen Neuer User

    Registriert seit:
    22 Mai 2007
    Beiträge:
    26
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Halloechen,

    ich bin zwar eine Privatperson und baue an Asterisk und VoIP auch nur
    Hobby-maessig rum, wurde mich aber trotzdem fuer Deine Loesung interessieren.


    Gruss
    Ingo
     
  15. xtr|BasiX

    xtr|BasiX Neuer User

    Registriert seit:
    20 Okt. 2006
    Beiträge:
    12
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Email an xtr_basix@web.de
    Wenn du fragen zu bestimmten Sachen haben solltest.
    Da können wir auch ersteinmal das grobe besprechen.