View
1.201
Download
0
Category
Preview:
DESCRIPTION
Por Franco Pellegrini. Un paseo que expone las posibilidades de integracion entre Plone y Salesforce.
Citation preview
corporate training menttes
● Pellegrini, Franco● frapell@menttes.com
CMS + CRM:Integrando Plone y Salesforce
menttes
Introducción
CRM
(Customer relationship management)
· Administracion de las relaciones con el cliente
· SugarCRM
· ZohoCRM
· Microsoft Dynamics CRM
· Vtiger CRM
menttes
Salesforce
menttes
¿Que podemos hacer?
· Autenticación
· Interactuar con eventos (RSVP)
· Cargar datos desde Plone hacia Salesforce
· Leer datos desde Plone, almacenados en Salesforce
menttes
Productos
· Products.salesforcepfgadapter
· collective.salesforce.authplugin
· collective.salesforce.rsvp
· Products.salesforcebaseconnector
· Products.PloneFormGenRealiza la comunicación con SalesforceSe ocupa de la autenticación
Producto adicional para realizar formularios
Adaptador para utilizar PloneFormGen con Salesforce
Interacción con eventos en Salesforce
menttes
Instalación
menttes
Instalación
menttes
Instalación
menttes
Instalación
menttes
Instalación
menttes
Instalación
menttes
Instalación
menttes
Salesforce
Sin trabajo extra
menttes
Salesforce
Autenticación
menttes
Autenticación
menttes
Autenticación
menttes
Autenticación
menttes
Salesforce
Interacción con eventos(RSVP)
menttes
RSVP
menttes
RSVP
menttes
RSVP
menttes
RSVP
menttes
RSVP
menttes
Salesforce
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Formularios
menttes
Salesforce
Usando la API
menttes
Hablando con Salesforce
>>> sf = app.www.portal_salesforcebaseconnector
>>> sf.describeGlobal()['types']['Account', ........ 'Contact', ....... 'Event', .................]
>>> sf.describeSObjects(['Contact'])[0].fields.keys()[....'FirstName', 'Title', 'LastName', ....... , 'Email', 'Phone', .........]
menttes
Creando contenido
>>> sf.create({'type':'Contact', 'FirstName':'Plone',
'LastName':'Symposium', 'Email':'plone@symposium.com.ar'})
[{'errors': [], 'id': '003A000000SM0jKIAT', 'success': True}]
>>> sf.create({'type':'Contact', 'FirstName':'Plone2',
'LastName':'Symposium', 'Email':'plone@symposium.com.ar'})
[{'errors': [], 'id': '003A000000SM0vgIAD', 'success': True}]
>>> sf.create({'type':'Contact', 'FirstName':'Plone3',
'LastName':'Symposium', 'Email':'plone@symposium.com.ar'})
[{'errors': [], 'id': '003A000000SM0vhIAD', 'success': True}]
menttes
Consultando a Salesforce
Salesforce.com Object Query Language (SOQL)
>>> sf.query("SELECT FirstName, LastName, Email FROM Contact
WHERE LastName='Symposium'")
[{'LastName': 'Symposium', 'type': 'Contact', 'Id': '', 'FirstName': 'Plone', 'Email': 'plone@symposium.com.ar'}, {'LastName': 'Symposium', 'type': 'Contact', 'Id': '', 'FirstName': 'Plone2', 'Email': 'plone@symposium.com.ar'}, {'LastName': 'Symposium', 'type': 'Contact', 'Id': '', 'FirstName': 'Plone3', 'Email': 'plone@symposium.com.ar'}]
menttes
Consultando a Salesforce
Salesforce.com Object Search Language (SOSL)
>>> sf.search("FIND {Plone*}")[{'type': 'Contact', 'Id': '003A000000SM0jKIAT'}]
>>> sf.retrieve(['FirstName', 'LastName', 'Email'], 'Contact', '003A000000SM0jKIAT')[{'LastName': 'Symposium', 'Email': 'plone@symposium.com.ar', 'FirstName': 'Plone'}]
menttes
Actualizando Salesforce
>>> sf.update({'type':'Contact', 'Id': '003A000000SM0jKIAT',
'FirstName':'Plone5', 'LastName':'Symposium5',
'Email':'plone@symposium.com.ar'})
[{'errors': [], 'id': '003A000000SM0jKIAT', 'success': True}]
>>> sf.retrieve(['FirstName', 'LastName', 'Email'], 'Contact', '003A000000SM0jKIAT')
[{'LastName': 'Symposium5', 'Email': 'plone@symposium.com.ar', 'FirstName': 'Plone5'}]
menttes
Eliminando elementos de Salesforce
>>> sf.delete(['003A000000SM0jKIAT', '003A000000SM0vgIAD', '003A000000SM0vhIAD'])
[{'errors': [], 'id': '003A000000SM0jKIAT', 'success': True}, {'errors': [], 'id': '003A000000SM0vgIAD', 'success': True}, {'errors': [], 'id': '003A000000SM0vhIAD', 'success': True}]
menttes
Salesforce + Plone
Preguntas ?
corporate training menttes
Muchas gracias
● Pellegrini, Franco● frapell@menttes.com
Recommended