Regional platforms

Feishu

OpenClaw आधिकारिक @openclaw/feishu plugin के माध्यम से Feishu/Lark (सर्व-समावेशी सहयोग प्लेटफ़ॉर्म) से जुड़ता है: बॉट DM, समूह चैट, स्ट्रीमिंग कार्ड उत्तर, और Feishu दस्तावेज़/wiki/drive/Bitable टूल।

स्थिति: बॉट DM + समूह चैट के लिए प्रोडक्शन-तैयार। WebSocket डिफ़ॉल्ट इवेंट ट्रांसपोर्ट है (किसी सार्वजनिक URL की आवश्यकता नहीं); webhook मोड वैकल्पिक है।

त्वरित शुरुआत

  • चैनल सेटअप विज़ार्ड चलाएँ

    bash
    openclaw channels login --channel feishu

    यदि @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")।

    विज़ार्ड API डोमेन (Feishu या Lark) और समूह नीति भी पूछता है। यदि घरेलू Feishu मोबाइल ऐप QR कोड पर प्रतिक्रिया नहीं देता, तो सेटअप दोबारा चलाएँ और मैन्युअल सेटअप चुनें।

  • सेटअप पूरा होने के बाद, बदलाव लागू करने के लिए Gateway पुनः आरंभ करें

    bash
    openclaw gateway restart
  • इनबाउंड स्थायित्व

    OpenClaw एजेंट को भेजने से पहले प्रमाणित im.message.receive_v1 और drive.notice.comment_add_v1 एनवेलप को टिकाऊ रूप से कतारबद्ध करता है। लंबित या पुनः प्रयास योग्य इवेंट Gateway के पुनः आरंभ होने के बाद भी बने रहते हैं, प्रत्येक चैट या दस्तावेज़ के अनुसार क्रमबद्ध रहते हैं, और सक्रिय या संरक्षित पूर्णता रिकॉर्ड मौजूद रहने तक डुप्लिकेट कतार प्रविष्टियों को रोकने के लिए Feishu के इवेंट ID का उपयोग करते हैं।

    यदि सीमित पुनः प्रयासों के बाद किसी WebSocket इवेंट को स्थायी रूप से सहेजा नहीं जा सकता, तो OpenClaw असंपादित टर्न से आगे बढ़ने के बजाय उस सॉकेट को बंद करता है और नया प्रमाणित कनेक्शन स्थापित करने के लिए बाध्य करता है। प्रतिक्रियाओं और VC मीटिंग आमंत्रणों सहित अन्य Feishu इवेंट प्रकार अपने सामान्य इवेंट पथों का उपयोग करते हैं और उन्हें यह टिकाऊ-कतार गारंटी नहीं मिलती।

    अभिगम नियंत्रण

    सीधे संदेश

    कौन बॉट को DM कर सकता है, इसे नियंत्रित करने के लिए channels.feishu.dmPolicy (डिफ़ॉल्ट: pairing) कॉन्फ़िगर करें:

    मान व्यवहार
    "pairing" अज्ञात उपयोगकर्ताओं को पेयरिंग कोड मिलता है; CLI से स्वीकृत करें
    "allowlist" केवल allowFrom में सूचीबद्ध उपयोगकर्ता चैट कर सकते हैं
    "open" सार्वजनिक DM; कॉन्फ़िग सत्यापन के लिए allowFrom में "*" शामिल होना आवश्यक है। गैर-वाइल्डकार्ड प्रविष्टियाँ अभी भी अभिगम सीमित करती हैं

    पेयरिंग अनुरोध स्वीकृत करें:

    bash
    openclaw pairing list feishuopenclaw pairing approve feishu <CODE>

    समूह चैट

    समूह नीति (channels.feishu.groupPolicy, डिफ़ॉल्ट: allowlist):

    मान व्यवहार
    "open" समूहों के सभी संदेशों का उत्तर दें
    "allowlist" केवल groupAllowFrom में या groups.<chat_id> के अंतर्गत स्पष्ट रूप से कॉन्फ़िगर किए गए समूहों को उत्तर दें
    "disabled" सभी समूह संदेश अक्षम करें; स्पष्ट groups.<chat_id> प्रविष्टियाँ इसे ओवरराइड नहीं करतीं

    उल्लेख की आवश्यकता (channels.feishu.requireMention):

    • डिफ़ॉल्ट: @उल्लेख आवश्यक है, सिवाय इसके कि प्रभावी समूह नीति "open" हो; वहाँ यह डिफ़ॉल्ट रूप से false होती है, ताकि ऐसे संदेश जिनमें उल्लेख नहीं हो सकता (उदाहरण के लिए चित्र) फिर भी एजेंट तक पहुँचें।
    • ओवरराइड करने के लिए स्पष्ट रूप से true या false सेट करें; प्रति-समूह ओवरराइड: channels.feishu.groups.<chat_id>.requireMention
    • केवल-प्रसारण @all और @_all को बॉट उल्लेख नहीं माना जाता। ऐसा संदेश जिसमें @all और सीधे बॉट, दोनों का उल्लेख हो, फिर भी बॉट उल्लेख माना जाता है।

    समूह कॉन्फ़िगरेशन के उदाहरण

    सभी समूहों को अनुमति दें, @उल्लेख आवश्यक नहीं

    json5
    {  channels: {    feishu: {      groupPolicy: "open", // "open" में requireMention डिफ़ॉल्ट रूप से false होता है    },  },}

    सभी समूहों को अनुमति दें, फिर भी @उल्लेख आवश्यक हो

    json5
    {  channels: {    feishu: {      groupPolicy: "open",      requireMention: true,    },  },}

    केवल विशिष्ट समूहों को अनुमति दें

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      // समूह ID ऐसे दिखाई देते हैं: oc_xxx      groupAllowFrom: ["oc_xxx", "oc_yyy"],    },  },}

    allowlist मोड में, आप स्पष्ट groups.<chat_id> प्रविष्टि जोड़कर भी किसी समूह को अनुमति दे सकते हैं। स्पष्ट प्रविष्टियाँ groupPolicy: "disabled" को ओवरराइड नहीं करतीं। groups.* के अंतर्गत वाइल्डकार्ड डिफ़ॉल्ट मेल खाने वाले समूहों को कॉन्फ़िगर करते हैं, लेकिन वे स्वयं समूहों को अनुमति नहीं देते।

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      groups: {        oc_xxx: {          requireMention: false,        },      },    },  },}

    समूह के भीतर प्रेषकों को सीमित करें

    json5
    {  channels: {    feishu: {      groupPolicy: "allowlist",      groupAllowFrom: ["oc_xxx"],      groups: {        oc_xxx: {          // उपयोगकर्ता open_id ऐसे दिखाई देते हैं: ou_xxx          allowFrom: ["ou_user1", "ou_user2"],        },      },    },  },}

    channels.feishu.groupSenderAllowFrom सभी समूहों के लिए समान प्रेषक अनुमति-सूची सेट करता है; प्रति-समूह allowFrom को प्राथमिकता मिलती है।

    बॉट द्वारा लिखे गए संदेश

    Feishu डिफ़ॉल्ट रूप से अन्य बॉट द्वारा लिखे गए संदेशों की अनदेखी करता है। बॉट-से-बॉट समूह वार्तालापों को अनुमति देने के लिए, ऐप को im:message.group_at_msg.include_bot:readonly और im:message:readonly स्कोप प्रदान करें, फिर allowBots सेट करें:

    json5
    {  channels: {    feishu: {      allowBots: true,    },  },}

    Feishu बॉट द्वारा लिखे गए समूह इवेंट केवल तभी वितरित करता है जब कोई अन्य बॉट इस बॉट का उल्लेख करे। मौजूदा समूह नीति, प्रेषक अनुमति-सूचियाँ और उल्लेख आवश्यकताएँ अभी भी लागू होती हैं। OpenClaw स्वयं द्वारा लिखे गए संदेश छोड़ देता है, प्रत्येक टेक्स्ट या कार्ड उत्तर में समकक्ष बॉट का उल्लेख करता है, और साझा channels.defaults.botLoopProtection सुरक्षा लागू करता है।

    समूह/उपयोगकर्ता ID प्राप्त करें

    समूह ID (chat_id, प्रारूप: oc_xxx)

    Feishu/Lark में समूह खोलें, ऊपरी-दाएँ कोने में मेनू आइकन पर क्लिक करें और Settings पर जाएँ। समूह ID (chat_id) सेटिंग पृष्ठ पर सूचीबद्ध है।

    समूह ID प्राप्त करें

    उपयोगकर्ता ID (open_id, प्रारूप: ou_xxx)

    Gateway शुरू करें, बॉट को DM भेजें, फिर लॉग जाँचें:

    bash
    openclaw logs --follow

    लॉग आउटपुट में open_id खोजें। आप लंबित पेयरिंग अनुरोध भी जाँच सकते हैं:

    bash
    openclaw pairing list feishu

    सामान्य कमांड

    कमांड विवरण
    /status बॉट की स्थिति दिखाएँ
    /reset वर्तमान सत्र रीसेट करें
    /model AI मॉडल दिखाएँ या बदलें

    समस्या निवारण

    बॉट समूह चैट में उत्तर नहीं देता

    1. सुनिश्चित करें कि बॉट समूह में जोड़ा गया है
    2. सुनिश्चित करें कि आप बॉट का @उल्लेख करते हैं (डिफ़ॉल्ट रूप से आवश्यक)
    3. सत्यापित करें कि groupPolicy, "disabled" नहीं है
    4. लॉग जाँचें: openclaw logs --follow

    बॉट को संदेश प्राप्त नहीं होते

    1. सुनिश्चित करें कि बॉट Feishu Open Platform / Lark Developer में प्रकाशित और स्वीकृत है
    2. सुनिश्चित करें कि इवेंट सदस्यता में im.message.receive_v1 शामिल है
    3. मीटिंग आमंत्रण पर स्वतः जुड़ने के लिए, vc.bot.meeting_invited_v1 की सदस्यता भी लें
    4. सुनिश्चित करें कि persistent connection (WebSocket) चुना गया है
    5. सुनिश्चित करें कि सभी आवश्यक अनुमति स्कोप प्रदान किए गए हैं
    6. सुनिश्चित करें कि Gateway चल रहा है: openclaw gateway status
    7. लॉग जाँचें: openclaw logs --follow

    vc.bot.meeting_invited_v1 की सदस्यता लेने से केवल इवेंट वितरित होता है। स्वचालित रूप से जुड़ना डिफ़ॉल्ट रूप से बंद है। इसे वैश्विक रूप से सक्षम करने के लिए:

    json5
    {  channels: {    feishu: {      vcAutoJoin: true,    },  },}

    केवल एक खाते के लिए सक्षम करने हेतु, शीर्ष-स्तरीय स्विच छोड़ दें और खाता ओवरराइड सेट करें:

    json5
    {  channels: {    feishu: {      accounts: {        meetings: { vcAutoJoin: true },      },    },  },}

    एजेंट को जुड़ने का टर्न मिलने से पहले भी आमंत्रणकर्ता सामान्य Feishu DM नीति, अनुमति-सूची/पेयरिंग, सत्र और उत्तर रूटिंग से गुजरते हैं। जुड़ने के लिए ऐप पहचान के साथ कॉन्फ़िगर किया गया उपलब्ध Feishu VC जॉइन टूल और vc:meeting.bot.join:write स्कोप भी आवश्यक है। उदाहरण के लिए, आधिकारिक lark-cli VC एजेंट skill vc +meeting-join प्रदान करता है।

    Feishu मोबाइल ऐप में QR सेटअप प्रतिक्रिया नहीं देता

    1. सेटअप दोबारा चलाएँ: openclaw channels login --channel feishu
    2. मैन्युअल सेटअप चुनें
    3. Feishu Open Platform में स्वयं-निर्मित ऐप बनाएँ और उसका App ID तथा App Secret कॉपी करें
    4. उन क्रेडेंशियल को सेटअप विज़ार्ड में पेस्ट करें

    App Secret लीक हो गया

    1. Feishu Open Platform / Lark Developer में App Secret रीसेट करें
    2. अपने कॉन्फ़िग में मान अपडेट करें
    3. Gateway पुनः आरंभ करें: openclaw gateway restart

    उन्नत कॉन्फ़िगरेशन

    एकाधिक खाते

    json5
    {  channels: {    feishu: {      defaultAccount: "main",      accounts: {        main: {          appId: "cli_xxx",          appSecret: "xxx",          name: "प्राथमिक बॉट",          tts: {            providers: {              openai: { voice: "shimmer" },            },          },        },        backup: {          appId: "cli_yyy",          appSecret: "yyy",          name: "बैकअप बॉट",          enabled: false,        },      },    },  },}

    defaultAccount नियंत्रित करता है कि जब आउटबाउंड API कोई accountId निर्दिष्ट नहीं करते, तब किस खाते का उपयोग किया जाए। खाता प्रविष्टियाँ शीर्ष-स्तरीय सेटिंग प्राप्त करती हैं; अधिकांश शीर्ष-स्तरीय कुंजियाँ प्रति खाते ओवरराइड की जा सकती हैं। accounts.<id>.tts, tts जैसी ही संरचना का उपयोग करता है और वैश्विक TTS कॉन्फ़िग पर डीप-मर्ज होता है, ताकि बहु-बॉट Feishu सेटअप साझा प्रदाता क्रेडेंशियल को वैश्विक रूप से रख सकें और प्रति खाते केवल वॉइस, मॉडल, पर्सोना या ऑटो मोड को ओवरराइड कर सकें।

    संदेश सीमाएँ

    • textChunkLimit - आउटबाउंड टेक्स्ट खंड का आकार (डिफ़ॉल्ट: 4000 वर्ण)
    • streaming.chunkMode - "length" (डिफ़ॉल्ट) सीमा पर विभाजित करता है; "newline" नई पंक्ति की सीमाओं को प्राथमिकता देता है
    • mediaMaxMb - मीडिया अपलोड/डाउनलोड सीमा (डिफ़ॉल्ट: 30 MB)

    स्ट्रीमिंग

    Feishu/Lark इंटरैक्टिव कार्ड (Card Kit स्ट्रीमिंग API) के माध्यम से स्ट्रीमिंग उत्तरों का समर्थन करता है। सक्षम होने पर, बॉट टेक्स्ट जनरेट करते समय कार्ड को रीयल टाइम में अपडेट करता है।

    json5
    {  channels: {    feishu: {      streaming: {        mode: "partial", // स्ट्रीमिंग कार्ड आउटपुट (डिफ़ॉल्ट: "partial")        block: { enabled: true }, // पूर्ण-ब्लॉक स्ट्रीमिंग के लिए विकल्प चुनें      },    },  },}

    पूर्ण उत्तर को एक संदेश में भेजने के लिए streaming.mode: "off" सेट करें; renderMode: "raw" (कार्ड के बजाय सादा टेक्स्ट) भी स्ट्रीमिंग कार्ड अक्षम कर देता है। streaming.block.enabled डिफ़ॉल्ट रूप से बंद है; इसे केवल तब सक्षम करें जब आप अंतिम उत्तर से पहले पूर्ण हो चुके सहायक ब्लॉक भेजना चाहते हों। पुराना बूलियन streaming और समतल blockStreaming / blockStreamingCoalesce / chunkMode कुंजियाँ openclaw doctor --fix के माध्यम से इस नेस्टेड संरचना में माइग्रेट होती हैं।

    कोटा अनुकूलन

    दो वैकल्पिक फ़्लैग के साथ Feishu/Lark API कॉल की संख्या कम करें:

    • typingIndicator (डिफ़ॉल्ट true): टाइपिंग प्रतिक्रिया कॉल छोड़ने के लिए false सेट करें
    • resolveSenderNames (डिफ़ॉल्ट true): प्रेषक प्रोफ़ाइल लुकअप छोड़ने के लिए false सेट करें
    json5
    {  channels: {    feishu: {      typingIndicator: false,      resolveSenderNames: false,    },  },}

    समूह सत्र का दायरा और विषय थ्रेड

    channels.feishu.groupSessionScope (शीर्ष-स्तर पर, प्रति खाता या प्रति समूह) नियंत्रित करता है कि समूह संदेश एजेंट सत्रों से कैसे मैप होते हैं:

    मान सत्र
    "group" (डिफ़ॉल्ट) प्रत्येक समूह चैट के लिए एक सत्र
    "group_sender" प्रत्येक (समूह + प्रेषक) के लिए एक सत्र
    "group_topic" प्रत्येक विषय थ्रेड के लिए एक सत्र; उपलब्ध न होने पर समूह सत्र का उपयोग
    "group_topic_sender" प्रत्येक (विषय + प्रेषक) के लिए एक सत्र; उपलब्ध न होने पर (समूह + प्रेषक) का उपयोग

    विषय दायरों के लिए, नेटिव 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.doc feishu_doc दस्तावेज़ संचालन true
    tools.chat feishu_chat चैट जानकारी + सदस्य क्वेरी true
    tools.wiki feishu_wiki ज्ञान-भंडार (doc आवश्यक) true
    tools.drive feishu_drive क्लाउड स्टोरेज true
    tools.perm feishu_perm अनुमति प्रबंधन false (संवेदनशील)
    tools.scopes feishu_app_scopes ऐप दायरा निदान true
    tools.bitable feishu_bitable_* Bitable/Base संचालन true

    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 बाइंडिंग

    json5
    {  agents: {    list: [      {        id: "codex",        runtime: {          type: "acp",          acp: {            agent: "codex",            backend: "acpx",            mode: "persistent",            cwd: "/workspace/openclaw",          },        },      },    ],  },  bindings: [    {      type: "acp",      agentId: "codex",      match: {        channel: "feishu",        accountId: "default",        peer: { kind: "direct", id: "ou_1234567890" },      },    },    {      type: "acp",      agentId: "codex",      match: {        channel: "feishu",        accountId: "default",        peer: { kind: "group", id: "oc_group_chat:topic:om_topic_root" },      },      acp: { label: "codex-feishu-topic" },    },  ],}

    चैट से ACP आरंभ करना

    किसी Feishu/Lark DM या थ्रेड में:

    text
    /acp spawn codex --thread here

    --thread here, DM और Feishu/Lark थ्रेड संदेशों के लिए काम करता है। बाउंड वार्तालाप में बाद के संदेश सीधे उस ACP सत्र में रूट होते हैं।

    बहु-एजेंट रूटिंग

    Feishu/Lark DM या समूहों को अलग-अलग एजेंटों तक रूट करने के लिए bindings का उपयोग करें।

    json5
    {  agents: {    list: [      { id: "main" },      { id: "agent-a", workspace: "/home/user/agent-a" },      { id: "agent-b", workspace: "/home/user/agent-b" },    ],  },  bindings: [    {      agentId: "agent-a",      match: {        channel: "feishu",        peer: { kind: "direct", id: "ou_xxx" },      },    },    {      agentId: "agent-b",      match: {        channel: "feishu",        peer: { kind: "group", id: "oc_zzz" },      },    },  ],}

    रूटिंग फ़ील्ड:

    • match.channel: "feishu"
    • match.peer.kind: "direct" (DM) या "group" (समूह चैट)
    • match.peer.id: उपयोगकर्ता Open ID (ou_xxx) या समूह ID (oc_xxx)

    लुकअप सुझावों के लिए समूह/उपयोगकर्ता ID प्राप्त करें देखें।

    प्रति-उपयोगकर्ता एजेंट पृथक्करण (डायनेमिक एजेंट निर्माण)

    प्रत्येक DM उपयोगकर्ता के लिए स्वचालित रूप से पृथक एजेंट इंस्टेंस बनाने हेतु dynamicAgentCreation सक्षम करें। प्रत्येक उपयोगकर्ता को अपना अलग मिलता है:

    • स्वतंत्र कार्यस्थान डायरेक्टरी
    • अलग USER.md / SOUL.md / MEMORY.md
    • निजी वार्तालाप इतिहास
    • पृथक Skills और स्थिति

    यह उन सार्वजनिक बॉट के लिए आवश्यक है जहाँ आप चाहते हैं कि प्रत्येक उपयोगकर्ता को अपना निजी AI सहायक अनुभव मिले।

    त्वरित सेटअप

    json5
    {  channels: {    feishu: {      dmPolicy: "open",      allowFrom: ["*"],      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // महत्वपूर्ण: प्रत्येक उपयोगकर्ता के DM को उसका "मुख्य सत्र" बनाता है    // USER.md / SOUL.md / MEMORY.md को स्वचालित रूप से लोड करता है    // अधिक सुदृढ़ पृथक्करण के लिए इसके बजाय "per-channel-peer" का उपयोग करें    dmScope: "main",  },}

    यह कैसे काम करता है

    जब कोई नया उपयोगकर्ता अपना पहला DM भेजता है:

    1. चैनल एक अद्वितीय agentId उत्पन्न करता है: डिफ़ॉल्ट खाते के लिए feishu-{user_open_id}, या नामित खाते के लिए सीमित खाता-उपसर्गित पहचान डाइजेस्ट
    2. workspaceTemplate पथ पर नया कार्यस्थान बनाता है
    3. एजेंट पंजीकृत करता है और इस उपयोगकर्ता के लिए बाइंडिंग बनाता है
    4. कार्यस्थान सहायक पहली पहुँच पर बूटस्ट्रैप फ़ाइलें (AGENTS.md, SOUL.md, USER.md, आदि) सुनिश्चित करता है
    5. इस उपयोगकर्ता के सभी भावी संदेश उसके समर्पित एजेंट तक रूट करता है

    कॉन्फ़िगरेशन विकल्प

    सेटिंग विवरण डिफ़ॉल्ट
    channels.feishu.dynamicAgentCreation.enabled स्वचालित प्रति-उपयोगकर्ता एजेंट निर्माण सक्षम करें false
    channels.feishu.dynamicAgentCreation.workspaceTemplate डायनेमिक एजेंट कार्यस्थानों के लिए पथ टेम्पलेट ~/.openclaw/workspace-{agentId}
    channels.feishu.dynamicAgentCreation.agentDirTemplate एजेंट डायरेक्टरी नाम का टेम्पलेट ~/.openclaw/agents/{agentId}/agent
    channels.feishu.dynamicAgentCreation.maxAgents बनाए जाने वाले डायनेमिक एजेंटों की अधिकतम संख्या असीमित

    टेम्पलेट चर:

    • {agentId} - उत्पन्न एजेंट ID (उदाहरण: feishu-ou_xxxxxx या feishu-support-<identity_digest>)
    • {userId} - प्रेषक का Feishu open_id (उदाहरण: ou_xxxxxx)

    सत्र का दायरा

    session.dmScope नियंत्रित करता है कि सीधे संदेश एजेंट सत्रों से कैसे मैप होते हैं। यह एक वैश्विक सेटिंग है जो सभी चैनलों को प्रभावित करती है।

    मान व्यवहार सर्वाधिक उपयुक्त
    "main" प्रत्येक उपयोगकर्ता का DM उसके एजेंट के मुख्य सत्र से मैप होता है एकल-उपयोगकर्ता बॉट, जहाँ आप USER.md / SOUL.md को स्वतः लोड करना चाहते हैं
    "per-peer" प्रत्येक पीयर को अलग सत्र मिलता है (चैनल से निरपेक्ष) केवल प्रेषक पहचान पर आधारित पृथक्करण
    "per-channel-peer" प्रत्येक (चैनल + उपयोगकर्ता) संयोजन को अलग सत्र मिलता है अधिक सुदृढ़ पृथक्करण की आवश्यकता वाले सार्वजनिक बहु-उपयोगकर्ता बॉट
    "per-account-channel-peer" प्रत्येक (खाता + चैनल + उपयोगकर्ता) संयोजन को अलग सत्र मिलता है खाता-स्तरीय सत्र पृथक्करण की आवश्यकता वाले बहु-खाता बॉट

    समझौता: "main" का उपयोग स्वचालित बूटस्ट्रैप फ़ाइल लोडिंग (USER.md, SOUL.md, MEMORY.md) सक्षम करता है, लेकिन इसका अर्थ है कि सभी चैनलों के सभी DM एक ही सत्र कुंजी पैटर्न साझा करते हैं। उन सार्वजनिक बहु-उपयोगकर्ता बॉट के लिए, जहाँ पृथक्करण बूटस्ट्रैप स्वतः-लोडिंग से अधिक महत्वपूर्ण है, "per-channel-peer" पर विचार करें और बूटस्ट्रैप फ़ाइलें मैन्युअल रूप से प्रबंधित करें।

    सामान्य बहु-उपयोगकर्ता परिनियोजन

    json5
    {  channels: {    feishu: {      appId: "cli_xxx",      appSecret: "xxx",      dmPolicy: "open",      allowFrom: ["*"],      groupPolicy: "open",      requireMention: true,      dynamicAgentCreation: {        enabled: true,        workspaceTemplate: "~/.openclaw/workspace-{agentId}",        agentDirTemplate: "~/.openclaw/agents/{agentId}/agent",      },    },  },  session: {    // अपनी पृथक्करण आवश्यकताओं के आधार पर dmScope चुनें:    // बूटस्ट्रैप स्वतः-लोडिंग के लिए "main", अधिक सुदृढ़ पृथक्करण के लिए "per-channel-peer"    dmScope: "main",  },  bindings: [], // खाली—डायनेमिक एजेंट स्वचालित रूप से बाइंड होते हैं}

    सत्यापन

    डायनेमिक निर्माण के काम करने की पुष्टि के लिए Gateway लॉग जाँचें:

    text
    feishu: उपयोगकर्ता ou_xxxxxx के लिए डायनेमिक एजेंट "feishu-ou_xxxxxx" बनाया जा रहा है  कार्यस्थान: /home/user/.openclaw/workspace-feishu-ou_xxxxxx  एजेंट डायरेक्टरी: /home/user/.openclaw/agents/feishu-ou_xxxxxx/agent

    बनाए गए सभी वर्कस्पेस सूचीबद्ध करें:

    bash
    ls -la ~/.openclaw/workspace-*

    टिप्पणियाँ

    • वर्कस्पेस पृथक्करण: प्रत्येक उपयोगकर्ता को अपनी वर्कस्पेस डायरेक्टरी और एजेंट इंस्टेंस मिलता है। सामान्य संदेश प्रवाह में उपयोगकर्ता एक-दूसरे का वार्तालाप इतिहास या फ़ाइलें नहीं देख सकते।
    • सुरक्षा सीमा: यह संदेश-संदर्भ पृथक्करण तंत्र है, दुर्भावनापूर्ण सह-किरायेदारों के विरुद्ध सुरक्षा सीमा नहीं। एजेंट प्रक्रिया और होस्ट परिवेश साझा होते हैं।
    • कॉन्फ़िगरेशन लेखन सक्षम रहना चाहिए: डायनेमिक एजेंट निर्माण, एजेंट और बाइंडिंग को कॉन्फ़िगरेशन में लिखता है; जब channels.feishu.configWrites, false होता है, तो इसे छोड़ दिया जाता है (डिफ़ॉल्ट: सक्षम)।
    • bindings खाली होना चाहिए: डायनेमिक एजेंट अपनी बाइंडिंग स्वतः पंजीकृत करते हैं
    • अपग्रेड पथ: मौजूदा मैन्युअल बाइंडिंग डायनेमिक एजेंटों के साथ काम करती रहती हैं
    • session.dmScope वैश्विक है: यह केवल Feishu ही नहीं, सभी चैनलों को प्रभावित करता है

    कॉन्फ़िगरेशन संदर्भ

    पूर्ण कॉन्फ़िगरेशन: Gateway कॉन्फ़िगरेशन

    सेटिंग विवरण डिफ़ॉल्ट
    channels.feishu.enabled चैनल को सक्षम/अक्षम करें true
    channels.feishu.domain API डोमेन (feishu, lark, या कोई https:// आधार URL) feishu
    channels.feishu.connectionMode इवेंट ट्रांसपोर्ट (websocket या webhook) websocket
    channels.feishu.defaultAccount आउटबाउंड रूटिंग के लिए डिफ़ॉल्ट खाता default
    channels.feishu.verificationToken Webhook मोड के लिए आवश्यक -
    channels.feishu.encryptKey Webhook मोड के लिए आवश्यक -
    channels.feishu.webhookPath Webhook रूट पथ /feishu/events
    channels.feishu.webhookHost Webhook बाइंड होस्ट 127.0.0.1
    channels.feishu.webhookPort Webhook बाइंड पोर्ट 3000
    channels.feishu.accounts.<id>.appId ऐप ID -
    channels.feishu.accounts.<id>.appSecret ऐप सीक्रेट -
    channels.feishu.accounts.<id>.domain प्रति-खाता डोमेन ओवरराइड feishu
    channels.feishu.accounts.<id>.tts प्रति-खाता TTS ओवरराइड tts
    channels.feishu.dmPolicy DM नीति (pairing, allowlist, open) pairing
    channels.feishu.allowFrom DM अनुमति-सूची (open_id सूची) -
    channels.feishu.groupPolicy समूह नीति (open, allowlist, disabled) allowlist
    channels.feishu.groupAllowFrom समूह अनुमति-सूची -
    channels.feishu.groupSenderAllowFrom सभी समूहों पर लागू प्रेषक अनुमति-सूची -
    channels.feishu.requireMention समूहों में @mention आवश्यक करें true (जब नीति open हो, तब false)
    channels.feishu.allowBots बॉट-लूप सुरक्षा के साथ इस बॉट का उल्लेख करने वाले अन्य बॉट स्वीकार करें false
    channels.feishu.groups.<chat_id>.requireMention प्रति-समूह @mention ओवरराइड; स्पष्ट ID अनुमति-सूची मोड में समूह को भी प्रवेश देते हैं इनहेरिट किया गया
    channels.feishu.groups.<chat_id>.enabled किसी विशिष्ट समूह को सक्षम/अक्षम करें true
    channels.feishu.groups.<chat_id>.allowFrom प्रति-समूह प्रेषक अनुमति-सूची (groupSenderAllowFrom को ओवरराइड करती है) -
    channels.feishu.groupSessionScope समूह सत्र मैपिंग (group, group_sender, group_topic, group_topic_sender) group
    channels.feishu.replyInThread बॉट के उत्तर विषय थ्रेड बनाते/जारी रखते हैं (disabled, enabled) disabled
    channels.feishu.reactionNotifications इनबाउंड प्रतिक्रिया इवेंट (off, own, all) own
    channels.feishu.vcAutoJoin सामान्य DM प्राधिकरण के बाद आमंत्रित VC बैठकों में शामिल हों false
    channels.feishu.dynamicAgentCreation.enabled प्रति-उपयोगकर्ता स्वचालित एजेंट निर्माण सक्षम करें false
    channels.feishu.dynamicAgentCreation.workspaceTemplate डायनेमिक एजेंट वर्कस्पेस के लिए पथ टेम्पलेट ~/.openclaw/workspace-{agentId}
    channels.feishu.dynamicAgentCreation.agentDirTemplate एजेंट डायरेक्टरी नाम टेम्पलेट ~/.openclaw/agents/{agentId}/agent
    channels.feishu.dynamicAgentCreation.maxAgents बनाए जाने वाले डायनेमिक एजेंटों की अधिकतम संख्या असीमित
    channels.feishu.textChunkLimit संदेश खंड का आकार 4000
    channels.feishu.streaming.chunkMode खंड विभाजन (length या newline) length
    channels.feishu.mediaMaxMb मीडिया आकार सीमा 30
    channels.feishu.renderMode उत्तर रेंडरिंग (auto, raw, card) auto
    channels.feishu.streaming.mode स्ट्रीमिंग कार्ड आउटपुट (partial या off) partial
    channels.feishu.streaming.block.enabled पूर्ण हुए ब्लॉक के उत्तरों की स्ट्रीमिंग false
    channels.feishu.typingIndicator टाइपिंग प्रतिक्रियाएँ भेजें true
    channels.feishu.resolveSenderNames प्रेषक के प्रदर्शन नाम निर्धारित करें true
    channels.feishu.configWrites चैनल द्वारा आरंभ किए गए कॉन्फ़िगरेशन लेखन की अनुमति दें (डायनेमिक एजेंटों के लिए आवश्यक) true
    channels.feishu.tools.doc दस्तावेज़ टूल सक्षम करें true
    channels.feishu.tools.chat चैट जानकारी टूल सक्षम करें true
    channels.feishu.tools.wiki ज्ञान आधार टूल सक्षम करें (doc आवश्यक है) true
    channels.feishu.tools.drive क्लाउड स्टोरेज टूल सक्षम करें true
    channels.feishu.tools.perm अनुमति प्रबंधन टूल सक्षम करें false
    channels.feishu.tools.scopes ऐप स्कोप डायग्नोस्टिक टूल सक्षम करें true
    channels.feishu.tools.bitable Bitable/Base टूल सक्षम करें true
    channels.feishu.tools.base channels.feishu.tools.bitable का उपनाम; दोनों सेट होने पर स्पष्ट bitable प्रभावी होता है true
    channels.feishu.accounts.<id>.tools.bitable प्रति-खाता Bitable/Base टूल गेट इनहेरिट किया गया
    channels.feishu.accounts.<id>.tools.base tools.bitable का प्रति-खाता उपनाम इनहेरिट किया गया

    समर्थित संदेश प्रकार

    प्राप्त करना

    • ✅ टेक्स्ट
    • ✅ रिच टेक्स्ट (पोस्ट)
    • ✅ चित्र
    • ✅ फ़ाइलें
    • ✅ ऑडियो
    • ✅ वीडियो/मीडिया
    • ✅ स्टिकर

    इनबाउंड Feishu/Lark ऑडियो संदेशों को अपरिष्कृत file_key JSON के बजाय मीडिया प्लेसहोल्डर के रूप में सामान्यीकृत किया जाता है। जब tools.media.audio कॉन्फ़िगर हो, तब OpenClaw वॉइस-नोट संसाधन डाउनलोड करता है और एजेंट टर्न से पहले साझा ऑडियो ट्रांसक्रिप्शन चलाता है, जिससे एजेंट को बोले गए शब्दों का ट्रांसक्रिप्ट मिलता है। यदि Feishu ऑडियो पेलोड में ट्रांसक्रिप्ट टेक्स्ट सीधे शामिल करता है, तो उस टेक्स्ट का उपयोग किसी अन्य ASR कॉल के बिना किया जाता है। ऑडियो ट्रांसक्रिप्शन प्रदाता के बिना भी एजेंट को सहेजे गए अटैचमेंट के साथ <media:audio> प्लेसहोल्डर मिलता है, अपरिष्कृत Feishu संसाधन पेलोड नहीं।

    भेजना

    • ✅ टेक्स्ट
    • ✅ चित्र
    • ✅ फ़ाइलें
    • ✅ ऑडियो
    • ✅ वीडियो/मीडिया
    • ✅ इंटरैक्टिव कार्ड (स्ट्रीमिंग अपडेट सहित)
    • ⚠️ रिच टेक्स्ट (पोस्ट-शैली फ़ॉर्मेटिंग; पूर्ण Feishu/Lark लेखन क्षमताओं का समर्थन नहीं करता)

    मूल Feishu/Lark ऑडियो बबल Feishu audio संदेश प्रकार का उपयोग करते हैं और इनके लिए Ogg/Opus अपलोड मीडिया (file_type: "opus") आवश्यक है। मौजूदा .opus और .ogg मीडिया सीधे मूल ऑडियो के रूप में भेजा जाता है। MP3/WAV/M4A और अन्य संभावित ऑडियो प्रारूपों को ffmpeg के साथ 48kHz Ogg/Opus में केवल तभी ट्रांसकोड किया जाता है, जब उत्तर में ध्वनि डिलीवरी का अनुरोध हो (audioAsVoice / संदेश टूल asVoice, जिसमें TTS वॉइस-नोट उत्तर शामिल हैं)। सामान्य MP3 अटैचमेंट नियमित फ़ाइलें ही रहते हैं। यदि ffmpeg उपलब्ध नहीं है या रूपांतरण विफल हो जाता है, तो OpenClaw फ़ाइल अटैचमेंट का उपयोग करता है और कारण लॉग करता है।

    थ्रेड और उत्तर

    • ✅ इनलाइन उत्तर
    • ✅ थ्रेड उत्तर
    • ✅ किसी थ्रेड संदेश का उत्तर देते समय मीडिया उत्तर थ्रेड से संबद्ध रहते हैं

    विषय-समूह सत्र रूटिंग का विवरण समूह सत्र का दायरा और विषय थ्रेड में दिया गया है।

    संबंधित

    Was this useful?
    On this page

    On this page