Hoppa till huvudinnehåll

Automatiseringar

Automatiseringar kör en instruktion enligt ett schema och levererar resultatet som en vanlig chattsession. En daglig nyhetssammanfattning, veckogenomgång eller månadsrapport körs utan gränssnitt på servern, hamnar i chattlistan och kan öppnas och fortsättas som andra konversationer.

Uppbyggnad​

En automatisering har ett namn, fritextinstruktioner, en eller flera utlösare, en valfri modell (tomt betyder Auto: din standardmodell vid körning), ett körmål och en aviseringsinställning. Målet avgör resultatet: Chat session (standard) köar instruktionen som en konversation, medan Work task startar en isolerad Work-sandbox med instruktionen som första meddelande och valfritt en namngiven Work-policy. Med aviseringar aktiverade hamnar misslyckade körningar även i aviseringsinkorgen. Separat kan du slå på Automatiseringsresultat under Inställningar → Aviseringar → E-postaviseringar för att få resultatet av varje körning mejlat till dig, så snart en administratör har konfigurerat en server för utgående e-post (se Aviseringar). Namn och instruktioner krypteras i vila. Varje automatisering tillhör skaparen.

Utlösare återanvänder kalenderns modell – once, hourly, daily, weekly, monthly, yearly – och högst fem får anges. Nästa körning är den tidigaste kommande förekomsten bland alla utlösare, beräknad i serverns lokala tidszon.

Händelseutlösare​

En sjunde sort, event, har ingen klocka alls: den utlöses när en av dina aviseringar kommer in.

{ "kind": "event", "event": "channel-mention", "match": "release" }

event kan vara vilken aviseringstyp som helst utom automation-failed — en rutin får inte kunna starta om sig själv från sitt eget felmeddelande. Det valfria match är ett skiftlägesokänsligt delsträngstest mot aviseringstiteln; utan det utlöser varje avisering av den typen rutinen.

En händelseutlösare bidrar aldrig med en nästa-körning-tid. En automatisering vars utlösare alla är händelser visar därför ingen nästa körning: listan och redigeringsdialogen säger Runs when … i stället. Att blanda en händelseutlösare med ett schema fungerar fint — de schemalagda utlösarna styr fortfarande klockan.

Två spärrar begränsar spridningen. En rutin utlöses högst en gång per minut från händelser, oavsett hur upptagen strömmen är, och en körnings egen felavisering utlöser aldrig om den rutin som skapade den.

Körningen tar emot det som utlöste den, bifogat till instruktionerna:

---
Trigger payload (JSON):
{"event":"channel-mention","title":"...","body":"...","href":"..."}

Körning​

Schemaläggaren tickar varje minut bakom ett samordningslås så att exakt en replik flyttar schemat. När tiden infaller registreras en körning, ett beständigt automation.run.v1-jobb köas och next_run_at flyttas med en atomär jämför-och-sätt-operation så att varje förekomst utlöses högst en gång. Jobbet skapar en chattsession med automatiseringens namn och köar instruktionen genom samma beständiga genereringspipeline som andra konversationer, inklusive leverantörsrutt, personastandarder och lagring.

Om servern var nere när en förekomst passerade kör nästa tick den en gång och hoppar över äldre missade tider. Paus rensar schemat; återupptagning eller redigering räknar om från nu. Radering tar bort körhistoriken genom foreign-key cascade.

Körningar avgörs från den beständiga jobbloggen: lyckad när chattgenereringen slutförts, misslyckad när ett jobb dead-lettered och misslyckad som stalled om en köad körning inte startar inom 30 minuter.

Work-körningar använder Work-livscykeln i stället för chattjobbet. Körningen länkar till skapad uppgift, lyckas när agenten slutför eller stannar för indata och misslyckas när uppgiften misslyckas eller avbryts. Ett resultatmejl för en Work-körning bär sammanfattningen som själva Work-körningen sparade — samma text som uppgiftens körhistorik visar — och faller tillbaka på uppgiftens enradsstatus när en körning föregår sparade sammanfattningar. Work-åtkomst kontrolleras när schemat utlöses; återkallad åtkomst ger work-access-denied. Vald policy valideras när automatiseringen sparas och dess nätverks- och resursgränser gäller varje uppgift. Bara direkta modellleverantörer körs i Work och modellen måste stödja verktyg.

