Beschreibung
Mit diesem Script is es möglich über das XML_RPC-Protokoll von Greyhound, Kundenkontakte von pixi* in Greyhound zu übertragen und/oder zu aktualisieren.
Was passiert im Script?
Das ganze geschieht zunächst mit dem API-Call "pixiGetChangedCustomers", der alle geänderten oder erstellten Kontakte ab dem gewählten Zeitpunkt ausgibt. Von allen Kontakten die auf diese Weise gefunden wurden, werden die Adressdaten durch einem weiteren API-Call "pixiGetAddress" ermittelt.
Nachdem das Script nun alle nötigen Daten hat, wird eine Suche im Greyhound gestartet, die nach den Kundennummern der vorher gefundenen Kontakten sucht.
Sollte ein Kontakt mit einer übereinstimmenden Kundennummer gefunden worden sein, wird dieses Contact-Item mittels "RpcItems.Put" überschrieben. Sollte Greyhound keinen Kontakt mit der jeweiligen Kundenummer finden, legt er automatisch einen neuen Kontakt mit der Methode "RpcItems.New" an.
Was nutzt das Script für Felder in Greyhound?
Mit dem Script werden folgende Felder beschrieben: Salutation, Firstname, Lastname, Company, Postaddress, Fax, Telephone, Emailaddress und ein eigens erstelltes Benutzerfeld mit der Bezeichnung Kundennummer.
Zur Kundennummer muss ich dazu sagen, dass vor jede Kundennummer "0000" hinzugefügt wird, da die Methode RpcItems.Get probleme hat Kundenummern zu finden, die kürzer als 4 Stellen sind.
Was getan werden muss
Zunächst muss man den Quellcode anpassen, sodass er natürlich den eigenen Greyhoundserver ansteuert.
- define('GREYHOUND_HOST', '123.45.678.910'); // Der Hostname oder die IP-Adresse Ihres GREYHOUND
- define('GREYHOUND_PORT', 443); // Der Port des HTTP-Servers (81)
- define('GREYHOUND_USER', '*******'); // Der Name des Benutzers mit entsprechenden Rechten
- define('GREYHOUND_PASS', '******'); // Das Passwort des Benutzers
- define('GREYHOUND_SSL', true); // Ist GREYHOUND für die Verwendung von SSL konfiguriert?
- define('GREYHOUND_TIMEOUT', 10); // Maximale Wartezeit in Sekunden
Zeilen 52-57
Als nächstes müssen die Methoden, welche die Kontakte hinzufügen, oder aktualisieren, angepasst werden. Z.B. sind die Gruppenreferenznummer, Gruppenname, -pfad und das Subjekt bei jedem anders.
Zeilen 133-136 & 190-192
Nun müssen nur noch die Logindaten für die API angepasst werden. Die Config dazu findet man im Ordner config.d -> pixiapi.inc.php
- $config['pixiapi']['wsdl'] = 'https://pixiDEM:pixidem@ares.api.madgeniuses.net/pixiDEM/?wsdl'; // Pfad zur WSDL
- $config['pixiapi']['endpoint'] = 'https://ares.api.madgeniuses.net/pixiDEM/'; // Endpunkt, falls dieser von dem in der WSDL angegebenen abweicht
- $config['pixiapi']['username'] = 'pixiDEM'; // Benutzername für den API-Endpunkt
- $config['pixiapi']['password'] = 'pixidem'; // Passwort für den API-Endpunkt
Zeilen 4-7
Sobald diese Änderungen vorgenommen worden sind, kann man über den Browser ganz einfach die synchronisieren.php aufrufen und über das Eingabefeld, oder einen Klick auf den Kalender den Zeitpunkt eingeben, ab wann die letzten geänderten Kontakte aus pixi* synchronisiert werden sollen.
Das Script dürft ihr natürlich nach belieben erweitern oder anpassen