Forum: PC-Programmierung Idee gesucht - Outlook-Kontakte nach Telefonanlage


von Frank (Gast)


Lesenswert?

Ich arbeite z.Zt. an einer Software, die mittels Dämon sowohl auf Mac 
als auch PC die Outlook-Kontakte (andere Software mit Adressbüchern 
kommt noch) in gewissen Abständen durchforscht und bei ausreichender 
Qualität (Vollständigkeit) enthaltene Telefonnummern in das 
Telefonverzeichnis von Grandstream-IP-Telfonen übertragen soll.

Alle Teilprobleme sind einzeln gelöst. Aber ich kann mich bei einem 
Aspekt nicht zu einer endgültigen Variante entschließen: Wie bekomme ich 
die von den Dämons gelieferten Daten vom jeweiligen PC/Mac zur 
Server-Software (die dann noch bestimmte Regeln umsetzt und den 
Downloadserver für die Telefone bildet).

- "beame" ich sie per Socket aktiv zum Server
- schreibe ich sie als Datei in eine Freigabe des Servers
- lasse ich sie vom Server per Socket vom PC "saugen"
- lasse ich sie vom Server aus einer Freigabe als Datei lesen

Bitte mal kurz weitere Varianten bzw. das Für und Wider der genannten 
... Danke.

von Robert L. (lrlr)


Lesenswert?

ersteres
nur eher mit z.b. SOAP  oder rest?

dass machte es dann auch in die andere richtung einfacher (also wen man 
iregendwelche infos vom server haben will..)

von Frank (Gast)


Lesenswert?

SOAP bzw. XML hatte ich auch schon angedacht. Aber hinsichtlich der 
"Hackordnung" bin ich eigentlich mittlerweile genau anders herum 
geneigt, quasi einheitlich von "Oben nach Unten":

- Telefone holen Daten von Server
- Server holt Daten von Dämons
- Dämon holt Daten aus Kontakten

... was spricht dagegen?

von MaWin (Gast)


Lesenswert?

> - Telefone holen Daten von Server
> - Server holt Daten von Dämons
> - Dämon holt Daten aus Kontakten
> ... was spricht dagegen?

3 Programme laufen und müssen funktionieren damit die Daten 
transportiert werden.

Ich würde versuchen, mit 1 aktiven Programm auszukommen, falls das geht.

von Frank (Gast)


Lesenswert?

MaWin schrieb:
> Ich würde versuchen, mit 1 aktiven Programm auszukommen, falls das geht.

Schwierig.

Die Telefone (Grandstream GXP 2020) sind eigenständige Geräte und 
versuchen in einstellbarem Abstand, eine XML-Datei von einem Webserver 
zu laden. Gelingt das, wird das interne Telefonverzeichnis aktualisiert, 
gelingt das nicht, bleibt das bisherige erhalten.

Die Server-Applikation läuft auf einem 7/24-laufenden Rackserver. Sie 
versucht die Dämons auf den Arbeitsplätzen zu erreichen, die ohnehin 
nicht immer angeschaltet sind. Kommt die Kommunikation zustande, werden 
die Daten abgeholt, analysiert, formatiert, gefiltert usw. und der 
lokale Datenbestand aktualisiert (den sich dann gelegentlich die 
Telefone holen). Kommt keine Kommunikation zustande, bleibt der lokale 
Datenbestand unverändert

Die Dämons sind "unsichtbare" Hintergrundprogramme, die beim Systemstart 
mit geladen werden und einmal pro Minute prüfen, ob Outlook geöffnet 
(Mac, Applescript) bzw. MAPI (Windows) verfügbar ist. Wenn ja, werden 
die Kontakte ausgelesen. Per Checksumme wird geprüft, ob sich 'was 
geändert hat. Wenn nicht, wird die nächste Server-Anfrage ignoriert bzw. 
mit "none" beantwortet. Hat sich 'was geändert, gehen die gesamten Daten 
'rüber.

Ein Aufdröseln in einzelne Datensätze (nur die neuen bzw. geänderten 
senden) war mir im Moment zu kompliziert, mache ich vielleicht noch ...

von Frank (Gast)


Lesenswert?

Nachtrag zu den Dämons: Die prüfen pro Minute nur, ob sie an die 
Kontakte herankommen können. Eine Analyse auf Veränderung der Kontakte 
findet nur einmal pro Stunde statt.

von hmmmm (Gast)


Lesenswert?

Ich würde die einzelnen PCs die Daten an den Server schicken lassen, 
wieso sollte sich der Server bemühen Clients zu befragen die im Zweifel 
eh nichts zu sagen haben, der Dämon weiß ja selber am besten ob er neue 
Daten hat.
Außerdem würde ich vermeiden das als Dämon im Hintergrund laufen zu 
lassen, sondern einfach mit Outlook mitstarten lassen.