Agentrutiner​

En Work-automatisering kan bindas till en befintlig Work-uppgift via workTaskId, vilket används av Routines i agentens detaljpanel. Varje förekomst startar då en körning i uppgiftens befintliga arbetsyta och konversation med dess modell, leverantör och runtime-policy. Modell- och policyfält på automatiseringen ignoreras. Bindningen valideras vid sparande. En raderad uppgift ger work-task-missing; en redan körande uppgift eller aktiv förhandsvisning ger work-task-busy i stället för att köas.

Webhookutlösare​

Utöver schemat kan en automatisering utlösas av ett externt system — en CI-pipeline, en cron-tjänst, hemautomation. I automatiseringens redigeringsdialog genererar Webhook trigger → Enable en hemlighet per automatisering; bara dess SHA-256 lagras, så klartexten visas exakt en gång. Att rotera hemligheten ogiltigförklarar den föregående omedelbart, och att stänga av webhooken stänger endpointen igen.

Det externa systemet utlöser automatiseringen med:

curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."

(X-Libre-Webhook-Secret: lwh_... fungerar som alternativ header.) Svaret är 202 med id:t för den köade körningen — samma manuella körväg som Run now, så körningar avgörs, aviserar och hamnar i historiken på exakt samma sätt. Jämförelsen av hemligheten är konstanttid, en saknad automatisering och en felaktig hemlighet svarar likadant (inget orakel för automatiserings-id), och en pausad automatisering svarar 409: till skillnad från ägarens Run now kan en extern anropare inte utlösa förbi en paus.

Ett JSON-objekt i anropskroppen följer med in i körningen som dess trigger-nyttolast, så rutinen kan se vad den reagerar på:

curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..." \
-H "Content-Type: application/json" \
-d '{"commit":"abc123","branch":"main"}'

Nyttolasten bifogas till instruktionerna som körningen utför, under en rubrik Trigger payload (JSON): — för chattkörningar, nya Work-uppgifter och uppgiftsbundna rutiner likadant. Bara JSON-objekt bärs vidare (listor och skalärer ignoreras), och en nyttolast vars serialiserade form överskrider 4000 tecken utelämnas i stället för att trunkeras, med en varning i serverloggen. En utlösning utan anropskropp fungerar precis som förut.

API​

Alla endpoints utom webhookutlösningen kräver autentisering och verkar bara på anroparens egna automatiseringar; webhookutlösningen autentiserar i stället med hemligheten per automatisering.

MetodSökvägSyfte
GET/api/automationsLista automatiseringar
POST/api/automationsSkapa en automatisering
GET/api/automations/occurrences?from=&to=Kommande beräknade förekomster
GET/api/automations/runsKörhistorik (filtrerbar)
GET/api/automations/runs/summaryOsedda + 30-dagarsgrupper
POST/api/automations/runs/seenMarkera slutförda körningar som sedda
GET/api/automations/:automationIdLäs en automatisering
PUT/api/automations/:automationIdUppdatera en automatisering
DELETE/api/automations/:automationIdRadera en automatisering
POST/api/automations/:automationId/pausePausa schemat
POST/api/automations/:automationId/resumeÅteruppta schemat
POST/api/automations/:automationId/runKör nu (202 med körnings-id)
POST/api/automations/:automationId/webhookUtlös via hemlighet (202)
POST/api/automations/:automationId/webhook-secretSkapa/rotera hemligheten
DELETE/api/automations/:automationId/webhook-secretStäng av webhooken

En användare får ha högst 50 automatiseringar. Namn begränsas till 200 tecken och instruktioner till 20 000.