Home > CRM, php > CRM-System vTiger-Integration mittels Webservices

CRM-System vTiger-Integration mittels Webservices

Habe gerade festgestellt, dass ich meinen Blog sträflich vernachlässige. Ich arbeite einfach zu viel an meinen vielen Themen  ;-). Nun jetzt mach ich eine kurze Pause und schreibe endlich mal wieder etwas und zwar aus meiner aktuellen Bastelstube 😉 …

Wie ich an anderer Stelle schon erwähnt habe, haben wir bei system worx haben als CRM-System das OpenSource-System vTiger im Einsatz. Warum, darüber habe ich mich an anderer Stelle schon mal ausgelassen.

Ein CRM-System muss man aber pflegen, damit es seine segensreiche Wirkung entfalten kann. Das kostet natürlich Aufwand. Um diesen zu reduzieren, zapfe ich gerade alle unsere Datenquellen mit Kundendaten an und erzeuge die CRM-Einträge per Cronjob automatisch. Ebenfalls automatisch wird dabei die Historie erzeugt.

Beispiel : Ein Kunde hat 3 Seminare bei uns besucht und unseren Newsletter abonniert. Zusätzlich hat er sich in der Free-Variante unsere Change Controlling Tools registriert. Diese Informationen definieren wir als Aktivitäten und hinterlegen sie automatisch beim Kunden.  Ich denke für jeden nur etwas vertrieblich geprägten Menschen liegt der Nutzen auf der Hand.

Um dieses Ziel zu erreichen, zapfe ich jetzt in einem CronJob alle unsere Datenquellen an und erzeuge bzw update die Geschäftskontakte (Leads im Standard-vTiger) und Kunden (Personen, Organisationen in Standard-vTiger) in unserem System. Zusätzlich schreibe ich die Seminar-Buchungen, Newsletter-Anmeldungen etc. als Historie dort fort. Wenn ich nächste Woche damit fertig bin, pflegt sich unser System quasi von selbst :-).

Integration mittels vTiger Webservices

Um Daten in das CRM-System zu bekommen, gibt es seid vTiger 5.1 die Webservices, mit deren Hilfe dies eine sehr überschaubare Aufgabe ist. Bei der aktuellen Version 5.4 ist diese Schnittstelle jetzt ganz offensichtlich endlich komplett. „Hacken“ muss man zwar schon, aber dieses REST-basierte API ist gut beherrschbar.  Upgrade auf neue Versionen von vTiger sind dann auch möglich, ohne diesen CronJob zu beinträchtigen.

Hier ein paar Code-Beispiele aus meiner Bastelstube, bevor ich ganz am Ende den Link zu einem großartigen Tutorial rausrücke 😉 :


 //url path to vtiger/webservice.php like http://vtiger_url/webservice.php
$endpointUrl = "http://localhost/vtiger540/webservice.php";
//username of the user who is to logged in.
$userName="admin";
//access key of the user admin, found on my preferences page.
$userAccessKey = 'xxxxxxxx';

$ret = vtiger_webservice_login($endpointUrl,$userName,$userAccessKey);
$sessionId = $ret['sessionId'];
$userId = $ret['userId'];

//print_vtiger_info($endpointUrl,$sessionId);

/**
 * Test code
 */
$ret = query_lead_by_mail($endpointUrl,$sessionId,'anton@home.de');
if($ret !== false) {
	echo "Lead gefunden".PHP_EOL;
	$ret['lane'] = 'Hauptstr. 77';
	$ret = update_lead($endpointUrl,$sessionId,$ret);

}
else {
	echo "Lead NICHT gefunden".PHP_EOL;
	$ret = create_lead($endpointUrl,$sessionId,$userId,'Anton','Webservice','anton@home.de','Peergroup','Gummifabrik',
					'Bindfadenstr. 123','45678','Buxtehude','02364 786237');
}
$leadid = $ret['id'];

$event = query_event_by_date_subject($endpointUrl,$sessionId,'2010-10-01','Seminaranmeldung');
if($event !== false) {
	echo "Event gefunden".PHP_EOL;

}
else {
	echo "Event NICHT gefunden".PHP_EOL;
	$eventobj = create_event($endpointUrl,$sessionId,$userId,$leadid,'Seminaranmeldung','Ach lass mich doch in Ruhe','2010-10-01',$eventtypes['CC']);
	if($event !== false) {
		echo "Event erzeugt".PHP_EOL;
	}
} 

Sieht doch ganz beherrschbar aus, oder ?

Noch eine der aufgerufenen Funktionen als Beispiel :


function query_lead_by_mail($endpointUrl,$sessionId,$email)
{
	$httpc = new HTTP_CLIENT();

	//query to select data from the server.
	$query = "select * from Leads where email='".$email."';";
	//urlencode to as its sent over http.
	$queryParam = urlencode($query);
	//sessionId is obtained from login result.
	$params = "sessionName={$sessionId}&operation=query&query={$queryParam}";
	//query must be GET Request.
	$httpc->get("{$endpointUrl}?{$params}");
	$response = $httpc->currentResponse();
	//decode the json encode response from the server.
	$jsonResponse = Zend_JSON::decode($response['body']);

	//operation was successful get the token from the response.
	if($jsonResponse['success']==false) {
		//handle the failure case.
		die('query failed:'.$jsonResponse['message']);
	}

	//Array of vtigerObjects
	$retrievedObjects = $jsonResponse['result'];

	if(count($retrievedObjects)!=1) {
		echo "Keine oder zu viele Treffer ...".PHP_EOL;
		return false;
	}

	unset($httpc);

	//var_dump($retrievedObjects);
	return $retrievedObjects[0];
}

So und hier der versprochen Link zu dem großartigen Tutorial, das mir hier wirklich sehr geholfen hat:

https://wiki.vtiger.com/index.php/Webservices_tutorials

Und nun zurück zu meinen Webservice 😉 …





KategorienCRM, php Tags: , , ,
  1. Bogdan
    7. November 2012, 19:16 | #1

    Hallo Toni,

    hast Du eigentlich herausgefunden, wie man über die Schnittstelle Sonderzeichen (z.B. Umlaute) übermittelt? Datensätze ohne Sonderzeichen kann ich problemlos in VTiger speichern, falls aber mindestens ein Feld ein Sonderzeichen enthält, kann VTiger die Daten offensichtlich gar nicht parsen und beschwert sich über MANDATORY_FIELDS_MISSING, obwohl alle nötige Felder gesetzt sind.

    Danke im Voraus!

    • 7. November 2012, 19:26 | #2

      Hi Bogdan,

      hast Du alle Daten vor der Übergabe an den Webservice in UTF8 umgewandelt ? Das dürfte wohl Dein Problem hier sein.

      Grüße

      Toni

  1. Bisher keine Trackbacks