je souhaite mettre en place un import automatique de ma base client sous mon ERP et un carnet d’adresse “Client” sous Bluemind.
J’ai développé la partie export sous mon ERP et je génère un listing de 4500 contact sous format VCARD.
J’arrive au point de l’import de ce fichier via l’API mais je bloque un petit peu.
Comment fonctionne l’appel de la fonction suivante getContactFromId et surtout, qu’est ce que je suis censé récupérer ?
En PHP, après avoir ouvert ma session, je tente le code suivant:
mais le resultat de getContactFromId ne semble pas être exploitable:
object(stdClass)#5 (0) {
}
PHP Catchable fatal error: Object of class stdClass could not be converted to string in /home/mecadmin/script_php.php on line 11
Même si je n’ai pas bien compris comment récupérer de façon bien propre l’Id du nom du carnet d’adresse ( IdFolder ), je suis arrivé à exporter mes contacts au format VCARD. Désormais, je voudrais en importer un.
La fonction importVCard prend en paramètre le token, l’IdFolder et un string correspondant à la VCARD.
j’ai bien mon token et j’ai récupéré en mode bourrin,l’IdFolder correspondant au carnet d’adresse dans lequel je veux insérer ce nouveau contact.
j’ai construit ma VCARD comme ceci mais je ne suis pas que mon string soit bien construit car l’import ne se fait pas.
Bon, j’avais lu trop vite… comme souvent.
importVCard ne prend pas un IdFolder, mais un folder… du coup, je fais comment pour lui passer ? je suis obligé de déclarer un objet ? Je ne peux pas lui passer l’Id de ce folder ou simplement son nom (ce dernier, j’y crois moyen)
Sauf que, j’obtiens une vilaine erreur Php SOAP:
PHP Fatal error: SOAP-ERROR: Encoding: object has no ‘customProperties’ property in /home/mecadmin/IMPORT_CLIENT_BLUEMIND/script_php.php on line 66
Hm, ces API via SOAP et en PHP… ça ne va pas être simple
Avez-vous pu avancer ?
A priori, il manquerait simplement l’arguement correspondant aux CustomProperties lors du passage de cet objet.
Pouvez-vous nous fournir votre script qu’on fasse des tests ici ?
[quote=Toony]Hm, ces API via SOAP et en PHP… ça ne va pas être simple
Avez-vous pu avancer ?
[/quote]
Pas vraiment, et entièrement d’accord qu’en java directement, tout serait certainement beaucoup plus simple… Sauf que java, c’est loin pour moi … trop loin …
Voilà le script PHP.
L’id 1354 correspond à l’Id du carnet d’adresse dans lequel je veux importer mon contact.
<?php
function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
$serv = new SoapClient('http://ADRESSE_IP_BLUEMIND/soap/proxy?wsdl', array('cache_wsdl' => WSDL_CACHE_NONE));
$login = $serv->login(array('arg0' => 'login_user@domaine.fr', 'arg1' => 'CLE_API', 'arg2' => 'soap'));
$token = $login->return;
if($token->sessionId) {
$VCARD_TEST="BEGIN:VCARD\r\n";
$VCARD_TEST.="VERSION:3.0\r\n";
$VCARD_TEST.="FN:'Rodolphe RASTAQUOUERE'\r\n";
$VCARD_TEST.="N:RASTAQUOUERE;Rodolphe;;;\r\n";
$VCARD_TEST.="EMAIL;TYPE=INTERNET;TYPE=X-BM-Ref1:'rodolphe.rastaquouere@domaine.fr'\r\n";
$VCARD_TEST.="END:VCARD\r\n";
$folder = $serv -> getFolderFromId(array('arg0' => $token, 'arg1' => '1354'));
// echo "Folder OK \r\n";
// print_r($folder);
// print_r($token);
$resultat = $serv -> importVCard(array('arg0' => $token, 'arg1' => $folder, 'arg2' => $VCARD_TEST));
$resultatarray = objectToArray($resultat);
print_r($resultatarray);
}
Je pensais à python, par exemple, plus “proche” de PHP que Java mais qui a un support de SOAP plus intuitif que PHP.
Scala est aussi un bon choix car il permet de manipuler directement les objets Java.