Solicitud Odoo
Consulta su Odoo durante la llamada y guarda la respuesta en variables: un estado de pedido, un saldo, una fecha de cita, para enrutar después.
En resumen
| Salidas | OK y Error |
| Campos | Instancia Odoo, Timeout, Modelo, Método, Args (JSON), Kwargs (JSON), y una tabla de extracciones Variable y Ruta JSON |
| Timeout propuesto | 2, 3, 5 u 8 s, 5 s por defecto |
| Timeout realmente aplicado | 8 segundos como máximo |
| Método propuesto al crear | search_read |
| Disyuntor | 5 fallos consecutivos en un mismo servidor abren el circuito durante 30 segundos |
| Prueba antes de la puesta en servicio | botón Probar, que consulta realmente su Odoo |
El texto de ayuda mostrado en la ventana es: «Llama a execute_kw(modelo, método, args, kwargs) en Odoo. args/kwargs = JSON con {{variable}} ({{caller_e164}} = formatos E.164 del llamante). Extrae la respuesta JSON en variables. Salida "Error" si Odoo falla/timeout.»
Cómo funciona
Es el módulo más técnico del conjunto. Donde Odoo, resolución de contacto responde a una pregunta única y ya lista, este plantea cualquier pregunta a su Odoo. A cambio, hay que saber dónde se encuentra la información en Odoo.
Los cuatro campos de la pregunta
| Campo | Qué es | Ejemplo |
|---|---|---|
| Modelo | el nombre interno de la tabla de Odoo consultada | res.partner para los contactos |
| Método | lo que le pide a esa tabla | search_read para buscar y luego leer |
| Args (JSON) | los argumentos, en la práctica el filtro de búsqueda | [[["phone_sanitized","in","{{caller_e164}}"]]] |
| Kwargs (JSON) | las opciones con nombre: qué campos leer, cuántas líneas | {"fields":["name","user_id"],"limit":1} |
El nombre del modelo se lee en Odoo, activando el modo desarrollador, o se pregunta a la persona que administra su Odoo. Es el único punto de esta página que no se puede inventar.
JSON, en una frase
Args y Kwargs se escriben en JSON, un formato donde los corchetes [ ] delimitan una lista, las llaves { } un conjunto de campos con nombre, y donde todo texto va entre comillas rectas. Una coma olvidada o una llave sin cerrar bastan para que la solicitud falle.
Las variables en la pregunta
Escriba {{mi_variable}} en cualquier lugar de Args o Kwargs. Un matiz útil: una variable rodeada de comillas, como "{{caller_e164}}", se sustituye por su valor en formato JSON, comillas incluidas. Una lista sigue siendo, por tanto, una lista, lo que permite escribir un filtro del tipo «el teléfono está entre estas escrituras».
La extracción
La tabla de abajo asocia una Ruta JSON a un nombre de Variable. Los niveles se separan por puntos; las listas se cuentan desde cero. search_read responde una lista, así que la ruta de un primer resultado empieza por 0.: 0.name designa el nombre del primer contacto encontrado.
Una ruta dejada vacía devuelve la respuesta entera. Es indispensable para los métodos que responden un número o una palabra sin estructura alrededor, como un recuento: sin esto la variable quedaría vacía y la condición que la comprueba sería siempre falsa.
El disyuntor
Al igual que para la Solicitud API, tras 5 fallos consecutivos hacia el mismo servidor, el módulo deja de llamarlo durante 30 segundos y toma la salida Error de inmediato, sin solicitud. Un primer éxito reinicia el contador a cero.
Qué hay que indicar
| Campo | Qué se espera | Si lo deja vacío |
|---|---|---|
| Instancia Odoo | el Odoo a consultar, entre los declarados en Integraciones, Odoo | Instancia por defecto, la instancia de resolución declarada para su instalación |
| Timeout | el plazo de espera, reducido a 8 s como máximo en la ejecución | 5 s |
| Modelo | el nombre del modelo de Odoo, por ejemplo res.partner | se toma la salida Error sin que parta ninguna solicitud |
| Método | el método a llamar, prerrellenado con search_read | se toma la salida Error sin que parta ninguna solicitud |
| Args (JSON) | los argumentos, en JSON válido | lista vacía |
| Kwargs (JSON) | las opciones con nombre, en JSON válido | ninguna opción |
| Variable de una extracción | el nombre bajo el que guardar el valor leído | la línea se ignora |
| Ruta JSON de una extracción | la ruta hacia el valor, por ejemplo 0.name | la respuesta entera se guarda en la variable |
Los botones de la ventana son Añadir una extracción, Probar, Cancelar y Guardar.
Procedimiento
- Compruebe que su Odoo está conectado, en Integraciones, Odoo, y que la instancia está activa.
- Identifique en Odoo el modelo y los campos que llevan la información buscada. Hágase ayudar por la persona que administra su Odoo si es necesario.
- Coloque el módulo Solicitud Odoo y conecte el nodo anterior a su entrada.
- Ábralo, elija la Instancia Odoo y ajuste el Timeout lo más corto posible: dos o tres segundos, el llamante espera en línea.
- Escriba el Modelo y el Método.
- Escriba los Args (JSON) y los Kwargs (JSON), limitando el número de líneas leídas con
"limit":1cuando basta con una sola. - Haga clic en Añadir una extracción y asocie una Ruta JSON a un nombre de Variable.
- Haga clic en Probar, rellene las variables de prueba, y luego en Iniciar. Corrija hasta que el valor obtenido sea el correcto.
- Haga clic en Guardar, y luego conecte OK hacia la continuación y Error hacia un repliegue que trate la llamada sin el dato.
- Haga clic en Guardar, y luego en Aplicar los cambios en la barra superior.
- Llame a su número y compruebe el encaminamiento, ayudándose de un módulo Depuración que escriba las variables extraídas.
Si no funciona
La salida Error se toma de inmediato, sin que parta ninguna solicitud. Tres causas. El Modelo o el Método está vacío. La instancia de Odoo elegida ya no existe o ya no está activa. O el disyuntor está abierto, tras cinco fallos consecutivos, durante treinta segundos.
La solicitud falla aunque el JSON me parece correcto. Debe seguir siendo válido una vez sustituidas las variables, y es ahí donde se producen la mayoría de los errores. Haga clic en Probar: la pantalla muestra la solicitud realmente enviada, args y kwargs tras la sustitución. Para que una variable se sustituya por su valor JSON, rodéela de comillas: "{{caller_e164}}".
La variable extraída permanece vacía aunque la respuesta contiene el dato. La ruta no corresponde. search_read responde una lista: empiece por 0. para el primer elemento. Un método que responde un solo número exige, por el contrario, una ruta vacía. La columna Valor obtenido de la prueba señala las extracciones vacías.
La prueba me pide confirmar antes de partir. El método solicitado escribe en Odoo en lugar de limitarse a leer. La prueba se ejecuta realmente en su Odoo de producción: confirme solo si acepta esa escritura.
La llamada se corta cuando Odoo responde mal. La salida Error no está conectada a nada. Este módulo no tiene el repliegue automático del módulo de resolución de contacto: conecte Error, como mínimo hacia la bienvenida habitual.
Cómo se construye el plan de llamadas, explicado con imágenes
Ver la página Planes de numeración