Automatizálások
Az automatizálások ütemezés szerint hajtanak végre egy utasítást, az eredményt pedig normál beszélgetésként adják át. A napi hírösszefoglaló, a heti áttekintés vagy a havi jelentés felület nélkül fut a szerveren, megjelenik a beszélgetéslistában, és ugyanúgy nyitható meg, mint bármely más beszélgetés.
Felépítés
Egy automatizálásnak neve, szabad szöveges utasítása, egy vagy több eseményindítója, opcionális modellje (az üres érték Auto: a futáskor érvényes alapértelmezett Chat-modell), célja és értesítési beállítása van. A cél határozza meg az eredményt: a Chat session (alapértelmezett) beszélgetésként állítja sorba az utasítást, míg a Work task egy elszigetelt Work környezetet indít, első üzenetként az utasítással és opcionálisan egy elnevezett házirenddel. Bekapcsolt értesítéseknél a sikertelen futások az értesítési postaládában is megjelennek. A név és az utasítás nyugalmi állapotban titkosított, az automatizálás pedig a létrehozójához tartozik.
Az eseményindítók a naptármodellt használják — once, hourly, daily, weekly, monthly, yearly —, és legfeljebb öten lehetnek. A következő futás a szerver időzónájában számított legközelebbi jövőbeli előfordulás.
Végrehajtás
Az ütemező percenként ellenőriz egy koordinációs lease mögött, hogy csak egy replika léptesse előre az ütemezéseket. Az időpont elérésekor rögzíti a futást, sorba állítja az automation.run.v1 tartós feladatot, és compare-and-set művelettel előrelépteti a next_run_at értéket, így minden előfordulás legfeljebb egyszer indul el. A feladat az automatizálás nevével létrehoz egy Chat-munkamenetet, majd ugyanazon a tartós folyamaton vezeti át az utasítást, mint a többi beszélgetést, beleértve a szolgáltatói útvonalválasztást, a persona alapértékeit és a tárolást.
Ha a szerver leállt, a következő ellenőrzés egyszer futtatja a legutóbbi előfordulást, a régebbieket pedig kihagyja. A szüneteltetés törli az ütemezést; a folytatás vagy szerkesztés újraszámítja. A törlés foreign-key cascade segítségével eltávolítja az előzményeket.
Az állapot a tartós naplóból származik: siker a beszélgetés létrejötte után, hiba, ha a feladat dead-lettered állapotba kerül, és stalled, ha egy futás 30 percen belül nem indul el.
A Work-célok a Work életciklusát használják a Chat-feladat helyett. A futás a feladathoz kapcsolódik, sikeres, ha az ügynök befejezi vagy beavatkozást kér, és hiba vagy megszakítás esetén sikertelen. A Work-hozzáférést indításkor ellenőrzi; a visszavonás eredménye work-access-denied. A kiválasztott házirendet mentéskor ellenőrzi, korlátai minden feladatra vonatkoznak. A Work csak közvetlen szolgáltatókat futtat, a modellnek pedig támogatnia kell az eszközöket.
Ügynökrutinok
Egy Work-automatizálás a workTaskId segítségével meglévő feladathoz köthető, ahogy az ügynökpanel Routines szakaszában is. Minden előfordulás a meglévő munkatérben és beszélgetésben indít futást a feladat modelljével, szolgáltatójával és futtatási házirendjével; az automatizálás megfelelő mezői ilyenkor nem érvényesek. A kapcsolatot mentéskor ellenőrzi. Törölt feladatnál work-task-missing, már futó feladatnál vagy élő előnézetnél pedig várakozás helyett work-task-busy keletkezik.
Webhook-eseményindítók
Az ütemezésen túl egy automatizálást külső rendszer is elindíthat — CI-folyamat, cron-szolgáltatás, otthoni automatizálás. Az automatizálás szerkesztőablakában a Webhook trigger → Enable automatizálásonkénti titkot generál; ebből csak a SHA-256 lenyomat tárolódik, így a nyílt szöveg pontosan egyszer jelenik meg. A titok cseréje azonnal érvényteleníti a korábbit, a webhook kikapcsolása pedig ismét lezárja a végpontot.
A külső rendszer így indítja el az automatizálást:
curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."
(Alternatív fejlécként az X-Libre-Webhook-Secret: lwh_... is működik.) A válasz 202 a sorba állított futás azonosítójával — ugyanaz a kézi indítási útvonal, mint a Run now, így a futások ugyanúgy zárulnak le, értesítenek és jelennek meg az előzményekben. A titok összehasonlítása állandó idejű, a nem létező automatizálás és a hibás titok azonos választ ad (nincs automatizálás-azonosító orákulum), a szüneteltetett automatizálás pedig 409 választ ad: a tulajdonos Run now gombjától eltérően külső hívó nem indíthat futást a szüneten át.
API
A webhookos indítás kivételével minden végpont hitelesítést igényel, és csak a hívó automatizálásain működik; a webhookos indítás ehelyett az automatizálás titkával hitelesít.
| Metódus | Útvonal | Cél |
|---|---|---|
GET | /api/automations | Automatizálások listázása |
POST | /api/automations | Automatizálás létrehozása |
GET | /api/automations/occurrences?from=&to= | Jövőbeli előfordulások |
GET | /api/automations/runs | Futási előzmények |
GET | /api/automations/runs/summary | Nem látott + 30 napos csoportok |
POST | /api/automations/runs/seen | Befejezett futások megjelölése látottként |
GET | /api/automations/:automationId | Automatizálás beolvasása |
PUT | /api/automations/:automationId | Automatizálás frissítése |
DELETE | /api/automations/:automationId | Automatizálás törlése |
POST | /api/automations/:automationId/pause | Ütemezés szüneteltetése |
POST | /api/automations/:automationId/resume | Ütemezés folytatása |
POST | /api/automations/:automationId/run | Azonnali futtatás (202 és id) |
POST | /api/automations/:automationId/webhook | Indítás titokkal (202) |
POST | /api/automations/:automationId/webhook-secret | Titok létrehozása/cseréje |
DELETE | /api/automations/:automationId/webhook-secret | Webhook kikapcsolása |
Egy felhasználó legfeljebb 50 automatizálást tarthat meg. A nevek legfeljebb 200, az utasítások 20 000 karakteresek lehetnek.