Integración Java y Zoho CRM (Eclipse Mars)

Antes de empezar con el código…

¿Qué es un CRM?

CRM (Customer Relationship Management) es la sigla que se utiliza para definir una estrategia de negocio enfocada al cliente, en la que el objetivo es reunir la mayor cantidad posible de información sobre los clientes para generar relaciones a largo plazo y aumentar así su grado de satisfacción

¿ Qué es Zoho CRM ?

Zoho CRM le ofrece una visión completa del ciclo de vida del cliente con el objetivo de establecer en la organización un único sistema de negocio para ventas, marketing, servicio de soporte al cliente y todos los procesos llevados a cabo por el área comercial.

Zoho CRM recopila y gestiona la información de contactos y clientes, creando un histórico para dar un mayor valor a su oferta. Esto permite mejorar la calidad del trato y satisfacción ofreciendo a sus clientes la solución que más se adecue a sus necesidades y fidelizando a estos en el tiempo. Y a la hora de medir resultados, la aplicación genera gráficos, pronósticos e informes personalizados de forma sencilla.

Para integrar Java con Zoho CRM tendremos que añadir las librerías de la api de Zoho.

https://zohoreportsapi.wiki.zoho.com/Java-Client-Library.html

Los jars que deberemos añadir a nuestro proyecto Java son:

  • Commons-codec-1.7.jar – Zoho/lib
  • Commons-httpclient-3.1.jar – Zoho/lib
  • Commons-logging-api.jar – Zoho/lib
  • Csv.jar – Zoho/Lib
  • ZohoReportAPICliente.jar – Zoho/lib

zoho1.png

A continuación, tendremos que generar un TOKEN, con nuestro usuario, para poder atacar a la API de Zoho. (tendremos que crear una cuenta y tener un usuario disponible para poder continuar).

https://www.zoho.com/crm/help/api/using-authentication-token.html#Generate_Auth_Token

Utilizaremos el método de generar el Token a través de URL:

 

EMAIL_ID Specify your Zoho CRM Username or Email ID
scope Specify the value as ZohoCRM/crmapi
PASSWORD Specify your Zoho CRM Password
DISPLAY_NAME Specify the Application Name that describes the purpose of using this AuthToken. For example, «MailChimp» or «Google Apps»

Tras atacar a la url de generación de key, obtendremos en el navegador una respuesta similar a la siguiente:

 

#Wed Feb 29 03:07:33 PST 2012
AUTHTOKEN=bad18eba1ff45jk7858b8ae88a77fa30
RESULT=TRUE

La KEY que hemos generado tendremos que añadirla a nuestro proyecto Java. Crearemos una clase Config.java, donde almacenaremos las variables para poder trabajar con el CRM.

Captura1.png

Una vez tenemos creada la clase Config, vamos a crear algunas clases para poder explotar la API de Zoho CRM.

Para obtener los usuarios registrados y activos, podríamos usar la siguiente clase:

Captura2

Un ejemplo de llamada a la clase GetUsers:
GetUsers.getUsers(«1», «1», «AdminUsers»);

Respuesta:

<?xml version=«1.0» encoding=«UTF-8»?>
<users>
  <user id=«1980680000000099003» zuid=«629741395» website=«null» mobile=«null» fax=«null» phone=«989514518» street=«street 012» city=«Madrid» state=«Madrid» country=«Spain» zip=«null» language=«es_ES» timezone=«PST8PDT» email=«alexortizcamarasa@gmail.com» role=«CEO» profile=«Administrator» status=«active» confirm=«true»><![CDATA[aortiz]]></user>
</users>

Otro ejemplo, para obtener los módulos del CRM:

Captura4.png

Ejemplo de llamada:

GetModules.getModules(«api»);

Ejemplo de respuesta:

