मुख्य कंटेंट तक स्किप करें

स्वचालन

स्वचालन समय पर निर्देश चलाकर परिणाम सामान्य चैट बनाता है। दैनिक समाचार सार, साप्ताहिक समीक्षा, मासिक रिपोर्ट — हर रन सर्वर पर बिना UI चलता, चैट सूची में आता और सामान्य बातचीत की तरह जारी होता है।

संरचना​

स्वचालन का नाम, स्वतंत्र निर्देश, अधिकतम पाँच ट्रिगर, वैकल्पिक मॉडल (खाली हो तो रन समय का डिफ़ॉल्ट चैट मॉडल), लक्ष्य और सूचना पसंद होती है। Chat session निर्देश बातचीत कतार में रखता; Work task निर्देश को पहला संदेश बनाकर अलग Work क्षेत्र और वैकल्पिक नीति शुरू करता है। सूचना चालू हो तो विफलता सूचना पेटी में आती है, ताकि Automations पृष्ठ बंद होने पर भी विफलता आपको मिले। अलग से, Settings → Notifications → Email notifications में Automation results चालू करने पर, व्यवस्थापक द्वारा आउटगोइंग मेल सर्वर कॉन्फ़िगर करते ही हर रन का परिणाम आपको ईमेल किया जाता है (देखें सूचनाएँ)। नाम/निर्देश एन्क्रिप्टेड हैं। स्वचालन निर्माता का है।

ट्रिगर once, hourly, daily, weekly, monthly, yearly मॉडल उपयोग करते हैं। अगला रन सर्वर समय क्षेत्र का सबसे निकट आगामी अवसर है।

Event ट्रिगर​

सातवाँ प्रकार, event, का कोई घड़ी-आधार नहीं: यह तब चलता है जब आपकी कोई सूचना आती है।

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

event किसी भी सूचना प्रकार के लिए हो सकता है, सिवाय automation-failed के — एक रूटीन को अपनी ही विफलता सूचना से खुद को दोबारा शुरू नहीं करने देना चाहिए। वैकल्पिक match सूचना शीर्षक पर केस-असंवेदनशील substring जाँच है; इसके बिना उस प्रकार की हर सूचना रूटीन चलाती है।

Event ट्रिगर कभी अगला-रन समय नहीं देता। जिस स्वचालन के सभी ट्रिगर event हों उसका कोई अगला रन नहीं दिखता: सूची और संपादन संवाद इसके बजाय Runs when … कहते हैं। Event ट्रिगर को शेड्यूल के साथ मिलाना ठीक है — शेड्यूल किए ट्रिगर तब भी घड़ी चलाते रहते हैं।

दो सुरक्षा-सीमाएँ प्रभाव-क्षेत्र सीमित करती हैं। कोई रूटीन events से अधिकतम एक बार प्रति मिनट चलता है, चाहे स्ट्रीम कितनी व्यस्त हो, और किसी रन की अपनी विफलता सूचना उसे बनाने वाले रूटीन को कभी फिर नहीं चलाती।

रन को यह मिलता है कि उसे किसने चलाया, निर्देशों में जोड़कर:

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

निष्पादन​

समन्वय लीज़ वाला शेड्यूलर हर मिनट चलता है, इसलिए एक प्रतिकृति समय बढ़ाती है। समय आने पर रन दर्ज, automation.run.v1 कार्य कतारबद्ध और next_run_at compare-and-set से बढ़ता है ताकि अवसर एक बार चले। कार्य स्वचालन नाम का चैट बनाकर निर्देश को प्रदाता मार्ग, persona और स्थायित्व सहित सामान्य पाइपलाइन में भेजता है।

सर्वर बंद रहा हो तो अगला चक्र अंतिम अवसर एक बार चलाकर पुराने छोड़ता है। रोकना शेड्यूल साफ़ करता; जारी/संपादन वर्तमान समय से पुनर्गणना करता। हटाना इतिहास शृंखला से मिटाता है।

स्थायी कार्य लॉग परिणाम तय करता है: जनरेशन पूरी पर सफल, विफल कतार पर त्रुटि, 30 मिनट में न शुरू हो तो stalled।

Work लक्ष्य चैट कार्य के बजाय Work जीवनचक्र उपयोग करता है: रन बने कार्य से जुड़ता, Runs सीधा खोलता, एजेंट पूरा या इनपुट माँगे तो सफल, विफल/रद्द पर त्रुटि। Work-लक्ष्य रन के परिणाम ईमेल में वही सारांश होता है जो Work रन ने खुद सहेजा — एजेंट किस पर समाप्त हुआ, ठीक वही पाठ जो कार्य का रन इतिहास दिखाता है — और अगर रन सहेजे सारांश से पुराना हो तो कार्य की एक-पंक्ति स्थिति दिखाता है। पहुँच ट्रिगर समय जाँची जाती है; हटने पर work-access-denied। नीति सहेजते समय जाँची और सभी कार्यों पर लागू होती है। केवल सीधे प्रदाता और उपकरण मॉडल चलते हैं।

एजेंट रूटीन​

Work स्वचालन workTaskId द्वारा मौजूदा कार्य से जुड़ सकता है — एजेंट पैनल में Routines। हर अवसर नया कार्य नहीं बनाता; उसी स्थान, बातचीत, मॉडल, प्रदाता और नीति में चलता है। स्वचालन मॉडल/नीति लागू नहीं, दी नीति हटती है। हटे कार्य पर work-task-missing, चालू/पूर्वावलोकन पर work-task-busy; कतार नहीं।

Webhook ट्रिगर​

शेड्यूल के अलावा स्वचालन को कोई बाहरी सिस्टम भी चला सकता है — CI पाइपलाइन, cron सेवा, होम ऑटोमेशन। स्वचालन के संपादन संवाद में Webhook ट्रिगर → सक्षम करें प्रति-स्वचालन secret बनाता है; केवल उसका SHA-256 सहेजा जाता है, इसलिए plaintext ठीक एक बार दिखता है। Secret बदलने पर पिछला तुरंत अमान्य, और webhook बंद करने पर एंडपॉइंट फिर बंद।

बाहरी सिस्टम स्वचालन ऐसे चलाता है:

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

(X-Libre-Webhook-Secret: lwh_... वैकल्पिक हेडर के रूप में भी चलता है।) उत्तर कतारबद्ध रन ID सहित 202 होता है — वही मैनुअल-रन पथ जो अभी चलाएँ का है, इसलिए रन उसी तरह निपटते, सूचित करते और इतिहास में दिखते हैं। Secret तुलना constant-time है, अनुपस्थित स्वचालन और गलत secret एक जैसा उत्तर देते हैं (कोई automation-id oracle नहीं), और रुका हुआ स्वचालन 409 देता है: स्वामी के अभी चलाएँ के विपरीत बाहरी कॉलकर्ता रोक को पार नहीं कर सकता।

अनुरोध बॉडी में एक JSON ऑब्जेक्ट ट्रिगर पेलोड के रूप में रन में जाता है, ताकि रूटीन देख सके कि वह किस पर प्रतिक्रिया दे रहा है:

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

पेलोड Trigger payload (JSON): शीर्षक के नीचे रन द्वारा चलाए निर्देशों में जोड़ा जाता है — चैट रन, नए Work कार्य और कार्य-बद्ध रूटीन सभी के लिए समान रूप से। केवल JSON ऑब्जेक्ट ले जाए जाते हैं (arrays और scalars अनदेखा होते हैं), और जो पेलोड serialize होने पर 4000 वर्ण से अधिक हो वह काटा नहीं बल्कि हटाया जाता है, साथ में सर्वर लॉग में चेतावनी। बॉडी-रहित फायर पहले जैसा ही चलता है।

API​

webhook ट्रिगर को छोड़ सभी एंडपॉइंट प्रमाणीकरण चाहते और केवल कॉलकर्ता के स्वचालन पर चलते हैं; webhook ट्रिगर प्रति-स्वचालन secret से प्रमाणित होता है।

विधिपथउद्देश्य
GET/api/automationsसूची
POST/api/automationsबनाएँ
GET/api/automations/occurrences?from=&to=आगामी अवसर
GET/api/automations/runsइतिहास
GET/api/automations/runs/summaryन देखे + 30 दिन
POST/api/automations/runs/seenदेखा चिह्न
GET/api/automations/:automationIdपढ़ें
PUT/api/automations/:automationIdबदलें
DELETE/api/automations/:automationIdहटाएँ
POST/api/automations/:automationId/pauseरोकें
POST/api/automations/:automationId/resumeजारी
POST/api/automations/:automationId/runअभी चलाएँ (ID सहित 202)
POST/api/automations/:automationId/webhookSecret से चलाएँ (202)
POST/api/automations/:automationId/webhook-secretSecret बनाएँ/बदलें
DELETE/api/automations/:automationId/webhook-secretWebhook बंद करें

उपयोगकर्ता 50 स्वचालन रख सकता है; नाम 200 और निर्देश 20,000 अक्षर तक।