Otomasyonlar
Otomasyonlar yönergeyi takvimde çalıştırıp sonucu normal sohbet olarak teslim eder. Günlük haber özeti, haftalık inceleme, aylık rapor — her çalıştırma sunucuda arayüzsüz işler, sohbet listenize gelir ve diğer konuşmalar gibi açılıp sürdürülebilir.
Yapı
Otomasyonun adı, serbest metin yönergesi, en çok beş tetikleyicisi, isteğe bağlı modeli (boşsa çalıştırma anındaki varsayılan sohbet modeli), hedefi ve bildirim tercihi vardır. Chat session varsayılan olarak yönergeyi konuşma kuyruğuna alır; Work task ise yönergeyi ilk mesaj yaparak yalıtılmış Work korumalı alanı başlatır ve seçilmiş adlandırılmış Work ilkesini kullanabilir. Bildirim açıksa hata bildirim kutusuna da gelir. Ayrıca, Settings → Notifications → Email notifications altından Automation results'ı açmak, bir yönetici giden posta sunucusunu yapılandırdıktan sonra her çalıştırmanın sonucunu size e-postalar (bkz. Bildirimler). Ad ve yönergeler beklemede şifrelidir. Otomasyon oluşturana aittir.
Tetikleyiciler ortak takvim modelini kullanır: once, hourly, daily, weekly, monthly, yearly. Sonraki çalıştırma, sunucu saat dilimindeki en erken olaydır.
Olay tetikleyicileri
Yedinci bir tür olan event'in hiç saati yoktur: bildirimlerinizden biri geldiğinde tetiklenir.
{ "kind": "event", "event": "channel-mention", "match": "release" }
event, automation-failed dışındaki her bildirim türü olabilir — bir rutin kendi başarısızlık bildirimiyle kendini yeniden başlatabilir olmamalıdır. İsteğe bağlı match, bildirim başlığına karşı büyük/küçük harf duyarsız bir alt dize sınamasıdır; belirtilmezse o türdeki her bildirim rutini tetikler.
Bir olay tetikleyicisi hiçbir zaman bir sonraki çalıştırma zamanına katkıda bulunmaz. Tetikleyicilerinin tamamı olay olan bir otomasyon bu yüzden sonraki çalıştırma göstermez: liste ve düzenleme iletişim kutusu bunun yerine Şu olduğunda çalışır… der. Bir olay tetikleyicisini bir zamanlamayla karıştırmak sorun değildir — zamanlanmış tetikleyiciler yine de saati yönetir.
İki koruma patlama yarıçapını sınırlar. Bir rutin, akış ne kadar yoğun olursa olsun olaylardan dakikada en fazla bir kez tetiklenir ve bir çalıştırmanın kendi başarısızlık bildirimi onu üreten rutini asla yeniden tetiklemez.
Çalıştırma, kendisini neyin tetiklediğini yönergesine eklenmiş olarak alır:
---
Trigger payload (JSON):
{"event":"channel-mention","title":"...","body":"...","href":"..."}
Çalıştırma
Koordinasyon kiralı zamanlayıcı dakikada bir çalışır; takvimi tek çoğaltma ilerletir. Süre geldiğinde çalıştırmayı kaydeder, kalıcı automation.run.v1 işini kuyruğa alır ve olayın en çok bir kez çalışması için next_run_at değerini compare-and-set ile ilerletir. İş otomasyon adlı sohbet oluşturur ve yönergeyi sağlayıcı yolu, persona varsayılanları ve kalıcılık dâhil normal kalıcı üretim hattına gönderir.
Sunucu kapalıysa sonraki tur son kaçan olayı bir kez çalıştırıp eskileri atlar. Duraklatma takvimi temizler; sürdürme veya düzenleme şimdiden yeniden hesaplar. Silme geçmişi dış anahtar zinciriyle kaldırır.
Kalıcı iş günlüğü sonucu belirler: üretim bitince başarılı, iş başarısız kuyruğa girince hata, 30 dakikada başlamazsa stalled.
Work hedefi sohbet işi yerine Work yaşam döngüsünü kullanır: kayıt oluşturulan göreve bağlanır, Runs ona gider, ajan tamamladığında veya girdi istediğinde başarılı, görev hata ya da iptalde başarısızdır. Bir Work hedefli çalıştırma için sonuç e-postası, Work çalıştırmasının kendisinin sakladığı özeti — görevin çalıştırma geçmişinde gösterilen ajanın bitirdiği aynı metni — taşır ve bir çalıştırma saklanmış özetlerden önceyse görevin tek satırlık durumuna döner. Work erişimi tetiklenirken denetlenir; geri alınırsa otomasyon work-access-denied olur. İlke kayıtta doğrulanır, ağ ve kaynak sınırları görevlere uygulanır. Yalnız doğrudan sağlayıcılar ve araç destekli modeller çalışır.
Ajan Rutinleri
Work otomasyonu workTaskId ile mevcut göreve bağlanabilir; bu ajan panelindeki Routines yapısıdır. Her olay yeni görev oluşturmaz; görevin kendi alanında, konuşmasında, modeli, sağlayıcısı ve ilkesiyle çalışır. Otomasyon model/ilke alanları kullanılmaz, sağlanan ilke kayıtta düşürülür. Bağ kayıtta doğrulanır. Silinmiş görev work-task-missing, çalışan veya canlı önizlemeli görev work-task-busy olur; kuyruğa alınmaz.
Webhook tetikleyicileri
Takvimin yanı sıra otomasyon dış bir sistemle de tetiklenebilir — CI hattı, cron hizmeti, ev otomasyonu. Otomasyonun düzenleme penceresinde Webhook tetikleyici → Etkinleştir otomasyona özgü bir gizli anahtar üretir; yalnız SHA-256 özeti saklandığından düz metin tam olarak bir kez gösterilir. Anahtarı yenilemek öncekini anında geçersiz kılar, webhook’u kapatmak uç noktayı yeniden kapatır.
Dış sistem otomasyonu şöyle tetikler:
curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."
(X-Libre-Webhook-Secret: lwh_... başlığı da kullanılabilir.) Yanıt, kuyruğa alınan çalışmanın kimliğiyle 202 olur — Şimdi çalıştır ile aynı elle çalıştırma yolu olduğundan çalışmalar aynı biçimde sonlanır, bildirim üretir ve geçmişte görünür. Gizli anahtar karşılaştırması sabit sürelidir, bulunmayan otomasyon ile yanlış anahtar aynı yanıtı verir (otomasyon kimliği sızdırılmaz) ve duraklatılmış otomasyon 409 döndürür: sahibin Şimdi çalıştır’ının aksine dış çağıran duraklatmayı aşamaz.
İstek gövdesindeki bir JSON nesnesi, rutinin neye tepki verdiğini görebilmesi için tetikleyici veri yükü olarak çalıştırmaya eşlik eder:
curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..." \
-H "Content-Type: application/json" \
-d '{"commit":"abc123","branch":"main"}'
Veri yükü, çalıştırmanın yürüttüğü yönergeye bir Trigger payload (JSON): başlığı altında eklenir — sohbet çalıştırmaları, yeni Work görevleri ve göreve bağlı rutinler için aynı şekilde. Yalnız JSON nesneleri taşınır (diziler ve skalerler yok sayılır) ve serileştirilmiş biçimi 4000 karakteri aşan bir veri yükü kesilmek yerine sunucu günlüğüne bir uyarıyla birlikte düşürülür. Gövdesiz bir tetikleme tam olarak öncekiyle aynı davranır.
API
Webhook tetiklemesi dışındaki tüm uç noktalar kimlik doğrulaması ister ve yalnız çağıranın otomasyonlarında çalışır; webhook tetiklemesi ise otomasyona özgü gizli anahtarla doğrulanır.
| Yöntem | Yol | Amaç |
|---|---|---|
GET | /api/automations | Listele |
POST | /api/automations | Oluştur |
GET | /api/automations/occurrences?from=&to= | Yaklaşan olaylar |
GET | /api/automations/runs | Geçmiş (süzülebilir) |
GET | /api/automations/runs/summary | Görülmeyen + 30 günlük bölümler |
POST | /api/automations/runs/seen | Tamamlananları görüldü işaretle |
GET | /api/automations/:automationId | Birini oku |
PUT | /api/automations/:automationId | Güncelle |
DELETE | /api/automations/:automationId | Sil |
POST | /api/automations/:automationId/pause | Duraklat |
POST | /api/automations/:automationId/resume | Sürdür |
POST | /api/automations/:automationId/run | Şimdi çalıştır (çalıştırma kimlikli 202) |
POST | /api/automations/:automationId/webhook | Gizli anahtarla tetikleme (202) |
POST | /api/automations/:automationId/webhook-secret | Gizli anahtarı üretme/yenileme |
DELETE | /api/automations/:automationId/webhook-secret | Webhook’u kapatma |
Kullanıcı en çok 50 otomasyon tutabilir; ad 200, yönerge 20.000 karakterle sınırlıdır.