Última actualización el 23 de agosto de 2022 por Rakesh Gupta
¿Qué es un webhook?
Cada vez que se conectan dos sistemas separados, pueden comunicarse entre sí a través de Internet mediante el envío y la recepción de mensajes. Uno de los sistemas puede ser el sistema de recepción y el otro el sistema de envío , pero a veces pueden cambiar roles dependiendo de la integración. El sistema de recepción expone lo que llamamos una API ( interfaz de programación de aplicaciones ), que consiste en una lista de puntos finales, cada uno de los cuales espera un tipo diferente de mensaje.
Los mensajes generalmente consisten en una dirección donde vive el sistema receptor (URL), un método que determina qué pretende hacer el sistema emisor con los datos ( GET , POST , DELETE , etc.), y luego el cuerpo del mensaje en sí. El cuerpo del mensaje que se envía tiene un formato específico para ese extremo. Si el sistema receptor recibe lo que espera y todo va bien, devuelve un mensaje de respuesta, que consta de un código de respuesta (es decir, 200 = éxito, 400 = solicitud incorrecta, 500 = error del servidor, etc.) y un cuerpo de respuesta. Esto es lo que llamamos un webhook.
Las API REST suelen utilizar elformato JSON para intercambiar mensajes. El formato JSON es un formato de intercambio de datos que simplifica la lectura y escritura de datos tanto para humanos como para máquinas.
¿Cómo puede crear Webhooks en Salesforce?
Salesforce puede estar tanto en el lado de envío como en el lado de recepción de una integración. Salesforce ya tiene una API REST para extraer y manipular datos, por lo que puede actuar como un sistema de recepción básico. De fábrica, Salesforce también puede actuar como un sistema de envío en el que puede enviar de forma declarativa mensajes muy simples a otras API.
Las cosas se complican cuando desea integrarse con API REST más complejas. Las opciones que tienes por ahí tienen algunos inconvenientes. Exploremos las opciones.
Apéndice
Una opción común es construir la integración desde cero usando Apex, el lenguaje de programación back-end de Salesforce. Con Apex, puede implementar llamadas salientes y terminales entrantes, de modo que su organización pueda actuar como sistema de envío y recepción. Puede usar la clase HttpRequest para generar llamadas salientes a una API REST externa. Luego puede usar RestResource para crear un punto final donde un sistema externo puede enviar mensajes.
Implementar la integración en Apex puede brindarle mucha flexibilidad en las necesidades de integración y, si se hace correctamente, una integración muy estable.
Desafortunadamente, también tiene algunos inconvenientes. Primero, requiere habilidades de programación de Apex. Con la escasez de desarrolladores en el ecosistema, esta se convierte en una opción costosa para integrar con una API REST personalizada. Otro inconveniente es que, si no se hace correctamente, la integración puede volverse poco confiable y bastante difícil de depurar. Además, la solución puede ser difícil de mantener ya que, para realizar un cambio, debe crear un espacio aislado, realizar el cambio allí y luego implementar los cambios en producción.
software intermedio
Otra opción para integrar 2 sistemas es usar una aplicación de integración de middleware , como Zapier o Workato . Las aplicaciones como estas no viven en ninguno de los sistemas, sino que pueden conectarse a ambos sistemas a través de la API y los registros de sincronización.
Para poder usar un middleware, ambos sistemas necesitan exponer una API. Entonces, ambos sistemas actuarán como un sistema receptor para el middleware. Además, el middleware necesita conectores predefinidos para conectarse a cada sistema. Por lo general, tienen conectores para API de uso común como Salesforce o Google, pero las API REST patentadas o menos populares no, por lo que no puede conectarse fácilmente a ellos usando esto.
Las integraciones de middleware pueden dificultar la reacción a los cambios de datos en tiempo real para sincronizar datos entre sistemas. También puede ser bastante caro.
Webhooks declarativos
¿No sería genial si pudiéramos implementar una integración que:
- No requiere código
- Es fácil de actualizar incluso sin un sandbox
- Es confiable y robusto.
- Es flexible y le permite usar cualquier API REST basada en JSON
- ¿Se puede incrustar declarativamente en su proceso de negocio?
- Es seguro y nativo de la plataforma Salesforce
¡Ahí es donde entran en juego los webhooks declarativos !
¡Omnitoria pasó muchos años construyendo integración tras integración para sus clientes! ¡Era hora de usar la experiencia para poner el poder y la flexibilidad en manos de los administradores de Salesforce!
¿Cómo pueden los webhooks declarativos ayudarlo a integrar Salesforce con API externas?
Webhooks declarativos es una aplicación que vive en Salesforce. Le ayuda a conectarse a cualquier API REST, sin importar si es una API privada o cuán popular es, ¡y no necesita un desarrollador! Con un poco de conocimiento de JSON y la documentación de la API, puede crear y usar llamadas salientes y oyentes de webhook entrantes. Con Webhooks declarativos, puede estar tanto en el lado de envío como en el de recepción de una integración.
Llamadas salientes
Para realizar llamadas a una API externa, los webhooks declarativos utilizan plantillas de llamadas. Una plantilla de llamada es el modelo de una llamada. Cuando edita una plantilla de llamada, puede definir los detalles del mensaje: la URL, el método, los detalles de autenticación, los encabezados y el cuerpo JSON. Para todos estos detalles, puede definir la asignación de campos desde sus objetos de Salesforce.
La potente interfaz JSON Builder facilita la definición de nodos JSON, asigna campos en ellos, define fórmulas basadas en campos, etc. Le permite definir JSON de prácticamente cualquier complejidad y asignar campos a partir de objetos relacionados, listas relacionadas, etc.
Después de definir los detalles de la llamada, puede definir qué acciones desea realizar. Puede actualizar el registro desde el que comenzó, crear y actualizar registros relacionados, etc. Luego puede probar una plantilla de llamada desde la página de prueba integrada.
Después de definir, probar y activar una plantilla de llamada, puede llamarla automáticamente desde un flujo, un generador de procesos, un botón personalizado en un diseño de página, puede programarla para que se ejecute regularmente e incluso puede iniciarla con Apex.
Se registran todas las llamadas que se realizan, ya sea desde la página de prueba o cualquier implementación. Puede ver un historial de todas las llamadas realizadas, con todos los detalles del mensaje, así como el código de respuesta y el cuerpo de la respuesta, para depurar fácilmente cualquier problema de integración.
Cuando define una plantilla de texto destacado, también puede configurar una estrategia de reintento. Puede configurar una plantilla para volver a intentar una llamada hasta 5 veces, en intervalos personalizables. Todas las llamadas que se realizan automáticamente desde Flujos, Process Builder o trabajos programados se volverán a intentar automáticamente si la llamada falla y se configura el reintento.
Llamadas entrantes
Con Webhooks declarativos, Salesforce también puede actuar como sistema de recepción con plantillas de llamadas entrantes.
De manera similar a las Plantillas de llamada, cuando define una Plantilla de llamada entrante, tiene la opción de elegir qué acciones tomar cuando entra una llamada entrante, así como la respuesta para enviar a la persona que llama. Puede hacer que la plantilla sea pública (si desea que cualquier persona con el enlace pueda enviar llamadas) o privada (solo los sistemas autenticados pueden realizar llamadas).
Similar a la llamada saliente, la interfaz JSON Builder lo ayuda a definir la respuesta JSON de cualquier complejidad y asignarle campos.
Una vez activada, la plantilla actuará sobre cualquier llamada entrante que llegue a su URL definida. Puede verificar la actividad en los registros de llamadas. Puede ver cuál fue la solicitud y cómo respondió la plantilla.
Secuencias de llamadas
Cuando tiene que enviar varias llamadas una tras otra, puede usar secuencias de llamada. Por ejemplo, necesita integrarse con múltiples sistemas basados en una actualización de registro, o desea enviar datos a dos puntos finales diferentes. Puedes definir qué llamadas hacer en una secuencia y qué criterios usar para decidir cuándo hacer una u otra llamada.
Conclusión
Entonces necesita integrar Salesforce con otro sistema. Quiere una solución de Salesforce flexible pero robusta que pueda configurar usted mismo y que no rompa su banco. ¡ No hay mejor manera de lograrlo que los webhooks declarativos !
Evaluación formativa:
¡Quiero saber de ti!
¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/08/23/easier-and-more-scalable-salesforce-integration-with-declarative-webhooks-2/