الانتقال إلى المحتوى الرئيسي

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Feishu/Lark هي منصة تعاون شاملة تتيح للفرق الدردشة ومشاركة المستندات وإدارة التقويمات وإنجاز العمل معا. الحالة: جاهزة للإنتاج للرسائل المباشرة مع البوت + محادثات المجموعات. WebSocket هو الوضع الافتراضي؛ وضع Webhook اختياري.

البدء السريع

يتطلب OpenClaw 2026.4.25 أو أحدث. شغّل openclaw --version للتحقق. حدّث باستخدام openclaw update.
1

شغّل معالج إعداد القناة

openclaw channels login --channel feishu
اختر الإعداد اليدوي للصق App ID وApp Secret من Feishu Open Platform، أو اختر إعداد QR لإنشاء بوت تلقائيا. إذا لم يتفاعل تطبيق Feishu المحلي على الهاتف مع رمز QR، فأعد تشغيل الإعداد واختر الإعداد اليدوي.
2

بعد اكتمال الإعداد، أعد تشغيل Gateway لتطبيق التغييرات

openclaw gateway restart

التحكم في الوصول

الرسائل المباشرة

اضبط dmPolicy للتحكم في من يمكنه مراسلة البوت مباشرة:
  • "pairing" - يتلقى المستخدمون غير المعروفين رمز اقتران؛ وافق عليه عبر CLI
  • "allowlist" - يمكن فقط للمستخدمين المدرجين في allowFrom الدردشة (الافتراضي: مالك البوت فقط)
  • "open" - اسمح بالرسائل المباشرة العامة فقط عندما يتضمن allowFrom القيمة "*"؛ مع الإدخالات المقيّدة، يمكن فقط للمستخدمين المطابقين الدردشة
  • "disabled" - عطّل كل الرسائل المباشرة
الموافقة على طلب اقتران:
openclaw pairing list feishu
openclaw pairing approve feishu <CODE>

محادثات المجموعات

سياسة المجموعة (channels.feishu.groupPolicy):
القيمةالسلوك
"open"الرد على كل الرسائل في المجموعات
"allowlist"الرد فقط على المجموعات في groupAllowFrom أو المكوّنة صراحة ضمن groups.<chat_id>
"disabled"تعطيل كل رسائل المجموعات؛ لا تتجاوز إدخالات groups.<chat_id> الصريحة ذلك
الافتراضي: allowlist متطلب الإشارة (channels.feishu.requireMention):
  • true - يتطلب @mention (الافتراضي)
  • false - الرد دون @mention
  • تجاوز لكل مجموعة: channels.feishu.groups.<chat_id>.requireMention
  • لا تُعامل إشارات البث فقط @all و@_all كإشارات إلى البوت. الرسالة التي تشير إلى كل من @all والبوت مباشرة لا تزال تُحتسب كإشارة إلى البوت.

أمثلة تكوين المجموعات

السماح لكل المجموعات، دون الحاجة إلى @mention

{
  channels: {
    feishu: {
      groupPolicy: "open",
    },
  },
}

السماح لكل المجموعات، مع استمرار اشتراط @mention

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

السماح بمجموعات محددة فقط

{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      // Group IDs look like: oc_xxx
      groupAllowFrom: ["oc_xxx", "oc_yyy"],
    },
  },
}
في وضع allowlist، يمكنك أيضا قبول مجموعة بإضافة إدخال groups.<chat_id> صريح. لا تتجاوز الإدخالات الصريحة groupPolicy: "disabled". تضبط الافتراضات العامة ضمن groups.* المجموعات المطابقة، لكنها لا تقبل المجموعات بمفردها.
{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      groups: {
        oc_xxx: {
          requireMention: false,
        },
      },
    },
  },
}

تقييد المرسلين داخل مجموعة

{
  channels: {
    feishu: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["oc_xxx"],
      groups: {
        oc_xxx: {
          // User open_ids look like: ou_xxx
          allowFrom: ["ou_user1", "ou_user2"],
        },
      },
    },
  },
}

الحصول على معرّفات المجموعات/المستخدمين

معرّفات المجموعات (chat_id، التنسيق: oc_xxx)

افتح المجموعة في Feishu/Lark، وانقر أيقونة القائمة في الزاوية العلوية اليمنى، وانتقل إلى الإعدادات. يظهر معرّف المجموعة (chat_id) في صفحة الإعدادات. الحصول على معرّف المجموعة

معرّفات المستخدمين (open_id، التنسيق: ou_xxx)

ابدأ Gateway، وأرسل رسالة مباشرة إلى البوت، ثم تحقق من السجلات:
openclaw logs --follow
ابحث عن open_id في مخرجات السجل. يمكنك أيضا التحقق من طلبات الاقتران المعلقة:
openclaw pairing list feishu

الأوامر الشائعة

الأمرالوصف
/statusعرض حالة البوت
/resetإعادة ضبط الجلسة الحالية
/modelعرض نموذج الذكاء الاصطناعي أو تبديله
لا يدعم Feishu/Lark قوائم أوامر الشرطة المائلة الأصلية، لذا أرسل هذه كرسائل نصية عادية.

استكشاف الأخطاء وإصلاحها

البوت لا يرد في محادثات المجموعات

  1. تأكد من إضافة البوت إلى المجموعة
  2. تأكد من استخدام @mention للبوت (مطلوب افتراضيا)
  3. تحقق من أن groupPolicy ليست "disabled"
  4. تحقق من السجلات: openclaw logs --follow

البوت لا يتلقى الرسائل

  1. تأكد من نشر البوت والموافقة عليه في Feishu Open Platform / Lark Developer
  2. تأكد من أن اشتراك الأحداث يتضمن im.message.receive_v1
  3. تأكد من اختيار الاتصال المستمر (WebSocket)
  4. تأكد من منح كل نطاقات الأذونات المطلوبة
  5. تأكد من أن Gateway قيد التشغيل: openclaw gateway status
  6. تحقق من السجلات: openclaw logs --follow

إعداد QR لا يتفاعل في تطبيق Feishu للهاتف

  1. أعد تشغيل الإعداد: openclaw channels login --channel feishu
  2. اختر الإعداد اليدوي
  3. في Feishu Open Platform، أنشئ تطبيقا ذاتي البناء وانسخ App ID وApp Secret الخاصين به
  4. الصق بيانات الاعتماد هذه في معالج الإعداد

تسرّب App Secret

  1. أعد ضبط App Secret في Feishu Open Platform / Lark Developer
  2. حدّث القيمة في تكوينك
  3. أعد تشغيل Gateway: openclaw gateway restart

التكوين المتقدم

حسابات متعددة

{
  channels: {
    feishu: {
      defaultAccount: "main",
      accounts: {
        main: {
          appId: "cli_xxx",
          appSecret: "xxx",
          name: "Primary bot",
          tts: {
            providers: {
              openai: { voice: "shimmer" },
            },
          },
        },
        backup: {
          appId: "cli_yyy",
          appSecret: "yyy",
          name: "Backup bot",
          enabled: false,
        },
      },
    },
  },
}
يتحكم defaultAccount في الحساب المستخدم عندما لا تحدد واجهات API الصادرة accountId. يستخدم accounts.<id>.tts الشكل نفسه مثل messages.tts ويُدمج بعمق فوق تكوين TTS العام، بحيث يمكن لإعدادات Feishu متعددة البوتات الاحتفاظ ببيانات اعتماد الموفر المشتركة عالميا مع تجاوز الصوت أو النموذج أو الشخصية أو الوضع التلقائي فقط لكل حساب.

حدود الرسائل

  • textChunkLimit - حجم مقطع النص الصادر (الافتراضي: 2000 حرف)
  • mediaMaxMb - حد رفع/تنزيل الوسائط (الافتراضي: 30 ميغابايت)

البث

يدعم Feishu/Lark الردود المتدفقة عبر البطاقات التفاعلية. عند التفعيل، يحدّث البوت البطاقة في الوقت الفعلي أثناء إنشاء النص.
{
  channels: {
    feishu: {
      streaming: true, // enable streaming card output (default: true)
      blockStreaming: true, // opt into completed-block streaming
    },
  },
}
اضبط streaming: false لإرسال الرد الكامل في رسالة واحدة. يكون blockStreaming متوقفا افتراضيا؛ فعّله فقط عندما تريد دفع كتل المساعد المكتملة قبل الرد النهائي.

تحسين الحصة

قلّل عدد استدعاءات API في Feishu/Lark باستخدام علمين اختياريين:
  • typingIndicator (الافتراضي true): اضبطه على false لتجاوز استدعاءات تفاعل الكتابة
  • resolveSenderNames (الافتراضي true): اضبطه على false لتجاوز عمليات البحث عن ملف تعريف المرسل
{
  channels: {
    feishu: {
      typingIndicator: false,
      resolveSenderNames: false,
    },
  },
}

جلسات ACP

يدعم Feishu/Lark استخدام ACP للرسائل المباشرة ورسائل سلاسل المجموعات. يعتمد ACP في Feishu/Lark على الأوامر النصية - لا توجد قوائم أوامر شرطة مائلة أصلية، لذا استخدم رسائل /acp ... مباشرة في المحادثة.

ربط ACP مستمر

{
  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:
/acp spawn codex --thread here
يعمل --thread here مع الرسائل المباشرة ورسائل السلاسل في Feishu/Lark. تُوجّه رسائل المتابعة في المحادثة المرتبطة مباشرة إلى جلسة ACP تلك.

توجيه متعدد الوكلاء

استخدم bindings لتوجيه رسائل Feishu/Lark المباشرة أو المجموعات إلى وكلاء مختلفين.
{
  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" (رسالة مباشرة) أو "group" (محادثة مجموعة)
  • match.peer.id: Open ID للمستخدم (ou_xxx) أو معرّف المجموعة (oc_xxx)
راجع الحصول على معرّفات المجموعات/المستخدمين لنصائح البحث.

مرجع التكوين

التكوين الكامل: تكوين Gateway
الإعدادالوصفالافتراضي
channels.feishu.enabledتفعيل/تعطيل القناةtrue
channels.feishu.domainنطاق API (feishu أو lark)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مضيف ربط Webhook127.0.0.1
channels.feishu.webhookPortمنفذ ربط Webhook3000
channels.feishu.accounts.<id>.appIdمعرّف التطبيق-
channels.feishu.accounts.<id>.appSecretسر التطبيق-
channels.feishu.accounts.<id>.domainتجاوز النطاق لكل حسابfeishu
channels.feishu.accounts.<id>.ttsتجاوز TTS لكل حسابmessages.tts
channels.feishu.dmPolicyسياسة الرسائل المباشرةallowlist
channels.feishu.allowFromقائمة السماح للرسائل المباشرة (قائمة open_id)[BotOwnerId]
channels.feishu.groupPolicyسياسة المجموعاتallowlist
channels.feishu.groupAllowFromقائمة السماح للمجموعات-
channels.feishu.requireMentionاشتراط @mention في المجموعاتtrue
channels.feishu.groups.<chat_id>.requireMentionتجاوز @mention لكل مجموعة؛ تسمح المعرّفات الصريحة أيضًا بدخول المجموعة في وضع قائمة السماحموروث
channels.feishu.groups.<chat_id>.enabledتفعيل/تعطيل مجموعة محددةtrue
channels.feishu.textChunkLimitحجم جزء الرسالة2000
channels.feishu.mediaMaxMbحد حجم الوسائط30
channels.feishu.streamingإخراج البطاقة بالبثtrue
channels.feishu.blockStreamingبث رد الكتلة المكتملةfalse
channels.feishu.typingIndicatorإرسال تفاعلات الكتابةtrue
channels.feishu.resolveSenderNamesحل أسماء عرض المرسلينtrue

أنواع الرسائل المدعومة

الاستقبال

  • ✅ نص
  • ✅ نص منسق (منشور)
  • ✅ صور
  • ✅ ملفات
  • ✅ صوت
  • ✅ فيديو/وسائط
  • ✅ ملصقات
تُطبَّع رسائل Feishu/Lark الصوتية الواردة كعناصر نائبة للوسائط بدلًا من JSON file_key الخام. عند تكوين 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 والتنسيقات الصوتية المحتملة الأخرى إلى Ogg/Opus بتردد 48kHz باستخدام ffmpeg فقط عندما يطلب الرد تسليمًا صوتيًا (audioAsVoice / أداة الرسائل asVoice، بما في ذلك ردود الملاحظات الصوتية عبر TTS). تبقى مرفقات MP3 العادية ملفات عادية. إذا كان ffmpeg مفقودًا أو فشل التحويل، يتراجع OpenClaw إلى مرفق ملف ويسجل السبب.

المحادثات والردود

  • ✅ ردود مضمنة
  • ✅ ردود ضمن المحادثة
  • ✅ تظل ردود الوسائط مدركة للمحادثة عند الرد على رسالة ضمن محادثة
بالنسبة إلى groupSessionScope: "group_topic" و"group_topic_sender"، تستخدم مجموعات المواضيع الأصلية في Feishu/Lark thread_id (omt_*) من الحدث كمفتاح جلسة الموضوع الأساسي. إذا حذف حدث بدء موضوع أصلي thread_id، فسيستخرجه OpenClaw من Feishu قبل توجيه الدور. تواصل ردود المجموعات العادية التي يحولها OpenClaw إلى محادثات استخدام معرّف رسالة جذر الرد (om_*) بحيث يبقى الدور الأول ودور المتابعة في الجلسة نفسها.

ذات صلة