[Résolu] API et SOAP PHP => Evenement Agenda

Bonjour,

Je suis en train d’essayer de faire un connecteur Dolibarr ERP/CRM avec Blue Mind sur les événement de l’agenda.

En SOAP, j’arrive a avoir des info.

J’attaque en PHP avec nusoap

Basiquement je fait un
1 - login avec une clef API admin => OK
2- Sudo sur mon user pour lequel je veux trouvé les evnement => OK et je récuper l’équivalent AccesToken en XML
3- findMe pour avoir un max d’info => OK donc CalendarId=3
4- getAllEvents => KO

Voila le bout de code

$soapclient = new nusoap_client ( 'URLdemonBlueMind' );

$datatest = array (
'arg0' => $resultuser, //le Acces token renvoyé par le sudo
'arg1' => $result'id'], //le calendar id renvoyer par findMe
/*
*ICI je voudrait mettre TOUT les type d'evenement mais je n'ai pas trouver ca dans la doc http://docs.blue-mind.net/2/topic/net.bluemind.kb.core.client/reference/api/net/bluemind/core/api/services/ICalendar.html#getAllEvents(net.bluemind.core.api.AccessToken,%20java.lang.String,%20net.bluemind.core.api.calendar.EventType)
*http://docs.blue-mind.net/2/topic/net.bluemind.kb.core.client/reference/api/net/bluemind/core/api/calendar/EventType.html
Si je laisse vide j'ai un NullPointerException 
*/
'arg2' => 'VTODO', 
);
$result = $soapclient->call ( 'getAllEvents', $datatest, 'http://server.soap.bluemind.net/', '' );

Ce qui donne :

Result

Array
(
faultcode => S:Server
faultstring => Calendar 3 does not exist
detail => Array
(
ServerFault => Array
(
code => UNKNOWN
message => Calendar 3 does not exist
)

    )

)

Si vous avez des idées je suis preneur.

Bonjour,

en fait EventType c’est en prévoyance du support des Tâches dans Blue Mind.
Pour l’instant il n’y a que les rendez-vous donc il faut passer
‘arg2’ => ‘VEVENT’,

Bonjour et merci d’avoir pris le temps de me répondre.

Non cela ne fonctionne pas non plus, il me renvoie la même réponse.
Caldendar Id 3 n’existe pas a lors que c’est celui qui m’est renvoyé par findMe

Je vais surtout tester la création d’événement et je reviens vers vous.

Bonjour,

Je suis encore en train d’essayé de récupérer des événements et je n’y arrive pas a chaque fois il me dit que l’id de mon calendrier n’existe pas…

Sinon comment je fait pour utiliser CalendarQuery en SOAP ?

Cdt.

Bonjour,

Je n’arrive pas non plus à crée un événement dans l’agenda.
Avec SOAP UI, je vois toute les methode dispo sur le webservice, je vois bien createEvent mais je ne trouve pas la doc assicier.
J’imagine que c’est un alias pour la methode create de event, mais je n’arrive pas envoyé une date a un format qui lui plaise. Quelle est le bon format ?

voila le bout de script

$eventTocreate'customProperties']=$resultuser'calendarRights']'customProperties'];
$eventTocreate'entityId']=$resultuser'calendarRights']'customProperties']'entityId'];
$eventTocreate'id']=$resultuser'calendarRights']'customProperties']'id'];
//$eventTocreate'timeCreate']=dol_now();
$eventTocreate'alert']=1;
$eventTocreate'allday']=1;
//$eventTocreate'date']=dol_now();
//$eventTocreate'date']='2013-11-02 14:00:00';
$eventTocreate'date']=dol_mktime(14, 0, 0, 11, 02, 2014); //1414933200
$eventTocreate'userCreate']=$resultuser'userId'];
$eventTocreate'ownerId']=$resultuser'userId'];
$eventTocreate'owner']=1;
$eventTocreate'description']='FromDolibarrr!!!';
$eventTocreate'title']='FromDolibarrr!!!';


$datatest = array (
'arg0' => $resultuser,
'arg1' => $eventTocreate);


$result = $soapclient->call ( 'createEvent', $datatest, $ns, '' );

j’obtiens :

Array
(
[faultcode] => S:Server
[faultstring] => ERROR: timestamp out of range: “245825101-06-29 12:00:00.000000 +00:00:00”
[detail] => Array
(
[ServerFault] => Array
(
code => UNKNOWN
[message] => ERROR: timestamp out of range: “245825101-06-29 12:00:00.000000 +00:00:00”
)

    )

)

Re,
Pour essayer de comprendre ce qu’il se passe, j’ai activer les log PgSQL sur appel de la methode getEventAll en SOAP

avec getEventAll(AccesToken, CalendarId, ‘VEVENT’) avec AccesToken qui est le XML de retour de login et CalendarId=3 dans mon cas

