@openclaw/feishu plugin के माध्यम से Feishu/Lark (सर्व-समावेशी सहयोग प्लेटफ़ॉर्म) से जुड़ता है: बॉट DM, समूह चैट, स्ट्रीमिंग कार्ड उत्तर, और Feishu दस्तावेज़/wiki/drive/Bitable टूल।
स्थिति: बॉट DM + समूह चैट के लिए प्रोडक्शन-तैयार। WebSocket डिफ़ॉल्ट इवेंट ट्रांसपोर्ट है (किसी सार्वजनिक URL की आवश्यकता नहीं); webhook मोड वैकल्पिक है।
त्वरित शुरुआत
OpenClaw 2026.5.29 या उसके बाद का संस्करण आवश्यक है। जाँचने के लिए
openclaw --version चलाएँ। openclaw update से अपग्रेड करें।1
चैनल सेटअप विज़ार्ड चलाएँ
@openclaw/feishu plugin मौजूद नहीं है, तो यह उसे इंस्टॉल करता है और फिर सेटअप के चरणों में आपका मार्गदर्शन करता है:- मैन्युअल सेटअप: Feishu Open Platform (
https://open.feishu.cn) या Lark Developer (https://open.larksuite.com) से App ID और App Secret पेस्ट करें। - QR सेटअप: स्वचालित रूप से बॉट बनाने के लिए Feishu ऐप में QR कोड स्कैन करें। यह प्रवाह DM को केवल आपके अपने खाते तक सीमित करता है (आपके
open_idके साथdmPolicy: "allowlist")।
2
सेटअप पूरा होने के बाद, बदलाव लागू करने के लिए Gateway पुनः आरंभ करें
इनबाउंड स्थायित्व
OpenClaw एजेंट को भेजने से पहले प्रमाणितim.message.receive_v1 और drive.notice.comment_add_v1 एनवेलप को टिकाऊ रूप से कतारबद्ध करता है। लंबित या पुनः प्रयास योग्य इवेंट Gateway के पुनः आरंभ होने के बाद भी बने रहते हैं, प्रत्येक चैट या दस्तावेज़ के अनुसार क्रमबद्ध रहते हैं, और सक्रिय या संरक्षित पूर्णता रिकॉर्ड मौजूद रहने तक डुप्लिकेट कतार प्रविष्टियों को रोकने के लिए Feishu के इवेंट ID का उपयोग करते हैं।
यदि सीमित पुनः प्रयासों के बाद किसी WebSocket इवेंट को स्थायी रूप से सहेजा नहीं जा सकता, तो OpenClaw असंपादित टर्न से आगे बढ़ने के बजाय उस सॉकेट को बंद करता है और नया प्रमाणित कनेक्शन स्थापित करने के लिए बाध्य करता है। प्रतिक्रियाओं और VC मीटिंग आमंत्रणों सहित अन्य Feishu इवेंट प्रकार अपने सामान्य इवेंट पथों का उपयोग करते हैं और उन्हें यह टिकाऊ-कतार गारंटी नहीं मिलती।
अभिगम नियंत्रण
सीधे संदेश
कौन बॉट को DM कर सकता है, इसे नियंत्रित करने के लिएchannels.feishu.dmPolicy (डिफ़ॉल्ट: pairing) कॉन्फ़िगर करें:
पेयरिंग अनुरोध स्वीकृत करें:
समूह चैट
समूह नीति (channels.feishu.groupPolicy, डिफ़ॉल्ट: allowlist):
उल्लेख की आवश्यकता (
channels.feishu.requireMention):
- डिफ़ॉल्ट: @उल्लेख आवश्यक है, सिवाय इसके कि प्रभावी समूह नीति
"open"हो; वहाँ यह डिफ़ॉल्ट रूप सेfalseहोती है, ताकि ऐसे संदेश जिनमें उल्लेख नहीं हो सकता (उदाहरण के लिए चित्र) फिर भी एजेंट तक पहुँचें। - ओवरराइड करने के लिए स्पष्ट रूप से
trueयाfalseसेट करें; प्रति-समूह ओवरराइड:channels.feishu.groups.<chat_id>.requireMention। - केवल-प्रसारण
@allऔर@_allको बॉट उल्लेख नहीं माना जाता। ऐसा संदेश जिसमें@allऔर सीधे बॉट, दोनों का उल्लेख हो, फिर भी बॉट उल्लेख माना जाता है।
समूह कॉन्फ़िगरेशन के उदाहरण
सभी समूहों को अनुमति दें, @उल्लेख आवश्यक नहीं
सभी समूहों को अनुमति दें, फिर भी @उल्लेख आवश्यक हो
केवल विशिष्ट समूहों को अनुमति दें
allowlist मोड में, आप स्पष्ट groups.<chat_id> प्रविष्टि जोड़कर भी किसी समूह को अनुमति दे सकते हैं। स्पष्ट प्रविष्टियाँ groupPolicy: "disabled" को ओवरराइड नहीं करतीं। groups.* के अंतर्गत वाइल्डकार्ड डिफ़ॉल्ट मेल खाने वाले समूहों को कॉन्फ़िगर करते हैं, लेकिन वे स्वयं समूहों को अनुमति नहीं देते।
समूह के भीतर प्रेषकों को सीमित करें
channels.feishu.groupSenderAllowFrom सभी समूहों के लिए समान प्रेषक अनुमति-सूची सेट करता है; प्रति-समूह allowFrom को प्राथमिकता मिलती है।
बॉट द्वारा लिखे गए संदेश
Feishu डिफ़ॉल्ट रूप से अन्य बॉट द्वारा लिखे गए संदेशों की अनदेखी करता है। बॉट-से-बॉट समूह वार्तालापों को अनुमति देने के लिए, ऐप कोim:message.group_at_msg.include_bot:readonly और im:message:readonly स्कोप प्रदान करें, फिर allowBots सेट करें:
channels.defaults.botLoopProtection सुरक्षा लागू करता है।
समूह/उपयोगकर्ता ID प्राप्त करें
समूह ID (chat_id, प्रारूप: oc_xxx)
Feishu/Lark में समूह खोलें, ऊपरी-दाएँ कोने में मेनू आइकन पर क्लिक करें और Settings पर जाएँ। समूह ID (chat_id) सेटिंग पृष्ठ पर सूचीबद्ध है।