<?xml version=«1.0» encoding=«UTF-8»?>
<response uri=«/crm/private/xml/Info/getModules»>
  <result>
     <row no=«1» id=«1980680000000002175» pl=«Posibles clientes» sl=«Posible cliente» gt=«1»>Leads</row>
     <row no=«2» id=«1980680000000002177» pl=«Cuentas» sl=«Cuenta» gt=«1»>Accounts</row>
     <row no=«3» id=«1980680000000002179» pl=«Contactos» sl=«Contacto» gt=«1»>Contacts</row>
     <row no=«4» id=«1980680000000002181» pl=«Oportunidades» sl=«Oportunidad» gt=«1»>Potentials</row>
     <row no=«5» id=«1980680000000002193» pl=«Tareas» sl=«Tarea» gt=«1»>Tasks</row>
     <row no=«6» id=«1980680000000002195» pl=«Eventos» sl=«Evento» gt=«1»>Events</row>
     <row no=«7» id=«1980680000000033015» pl=«Llamadas» sl=«Llamada» gt=«1»>Calls</row>
     <row no=«8» id=«1980680000000002183» pl=«Campañas» sl=«Campaña» gt=«1»>Campaigns</row>
  </result>
</response>

También podemos crear, buscar, editar y eliminar (CRUD) elementos del modelo de datos de nuestro CRM, por ejemplo, en la siguiente clase, insertamos cuentas:

Captura5.png
Ejemplo de llamada:

String xmlAccounts = «<Accounts><row no=\»1\»><FL val=\»Account Name\»>Zillum</FL><FL val=\»Website\»>www.zillum.com</FL><FL val=\»Last Name\»>James</FL>»
+ «<FL val=\»Employees\»>200</FL><FL val=\»Ownership\»>Private</FL><FL val=\»Industry\»>Real estate</FL><FL val=\»Fax\»>99999999</FL>»
+ «<FL val=\»Annual Revenue\»>20000000</FL></row></Accounts>»;
InsertRecords.insertRecords(xmlAccounts, «true», «1», «false», «1», «4»);

Si accedemos al CRM podemos ver como los registros se han ido creando y como aparecen en el apartado de Auditoría de la aplicación:

Captura7.png

Captura6.png

Por último vamos a ver un ejemplo de cómo buscar registros usando la API de Zoho:

Captura8.png

Ejemplo de llamada:

SearchRecords.searchRecords(«(Phone:999999999)»);

Ejemplo de respuesta:

<?xml version=«1.0» encoding=«UTF-8»?>
<response uri=«/crm/private/xml/Leads/searchRecords»>
  <result>
     <Leads>
        <row no=«1»>
           <FL val=«LEADID»>1980680000000102025</FL>
           <FL val=«SMOWNERID»>1980680000000099003</FL>
           <FL val=«Lead Owner»><![CDATA[aortiz]]></FL>
           <FL val=«First Name»><![CDATA[Alex]]></FL>
           <FL val=«Last Name»><![CDATA[Ortiz]]></FL>
           <FL val=«Email»><![CDATA[test@test.com]]></FL>
           <FL val=«Phone»><![CDATA[999999999]]></FL>
           <FL val=«Fax»><![CDATA[99999999]]></FL>
           <FL val=«Mobile»><![CDATA[99989989]]></FL>
           <FL val=«No of Employees»><![CDATA[0]]></FL>
           <FL val=«Annual Revenue»><![CDATA[0]]></FL>
           <FL val=«SMCREATORID»>1980680000000099003</FL>
           <FL val=«Created By»><![CDATA[aortiz]]></FL>
           <FL val=«MODIFIEDBY»>1980680000000099003</FL>
           <FL val=«Modified By»><![CDATA[aortiz]]></FL>
           <FL val=«Created Time»><![CDATA[2016-06-14 03:00:28]]></FL>
           <FL val=«Modified Time»><![CDATA[2016-06-14 03:01:16]]></FL>
           <FL val=«Email Opt Out»><![CDATA[false]]></FL>
           <FL val=«Last Activity Time»><![CDATA[2016-06-14 03:01:16]]></FL>
        </row>
     </Leads>
  </result>
</response>

En el siguiente enlace se pueden consultar los métodos disponibles, ver ejemplos, etc.. :
Consultar la API de Zoho CRM:
https://www.zoho.com/crm/help/api/api-methods.html

Para descargar proyecto de ejemplo (cambiar valores en Config.java):
Zoho.jar

En otro post veremos cómo podemos atacar a la API de Zoho Reports, para obtener informes, gráficos, etc…