Odoo-Anfrage
Fragt während des Anrufs Ihr Odoo ab und legt die Antwort in Variablen ab: einen Bestellstatus, einen Kontostand, ein Termindatum, um anschließend zu routen.
Kurzübersicht
| Ausgänge | OK und Fehler |
| Felder | Odoo-Instanz, Timeout, Modell, Methode, Args (JSON), Kwargs (JSON), und eine Extraktionstabelle Variable und JSON-Pfad |
| Angebotener Timeout | 2, 3, 5 oder 8 s, standardmäßig 5 s |
| Tatsächlich angewendeter Timeout | höchstens 8 Sekunden |
| Bei der Erstellung vorgeschlagene Methode | search_read |
| Sicherung | 5 aufeinanderfolgende Fehlschläge an demselben Server öffnen den Stromkreis für 30 Sekunden |
| Test vor der Inbetriebnahme | Schaltfläche Testen, die tatsächlich Ihr Odoo abfragt |
Der im Fenster angezeigte Hilfetext lautet: „Ruft execute_kw(Modell, Methode, args, kwargs) auf Odoo auf. args/kwargs = JSON mit {{variablen}} ({{caller_e164}} = E.164-Formate des Anrufers). Extrahiert die JSON-Antwort in Variablen. Ausgang ‚Fehler', wenn Odoo fehlschlägt/den Timeout überschreitet."
So funktioniert es
Das ist das technischste Modul der Reihe. Wo Odoo, Kontaktauflösung eine einzige, vorgefertigte Frage beantwortet, stellt dieses hier jede beliebige Frage an Ihr Odoo. Im Gegenzug müssen Sie wissen, wo sich die Information in Odoo befindet.
Die vier Felder der Frage
| Feld | Was es ist | Beispiel |
|---|---|---|
| Modell | der interne Name der abgefragten Odoo-Tabelle | res.partner für Kontakte |
| Methode | was Sie von dieser Tabelle verlangen | search_read zum Suchen und anschließenden Lesen |
| Args (JSON) | die Argumente, in der Praxis der Suchfilter | [[["phone_sanitized","in","{{caller_e164}}"]]] |
| Kwargs (JSON) | die benannten Optionen: welche Felder zu lesen sind, wie viele Zeilen | {"fields":["name","user_id"],"limit":1} |
Der Name des Modells wird in Odoo gelesen, durch Aktivieren des Entwicklermodus, oder bei der Person erfragt, die Ihr Odoo verwaltet. Das ist der einzige Punkt dieser Seite, der sich nicht erraten lässt.
JSON, in einem Satz
Args und Kwargs werden in JSON geschrieben, einem Format, in dem eckige Klammern [ ] eine Liste abgrenzen, geschweifte Klammern { } eine Menge benannter Felder, und in dem jeder Text zwischen geraden Anführungszeichen steht. Ein vergessenes Komma oder eine nicht geschlossene geschweifte Klammer genügt, um die Anfrage scheitern zu lassen.
Die Variablen in der Frage
Schreiben Sie {{meine_variable}} an beliebiger Stelle in Args oder Kwargs. Eine nützliche Feinheit: eine in Anführungszeichen eingeschlossene Variable, wie "{{caller_e164}}", wird durch ihren Wert im JSON-Format ersetzt, Anführungszeichen inbegriffen. Eine Liste bleibt also eine Liste, was es erlaubt, einen Filter der Art „das Telefon befindet sich unter diesen Schreibweisen" zu schreiben.
Die Extraktion
Die untere Tabelle verknüpft einen JSON-Pfad mit einem Variablen-Namen. Die Ebenen werden durch Punkte getrennt; Listen werden ab null gezählt. search_read antwortet mit einer Liste, der Pfad eines ersten Ergebnisses beginnt also mit 0.: 0.name bezeichnet den Namen des ersten gefundenen Kontakts.
Ein leer gelassener Pfad liefert die gesamte Antwort. Das ist unverzichtbar für Methoden, die eine Zahl oder ein Wort ohne umgebende Struktur antworten, wie eine Zählung: ohne das bliebe die Variable leer und die sie prüfende Bedingung wäre immer falsch.
Die Sicherung
Wie bei der API-Anfrage ruft das Modul nach 5 aufeinanderfolgenden Fehlschlägen an demselben Server diesen 30 Sekunden lang nicht mehr auf und nimmt sofort den Ausgang Fehler, ohne Anfrage. Ein erster Erfolg setzt den Zähler auf null zurück.
Was einzugeben ist
| Feld | Was erwartet wird | Wenn Sie es leer lassen |
|---|---|---|
| Odoo-Instanz | das abzufragende Odoo, unter den in Integrationen, Odoo deklarierten | Standardinstanz, die für Ihre Installation deklarierte Auflösungsinstanz |
| Timeout | die Wartefrist, zur Laufzeit auf höchstens 8 s begrenzt | 5 s |
| Modell | der Name des Odoo-Modells, zum Beispiel res.partner | der Ausgang Fehler wird genommen, ohne dass eine Anfrage abgeht |
| Methode | die aufzurufende Methode, vorausgefüllt mit search_read | der Ausgang Fehler wird genommen, ohne dass eine Anfrage abgeht |
| Args (JSON) | die Argumente, in gültigem JSON | leere Liste |
| Kwargs (JSON) | die benannten Optionen, in gültigem JSON | keine Option |
| Variable einer Extraktion | der Name, unter dem der gelesene Wert abgelegt wird | die Zeile wird ignoriert |
| JSON-Pfad einer Extraktion | der Pfad zum Wert, zum Beispiel 0.name | die gesamte Antwort wird in der Variable abgelegt |
Die Schaltflächen des Fensters sind Extraktion hinzufügen, Testen, Abbrechen und Speichern.
Schritt für Schritt
- Prüfen Sie, dass Ihr Odoo unter Integrationen, Odoo angebunden ist und die Instanz dort aktiv ist.
- Bestimmen Sie in Odoo das Modell und die Felder, die die gewünschte Information tragen. Lassen Sie sich bei Bedarf von der Person helfen, die Ihr Odoo verwaltet.
- Setzen Sie das Modul Odoo-Anfrage und verbinden Sie den vorherigen Knoten mit seinem Eingang.
- Öffnen Sie es, wählen Sie die Odoo-Instanz und stellen Sie den Timeout so kurz wie möglich ein: zwei bis drei Sekunden, der Anrufer wartet in der Leitung.
- Geben Sie das Modell und die Methode ein.
- Schreiben Sie die Args (JSON) und die Kwargs (JSON), indem Sie die Anzahl der gelesenen Zeilen mit
"limit":1begrenzen, wenn eine genügt. - Klicken Sie auf Extraktion hinzufügen und verknüpfen Sie einen JSON-Pfad mit einem Variablen-Namen.
- Klicken Sie auf Testen, füllen Sie die Testvariablen aus, dann auf Starten. Korrigieren Sie, bis der erhaltene Wert der richtige ist.
- Klicken Sie auf Speichern, verbinden Sie dann OK mit dem weiteren Verlauf und Fehler mit einem Rückfall, der den Anruf ohne die Daten behandelt.
- Klicken Sie auf Speichern, dann auf Änderungen übernehmen im oberen Banner.
- Rufen Sie Ihre Nummer an und prüfen Sie die Weiterleitung, mithilfe eines Moduls Debugging, das die extrahierten Variablen schreibt.
Wenn es nicht funktioniert
Der Ausgang Fehler wird sofort genommen, ohne dass eine Anfrage abgeht. Drei Ursachen. Das Modell oder die Methode ist leer. Die gewählte Odoo-Instanz existiert nicht mehr oder ist nicht mehr aktiv. Oder die Sicherung ist nach fünf aufeinanderfolgenden Fehlschlägen für dreißig Sekunden ausgelöst.
Die Anfrage schlägt fehl, obwohl mir das JSON korrekt erscheint. Es muss nach dem Ersetzen der Variablen gültig bleiben, und dort passieren die meisten Fehler. Klicken Sie auf Testen: der Bildschirm zeigt die tatsächlich gesendete Anfrage, args und kwargs nach der Ersetzung. Damit eine Variable durch ihren JSON-Wert ersetzt wird, schließen Sie sie in Anführungszeichen ein: "{{caller_e164}}".
Die extrahierte Variable bleibt leer, obwohl die Antwort die Daten enthält. Der Pfad stimmt nicht. search_read antwortet mit einer Liste: beginnen Sie mit 0. für das erste Element. Eine Methode, die eine einzelne Zahl antwortet, verlangt dagegen einen leeren Pfad. Die Spalte Erhaltener Wert des Tests kennzeichnet leere Extraktionen.
Der Test verlangt eine Bestätigung, bevor er startet. Die verlangte Methode schreibt in Odoo, statt nur zu lesen. Der Test läuft tatsächlich gegen Ihr Produktions-Odoo: bestätigen Sie nur, wenn Sie dieses Schreiben akzeptieren.
Der Anruf wird unterbrochen, wenn Odoo schlecht antwortet. Der Ausgang Fehler ist mit nichts verbunden. Dieses Modul hat nicht den automatischen Rückfall des Moduls der Kontaktauflösung: verbinden Sie Fehler, mindestens mit dem üblichen Empfang.
Wie der Anrufplan aufgebaut wird, in Bildern erklärt
Zur Seite Rufpläne