Webhookok¶
Figyelem
Erősen ajánlott fejlesztővel, megoldástervezővel vagy más műszaki szakemberrel egyeztetni a webhookok használatáról és a bevezetés teljes folyamata során. Hibás beállítás esetén a webhookok megzavarhatják az Odoo adatbázis működését, és a visszaállítás időigényes lehet.
A webhookok (a Webhook esetén indítóval rendelkező automatizálási szabályok) lehetővé teszik, hogy egy külső rendszerben bekövetkező eseményre az Odoo adatbázisban automatikusan végrehajtódjon egy művelet.
A gyakorlatban ez így működik: amikor a külső rendszerben bekövetkezik az esemény, egy adatcsomag (a „payload”) POST API kéréssel az Odoo webhook URL-jére érkezik, és az Odoo adatbázisban végrehajtódik egy előre meghatározott művelet.
Az előre meghatározott időközönként futó ütemezett műveletekkel vagy a kifejezetten meghívandó kézi API kérésekkel ellentétben a webhookok valós idejű, eseményvezérelt kommunikációt és automatizálást tesznek lehetővé. Beállíthat például egy webhookot, amely automatikusan frissíti az Odoo készletadatait, amikor egy külső értékesítési pont rendszerben vevői rendelést hagynak jóvá.
Két Odoo adatbázis összekapcsolásakor a webhook beállítása nem igényel programozást, a webhook teszteléséhez azonban külső eszköz szükséges. Egyedi célrekordok vagy műveletek programozási ismereteket igényelhetnek.
Megjegyzés
Ez a cikk olyan webhook létrehozását ismerteti, amely külső forrásból fogad adatokat. Olyan automatikus művelet is létrehozható azonban, amely az Odoo adatbázisban bekövetkező változáskor adatokat küld egy külső webhookra.
Webhook létrehozása az Odoo-ban¶
Fontos
Mielőtt éles adatbázisban bevezetné a webhookot, állítsa be és tesztelje egy (teszt)másolaton, hogy meggyőződjön a megfelelő működéséről.
Javaslat
Ha a webhook létrehozása előtt aktiválja a fejlesztői módot, nagyobb szabadsággal választhatja ki a szabály által érintett modellt. Ezenkívül megtalálhatja a modell és a mezők technikai nevét, amelyekre az adatcsomag beállításához szükség lehet.
Egy modell technikai nevének megkereséséhez aktivált fejlesztői módban vigye az egeret a modell neve fölé, majd kattintson a (Belső hivatkozás) ikonra. A technikai név a Modell mezőben található. Például egy vevői rendelés webhook a Vevői rendelés modellt használja, de az adatcsomagban a sale.order technikai név szerepel.
Webhook létrehozásához kövesse az alábbi lépéseket:
Aktivált fejlesztői módban lépjen a menüpontra, majd kattintson az Új gombra.
Adjon a webhooknak egyértelmű, a célját jól leíró nevet.
Válassza ki a megfelelő Modell értéket a legördülő listából.
Állítsa az Indítás mezőt Webhook esetén értékre.
A webhook URL-je automatikusan jön létre, de szükség esetén a Titok cseréje gombbal módosítható. Ezt az URL-t kell használni annál a külső rendszernél, amely frissítéseket küld az adatbázisba.
Figyelem
Az URL bizalmas, körültekintően kell kezelni. Ha nyilvánosan vagy óvatlanul megosztják, illetéktelen hozzáférést adhat az Odoo adatbázishoz. Ha az URL a bevezetés után megváltozik, frissítse a külső rendszerben is.
Igény szerint kapcsolja be a Hívások naplózása lehetőséget, hogy a webhook URL-jére érkező API kérések előzményei nyomon követhetők legyenek, pl. hibakereséshez.
Ha a webhookot nem Odoo rendszer küldi, módosítsa a Célrekord kódját úgy, hogy a webhook URL-jére érkező API kérés adatcsomagjában található JSON rekordot keresse. Ha a webhookot egy Odoo adatbázis küldi, ügyeljen rá, hogy az adatcsomagban szerepeljen az
idés amodelérték.Ha a webhook rekordokat hoz létre az Odoo adatbázisban, az alapértelmezett Célrekord formátum helyett használja a
model.browse(i)vagy amodel.search(i)kifejezést.A végrehajtandó műveletek megadásához kattintson a Végrehajtandó műveletek fülön a Művelet hozzáadása gombra.
Mielőtt a webhookot a külső rendszerben bevezetné, tesztelje, hogy megfelelően működik-e.
Javaslat
Ha a Hívások naplózása be van kapcsolva, az API kérések előzményeit az Automatizálási szabályok űrlap tetején található Naplók intelligens gombbal érheti el.
Ha a webhook célja nem egy meglévő rekord frissítése (hanem pl. új rekord létrehozása), a Kód végrehajtása műveletet kell választani.
Webhook tesztelése¶
A webhook teszteléséhez tesztadatcsomag és egy külső eszköz vagy rendszer szükséges – például Postman –, amely az adatcsomagot POST API kéréssel elküldi. Ez a szakasz a webhook Postmanben történő tesztelésének lépéseit mutatja be.
Javaslat
A webhookok tesztadatcsomagokkal történő tesztelésének lépésenkénti leírását lásd a webhook felhasználási példák szakaszban.
A webhook Postmannel történő teszteléséhez kapcsolódó konkrét segítségért forduljon a Postman ügyfélszolgálatához.
A Postmanben hozzon létre egy új HTTP kérést, és állítsa a metódusát POST értékre.
Másolja ki a webhook URL-jét az Odoo adatbázisból a (hivatkozás) ikonnal, és illessze be a Postman URL mezőjébe.
Kattintson a Body fülre, és válassza a raw lehetőséget.
Állítsa a fájltípust JSON értékre, majd másolja ki a tesztadatcsomag kódját, és illessze be a kódszerkesztőbe.
Kattintson a Send gombra.
A Postman képernyőjének alján található Response nézetben megjelenő részletek – köztük a HTTP válaszkód – mutatják, hogy a webhook megfelelően működik-e.
A
200 OKvagystatus: oküzenet azt jelzi, hogy a webhook az Odoo oldalán megfelelően működik. Ezután megkezdhető a másik rendszer beállítása, hogy az API kéréseket automatikusan az Odoo webhook URL-jére küldje.Ha más válasz érkezik, a hozzá tartozó szám segít a hiba azonosításában. Például az
500 Internal Server Errorüzenet azt jelenti, hogy az Odoo nem tudta megfelelően értelmezni a hívást. Ilyenkor ellenőrizze, hogy a JSON fájlban szereplő mezők helyesen vannak-e megfeleltetve a webhook beállításaiban és a tesztkérést küldő rendszerben.
Javaslat
Ha az Odoo-ban a webhook beállításainál bekapcsolja a hívások naplózását, hibás működés esetén hibanaplók állnak rendelkezésre.
Webhook bevezetése külső rendszerben¶
Miután a webhookot sikeresen létrehozta és tesztelte az Odoo-ban, vezesse be abban a rendszerben, amely adatokat küld az Odoo adatbázisba, és gondoskodjon róla, hogy a POST API kérések a webhook URL-jére érkezzenek.
Webhook felhasználási példák¶
Az alábbiakban két példa látható a webhookok Odoo-beli használatára. Mindegyikhez tartozik egy tesztadatcsomag, amely a webhook tesztelésével foglalkozó szakaszban található. A tesztadatcsomag küldéséhez a Postman eszközt használjuk.
Vevői rendelés pénznemének frissítése¶
Ez a webhook USD-re állítja egy vevői rendelés pénznemét az Értékesítés alkalmazásban, amikor a külső rendszer olyan POST API kérést küld a webhook URL-jére, amely tartalmazza a vevői rendelés számát (ezt az adatcsomag id rekordja azonosítja).
Ez hasznos lehet például az Egyesült Államokon kívüli leányvállalatoknál, amelyek anyavállalata az Egyesült Államokban van, vagy fúziók esetén, amikor az adatokat egyetlen Odoo adatbázisba vonják össze.
A webhook létrehozása¶
A webhook létrehozásához kövesse az alábbi lépéseket:
Lépjen a menüpontra, és kattintson az Új gombra. Válassza a Vevői rendelés modellt, és állítsa az Indítás mezőt Webhook esetén értékre.
Állítsa a Célrekord mezőt
model.env[payload.get('model')].browse(int(payload.get('id')))értékre, ahol:a
payload.get('model')az adatcsomagmodelkulcsához tartozó értéket adja vissza, azaz asale.orderértéket, amely a Vevői rendelés modell technikai neve.a
payload.get('id')az adatcsomagidkulcsához tartozó értéket adja vissza, azaz a célként megjelölt vevői rendelés számát az Odoo adatbázisban, azSelőtag és a vezető nullák nélkül.az
integész számmá alakítja a kapott azonosítót, mert abrowse()metódus csak egész számmal használható.
Kattintson a Művelet hozzáadása gombra.
A Típus szakaszban kattintson a Rekord frissítése lehetőségre.
A Művelet részletei szakaszban válassza a Frissítés lehetőséget, válassza a Pénznem mezőt, majd az USD értéket.
Kattintson a Mentés és bezárás gombra.
A webhook tesztelése¶
A webhook teszteléséhez kövesse az alábbi lépéseket:
Nyissa meg a Postman alkalmazást, hozzon létre egy új HTTP kérést, és állítsa a metódusát POST értékre.
Másolja ki az Odoo webhook URL-jét a (hivatkozás) ikonnal, és illessze be a Postman URL mezőjébe.
Kattintson a Body fülre, és válassza a raw lehetőséget.
Állítsa a fájltípust JSON értékre, majd másolja ki ezt a kódot (az adatcsomagot), és illessze be a kódszerkesztőbe:
{ "model": "sale.order", "id": "SALES ORDER NUMBER" }
Az Odoo adatbázisban válasszon ki egy vevői rendelést a webhook teszteléséhez. A beillesztett kódban cserélje ki a
SALES ORDER NUMBERszöveget a vevői rendelés számára, azSelőtag és a szám előtti nullák nélkül. Például azS00007számú vevői rendelést7értékként kell megadni a Postmanben.Kattintson a Send gombra.
A Postman Response nézetében ellenőrizze, hogy a webhook megfelelően működik-e. Ha a válasz nem
200 OKvagystatus: ok, az üzenethez tartozó szám segít a hiba azonosításában.
Új kapcsolat létrehozása¶
Ez a webhook egyedi kóddal hoz létre új kapcsolatot az Odoo adatbázisban, amikor a külső rendszer a kapcsolat adatait tartalmazó POST API kérést küld a webhook URL-jére. Ez hasznos lehet új szállítók vagy vevők automatikus létrehozásához.
A webhook létrehozása¶
A webhook létrehozásához kövesse az alábbi lépéseket:
Lépjen a menüpontra, és kattintson az Új gombra. Válassza a Kapcsolat modellt, és állítsa az Indítás mezőt Webhook esetén értékre.
Állítsa a Célrekord mezőt
model.browse([2])értékre. Ez lényegében csak helykitöltő, mivel az automatikus művelet kódja határozza meg, mit kell kiolvasni az adatcsomagból, és melyik modellben kell létrehozni a rekordot.Kattintson a Művelet hozzáadása gombra.
A Típus szakaszban kattintson a Kód végrehajtása lehetőségre.
Másolja ki ezt a kódot, és illessze be a Művelet részletei szakasz Kód fülének kódszerkesztőjébe:
# 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'")
Kattintson a Mentés és bezárás gombra.
A webhook tesztelése¶
A webhook teszteléséhez kövesse az alábbi lépéseket:
A Postman alkalmazásban hozzon létre egy új HTTP kérést, és állítsa a metódusát POST értékre.
Másolja ki az Odoo webhook URL-jét a (hivatkozás) ikonnal, és illessze be a Postman URL mezőjébe.
Kattintson a Body fülre, és válassza a raw lehetőséget.
Állítsa a fájltípust JSON értékre, majd másolja ki ezt a kódot (az adatcsomagot), és illessze be a kódszerkesztőbe:
{ "name": "CONTACT NAME", "email": "[email protected]", "phone": "CONTACT PHONE NUMBER" }
A beillesztett kódban cserélje ki a
CONTACT NAME,[email protected]ésCONTACT PHONE NUMBERszövegeket az új kapcsolat adataira.Kattintson a Send gombra.
A Postman Response nézetében ellenőrizze, hogy a webhook megfelelően működik-e. Ha a válasz nem
200 OKvagystatus: ok, az üzenethez tartozó szám segít a hiba azonosításában.