2013-11-02 15:59:18 CET LOG: execute : SELECT distinct userbm.id, userentity_entity_id, userbm.timeupdate, userbm.userupdate, password, calendarentity_entity_id, calendarentity_calendar_id, mailboxentity_entity_id, userbm.domain_id, userbm.timecreate, userbm.usercreate, Contact.contact_archive as archive, local, ext_id, status, timelastaccess, login, password_dateexp, account_dateexp, perms, delegation_target, delegation, datebegin, hidden, system, kind, direction, mail_routing, mail_server_id, mail_quota, mail_quota_use, nomade_perms, nomade_enable, nomade_local_copy, email_nomade, vacation_enable, vacation_datebegin, vacation_dateend, vacation_subject,vacation_message , contact_lastname, contact_firstname, contact_title, contact_service, contact_comment , e.email_address , p.phone_number , m.phone_number , domainentity_entity_id, domain_label, domain_name, domain_alias, domain_global, host_name, host_ip, host_fqdn FROM userbm INNER JOIN Contact ON contact_id=userbm.id INNER JOIN UserEntity on id=userentity_user_id INNER JOIN Domain on userbm.domain_id=domain.domain_id INNER JOIN DomainEntity ON domainentity_domain_id = domain.domain_id LEFT JOIN Calendar c ON c.linked_entity = userentity_entity_id AND c.is_default is true LEFT JOIN CalendarEntity ON calendarentity_calendar_id = c.id LEFT JOIN MailboxEntity ON mailboxentity_mailbox_id = userbm.id LEFT JOIN Host on userbm.mail_server_id=host.host_id LEFT JOIN Email e on e.email_entity_id=userentity_entity_id AND e.is_default is true LEFT JOIN Phone p on p.phone_entity_id=userentity_entity_id AND p.phone_label=‘WORK;VOICE;X-BM-Ref1’ LEFT JOIN Phone m on m.phone_entity_id=userentity_entity_id AND m.phone_label=‘CELL;VOICE;X-BM-Ref1’ WHERE 1>0 AND userbm.domain_id = $1 AND login = $2 AND contact_archive IS FALSE ORDER BY contact_lastname, contact_firstname asc
2013-11-02 15:59:18 CET DETAIL: parameters: $1 = ‘2’, $2 = ‘3’

En essayant de lancer cette requette j’ai une erreur PgSQL d’ implicit cast pour la clause AND login = $2. Comme login est un varchar testé l’égalité avec 3 pose problème. Pour que la requête fonctionne, il faudrait mettre la valeur de userbm.login

En refaisant le test en passant getEventAll(AccesToken, ‘userLogin’, ‘VEVENT’) avec userlogin qui est mon login dans userbm
=>Ca fonctionne : Ho joie !

Il semble qu’il manque une documentation de l’API SOAP, comme le WDSL ne nomme explicitement pas les paramètres des méthodes (arg0,arg1,arg2,…), en ce référant uniquement à la documentation de l’API Java, je me suis dit c’est les même paramètres car elle avait 3 arguments aussi.
Peux être que je ne sais pas ou chercher non plus. Si vous avez des info je suis preneur.

J’ai également demandé la création d’un compte sur le redmine. Si jamais je peux aider avec la doc, et également aussi aller plus vite dans mon dev avec un acces gitolite au projet pour ne pas faire du hackingSQL pour comprendre pourquoi ça ne fonctionne pas.

J’espere ne pas vous avoir fait trop mal à la tête. Bon week end.

Voila voila,


$eventTocreate'alert']=1;
$eventTocreate'allday']=0;
$eventTocreate'duration']=1;
$eventTocreate'date']='2013-11-02T11:00:00Z';
$eventTocreate'userCreate']=$resultuser'userId'];
$eventTocreate'ownerId']=$resultuser'userId'];
$eventTocreate'owner']=1;
$eventTocreate'description']='FromDolibarrr!!!';
$eventTocreate'title']='FromDolibarrr!!!';

$attendees'calendarInfo']=array('id'=>3);
$attendees'displayName']='Florian HEnry';
$attendees'id']=4;
$attendees'notify']=1;
$attendees'percent']=0;
$attendees'required']='CHAIR';
$attendees'state']='ACCEPTED';
$attendees'type']='user';

$eventTocreate'attendees']=$attendees;


$datatest = array (
'arg0' => $resultuser,
'arg1' => $eventTocreate);


$result = $soapclient->call ( 'createEvent', $datatest, $ns, '' );

Un événement crées dans le calendrier de l’utilisateur.

Le module connecteur Agenda Dolibarr ERP/CRM => Agenda Blue Mind est sur les rails.

Si vous voulez mettre Résolue dans le titre du topic et le changé par API et SOAP PHP => Evenement Agenda

Non pas mal à la tête, au contraire, bravo pour les recherches et merci pour tout ceci.
Bon travail pour ce connecteur.
Quand vous aurez quelquechose d’exploitable, revenez vers nous, nous pourrons le référencer et communiquer dessus si ça vous intéresse.
Je change le titre/sujet/Résolu
A bientot

L’API SOAP est la même que l’API java dont la documentation est accéssible à cette URL

Justement la doc de l’API ne correspond pas, si je cherche la method getAllEvent (http://docs.blue-mind.net/2/topic/net.bluemind.kb.core.client/reference/api/net/bluemind/core/api/services/ICalendar.html#getAllEvents(net.bluemind.core.api.AccessToken,%20java.lang.String,%20net.bluemind.core.api.calendar.EventType)) je tombe sur getAllEvents(AccessToken token, String calendar, EventType eventType) or le deuxième paramètre c’est pas String calendar, mais String calendarUser ou String “user login of the calendar owner” comme vous voulez.

Donc oui l’API fonctionne trés bien mais la doc de cette méthode en particulier n’est pas très explicite.
En même temps pour jouer avec l’API, il faut bien mettre les main dans le cambouis pour comprendre comment ça fonctionne alors, le truc super avec Blue Mind c’est qu’il est open-source et qu’on peux aller fouiller dans le code pour savoir exactement ce qui est appelé par l’API.

Voila le resultat :

http://www.dolistore.com/lang-fr/crm-gestion-relation-client/307-Agenda-Dolibarr-vers-Agenda-Blue-Mind.html

Cdt.

Nickel, merci à vous !

Merci a iTrust (www.itrust.fr) qui ont financé ce dev avec la mention explicite de “Ça doit être un code libre et diffusé” :wink: