integración de drupal con sugarcrm - jornada drupal en workbox 2010

22
Jornada Drupal. SugarCRM y Drupal aplicado a la empresa. Introducción SugarCRM SugarCRM como base para desarrollos . ¿ Para qué integrar ? Ejemplos : Integraciones con SugarCRM Uso de iFrames . Compartir el calendario vía vCalendar . Carpeta de correo monitorizada . Uso de WebToLead Acceso a Sugar vía Webservices Implementación : Soluciones disponibles A ) Carpeta de correo monitorizada Configuración . B ) Web To Lead . Método genérico . Mediante módulos de Drupal . Campos personalizados ( Custom ) Ventajas de Webform 2 Sugar Problemas de Webform 2 Sugar C ) Webservice . SugarOnDrupal Limitaciones de SugarOnDrupal Desarrollo de módulos a medida Licencia . Rodrigo Saiz Camarero rodrigo @ regoluna . com twitter.com/turtulino

Upload: rodrigo-saiz-camarero

Post on 25-Jun-2015

1.312 views

Category:

Documents


0 download

DESCRIPTION

Resumen de la charla sobre integración entre Drupal y SugarCRM que di en la I Jornada Drupal en Workbox (Pamplona).Mis disculpas por la maquetación un poco chapucera pero lo he subido con un poco de prisa.

TRANSCRIPT

Page 1: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Jornada Drupal.SugarCRM y Drupal aplicado a la empresa.

IntroducciónSugarCRMSugarCRM como base para desarrollos.¿Para qué integrar?

Ejemplos:Integraciones con SugarCRM

Uso de iFrames.Compartir el calendario vía vCalendar.Carpeta de correo monitorizada.Uso de WebToLeadAcceso a Sugar vía Webservices

Implementación: Soluciones disponiblesA) Carpeta de correo monitorizada

Configuración.B) Web To Lead.

Método genérico.Mediante módulos de Drupal.

Campos personalizados (Custom)Ventajas de Webform2SugarProblemas de Webform2Sugar

C) Webservice.SugarOnDrupal

Limitaciones de SugarOnDrupalDesarrollo de módulos a medida

Licencia.

Rodrigo Saiz [email protected]

twitter.com/turtulino

Page 2: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

IntroducciónNota: Este documento es un resumen de la charla de la Jornada Drupal que tuvo lugar el 26 de Octubre de 2010 en Workbox (Pamplona). Por lo tanto, no tiene por que cubrir todos las posibilidades de integración ente Sugar y Drupal existentes actualmente.

SugarCRM SugarCRM es un sistema para controlar las relaciones con el cliente. Lleva control del proceso desde el momento del contacto (Cliente Potencial) hasta la asistencia posterior a una venta o proyecto (Casos). El objetivo de SugarCRM es automatizar y mejorar tareas de Ventas, Marketing y Atención al cliente. Todo ello con la posibilidad de medir y realizar informes sobre el estado y resultado de todas las acciones. SugarCRM controla:

● Clientes potenciales.● Contactos (personas)● Cuentas (empresas)● Campañas de marketing● Oportunidades ● Casos● Agenda: Eventos, Tareas, Reuniones.● Documentos: Gestión documental muy básica.

Cada una de los registros que controla SugarCRM tiene un comportamiento muy similar. Dispone de 3 vistas diferentes:

● Listado: Muestra todos los elementos de un determinado tipo y permite filtrar.● Vista de detalle: Muestra en detalle un determinado registro y todas sus relaciones

con otros registros. Permite cambiar esas relaciones.● Vista de edición: Permite editar los datos generales de un registro.

SugarCRM como base para desarrollos.SugarCRM dispone de una herramienta integrada para crear nuevos módulos: el Estudio. Los datos de los nuevos módulos tienen la típica estructura de base de datos relacional:

● Cada registro tiene una serie de campos que lo definen. (Equivalente a las columnas)

● Cada registro tiene relaciones con otros registros de otros módulos. (pueden ser 1-n o n-n).

Page 3: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Una vez creado un nuevo módulo este puede modificarse mediante edición directa del código generado y exportarse en forma compatible con el cargador de módulos. Es por lo tanto un candidato excelente para reemplazar los típicos registros que hay en todas las organizaciones basados en hojas de cálculo o bases de datos de escritorio (Access), y sustituirlos por una aplicación completa y 100% web.

¿Para qué integrar?Drupal es un sistema muy modular y extensible. Sería posible obtener toda la funcionalidad de SugarCRM mediante módulos existentes y desarrollos a medida. Sin embargo esto llevaría un gran esfuerzo de implantación y desarrollo. El objetivo de integrar dos aplicaciones como SugarCRM y Drupal es obtener un sistema único con todas los puntos fuertes de cada sistema individual y con un esfuerzo de implantación menor. No se trata de dotar a Drupal de las funcionalidades para actuar como CRM sino de usarlo para todas aquellas tareas para las que no está capacitado Sugar.

Drupal nos proporciona todo aquello que necesitamos para ofrecer una vista web para el público en general. Podemos adaptar dicha vista a distintos perfiles de usuario. SugarCRM sin embargo se asemeja más a una herramienta ofimática típica. Es necesario que los usuarios dispongan de una cierta formación para usarla. Si usamos Drupal en la parte pública y SugarCRM como herramienta de uso interno en nuestra organización obtendremos: Por parte de Drupal:

● Una o múltiples vistas web.● La capacidad de añadir casi cualquier elemento típico de los portales web gracias a

sus cientos de módulos: foros, tiendas, comentarios, comunidades...● Una defensa contra el Spam.● Ilimitadas capacidades de diseño para adaptar la apariencia a tareas de marketing.

Page 4: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Por parte de SugarCRM:● Una herramienta para los departamentos comercial y de soporte.● La posibilidad de gestionar campañas de marketing y de medir su efectividad.

Ejemplos:Los casos más típicos que nos encontramos son:

● Márketing: Drupal se usa para generar sitios web para anunciar determinados productos. Estos sitios buscan obtener datos de “Clientes Potenciales” o incluso peticiones de ofertas. Los datos se pasan a SugarCRM que permite obtener estadísticas de la campaña.

● Soporte técnico: Desde Drupal se ofrece a los usuario autenticados (clientes) un formulario desde donde solicitar ayuda o notificar un problema. Al rellenar el formulario se crea un nuevo Caso en SugarCRM que será tratado por los encargados de soporte.

Integraciones con SugarCRMExisten varias formas de integrar SugarCRM con otros sistemas.

Uso de iFrames.En caso de necesitar mostrar ambas aplicaciones una dentro de otra (Sugar funcionando dentro de Drupal o a la inversa) no nos queda más remedio que recurrir al uso de iFrames. DataSync Suitehttp://www.sugarforge.org/publisher/?group_id=514DataSync Suite nos proporciona una de las mejores formas de mostrar ambas aplicaciones integradas y con un mecanismo de SSO (Single Sign On) lo que nos permite autenticarnos una sola vez y después movernos por ambas aplicaciones. Incrustando las aplicaciones en marcos añade un menú superior con accesos directos a la Administración de Drupal y a las tareas más típicas de SugarCRM. Además añade un tema de administración de Drupal específico.

Page 5: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Aparecen los típicos problemas del uso de marcos, por ejemplo, que al abrir enlaces en pestañas el menú superior se pierde y con él la sensación de una única aplicación. Con esta solución no se intercambian datos entre Drupal y Sugar, pero se comparten los usuarios.

Compartir el calendario vía vCalendar.SugarCRM puede exportar los distintos calendarios de los usuarios mediante el estandar vCalendar. (Debería ser compatible con todo tipo de aplicaciones que soporten iCal)Drupal dispone de varios módulos capaces de importar y mostrar dichos calendarios:

● Calendar: Permite mostrar eventos sobre una vista de calendario● Date: Permite importar eventos creando nuevos nodos.● Feed: También crea nuevos nodos.● iCal: Actualmente en estado “alpha” permitirá una mayor integración de Drupal con

calendarios que soporten iCal. La sincronización es unidireccional (Drupal puede mostrar los calendarios de Sugar pero no modificarlos) por lo que en la práctica, no es una integración que aporte mucho valor.

Carpeta de correo monitorizada.Sugar es capaz de monitorizar carpetas de correo y crear automaticamente “Casos” a partir de nuevos correos. Esto permite disponer de un formulario en Drupal para la atención al cliente. Cada consulta vía formulario se convierte en un Caso.

Page 6: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Uso de WebToLeadSugarCRM dispone de un punto de entrada para la creación de Leads (Clientes potenciales) a través de un formulario web.

El uso de este sistema está siempre asociado a campañas de marketing. Buscamos mediante algún tipo de promoción conseguir que una serie de personas acaben proporcionando sus datos de contacto. Estas personas serán tratadas en el CRM como clientes potenciales. Cada campaña de marketing puede tener asociado un formulario diferente de forma que podemos medir el resultado que está teniendo una campaña determinada. SugarCRM dispone de un mecanismo para generar formularios incrustables en cualquier web. Además existen módulos de Drupal que nos permiten hacer lo mismo de una forma más integrada en Drupal.

Acceso a Sugar vía Webservices A través de los webservices de Sugar se puede modificar cualquier entidad registrada en SugarCRM y las relaciones entre ellas.

Page 7: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

El API expuesto via webservice se mantiene estable durante más versiones que la base de datos. Una integración realizada en base a WS será compatible durante más versiones. Será la solución cuando necesitemos realizar integraciones que impliquen acciones complejas. A través de los webservices de SugarCRM podremos:

● Obtener un listado de registros de cualquier módulo.● Obtener los datos detallados uno o varios registros incluidas las relaciones.● Crear, borrar y modificar entradas.● Crear, borrar y modificar relaciones.● Obtener información del servidor y de los usuarios.● Consultar a que módulos tiene acceso el usuario y obtener información sobre los

mismos. No existe ninguna solución robusta y estable de software libre para compartir datos ente Sugar y Drupal. Para este cometido no nos queda otra opción que realizar un desarrollo a medida e implementar nuestro propio cliente usando SOAP o REST.

Page 8: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Implementación: Soluciones disponibles

A) Carpeta de correo monitorizada No se trata de una integración como tal, puesto que ambas aplicaciones permanecen independientes, sino más bien una forma de relacionarlas usando un sistema intermedio, en este caso, el email. No necesita plugins.

● En el lado de Drupal: Formulario de Contacto (Contact). También se pueden usar otro tipo de formularios más avanzados (Webform).

● En el lado de SugarCRM: Monitorización de carpeta de correo. Desde Drupal se envían email a una cuenta que será monitorizada por Sugar. Los nuevos emails generarán “Casos” en el CRM. Un caso se utiliza para registrar un problema, queja o simplemente una duda que hay que resolver relacionada con alguno de los clientes registrados. Los usos típicos son: atención al cliente, asistencia técnica, gestión de reclamaciones, etc... Con este método no solo podemos registrar en Sugar nuevos casos a partir de un formulario de Drupal, sino que también quedarán registrados todos los emails posteriores en relación a la petición.

Configuración. Desde SugarCRM se configura una nueva cuenta para monitorizar: (Admin -> Email Entrante -> Nueva cuenta de correo de grupo)

Page 9: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Indicaremos los datos de la cuenta a monitorizar y la carpeta remota desde donde se obtienen los emails igual que en cualquier cliente de correo. Indicamos que hay que crear casos desde correos. Revisamos los “planificadores” y nos aseguramos de que está activa la tarea “Check Inbound Mailboxes“ (activa por defecto). Debe existir una tarea programada que invoque el cron de Sugar a intervalos regulares (Ver documentación de SugarCRM). En la parte de Drupal tenemos que configurar un método para que envíe correos a este buzón. El más sencillo de poner en marcha es el propio formulario de contacto de Drupal (módulo contact), aunque existen otros. El módulo “Contact” viene incluido en el Core de Drupal pero está desactivado por defecto. Así que lo activamos y lo configuramos. (Administrar -> Construcción del sitio -> Formulario de contacto) Creamos una nueva categoría en la que indicamos como “destinatarios” la dirección de correo que estamos monitorizando. Hacemos visible el formulario de contacto (damos permisos y creamos una entrada en un menú) y listo. Cada vez que se rellene y envíe el formulario de contacto en Drupal se creará un nuevo caso en Sugar. Si la dirección indicada en el remitente es un contacto en Sugar se asociará el ticket al contacto, si es de una cuenta se asociará la cuenta. Si respondemos al email manteniendo el número de caso en el asunto, toda la conversación quedará asociada al caso.

Page 10: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

B) Web To Lead.Existe una forma genérica de crear formularios para obtener datos de clientes potenciales y otras específicas de Drupal (mediante módulos). En todos los casos, los formularios van asociados siempre a una campaña de marketing, así que lo primero que haremos será registrar una nueva campaña dentro de SugarCRM.

Método genérico.SugarCRM nos permite generar nuestros propios formularios web, modificarlos mediante un editor WYSIWYG y obtener el código para integrarlos en cualquier web. Para crear un formulario de captación de clientes potenciales:

1. En la pestaña de “marketing” elegimos la opción “Nuevo Formulario de Cliente Potencial”

1. El formulario generado tendrá 2 columnas con datos. En la siguiente venta podemos

arrastrar los campos disponibles a cualquiera de las columnas para generar el formulario.

Page 11: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

2. En el siguiente paso del asistente, configuramos las propiedades generales: título,

pié, etc. En este paso podemo indicar una URL para que se haga una redirección después de registrar los datos.

3. Después podremos cambiar la apariencia, textos, colores, etc, mediante el editor de

texto enriquecido.

Page 12: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

4. Y tras aceptar los cambios, nos generará el código (en HTML) que tenemos que incrustar en nuestra página para que se vea el formulario.

Una vez que tenemos el código generado, en Drupal lo insertamos dentro de un nodo, un bloque o una sección (según necesitemos). El formato de entrada debe ser “Full HTML”.

Page 13: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

La configuración por defecto del formato FullHTML de Drupal rompe el formulario generado por Drupal. Es necesario cambiar su configuración y eliminar los todos los filtros. (Configuración del Sitio -> Formatos de Entrada):

Page 14: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Mediante módulos de Drupal.Existen 2 módulos de Drupal disponibles que hacen más sencilla la inclusión de formularios para obtener clientes potenciales:

● SugarCRM Webform Integration: drupal.org/project/sugarwebform● Webform2Sugar: drupal.org/project/webform2sugar

Más moderno que el anterior, más actualizado. Usaremos este último. Webform2Sugar extiende el funcionamiento del módulo Webform (drupal.org/project/webform) permitiendo conectar estos formularios con campañas registradas en Sugar y mapeando los distintos campos del formulario a campos de “Cliente Potencial” en el CRM. AVISO: En el momento de escribir este documento Webform2Sugar solo es compatible con la versión 2.x del módulo Webform. Además la instalación de Webform 3.x no permite una vuelta atrás. Webform permite crear todo tipo de formularios o cuestionarios. Para más información se

Page 15: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

puede consultar drupal.org/project/webform. Antes de poder enlazar formularios en Drupal con Sugar es necesario que haya, al menos una campaña creada. Asociaremos un formulario de Drupal con una campaña. Podemos tener varios formularios que se enlacen con distintas campañas.

1. Creamos la campaña en SugarCRM y obtenemos su ID. La forma más sencilla de obtener este ID es a partir de la URL de la vista de detalle:

Tomaremos el código que aparece entre “record=” y el símbolo “&” (si lo hay). Debe ser un código similar a este: “2706522c-0293-b862-ccc3-4cc06becd7ff” . Todos los identificadores de SugarCRM tienen la misma forma, así que hay que asegurarse de que copiamos el que aparece tras el parámetro “record”.

2. En Drupal, instamos los módulos: Webform, y Webform2Sugar. Configuramos el segundo indicando la dirección del CRM (dominio y carpeta si procede). Si por ejemplo estamos accediendo al CRM en la dirección http://www.midominio.com/aplicaciones/crm, entonces la configuración debería ser:

Page 16: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

3. Creamos un nuevo formulario en Drupal. El módulo Webform habrá creado un nuevo

tipo de contenido: “Formulario Web” o “Webform”. Rellenamos el contenido como un contenido cualquiera de Drupal (Menú, contenido, ect...). Si el módulo Webform2Sugar está correctamente configurado, aparecerá entre las opciones del formulario un campo para introducir el ID de la campaña:

4. Una vez creado el formulario hay que definir cada uno de los campos (componentes) que aparecerán en el mismo. Para cada campo podemos decidir si corresponden a un campo existente en SugarCRM. En este caso se registrarán cada vez que se envíe el formulario. Cada vez que añadamos un nuevo componente al formulario, se nos dará la opción de enlazarlo con un campo existente.

Page 17: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Campos personalizados (Custom)SugarCRM permite añadir campos personalizados a cualquier módulo mediante su herramienta “Estudio”. El problema radica en que si añadimos nuevos campos a los “Clientes Potenciales”, inicialmente no aparecerán en el desplegable. Podemos añadir campos custom al desplegable editando el fichero webform2sugar_fields.php sin embargo, estos valores se perderán al actualizar el módulo. Ejemplo:

1. En SugarCRM vamos a “Studio” (recomiendo entrar en Inglés pues en algunas ocasiones se producen errores en el Estudio con las versiones traducidas). Agregamos un nuevo campo personalizado para Leads (Clientes potenciales):

Page 18: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Lo llamamos “campo_de_prueba”, pero internamente se guardará como “campo_de_prueba_c”. SugarCRM añade “_c” a todos los campos custom.

2. Ahora tenemos que hacer que este nuevo campo esté disponible desde Drupal para poder mapearlo. Editamos el fichero webform2sugar_fields.php dentro del módulo y reemplazamos alguno de los múltiples campos de descripción por el nuevo campo.

Page 19: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Ventajas de Webform2SugarUtilizar el módulo en lugar de incrustar el formulario creado desde SugarCRM tiene varias ventajas:

● Mantiene una apariencia uniforme con el resto del sitio. ● Permite el uso combinado con otros módulos que alteren el funcionamiento del

formulario. Especialmente útiles son los módulos anti-spam.● El acceso al CRM se realiza desde Drupal en lugar de el navegador del usuario. El

punto de entrada del CRM queda oculto. Facilita la protección contra el Spam y los ataques DDoS para los que Drupal está más preparado.

● Permite limitar el número de envíos en un intervalo de tiempo.

Problemas de Webform2Sugar● No es compatible con la versión 3.x de Webform.● Todavía no hay una versión estable.● Los cambios para incluir campos custom se pierden al actualizar el módulo. (Sin

embargo si parece que se va a añadir soporte para campos personalizados en el futuro.)

C) Webservice.

SugarOnDrupaldrupal.org/project/sugarondrupal Nota: Este módulo está en una fase muy inicial de desarrollo. Sin embargo puede ser muy útil para programadores puesto que realiza la conexión inicial y sirve también como referencia para implementar nuevos servicios. SugarOnDrupal permitirá compartir los usuarios de Drupal con SugarCRM actuando como un portal de clientes. Los clientes o contactos podrán modificar los datos que se guardan en el CRM. SugarOnDrupal establece el enlace entre Drupal y Sugar y proporciona un API para ser usado desde otros módulos. Para hacerlo funcionar es recomendable repasar el gestor de incidencias donde se encuentran algunas modificaciones necesarias para poder conectarse vía REST. (SOAP todavía no está soportado).

1. Descarga e instala el módulo SugarOnDrupal. Aplica las modificaciones necesarias y activalo.

2. Configura el módulo ( admin/settings/sugarondrupal/settings ). Configuralo para usar REST / JSON (Es el único que me ha funcionado)

Page 20: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

3. Utiliza el botón “Update Autenticated Session” para comprobar que la conexión se

realiza correctamente:

Si aparece el mensaje “Got a valid session id. Both applications are now connected” ya podemos realizar consultas a SugarCRM usando las funciones de SugarOnDrupal. Un pequeño snippet de ejemplo que obtiene un array con la lista de IDs de todas las cuentas: <?php

$parametros = array( 'module' => 'Accounts' , 'deleted' => false,);$respuesta = sugarondrupal_get_entry_list( $parametros );print_r($respuesta);

?> Para obtener el nombre y el website de una cuenta en concreto: <?php

$parametros = array( 'module' => 'Accounts' , 'id' => ‘6fb15bd9-1cd3-c0a9-a777-4cc1629238b0’,

Page 21: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

'select_fields' => array( 'name', 'website' ),); $cuenta = sugarondrupal_get_entry( $parametros );print_r($cuenta);

?> Para crear una nueva cuenta en Sugar cada vez que se registra un usuario en Drupal, podemos usar el módulo Rules y crear una acción que ejecute el siguiente código PHP: <?php

$parametros = array( 'module' => 'Accounts' , 'name_value_list' => array( array( 'name' => 'name', 'value'=> $account->name ), array( 'name' => 'email1', 'value'=> $account->mail ) ),); sugarondrupal_set_entry( $parametros );

?>

Limitaciones de SugarOnDrupal● Actualmente solo está disponible una versión de Desarrollo.● Por ahora solo soporta el protocolo REST, por lo que es necesario Sugar 5.5 o

superior. (En el futuro parece que está pensado que soporte también SOAP)● Por ahora, no tiene mucha utilidad por si solo aunque si puede funcionar como base

para otros módulos.

Desarrollo de módulos a medidaSugarOnDrupal es un módulo que, por si mismo no nos aporta mucho. Llamar a su API de directamente desde nodos o acciones puede servirnos eventualmente para resolver algún problema o realizar pruebas. Sin embargo lo recomendable es crear un nuevo módulo que defina nuevas acciones asociables a Triggers. De esta forma se puede llevar un control de versiones sobre las mismas y es más fácil reutilizar código entre proyectos. Actualmente la interfaz a través de SOAP está más madura y da menos problemas, especialmente si utilizamos el cliente nuSoap que viene incluido en SugarCRM.

Page 22: Integración de Drupal con SugarCRM - Jornada Drupal en Workbox 2010

Licencia.Este documento se distribuye bajo licencia Creative Commons:

Reconocimiento-CompartirIgual 3.0 Usted es libre de:

● copiar, distribuir y comunicar públicamente la obra● hacer obras derivadas

Bajo las condiciones siguientes:● Reconocimiento: Debes atribuir este documento “Jornada Drupal - SugarCRM y

Drupal aplicado a la empresa” a Rodrigo Saiz Camarero (http://www.regoluna.com).● Compartir bajo la misma licencia: Si altera o transforma esta obra, o genera

una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta.