Moin Moin,
kein Problem, hier ist der Code den ich benutze. Ich hab den einfach auf einem alten Windows Server im ISS laufen.
Ich benutze VB.NET und eine Extra Datei für den VB Teil, könnte man aber auch ohne Probleme in einer Datei machen oder auch in C# oder php unter Linux, was auch immer.
Aufgerufen wird die seiten einfach als http://server/getname.aspx?ph=016287654321 das ganze geht auch im Browser und ist damit recht einfach zu testen.
[CODE]
<%@ Page Language=“VB” AutoEventWireup=“false” CodeFile=“getname.aspx.vb” Inherits=“phonesystem_getname” %>
Untitled Page
[/CODE]Und hier die VB Datei.
[CODE]Imports InsuranceDB.DataAccess
Partial Class phonesystem_getname
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim stemp As String = ""
Dim sReturn As String = ""
stemp = "" & Request("ph")
If stemp.Length > 3 Then
sReturn = "<a href=""getname.aspx?bla&context=11&arkey="">" & GetName(stemp) & vbCrLf & "</a>"
End If
lblReturn.Text = sReturn
End Sub
Private Function GetName(ByVal sNumber As String) As String
Dim sName As String = ""
Dim sSQL As String = ""
Dim itemp As Integer = 0
'zuerst noch kurz die Nummer richtig formatieren,
'unsere Datenbank erwartet auch bei deutschen Nummern eine
'Landesvorwahl.
If Not Left(sNumber, 2) = "00" Then
If Left(sNumber, 1) = "0" Then sNumber = Mid(sNumber, 2)
sNumber = "0049" & sNumber
End If
sSQL = "SELECT customerID FROM tblCustomerPhone INNER JOIN tblCountry ON tblCustomerPhone.countryID=tblCountry.countryID " & _
"WHERE REPLACE(countrycode, '+', '00') + REPLACE(number, ' ', '') = '" & sNumber & "'"
itemp = GetData.GetOneInteger(sSQL)
If itemp > 0 Then
sSQL = "SELECT lastname + ' ' + firstname + ' ' + company FROM tblCustomer WHERE customerID=" & itemp
sName = Trim(GetData.GetOneString(sSQL))
End If
'Noch kurz Umlaute umschreiben, keine Ahnung ob es am IIS oder
'an Auerswald liegt, aber ohne diese Änderung kommen sie nicht
'richtig im Telefon an.
If sName.Length > 0 Then
sName = sName.Replace("Ü", "Ü")
sName = sName.Replace("ü", "ü")
sName = sName.Replace("Ö", "Ö")
sName = sName.Replace("ö", "ö")
sName = sName.Replace("Ä", "Ä")
sName = sName.Replace("ä", "ä")
End If
Return sName
End Function
End Class
[/CODE]Das Ausgabeformat ist etwas komisch
Siehe den Link mit der Bezeichnung getname.aspx?bla&context=11&arkey=. Ich hatte zuerst versucht eine neue Online Namessuche zu erstellen aber das hat nicht funktioniert, da hab ich einfach die von der Telekom genommen kopiert und die sucht nach einem Link mit dem komischen Namen. Bei bedarf kann ich gerne die Onlinenamenssuchdatei der Anlage veröffentlichen.
Was fehlt ist der Code für die eigentliche Datenbank Abfrage aber die dürfte wohl eh bei jedem anders sein.
Unser CMS System ist eine Entwicklungsfähig läuft auf einem Microsoft SQL Server und genau den spreche ich direkt von IIS aus an. Da ich nur lesenden Zugriff brauche ist das ganze kein Problem gewesen. Wie es bei anderen CMS Systemen aussieht weiß ich nicht, kommt halt drauf an wo die Nummern stehen. Aber wenn man die in einer Excel Liste oder Access Datenbank oder so hat, ist das recht einfach abzufragen.
Zuerst schaue ich nach ob es die Nummer in der Kundentelefonliste gibt, falls ja, frage ich nach dem Vornamen, Nachnamen und der Firma und das kommt dann als String zurück.
Thomas, was Exchange betrifft, kommt es drauf an was du aus Exchange auslesen willst. Willst du an die Namen/Nummern der Exchange Benutzer oder an die Namen/Nummern aus den OWA Kontakten?
Wenn du die Daten von den Exchange Benutzern haben willst, dann geht das mehr oder weniger einfach übers ActiveDirectory, gibt genug Beispiele bei Google wie man das mit VB.NET (oder was auch immer) abfragt.
Wenn du hingegen an Namen/Nummern aus deinen OWA Kontakten willst wird es etwas komplizierter. Ohne das jetzt näher zu untersuchen fallen mir da drei Möglichkeiten ein.
a) Kontakte regelmäßig in eine Datenbank / XML Datei exportieren und dann die Datei/Datenbank für das Script oben abfragen. (einfach)
b) OWA aus VB.NET aus aufrufen und die Kontakte Abfragen (recht kompliziert und ändert sich wohl auch mit jeder Exchange Version)
c) Zwischen das Script und OWA Davmail setzen. Davmail kann aus OWA raus Kontakte auslesen und die in “relativ” einfachen Strukturen präsentieren. (besser als b) aber wohl auch nichts was man mal eben an einem Tag programmiert
Hoffe ich konnte etwas weiterhelfen.
Gruß,
Christian