Webhooks

Advertencia

Le recomendamos consultar a un desarrollador, arquitecto de soluciones o cualquier otra persona con experiencia técnica antes de decidir si usar webhooks y durante el proceso de implementación. Si no se hace una configuración adecuada, los webhooks pueden afectar la base de datos de Odoo y puede tomar tiempo solucionar estos problemas.

Los webhooks, que se pueden crear con Studio, son reglas de automatización activadas por eventos externos con los callbacks HTTP que defina el usuario. Cuando un sistema externo envía datos al URL de un webhook de Odoo (el «activador») con un archivo de datos (la «carga útil»), Odoo responde con una acción predefinida en la base de datos.

A diferencia de las acciones programadas o las llamadas al API, los webhooks permiten comunicación en tiempo real y automatización. Por ejemplo, si se confirma una orden de ventas en un sistema de PdV externo, el inventario de Odoo se puede actualizar de forma automática con un webhook para asegurar que el sistema está sincronizado.

Nota

En esta sección de la documentación aprenderá a crear un webhook que reciba datos de una fuente externa. Sin embargo, también puede crear una acción automatizada que que envíe una llamada API a un webhook externo.

Crear un webhook en Studio

Los webhooks se configuran en Studio y esta configuración se divide entre su activador y sus acciones.

Truco

  • Para configurar un webhook en Odoo no es necesario escribir o entender código al conectarse con bases de datos de Odoo, pero realizar pruebas requiere una herramienta externa como Postman. Es posible que sí necesite escribir o entender código para los registros objetivo o las acciones personalizadas.

  • Active el modo de desarrollador para modificar el modelo objetivo del webhook (como órdenes de venta o información de contacto) y para saber cuál es el nombre técnico del modelo (que puede necesitar para una configuración adecuada de la carga útil).

Configuración del activador del webhook

Para crear un webhook con Studio abra Studio, haga clic en Webhooks y después en Nuevo. Aquí podrá nombrar al webhook, modificar su modelo (el tipo de entrada de información en la base de datos que será el objetivo) si es necesario, y activar si las llamadas que se hagan al URL del webhook se deberán registrar (para rastrear el historial de llamadas del webhook para resolución de problemas).

La URL del webhook se genera de forma automática. Esta es la URL que se debe usar para realizar pruebas del webhook y para conectarlo al sistema externo que enviará las actualizaciones a la base de datos.

Peligro

La URL del webhook es confidencial y debe tratarse con cuidado. Si se comparte en línea o de una forma poco segura podría dar acceso a agentes no deseados en la base de datos de Odoo. Haga clic en Rotar secreto si necesita cambiar la URL.

Por último, si el sistema que envía el webhook no es Odoo, ajuste las acciones en el campo Registro objetivo para que se busque el registro JSON que se incluye en la carga útil de la llamada API cuando se hace una llamada al URL del webhook- Si el sistema que envía el webhook es una base de datos de Odoo, asegúrese de que el ID y el modelo aparecen en la carga útil.

Truco

Aunque el Modelo se configura en Odoo, lo que se debe incluir en la carga útil es el nombre técnico del modelo. Pase el cursor por encima del nombre del modelo y haga clic en el icono (Enlace interno) icon para ver el nombre técnico en el campo Modelo. Por ejemplo, un webhook usa el modelo Orden de venta, pero en la carga útil se usa el nombre técnico sale.order.

Nota

Al crear un registro en la base de datos de Odoo, no se debería usar el formato predeterminado del registro objetivo. Mejor use model.browse(i) o model.search(i).

Configuración de la acción del webhook

Para configurar una acción del webhook vaya a la pestaña Acciones a realizar y haga clic en Agregar una acción. Haga clic en el Tipo de la acción y configure los campos como sea necesario.

Prueba del webhook

Nota

Para probar el webhook primero debe configurar el webhook, tener una carga útil de prueba que se enviará al webhook y una herramienta o sistema externo para enviar la carga útil con una solicitud API POST. Considere usar una herramienta como Postman para que se necesiten menos habilidades técnicas.

Si obtiene un mensaje que diga 200 OK o status: ok durante una prueba, entonces el webhook funciona bien del lado de Odoo. Después de esto puede comenzar la implementación con la otra herramienta para enviar de forma automática esas llamadas de webhook a Odoo con la URL del webhook.

Si obtiene cualquier otra respuesta, el número que se incluya en la respuesta le ayudará a identificar el problema. Por ejemplo, si recibe 500 Internal Server Error significa que Odoo no pudo interpretar la llamada de forma adecuada. Si obtiene este mensaje, asegúrese que los campos en el archivo JSON estén mapeados de forma correcta en la configuración del webhook y en el sistema que está enviando la llamada de prueba. Si habilita el registro de llamadas en la configuración del webhook recibirá registros de errores si el webhook no está funcionando como se espera.

Implementación del webhook

Una vez que haya configurado el webhook, comience a conectarlo al sistema que envía los datos a la base de datos de Odoo a través de este webhook. Asegúrese que las llamadas API se envíen al URL del webhook cuando configure ese sistema.

Casos de uso del webhook

A continuación encontrará dos ejemplos sobre cómo usar los webhooks en Odoo. Para estos webhooks necesita herramientas externas (que se mencionan en el ejemplo).

Advertencia

Póngase en contacto con un desarrollador, arquitecto de soluciones o cualquier otra persona con experiencia técnica antes de decidir si implementar webhooks. Si no se hace una configuración adecuada, los webhooks pueden afectar la base de datos de Odoo y puede tomar tiempo solucionar estos problemas.

Actualizar la moneda de una orden de venta

Este webhook actualiza el total de una orden de venta en la aplicación Ventas a USD. Es muy útil para filiales que se encuentran fuera de los Estados Unidos, pero cuya empresa matriz sí está dentro de ese país. También es útil durante fusiones, cuando se deben consolidar los datos dentro de una misma base de datos de Odoo.

Configuración del activador del webhook

Para configurar este webhook, primero abra la aplicación Ventas. Después, configure el activador para que el Modelo sea Orden de ventas. También debe configurar el Registro objetivo como model.env[payload.get('model')].browse(int(payload.get('id'))). Esta información se desglosa a continuación.

  • model: Qué se actualizará en Odoo (en este caso, las órdenes de venta). Esto coincidirá con el Modelo que haya configurado antes.

  • env: Dónde sucede la acción. En este caso es Odoo.

  • payload: La carga útil, qué es lo que se envía a la URL. Esto contiene la información con la que se actualizará la orden de ventas.

  • get(“model”): Le indica al webhook qué registro de la base de datos debe buscar. En este caso, el webhook obtiene (get) los datos vinculados a un modelo (model) específico. En este ejemplo, el modelo es la Orden de ventas.

  • browse: Le indica al webhook que debe buscar qué actualizar en el model (Orden de ventas).

  • int: Convierte el objetivo en un integer (un número entero). Esto es importante en caso de que se incluyan palabras (una string) o números decimales en el registro objetivo de la carga útil.

  • get(“id”): Identifica el número de la orden de venta que se actualizará en Odoo.

Configuración de la acción del webhook

Después de configurar el activador, haga clic en Agregar una acción para configurar la acción del webhook. En Tipo haga clic en Actualizar registro. Después, seleccione Actualizar, en el campo Moneda seleccione USD para actualizar el campo moneda a USD. Por último, haga clic en Guardar y cerrar.

Resumen de la configuración del webhook

Como resumen de la configuración, el objetivo del webhook es la orden de ventas, que se identifica con el número de la orden de venta, y actualiza la moneda a USD cuando se envía una solicitud POST a la URL del webhook en la que se incluya el número de esa orden de venta (que se identifica con el registro id de la carga útil).

Prueba del webhook

Pruebe la configuración del webhook para asegurarse de que todo sea correcto. En este proceso se utilizará una herramienta llamada Postman para enviar la simulación de un activador.

En esta sección se explicarán los pasos para probar este webhook en Postman, pero aquí no encontrará ayuda si surge un problema con dicha herramienta. Para obtener ayuda específica sobre Postman, póngase en contacto con su equipo de soporte.

Cree una nueva solicitud HTTP después de abrir Postman y configure el método como POST. Después, copie la URL del webhook que va a probar y péguela en el campo URL de Postman. Después, haga clic en la pestaña Body y seleccione la opción raw. Seleccione JSON como tipo de archivo, luego copie el siguiente código y péguelo en el archivo.

{
    "model": "sale.order",
    "id": "SALES ORDER NUMBER"
}

Ahora debe seleccionar una orden de venta en la que quiera probar el webhook. Si no es posible hacer la prueba en una base de datos en producción de Odoo, considere crear una base de datos de demostración con una orden de venta de ejemplo y el webhook que se configuró. Por ejemplo, una orden de venta con el número S00007 debe ingresarse como 7 en Postman. Por último, en Postman haga clic en Enviar.

Si obtiene un mensaje que diga 200 OK o status: ok, entonces el webhook funciona bien del lado de Odoo y se habrá actualizado la moneda de la orden de venta. Después de esto puede comenzar la implementación con la otra herramienta para enviar de forma automática esas llamadas de webhook a Odoo con la URL del webhook.

Si obtiene cualquier otra respuesta, el número que se incluya en la respuesta le ayudará a identificar el problema. Por ejemplo, si recibe 500 Internal Server Error significa que Odoo no pudo interpretar la llamada de forma adecuada. Si obtiene este mensaje, asegúrese de que los campos model y id están mapeados de forma correcta en la configuración del webhook y en Postman.

Crear un nuevo contacto

Este webhook usa código personalizado para crear un nuevo contacto en una base de datos de Odoo. Esto pueder ser útil para crear nuevos proveedores o clientes de forma automática.

Configuración del activador del webhook

Para configurar este webhook, primero abra la aplicación Contactos. Después, configure el activador para que el Modelo sea Contacto. También debe configurar el Registro objetivo como model.browse([2]). Esta información se desglosa a continuación.

  • model: Qué se actualizará en Odoo (en este caso, un contacto). Esto coincidirá con el Modelo que haya configurado antes.

  • browse: Le indica al webhook que debe buscar qué crear en el model (los contactos).

Configuración de la acción del webhook

Después de configurar el activador, haga clic en Agregar una acción para configurar la acción del webhook. En Tipo haga clic en Ejecutar código y en código inserte el código de ejemplo que se incluye a continuación. Por último, haga clic en Guardar y cerrar.

# variables to retrieve and hold data from the payload
contact_name = payload.get('name')
contact_email = payload.get('email')
contact_phone = payload.get('phone')

# a Python function to turn the variables into a contact in Odoo
if contact_name and contact_email:
    new_partner = env['res.partner'].create({
        'name': contact_name,
        'email': contact_email,
        'phone': contact_phone,
        'company_type':'person',
        'customer_rank': 1,
    })
# an error message for missing required data in the payload
else:
    raise ValueError("Missing required fields: 'name' and 'email'")

Resumen de la configuración del webhook

Como resumen de la configuración realizada, el webhook crea un contacto cuando se envía una llamada API al URL del webhook en la que se incluya la información del contacto.

Prueba del webhook

Pruebe la configuración del webhook para asegurarse de que todo sea correcto. En este proceso se utilizará una herramienta llamada Postman para enviar la simulación de un activador.

En esta sección se explicarán los pasos para probar este webhook en Postman, pero aquí no encontrará ayuda si surge un problema con dicha herramienta. Para obtener ayuda específica sobre Postman, póngase en contacto con su equipo de soporte.

Cree una nueva solicitud después de abrir Postman y configure el método como POST. Después, copie la URL del webhook que va a probar y péguela en el campo URL de Postman. Después, haga clic en la pestaña Body y seleccione raw. Elija JSON como tipo de archivo, luego copie el siguiente código y péguelo en el archivo.

{
    "name": "CONTACT NAME",
    "email": "CONTACTEMAIL@EMAIL.COM",
    "phone": "CONTACT PHONE NUMBER"
}

En Postman reemplace los campos anteriores con la información del contacto nuevo y después haga clic en Enviar.

Si obtiene un mensaje que diga 200 OK o status: ok, entonces el webhook funciona bien del lado de Odoo y aparecerá el nuevo contacto en la aplicación Contactos. Después de esto, puede comenzar la implementación con la otra herramienta para enviar de forma automática esas llamadas de webhook a Odoo con la URL del webhook.

Si obtiene cualquier otra respuesta, el número que se incluya en la respuesta le ayudará a identificar el problema. Por ejemplo, si recibe 500 Internal Server Error significa que Odoo no pudo interpretar la llamada de forma adecuada. Si obtiene este mensaje, asegúrese de que los campos en el archivo de JSON están mapeados de forma correcta en la configuración del webhook y en Postman.