उपयोगकर्ता ID (open_id, प्रारूप: ou_xxx)
Gateway शुरू करें, बॉट को DM भेजें, फिर लॉग जाँचें:
open_id खोजें। आप लंबित पेयरिंग अनुरोध भी जाँच सकते हैं:
सामान्य कमांड
Feishu/Lark नेटिव स्लैश-कमांड मेनू का समर्थन नहीं करता, इसलिए इन्हें सादे टेक्स्ट संदेशों के रूप में भेजें।
समस्या निवारण
बॉट समूह चैट में उत्तर नहीं देता
- सुनिश्चित करें कि बॉट समूह में जोड़ा गया है
- सुनिश्चित करें कि आप बॉट का @उल्लेख करते हैं (डिफ़ॉल्ट रूप से आवश्यक)
- सत्यापित करें कि
groupPolicy,"disabled"नहीं है - लॉग जाँचें:
openclaw logs --follow
बॉट को संदेश प्राप्त नहीं होते
- सुनिश्चित करें कि बॉट Feishu Open Platform / Lark Developer में प्रकाशित और स्वीकृत है
- सुनिश्चित करें कि इवेंट सदस्यता में
im.message.receive_v1शामिल है - मीटिंग आमंत्रण पर स्वतः जुड़ने के लिए,
vc.bot.meeting_invited_v1की सदस्यता भी लें - सुनिश्चित करें कि persistent connection (WebSocket) चुना गया है
- सुनिश्चित करें कि सभी आवश्यक अनुमति स्कोप प्रदान किए गए हैं
- सुनिश्चित करें कि Gateway चल रहा है:
openclaw gateway status - लॉग जाँचें:
openclaw logs --follow
vc.bot.meeting_invited_v1 की सदस्यता लेने से केवल इवेंट वितरित होता है। स्वचालित रूप से जुड़ना
डिफ़ॉल्ट रूप से बंद है। इसे वैश्विक रूप से सक्षम करने के लिए:
vc:meeting.bot.join:write स्कोप भी आवश्यक है। उदाहरण के लिए, आधिकारिक
lark-cli VC एजेंट skill
vc +meeting-join प्रदान करता है।
Feishu मोबाइल ऐप में QR सेटअप प्रतिक्रिया नहीं देता
- सेटअप दोबारा चलाएँ:
openclaw channels login --channel feishu - मैन्युअल सेटअप चुनें
- Feishu Open Platform में स्वयं-निर्मित ऐप बनाएँ और उसका App ID तथा App Secret कॉपी करें
- उन क्रेडेंशियल को सेटअप विज़ार्ड में पेस्ट करें
App Secret लीक हो गया
- Feishu Open Platform / Lark Developer में App Secret रीसेट करें
- अपने कॉन्फ़िग में मान अपडेट करें
- Gateway पुनः आरंभ करें:
openclaw gateway restart
उन्नत कॉन्फ़िगरेशन
एकाधिक खाते
defaultAccount नियंत्रित करता है कि जब आउटबाउंड API कोई accountId निर्दिष्ट नहीं करते, तब किस खाते का उपयोग किया जाए। खाता प्रविष्टियाँ शीर्ष-स्तरीय सेटिंग प्राप्त करती हैं; अधिकांश शीर्ष-स्तरीय कुंजियाँ प्रति खाते ओवरराइड की जा सकती हैं।
accounts.<id>.tts, tts जैसी ही संरचना का उपयोग करता है और वैश्विक TTS कॉन्फ़िग पर डीप-मर्ज होता है, ताकि बहु-बॉट Feishu सेटअप साझा प्रदाता क्रेडेंशियल को वैश्विक रूप से रख सकें और प्रति खाते केवल वॉइस, मॉडल, पर्सोना या ऑटो मोड को ओवरराइड कर सकें।
संदेश सीमाएँ
textChunkLimit- आउटबाउंड टेक्स्ट खंड का आकार (डिफ़ॉल्ट:4000वर्ण)streaming.chunkMode-"length"(डिफ़ॉल्ट) सीमा पर विभाजित करता है;"newline"नई पंक्ति की सीमाओं को प्राथमिकता देता हैmediaMaxMb- मीडिया अपलोड/डाउनलोड सीमा (डिफ़ॉल्ट:30MB)
स्ट्रीमिंग
Feishu/Lark इंटरैक्टिव कार्ड (Card Kit स्ट्रीमिंग API) के माध्यम से स्ट्रीमिंग उत्तरों का समर्थन करता है। सक्षम होने पर, बॉट टेक्स्ट जनरेट करते समय कार्ड को रीयल टाइम में अपडेट करता है।streaming.mode: "off" सेट करें; renderMode: "raw" (कार्ड के बजाय सादा टेक्स्ट) भी स्ट्रीमिंग कार्ड अक्षम कर देता है। streaming.block.enabled डिफ़ॉल्ट रूप से बंद है; इसे केवल तब सक्षम करें जब आप अंतिम उत्तर से पहले पूर्ण हो चुके सहायक ब्लॉक भेजना चाहते हों। पुराना बूलियन streaming और समतल blockStreaming / blockStreamingCoalesce / chunkMode कुंजियाँ openclaw doctor --fix के माध्यम से इस नेस्टेड संरचना में माइग्रेट होती हैं।
कोटा अनुकूलन
दो वैकल्पिक फ़्लैग के साथ Feishu/Lark API कॉल की संख्या कम करें:typingIndicator(डिफ़ॉल्टtrue): टाइपिंग प्रतिक्रिया कॉल छोड़ने के लिएfalseसेट करेंresolveSenderNames(डिफ़ॉल्टtrue): प्रेषक प्रोफ़ाइल लुकअप छोड़ने के लिएfalseसेट करें
समूह सत्र का दायरा और विषय थ्रेड
channels.feishu.groupSessionScope (शीर्ष-स्तर पर, प्रति खाता या प्रति समूह) नियंत्रित करता है कि समूह संदेश एजेंट सत्रों से कैसे मैप होते हैं:
विषय दायरों के लिए, नेटिव Feishu/Lark विषय समूह इवेंट
thread_id (omt_*) को प्रामाणिक विषय सत्र कुंजी के रूप में उपयोग करते हैं। यदि किसी नेटिव विषय आरंभकर्ता इवेंट में thread_id न हो, तो OpenClaw टर्न को रूट करने से पहले इसे Feishu से प्राप्त करता है। सामान्य समूह उत्तर, जिन्हें OpenClaw थ्रेड में बदलता है, उत्तर के मूल संदेश ID (om_*) का उपयोग जारी रखते हैं, ताकि पहला टर्न और बाद के टर्न एक ही सत्र में रहें।
बॉट के उत्तरों द्वारा इनलाइन उत्तर देने के बजाय Feishu विषय थ्रेड बनाने या जारी रखने के लिए replyInThread: "enabled" (शीर्ष-स्तर पर या प्रति समूह) सेट करें। topicSessionMode, groupSessionScope का अप्रचलित पूर्ववर्ती है; groupSessionScope को प्राथमिकता दें।
Feishu कार्यस्थान टूल
Plugin में Feishu दस्तावेज़ों, चैट, ज्ञान-भंडार, क्लाउड स्टोरेज, अनुमतियों और Bitable के लिए एजेंट टूल के साथ उनसे मेल खाने वाली Skills (feishu-doc, feishu-drive, feishu-perm, feishu-wiki) शामिल हैं। टूल परिवारों को channels.feishu.tools द्वारा नियंत्रित किया जाता है:
tools.base, tools.bitable का उपनाम है; दोनों सेट होने पर स्पष्ट bitable मान को प्राथमिकता मिलती है। प्रति-खाता नियंत्रण accounts.<id>.tools के अंतर्गत होते हैं।
रूट डायरेक्टरी के बाहर सीधे feishu_drive info लुकअप के लिए drive:drive.metadata:readonly प्रदान करें,
जब तक ऐप के पास पहले से पूर्ण drive:drive दायरा न हो। दोनों में से कोई भी दायरा न होने पर, info
drive:drive:readonly के माध्यम से पुराना रूट-डायरेक्टरी लुकअप उपलब्ध रखता है।
ACP सत्र
Feishu/Lark, DM और समूह थ्रेड संदेशों के लिए ACP का समर्थन करता है। Feishu/Lark ACP टेक्स्ट कमांड द्वारा संचालित होता है—कोई नेटिव स्लैश-कमांड मेनू नहीं है, इसलिए वार्तालाप में सीधे/acp ... संदेशों का उपयोग करें।
स्थायी ACP बाइंडिंग
चैट से ACP आरंभ करना
किसी Feishu/Lark DM या थ्रेड में:--thread here, DM और Feishu/Lark थ्रेड संदेशों के लिए काम करता है। बाउंड वार्तालाप में बाद के संदेश सीधे उस ACP सत्र में रूट होते हैं।
बहु-एजेंट रूटिंग
Feishu/Lark DM या समूहों को अलग-अलग एजेंटों तक रूट करने के लिएbindings का उपयोग करें।
match.channel:"feishu"match.peer.kind:"direct"(DM) या"group"(समूह चैट)match.peer.id: उपयोगकर्ता Open ID (ou_xxx) या समूह ID (oc_xxx)
प्रति-उपयोगकर्ता एजेंट पृथक्करण (डायनेमिक एजेंट निर्माण)
प्रत्येक DM उपयोगकर्ता के लिए स्वचालित रूप से पृथक एजेंट इंस्टेंस बनाने हेतुdynamicAgentCreation सक्षम करें। प्रत्येक उपयोगकर्ता को अपना अलग मिलता है:
- स्वतंत्र कार्यस्थान डायरेक्टरी
- अलग
USER.md/SOUL.md/MEMORY.md - निजी वार्तालाप इतिहास
- पृथक Skills और स्थिति
डायनेमिक बाइंडिंग में सामान्यीकृत Feishu
accountId शामिल होता है, इसलिए डिफ़ॉल्ट और नामित खाते प्रत्येक प्रेषक को सही डायनेमिक एजेंट तक रूट करते हैं।यदि किसी नामित खाते ने पुराने रिलीज़ में बिना दायरे वाला डायनेमिक एजेंट बनाया था, तो वह पुराना एजेंट अभी भी maxAgents की सीमा में गिना जाता है। उसे हटाने से पहले पुष्टि करें कि डिफ़ॉल्ट खाता उसका उपयोग नहीं करता, या अस्थायी रूप से maxAgents बढ़ाएँ; OpenClaw सुरक्षित रूप से यह निर्धारित नहीं कर सकता कि अस्पष्ट पुरानी स्थिति का स्वामी कौन-सा खाता है।त्वरित सेटअप
यह कैसे काम करता है
जब कोई नया उपयोगकर्ता अपना पहला DM भेजता है:- चैनल एक अद्वितीय
agentIdउत्पन्न करता है: डिफ़ॉल्ट खाते के लिएfeishu-{user_open_id}, या नामित खाते के लिए सीमित खाता-उपसर्गित पहचान डाइजेस्ट workspaceTemplateपथ पर नया कार्यस्थान बनाता है- एजेंट पंजीकृत करता है और इस उपयोगकर्ता के लिए बाइंडिंग बनाता है
- कार्यस्थान सहायक पहली पहुँच पर बूटस्ट्रैप फ़ाइलें (
AGENTS.md,SOUL.md,USER.md, आदि) सुनिश्चित करता है - इस उपयोगकर्ता के सभी भावी संदेश उसके समर्पित एजेंट तक रूट करता है
कॉन्फ़िगरेशन विकल्प
टेम्पलेट चर:
{agentId}- उत्पन्न एजेंट ID (उदाहरण:feishu-ou_xxxxxxयाfeishu-support-<identity_digest>){userId}- प्रेषक का Feishu open_id (उदाहरण:ou_xxxxxx)
सत्र का दायरा
session.dmScope नियंत्रित करता है कि सीधे संदेश एजेंट सत्रों से कैसे मैप होते हैं। यह एक वैश्विक सेटिंग है जो सभी चैनलों को प्रभावित करती है।
समझौता:
"main" का उपयोग स्वचालित बूटस्ट्रैप फ़ाइल लोडिंग (USER.md, SOUL.md, MEMORY.md) सक्षम करता है, लेकिन इसका अर्थ है कि सभी चैनलों के सभी DM एक ही सत्र कुंजी पैटर्न साझा करते हैं। उन सार्वजनिक बहु-उपयोगकर्ता बॉट के लिए, जहाँ पृथक्करण बूटस्ट्रैप स्वतः-लोडिंग से अधिक महत्वपूर्ण है, "per-channel-peer" पर विचार करें और बूटस्ट्रैप फ़ाइलें मैन्युअल रूप से प्रबंधित करें।
जब नामित Feishu खातों को एक ही प्रेषक के लिए अलग-अलग सत्र रखने हों, तो
"per-account-channel-peer" का उपयोग करें। डायनेमिक बाइंडिंग खाते का दायरा बनाए रखती हैं।सामान्य बहु-उपयोगकर्ता परिनियोजन
सत्यापन
डायनेमिक निर्माण के काम करने की पुष्टि के लिए Gateway लॉग जाँचें:टिप्पणियाँ
- वर्कस्पेस पृथक्करण: प्रत्येक उपयोगकर्ता को अपनी वर्कस्पेस डायरेक्टरी और एजेंट इंस्टेंस मिलता है। सामान्य संदेश प्रवाह में उपयोगकर्ता एक-दूसरे का वार्तालाप इतिहास या फ़ाइलें नहीं देख सकते।
- सुरक्षा सीमा: यह संदेश-संदर्भ पृथक्करण तंत्र है, दुर्भावनापूर्ण सह-किरायेदारों के विरुद्ध सुरक्षा सीमा नहीं। एजेंट प्रक्रिया और होस्ट परिवेश साझा होते हैं।
- कॉन्फ़िगरेशन लेखन सक्षम रहना चाहिए: डायनेमिक एजेंट निर्माण, एजेंट और बाइंडिंग को कॉन्फ़िगरेशन में लिखता है; जब
channels.feishu.configWrites,falseहोता है, तो इसे छोड़ दिया जाता है (डिफ़ॉल्ट: सक्षम)। bindingsखाली होना चाहिए: डायनेमिक एजेंट अपनी बाइंडिंग स्वतः पंजीकृत करते हैं- अपग्रेड पथ: मौजूदा मैन्युअल बाइंडिंग डायनेमिक एजेंटों के साथ काम करती रहती हैं
session.dmScopeवैश्विक है: यह केवल Feishu ही नहीं, सभी चैनलों को प्रभावित करता है
कॉन्फ़िगरेशन संदर्भ
पूर्ण कॉन्फ़िगरेशन: Gateway कॉन्फ़िगरेशनसमर्थित संदेश प्रकार
प्राप्त करना
- ✅ टेक्स्ट
- ✅ रिच टेक्स्ट (पोस्ट)
- ✅ चित्र
- ✅ फ़ाइलें
- ✅ ऑडियो
- ✅ वीडियो/मीडिया
- ✅ स्टिकर
file_key JSON के बजाय
मीडिया प्लेसहोल्डर के रूप में सामान्यीकृत किया जाता है। जब tools.media.audio कॉन्फ़िगर हो, तब OpenClaw
वॉइस-नोट संसाधन डाउनलोड करता है और एजेंट टर्न से पहले साझा ऑडियो ट्रांसक्रिप्शन चलाता है,
जिससे एजेंट को बोले गए शब्दों का ट्रांसक्रिप्ट मिलता है। यदि Feishu ऑडियो पेलोड में
ट्रांसक्रिप्ट टेक्स्ट सीधे शामिल करता है, तो उस टेक्स्ट का उपयोग किसी अन्य
ASR कॉल के बिना किया जाता है। ऑडियो ट्रांसक्रिप्शन प्रदाता के बिना भी एजेंट को
सहेजे गए अटैचमेंट के साथ <media:audio> प्लेसहोल्डर मिलता है, अपरिष्कृत Feishu
संसाधन पेलोड नहीं।
भेजना
- ✅ टेक्स्ट
- ✅ चित्र
- ✅ फ़ाइलें
- ✅ ऑडियो
- ✅ वीडियो/मीडिया
- ✅ इंटरैक्टिव कार्ड (स्ट्रीमिंग अपडेट सहित)
- ⚠️ रिच टेक्स्ट (पोस्ट-शैली फ़ॉर्मेटिंग; पूर्ण Feishu/Lark लेखन क्षमताओं का समर्थन नहीं करता)
audio संदेश प्रकार का उपयोग करते हैं और इनके लिए
Ogg/Opus अपलोड मीडिया (file_type: "opus") आवश्यक है। मौजूदा .opus और .ogg मीडिया
सीधे मूल ऑडियो के रूप में भेजा जाता है। MP3/WAV/M4A और अन्य संभावित ऑडियो प्रारूपों को
ffmpeg के साथ 48kHz Ogg/Opus में केवल तभी ट्रांसकोड किया जाता है, जब उत्तर में ध्वनि
डिलीवरी का अनुरोध हो (audioAsVoice / संदेश टूल asVoice, जिसमें TTS वॉइस-नोट
उत्तर शामिल हैं)। सामान्य MP3 अटैचमेंट नियमित फ़ाइलें ही रहते हैं। यदि ffmpeg उपलब्ध नहीं है या
रूपांतरण विफल हो जाता है, तो OpenClaw फ़ाइल अटैचमेंट का उपयोग करता है और कारण लॉग करता है।
थ्रेड और उत्तर
- ✅ इनलाइन उत्तर
- ✅ थ्रेड उत्तर
- ✅ किसी थ्रेड संदेश का उत्तर देते समय मीडिया उत्तर थ्रेड से संबद्ध रहते हैं
संबंधित
- चैनल अवलोकन - सभी समर्थित चैनल
- पेयरिंग - DM प्रमाणीकरण और पेयरिंग प्रवाह
- समूह - समूह चैट का व्यवहार और उल्लेख गेटिंग
- चैनल रूटिंग - संदेशों के लिए सत्र रूटिंग
- सुरक्षा - एक्सेस मॉडल और सुदृढ़ीकरण