Asterisk mit LDAP und PHP

xtr|BasiX

Neuer User
Mitglied seit
20 Okt 2006
Beiträge
12
Punkte für Reaktionen
0
Punkte
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 ;)
 
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
 
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([email protected])

PS: Am besten eigenet sich meiner Meinung nach "Kolab" als LDAP-Verzeichnis
 
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
 
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/
 
[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([email protected]) oder ICQ(254151514) an
 
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ß
 
Zuletzt bearbeitet:
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
 
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
 
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
 
pbiene schrieb:
soweit bin ich leider noch nicht. Ich habe über Weihnachten gerade mal ein gemeinsames LDAP-Verzeichnis für VoIP und Thunderbird aufgebaut


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
 
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
 
Zuletzt bearbeitet:
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 !
 
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
 
Email an [email protected]
Wenn du fragen zu bestimmten Sachen haben solltest.
Da können wir auch ersteinmal das grobe besprechen.
 
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.