Axivox Guía del usuario
Volver al sitio

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

SalidasOK y Error
CamposInstancia Odoo, Timeout, Modelo, Método, Args (JSON), Kwargs (JSON), y una tabla de extracciones Variable y Ruta JSON
Timeout propuesto2, 3, 5 u 8 s, 5 s por defecto
Timeout realmente aplicado8 segundos como máximo
Método propuesto al crearsearch_read
Disyuntor5 fallos consecutivos en un mismo servidor abren el circuito durante 30 segundos
Prueba antes de la puesta en serviciobotó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

CampoQué esEjemplo
Modeloel nombre interno de la tabla de Odoo consultadares.partner para los contactos
Métodolo que le pide a esa tablasearch_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

CampoQué se esperaSi lo deja vacío
Instancia Odooel Odoo a consultar, entre los declarados en Integraciones, OdooInstancia por defecto, la instancia de resolución declarada para su instalación
Timeoutel plazo de espera, reducido a 8 s como máximo en la ejecución5 s
Modeloel nombre del modelo de Odoo, por ejemplo res.partnerse toma la salida Error sin que parta ninguna solicitud
Métodoel método a llamar, prerrellenado con search_readse toma la salida Error sin que parta ninguna solicitud
Args (JSON)los argumentos, en JSON válidolista vacía
Kwargs (JSON)las opciones con nombre, en JSON válidoninguna opción
Variable de una extracciónel nombre bajo el que guardar el valor leídola línea se ignora
Ruta JSON de una extracciónla ruta hacia el valor, por ejemplo 0.namela respuesta entera se guarda en la variable

Los botones de la ventana son Añadir una extracción, Probar, Cancelar y Guardar.

Procedimiento

  1. Compruebe que su Odoo está conectado, en Integraciones, Odoo, y que la instancia está activa.
  2. 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.
  3. Coloque el módulo Solicitud Odoo y conecte el nodo anterior a su entrada.
  4. Ábralo, elija la Instancia Odoo y ajuste el Timeout lo más corto posible: dos o tres segundos, el llamante espera en línea.
  5. Escriba el Modelo y el Método.
  6. Escriba los Args (JSON) y los Kwargs (JSON), limitando el número de líneas leídas con "limit":1 cuando basta con una sola.
  7. Haga clic en Añadir una extracción y asocie una Ruta JSON a un nombre de Variable.
  8. Haga clic en Probar, rellene las variables de prueba, y luego en Iniciar. Corrija hasta que el valor obtenido sea el correcto.
  9. Haga clic en Guardar, y luego conecte OK hacia la continuación y Error hacia un repliegue que trate la llamada sin el dato.
  10. Haga clic en Guardar, y luego en Aplicar los cambios en la barra superior.
  11. 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