Axivox Guide utilisateur
Retour au site

Requête Odoo

Interroge votre Odoo pendant l'appel et range la réponse dans des variables : un état de commande, un solde, une date de rendez-vous, pour router ensuite.

En bref

SortiesOK et Erreur
ChampsInstance Odoo, Timeout, Modèle, Méthode, Args (JSON), Kwargs (JSON), et un tableau d'extractions Variable et Chemin JSON
Timeout proposé2, 3, 5 ou 8 s, 5 s par défaut
Timeout réellement appliqué8 secondes au maximum
Méthode proposée à la créationsearch_read
Disjoncteur5 échecs consécutifs sur un même serveur ouvrent le circuit pendant 30 secondes
Essai avant mise en servicebouton Tester, qui interroge réellement votre Odoo

Le texte d'aide affiché dans la fenêtre est : « Appelle execute_kw(modèle, méthode, args, kwargs) sur Odoo. args/kwargs = JSON avec {{variables}} ({{caller_e164}} = formats E.164 de l'appelant). Extrait la réponse JSON dans des variables. Sortie « Erreur » si Odoo échoue/timeout. »

Comment ça marche

C'est le module le plus technique du lot. Là où Odoo, résolution contact répond à une question unique et toute prête, celui-ci pose n'importe quelle question à votre Odoo. En contrepartie, il faut savoir où l'information se trouve dans Odoo.

Les quatre champs de la question

ChampCe que c'estExemple
Modèlele nom interne de la table Odoo interrogéeres.partner pour les contacts
Méthodece que vous demandez à cette tablesearch_read pour chercher puis lire
Args (JSON)les arguments, en pratique le filtre de recherche[[["phone_sanitized","in","{{caller_e164}}"]]]
Kwargs (JSON)les options nommées : quels champs lire, combien de lignes{"fields":["name","user_id"],"limit":1}

Le nom du modèle se lit dans Odoo, en activant le mode développeur, ou se demande à la personne qui administre votre Odoo. C'est le seul point de cette page qui ne s'invente pas.

JSON, en une phrase

Args et Kwargs s'écrivent en JSON, un format où les crochets [ ] délimitent une liste, les accolades { } un ensemble de champs nommés, et où tout texte est entre guillemets droits. Une virgule oubliée ou une accolade non refermée suffit à faire échouer la requête.

Les variables dans la question

Écrivez {{ma_variable}} n'importe où dans Args ou Kwargs. Une nuance utile : une variable entourée de guillemets, comme "{{caller_e164}}", est remplacée par sa valeur au format JSON, guillemets compris. Une liste reste donc une liste, ce qui permet d'écrire un filtre du type « le téléphone est parmi ces écritures ».

L'extraction

Le tableau du bas associe un Chemin JSON à un nom de Variable. Les niveaux se séparent par des points ; les listes se comptent à partir de zéro. search_read répond une liste, donc le chemin d'un premier résultat commence par 0. : 0.name désigne le nom du premier contact trouvé.

Un chemin laissé vide rapporte la réponse entière. C'est indispensable pour les méthodes qui répondent un nombre ou un mot sans structure autour, comme un comptage : sans cela la variable resterait vide et la condition qui la teste serait toujours fausse.

Le disjoncteur

Comme pour la Requête API, après 5 échecs consécutifs vers le même serveur, le module cesse de l'appeler pendant 30 secondes et prend la sortie Erreur immédiatement, sans requête. Un premier succès remet le compteur à zéro.

Ce qu'il faut saisir

ChampCe qui est attenduSi vous le laissez vide
Instance Odool'Odoo à interroger, parmi ceux déclarés dans Intégrations, OdooInstance par défaut, l'instance de résolution déclarée pour votre installation
Timeoutle délai d'attente, ramené à 8 s au maximum à l'exécution5 s
Modèlele nom du modèle Odoo, par exemple res.partnerla sortie Erreur est prise sans qu'aucune requête ne parte
Méthodela méthode à appeler, pré-remplie avec search_readla sortie Erreur est prise sans qu'aucune requête ne parte
Args (JSON)les arguments, en JSON valideliste vide
Kwargs (JSON)les options nommées, en JSON valideaucune option
Variable d'une extractionle nom sous lequel ranger la valeur luela ligne est ignorée
Chemin JSON d'une extractionle chemin vers la valeur, par exemple 0.namela réponse entière est rangée dans la variable

Les boutons de la fenêtre sont Ajouter une extraction, Tester, Annuler et Sauver.

La marche à suivre

  1. Vérifiez que votre Odoo est raccordé, dans Intégrations, Odoo, et que l'instance y est active.
  2. Identifiez dans Odoo le modèle et les champs qui portent l'information voulue. Faites-vous aider par la personne qui administre votre Odoo si nécessaire.
  3. Posez le module Requête Odoo et reliez le nœud précédent à son entrée.
  4. Ouvrez-le, choisissez l'Instance Odoo et réglez le Timeout au plus court : deux à trois secondes, l'appelant patiente en ligne.
  5. Saisissez le Modèle et la Méthode.
  6. Écrivez les Args (JSON) et les Kwargs (JSON), en limitant le nombre de lignes lues avec "limit":1 quand une seule suffit.
  7. Cliquez sur Ajouter une extraction et associez un Chemin JSON à un nom de Variable.
  8. Cliquez sur Tester, renseignez les variables d'essai, puis sur Lancer. Corrigez jusqu'à ce que la valeur obtenue soit la bonne.
  9. Cliquez sur Sauver, puis reliez OK vers la suite et Erreur vers un repli qui traite l'appel sans la donnée.
  10. Cliquez sur Sauver, puis sur Appliquer les modifications dans le bandeau du haut.
  11. Appelez votre numéro et vérifiez l'acheminement, en vous aidant d'un module Débogage qui écrit les variables extraites.

Si ça ne marche pas

La sortie Erreur est prise immédiatement, sans qu'aucune requête ne parte. Trois causes. Le Modèle ou la Méthode est vide. L'instance Odoo choisie n'existe plus ou n'est plus active. Ou le disjoncteur est ouvert, après cinq échecs consécutifs, pour trente secondes.

La requête échoue alors que le JSON me semble correct. Il doit rester valide une fois les variables remplacées, et c'est là que la plupart des erreurs se produisent. Cliquez sur Tester : l'écran affiche la requête réellement envoyée, args et kwargs après remplacement. Pour qu'une variable soit remplacée par sa valeur JSON, entourez-la de guillemets : "{{caller_e164}}".

La variable extraite reste vide alors que la réponse contient la donnée. Le chemin ne correspond pas. search_read répond une liste : commencez par 0. pour le premier élément. Une méthode qui répond un nombre seul demande au contraire un chemin vide. La colonne Valeur obtenue de l'essai signale les extractions vides.

L'essai me demande de confirmer avant de partir. La méthode demandée écrit dans Odoo au lieu de se contenter de lire. L'essai s'exécute réellement sur votre Odoo de production : ne confirmez que si vous acceptez cette écriture.

L'appel se coupe quand Odoo répond mal. La sortie Erreur n'est reliée à rien. Ce module n'a pas le repli automatique du module de résolution contact : reliez Erreur, au minimum vers l'accueil habituel.

Comment le plan d'appel se construit, expliqué en images

Voir la page Plans de numérotation