Hop til hovedindhold

Automatiseringer

Automatiseringer kører en instruktion efter en tidsplan og leverer resultatet som en almindelig chatsession. En daglig nyhedsoversigt, ugentlig gennemgang eller månedsrapport kører uden brugerflade på serveren, vises i chatlisten og kan åbnes og fortsættes som enhver anden samtale.

Opbygning

En automatisering har et navn, fritekstinstruktioner, en eller flere udløsere, en valgfri model (tomt betyder Auto: din standardmodel på kørselstidspunktet), et kørselsmål og en notifikationsindstilling. Målet bestemmer resultatet: Chat session (standard) sætter instruktionen i kø som en samtale, mens Work task starter en isoleret Work-sandbox med instruktionen som første besked og eventuelt en navngiven Work-policy. Med notifikationer aktiveret vises mislykkede kørsler også i notifikationsindbakken. Navne og instruktioner krypteres i hvile. Hver automatisering tilhører den bruger, der oprettede den.

Udløsere genbruger kalenderens model – once, hourly, daily, weekly, monthly, yearly – og en automatisering kan have op til fem. Næste kørsel er den tidligste kommende forekomst blandt alle udløsere, beregnet i serverens lokale tidszone.

Udførelse

En scheduler-tick kører hvert minut bag en koordineringslease, så præcis én replika flytter tidsplanerne. Når en automatisering forfalder, registrerer tick'et en kørsel, sætter et vedvarende automation.run.v1-job i kø og flytter next_run_at med compare-and-set, så hver forekomst udløses højst én gang. Jobbet opretter en chatsession med automatiseringens navn og køer instruktionen gennem samme vedvarende chatpipeline som andre samtaler, inklusive udbyderrute, personastandarder og lagring.

Hvis serveren var nede, kører næste tick den seneste forfaldne forekomst én gang og springer ældre tider over. Pause rydder tidsplanen; genoptagelse eller redigering beregner den igen fra nu. Sletning fjerner kørselsloggen gennem en foreign-key cascade.

Kørsler afgøres fra den vedvarende joblog: succes når chatgenereringen er afsluttet, fejl når et job dead-lettered, og fejl som stalled hvis en køet kørsel ikke starter inden for 30 minutter.

Work-kørsler bruger Work-livscyklussen i stedet for chatjobbet. Kørslen registrerer opgaven og linker til den, lykkes når agenten afslutter eller stopper for at bede om input og mislykkes ved fejl eller annullering. Work-adgang håndhæves, når tidsplanen udløses; tilbagekaldt adgang giver work-access-denied. En valgt policy valideres ved lagring, og dens netværks- og ressourcegrænser gælder alle opgaver. Kun direkte modeludbydere kører i Work, og modellen skal understøtte værktøjer.

Agentrutiner

En Work-automatisering kan bindes til en eksisterende Work-opgave via workTaskId, som bruges af Routines på agentens detaljepanel. Hver forekomst starter en kørsel i opgavens eksisterende arbejdsområde og samtale med dens model, udbyder og runtime-policy; automatiseringens model- og policyfelter gælder ikke. Bindingen valideres ved lagring. En slettet opgave giver work-task-missing; en opgave, der allerede kører eller har en aktiv preview, giver work-task-busy i stedet for at blive køet.

Webhook-udløsere

Ud over tidsplanen kan en automatisering udløses af et eksternt system — en CI-pipeline, en cron-tjeneste, husautomation. I automatiseringens redigeringsdialog genererer Webhook trigger → Enable en hemmelighed pr. automatisering; kun dens SHA-256 gemmes, så klarteksten vises præcis én gang. Rotation af hemmeligheden ugyldiggør den forrige med det samme, og deaktivering af webhooken lukker endpointet igen.

Det eksterne system udløser automatiseringen med:

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

(X-Libre-Webhook-Secret: lwh_... fungerer som alternativ header.) Svaret er 202 med id'et på den køede kørsel — den samme manuelle kørselssti som Run now, så kørsler afgøres, notificerer og vises i historikken på nøjagtig samme måde. Sammenligningen af hemmeligheden er konstant tid, en manglende automatisering og en forkert hemmelighed svarer ens (intet orakel for automatiserings-id), og en automatisering på pause svarer 409: i modsætning til ejerens Run now kan en ekstern kalder ikke udløse hen over en pause.

API

Alle endpoints undtagen webhook-udløsningen kræver autentificering og virker kun på kalderens egne automatiseringer; webhook-udløsningen autentificerer i stedet med hemmeligheden pr. automatisering.

MetodeStiFormål
GET/api/automationsVis automatiseringer
POST/api/automationsOpret en automatisering
GET/api/automations/occurrences?from=&to=Beregnede kommende forekomster
GET/api/automations/runsKørselslog (kan filtreres)
GET/api/automations/runs/summaryUsynligt antal + 30-dages grupper
POST/api/automations/runs/seenMarkér afsluttede kørsler som set
GET/api/automations/:automationIdLæs én automatisering
PUT/api/automations/:automationIdOpdater en automatisering
DELETE/api/automations/:automationIdSlet en automatisering
POST/api/automations/:automationId/pauseSæt tidsplanen på pause
POST/api/automations/:automationId/resumeGenoptag tidsplanen
POST/api/automations/:automationId/runKør nu (202 med kørsels-id)
POST/api/automations/:automationId/webhookUdløs via hemmelighed (202)
POST/api/automations/:automationId/webhook-secretOpret/rotér hemmeligheden
DELETE/api/automations/:automationId/webhook-secretDeaktivér webhooken

En bruger kan have op til 50 automatiseringer. Navne er begrænset til 200 tegn og instruktioner til 20.000.