von Peter II (Gast)


Lesenswert?

Ich würde einfach auf einem Server eine Datenbank installienen, jeder PC 
kann dort dann die Daten hinterlegen und die Telefonanlage kann sich die 
Daten rausziehen. Dann kann man auch den abgleich untereinander einfach 
machen.

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Peter II schrieb:
> Ich würde einfach auf einem Server eine Datenbank installienen, jeder PC
> kann dort dann die Daten hinterlegen

Das würde aber bedeuten, dass auf jedem PC Treiber und Zugangsdaten für 
die Datenbank installiert und konfiguriert werden müssten. Wenn die 
Server-App aktiv wird, macht sie einfach einen Portscan durch das 
Subnetz und findet so die Dämons ohne große Konfiguration.

> und die Telefonanlage kann sich die
> Daten rausziehen.

Nicht "die Telefonanlage" zieht die Daten heraus (gibts natürlich auch, 
aber ist in meinem Fall nicht so), sondern die Telefone wollen eine 
XML-Datei per HTTP downloaden ...

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

> Außerdem würde ich vermeiden das als Dämon im Hintergrund laufen zu
> lassen, sondern einfach mit Outlook mitstarten lassen.

Warum? Der Dämon braucht 5 MB und die Systemlast ist quasi nicht messbar 
... ausserdem gibts zumindest unter Windows den Vorteil, dass MAPI (die 
API für den Zugriff auf die Kontaktdaten) auch dann verfügbar ist, wenn 
Outlook garnicht geöffnet ist. Auf dem Mac greift Applescript leider 
nur, wenn gleichzeitig auch die Zielanwendung läuft ...

von Peter II (Gast)


Lesenswert?

Frank Esselbach schrieb:
> Das würde aber bedeuten, dass auf jedem PC Treiber und Zugangsdaten für
> die Datenbank installiert und konfiguriert werden müssten.
Treiber können einfach mit in der anwendung enthalten sein. Zugangsdaten 
können ja fest codiert sein - mit diesen Daten darf man ebend nur 
einträge hinzufügen und nicht lesen.

> Wenn die
> Server-App aktiv wird, macht sie einfach einen Portscan durch das
> Subnetz und findet so die Dämons ohne große Konfiguration.
auch dort musst die den Port konfigurieren oder fest codieren, kein 
unterschied zu datenbank. Und ein Portscann ist ja wohl das dümmste was 
man machen kann, dann doch lieber ein broadcast. Und wenn dann doch mal 
ein pc über ein VPN in einem anderen Subnetzt ist geht es schief.

Bei der Datenabank würde ich ein DNS eintrage anlegen und dieser zeigt 
dann auf dem Server.

von Reinhard Kern (Gast)


Lesenswert?

Hallo,

ich finde eine Lösung ohne zentrale Datenbank von vornherein falsch 
konzipiert, einfach aus betrieblicher Erfahrung: telefoniert ein Kunde 
mit 4 verschiedenen Mitarbeitern, so landen seine Kontaktdaten fast 
unweigerlich in 4facher, aber unterschiedlicher Ausfertigung auf dem 
Server, wenn nicht von vornherein mit einer gemeinsamen Kontaktdatenbank 
gearbeitet wird. Da sowas oft benötigt wird, gibt es auch eine ganze 
Reihe von Programmen dafür, u.a., wenigstens theoretisch, auch ein 
Microsoft Exchage Server. Callcenter haben noch viel ausgefeiltere 
Systeme.

Gruss Reinhard

von Tommy S. (tommys)


Lesenswert?

Hi,

ich schließe mich Reinhard an. Ohne zentralen Server (=Datenquelle) wird 
das nur ein Gebastel. Ich hatte mal ein ähnliches System am laufen, das 
auch automatisiert Kontaktdaten von mehren PCs geladen und 
zusammengeführt hat. Endergebnis war, dass wir uns vor Duplikaten nicht 
mehr retten konnten, alle jeweils mit anderer Schreibweise.

Warum werden bei Dir nicht alle Kontakte global über Exchange Server 
bereitgestellt? Dann hast Du eine einzige Datenquelle, aus der Du 
einigermaßen gepflegte und duplikatfreie Daten erhältst.

Grüße,
TommyS

von J. S. (Gast)


Lesenswert?

Tommy S. schrieb:
> dass wir uns vor Duplikaten nicht
> mehr retten konnten, alle jeweils mit anderer Schreibweise.
Sowas führt man mit einem Script zusammen.

Wer sich Exchange nicht antun möchte, nimmt ODBC und eine 
Access-Datenbank.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.