chore(i18n): refresh ar translations
This commit is contained in:
parent
496d7333d0
commit
ea0ee28824
@ -1,306 +1,44 @@
|
||||
---
|
||||
read_when:
|
||||
- تريد توصيل بوت Feishu/Lark
|
||||
- أنت تقوم بإعداد قناة Feishu
|
||||
summary: نظرة عامة على بوت Feishu وميزاته وإعداده
|
||||
- أنت تقوم بتكوين قناة Feishu
|
||||
summary: نظرة عامة على بوت Feishu وميزاته وتكوينه
|
||||
title: Feishu
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T12:35:34Z"
|
||||
generated_at: "2026-04-13T12:36:52Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4e39b6dfe3a3aa4ebbdb992975e570e4f1b5e79f3b400a555fc373a0d1889952
|
||||
source_hash: 77fcf95a3fab534ed898bc157d76bf8bdfa8bf8a918d6af84c0db19890916c1a
|
||||
source_path: channels/feishu.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# بوت Feishu
|
||||
# Feishu / Lark
|
||||
|
||||
Feishu (Lark) هو نظام دردشة جماعي تستخدمه الشركات للمراسلة والتعاون. يربط هذا الـ plugin بين OpenClaw وبوت Feishu/Lark باستخدام اشتراك أحداث WebSocket الخاص بالمنصة، بحيث يمكن استقبال الرسائل من دون تعريض عنوان URL عام لـ webhook.
|
||||
Feishu/Lark هي منصة تعاون متكاملة حيث تتبادل الفرق الدردشة، وتشارك المستندات، وتدير التقويمات، وتنجز العمل معًا.
|
||||
|
||||
---
|
||||
|
||||
## الـ plugin المضمّن
|
||||
|
||||
يأتي Feishu مضمّنًا مع إصدارات OpenClaw الحالية، لذلك لا يلزم تثبيت plugin منفصل.
|
||||
|
||||
إذا كنت تستخدم إصدارًا أقدم أو تثبيتًا مخصصًا لا يتضمن Feishu المضمّن، فقم بتثبيته يدويًا:
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/feishu
|
||||
```
|
||||
**الحالة:** جاهزة للإنتاج للرسائل المباشرة للبوت + الدردشات الجماعية. WebSocket هو الوضع الافتراضي؛ ووضع Webhook اختياري.
|
||||
|
||||
---
|
||||
|
||||
## البدء السريع
|
||||
|
||||
هناك طريقتان لإضافة قناة Feishu:
|
||||
|
||||
### الطريقة 1: الإعداد الأولي (مستحسن)
|
||||
|
||||
إذا كنت قد ثبّت OpenClaw للتو، فشغّل الإعداد الأولي:
|
||||
|
||||
```bash
|
||||
openclaw onboard
|
||||
```
|
||||
|
||||
سيرشدك المعالج خلال ما يلي:
|
||||
|
||||
1. إنشاء تطبيق Feishu وجمع بيانات الاعتماد
|
||||
2. إعداد بيانات اعتماد التطبيق في OpenClaw
|
||||
3. بدء تشغيل البوابة
|
||||
|
||||
✅ **بعد الإعداد**، تحقّق من حالة البوابة:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
### الطريقة 2: الإعداد عبر CLI
|
||||
|
||||
إذا كنت قد أكملت التثبيت الأولي بالفعل، فأضف القناة عبر CLI:
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
اختر **Feishu**، ثم أدخل App ID وApp Secret.
|
||||
|
||||
✅ **بعد الإعداد**، أدر البوابة:
|
||||
|
||||
- `openclaw gateway status`
|
||||
- `openclaw gateway restart`
|
||||
- `openclaw logs --follow`
|
||||
|
||||
---
|
||||
|
||||
## الخطوة 1: إنشاء تطبيق Feishu
|
||||
|
||||
### 1. افتح Feishu Open Platform
|
||||
|
||||
زر [Feishu Open Platform](https://open.feishu.cn/app) وسجّل الدخول.
|
||||
|
||||
يجب على مستأجري Lark (العالمي) استخدام [https://open.larksuite.com/app](https://open.larksuite.com/app) وضبط `domain: "lark"` في إعدادات Feishu.
|
||||
|
||||
### 2. أنشئ تطبيقًا
|
||||
|
||||
1. انقر **Create enterprise app**
|
||||
2. املأ اسم التطبيق والوصف
|
||||
3. اختر أيقونة للتطبيق
|
||||
|
||||

|
||||
|
||||
### 3. انسخ بيانات الاعتماد
|
||||
|
||||
من **Credentials & Basic Info**، انسخ:
|
||||
|
||||
- **App ID** (بالتنسيق: `cli_xxx`)
|
||||
- **App Secret**
|
||||
|
||||
❗ **مهم:** احتفظ بـ App Secret بشكل خاص.
|
||||
|
||||

|
||||
|
||||
### 4. إعداد الأذونات
|
||||
|
||||
في **Permissions**، انقر **Batch import** والصق:
|
||||
|
||||
```json
|
||||
{
|
||||
"scopes": {
|
||||
"tenant": [
|
||||
"aily:file:read",
|
||||
"aily:file:write",
|
||||
"application:application.app_message_stats.overview:readonly",
|
||||
"application:application:self_manage",
|
||||
"application:bot.menu:write",
|
||||
"cardkit:card:read",
|
||||
"cardkit:card:write",
|
||||
"contact:user.employee_id:readonly",
|
||||
"corehr:file:download",
|
||||
"event:ip_list",
|
||||
"im:chat.access_event.bot_p2p_chat:read",
|
||||
"im:chat.members:bot_access",
|
||||
"im:message",
|
||||
"im:message.group_at_msg:readonly",
|
||||
"im:message.p2p_msg:readonly",
|
||||
"im:message:readonly",
|
||||
"im:message:send_as_bot",
|
||||
"im:resource"
|
||||
],
|
||||
"user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 5. فعّل إمكانية البوت
|
||||
|
||||
في **App Capability** > **Bot**:
|
||||
|
||||
1. فعّل إمكانية البوت
|
||||
2. عيّن اسم البوت
|
||||
|
||||

|
||||
|
||||
### 6. إعداد اشتراك الأحداث
|
||||
|
||||
⚠️ **مهم:** قبل إعداد اشتراك الأحداث، تأكد من:
|
||||
|
||||
1. أنك شغّلت بالفعل `openclaw channels add` لـ Feishu
|
||||
2. أن البوابة قيد التشغيل (`openclaw gateway status`)
|
||||
|
||||
في **Event Subscription**:
|
||||
|
||||
1. اختر **Use long connection to receive events** (WebSocket)
|
||||
2. أضف الحدث: `im.message.receive_v1`
|
||||
3. (اختياري) لمهام تعليقات Drive، أضف أيضًا: `drive.notice.comment_add_v1`
|
||||
|
||||
⚠️ إذا لم تكن البوابة قيد التشغيل، فقد يفشل حفظ إعداد الاتصال الطويل.
|
||||
|
||||

|
||||
|
||||
### 7. انشر التطبيق
|
||||
|
||||
1. أنشئ إصدارًا في **Version Management & Release**
|
||||
2. أرسله للمراجعة وانشره
|
||||
3. انتظر موافقة المسؤول (تطبيقات المؤسسات تُوافق عادةً تلقائيًا)
|
||||
|
||||
---
|
||||
|
||||
## الخطوة 2: إعداد OpenClaw
|
||||
|
||||
### الإعداد باستخدام المعالج (مستحسن)
|
||||
|
||||
```bash
|
||||
openclaw channels add
|
||||
```
|
||||
|
||||
اختر **Feishu** والصق App ID وApp Secret.
|
||||
|
||||
### الإعداد عبر ملف التهيئة
|
||||
|
||||
حرّر `~/.openclaw/openclaw.json`:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
enabled: true,
|
||||
dmPolicy: "pairing",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "My AI assistant",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
إذا كنت تستخدم `connectionMode: "webhook"`، فاضبط كلًا من `verificationToken` و`encryptKey`. يرتبط خادم webhook الخاص بـ Feishu على `127.0.0.1` افتراضيًا؛ لا تضبط `webhookHost` إلا إذا كنت تحتاج عمدًا إلى عنوان ربط مختلف.
|
||||
|
||||
#### Verification Token وEncrypt Key (وضع webhook)
|
||||
|
||||
عند استخدام وضع webhook، اضبط كلًا من `channels.feishu.verificationToken` و`channels.feishu.encryptKey` في إعداداتك. للحصول على القيم:
|
||||
|
||||
1. في Feishu Open Platform، افتح تطبيقك
|
||||
2. انتقل إلى **Development** → **Events & Callbacks** (开发配置 → 事件与回调)
|
||||
3. افتح تبويب **Encryption** (加密策略)
|
||||
4. انسخ **Verification Token** و**Encrypt Key**
|
||||
|
||||
توضح الصورة التالية مكان العثور على **Verification Token**. أما **Encrypt Key** فهو مدرج في القسم نفسه **Encryption**.
|
||||
|
||||

|
||||
|
||||
### الإعداد عبر متغيرات البيئة
|
||||
|
||||
```bash
|
||||
export FEISHU_APP_ID="cli_xxx"
|
||||
export FEISHU_APP_SECRET="xxx"
|
||||
```
|
||||
|
||||
### نطاق Lark (العالمي)
|
||||
|
||||
إذا كان المستأجر الخاص بك على Lark (الدولي)، فاضبط النطاق إلى `lark` (أو سلسلة نطاق كاملة). يمكنك ضبطه في `channels.feishu.domain` أو لكل حساب على حدة (`channels.feishu.accounts.<id>.domain`).
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
domain: "lark",
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### علامات تحسين الحصة
|
||||
|
||||
يمكنك تقليل استخدام Feishu API باستخدام علامتين اختياريتين:
|
||||
|
||||
- `typingIndicator` (الافتراضي `true`): عند ضبطه على `false`، يتم تخطي استدعاءات تفاعل الكتابة.
|
||||
- `resolveSenderNames` (الافتراضي `true`): عند ضبطه على `false`، يتم تخطي استدعاءات البحث عن ملف المُرسِل الشخصي.
|
||||
|
||||
اضبطهما على المستوى الأعلى أو لكل حساب:
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
accounts: {
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
typingIndicator: true,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## الخطوة 3: البدء + الاختبار
|
||||
|
||||
### 1. شغّل البوابة
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
```
|
||||
|
||||
### 2. أرسل رسالة اختبار
|
||||
|
||||
في Feishu، ابحث عن البوت وأرسل رسالة.
|
||||
|
||||
### 3. وافق على الاقتران
|
||||
|
||||
بشكل افتراضي، يرد البوت برمز اقتران. وافق عليه:
|
||||
|
||||
```bash
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
بعد الموافقة، يمكنك الدردشة بشكل طبيعي.
|
||||
|
||||
---
|
||||
|
||||
## نظرة عامة
|
||||
|
||||
- **قناة بوت Feishu**: بوت Feishu تديره البوابة
|
||||
- **توجيه حتمي**: تعود الردود دائمًا إلى Feishu
|
||||
- **عزل الجلسات**: تشترك الرسائل الخاصة في جلسة رئيسية؛ أما المجموعات فمعزولة
|
||||
- **اتصال WebSocket**: اتصال طويل عبر Feishu SDK، ولا حاجة إلى عنوان URL عام
|
||||
> **يتطلب OpenClaw 2026.4.10 أو أحدث.** شغّل `openclaw --version` للتحقق. وقم بالترقية باستخدام `openclaw update`.
|
||||
|
||||
<Steps>
|
||||
<Step title="تشغيل معالج إعداد القناة">
|
||||
```bash
|
||||
openclaw channels login --channel feishu
|
||||
```
|
||||
امسح رمز QR باستخدام تطبيق Feishu/Lark على هاتفك المحمول لإنشاء بوت Feishu/Lark تلقائيًا.
|
||||
</Step>
|
||||
|
||||
<Step title="بعد اكتمال الإعداد، أعد تشغيل Gateway لتطبيق التغييرات">
|
||||
```bash
|
||||
openclaw gateway restart
|
||||
```
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
---
|
||||
|
||||
@ -308,38 +46,43 @@ openclaw pairing approve feishu <CODE>
|
||||
|
||||
### الرسائل المباشرة
|
||||
|
||||
- **الافتراضي**: `dmPolicy: "pairing"` (يحصل المستخدمون غير المعروفين على رمز اقتران)
|
||||
- **الموافقة على الاقتران**:
|
||||
قم بتكوين `dmPolicy` للتحكم في من يمكنه إرسال رسائل مباشرة إلى البوت:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
- `"pairing"` — يتلقى المستخدمون غير المعروفين رمز اقتران؛ وافق عليه عبر CLI
|
||||
- `"allowlist"` — يمكن فقط للمستخدمين المدرجين في `allowFrom` الدردشة (الافتراضي: مالك البوت فقط)
|
||||
- `"open"` — السماح لجميع المستخدمين
|
||||
- `"disabled"` — تعطيل جميع الرسائل المباشرة
|
||||
|
||||
- **وضع قائمة السماح**: اضبط `channels.feishu.allowFrom` باستخدام Open IDs المسموح بها
|
||||
**الموافقة على طلب اقتران:**
|
||||
|
||||
### دردشات المجموعات
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
openclaw pairing approve feishu <CODE>
|
||||
```
|
||||
|
||||
**1. سياسة المجموعات** (`channels.feishu.groupPolicy`):
|
||||
### الدردشات الجماعية
|
||||
|
||||
- `"open"` = السماح للجميع في المجموعات
|
||||
- `"allowlist"` = السماح فقط لما هو موجود في `groupAllowFrom`
|
||||
- `"disabled"` = تعطيل رسائل المجموعات
|
||||
**سياسة المجموعات** (`channels.feishu.groupPolicy`):
|
||||
|
||||
| القيمة | السلوك |
|
||||
| ------------- | ------------------------------------------- |
|
||||
| `"open"` | الرد على جميع الرسائل في المجموعات |
|
||||
| `"allowlist"` | الرد فقط على المجموعات المدرجة في `groupAllowFrom` |
|
||||
| `"disabled"` | تعطيل جميع رسائل المجموعات |
|
||||
|
||||
الافتراضي: `allowlist`
|
||||
|
||||
**2. شرط الإشارة** (`channels.feishu.requireMention`، ويمكن تجاوزه عبر `channels.feishu.groups.<chat_id>.requireMention`):
|
||||
**اشتراط الإشارة** (`channels.feishu.requireMention`):
|
||||
|
||||
- `true` صراحةً = يتطلب @mention
|
||||
- `false` صراحةً = يرد من دون إشارات
|
||||
- عند عدم ضبطه ووجود `groupPolicy: "open"` = الافتراضي `false`
|
||||
- عند عدم ضبطه وكون `groupPolicy` ليس `"open"` = الافتراضي `true`
|
||||
- `true` — يتطلب @mention (افتراضي)
|
||||
- `false` — الرد بدون @mention
|
||||
- تجاوز لكل مجموعة: `channels.feishu.groups.<chat_id>.requireMention`
|
||||
|
||||
---
|
||||
|
||||
## أمثلة على إعداد المجموعات
|
||||
## أمثلة على تكوين المجموعات
|
||||
|
||||
### السماح لجميع المجموعات، من دون الحاجة إلى @mention (الافتراضي للمجموعات المفتوحة)
|
||||
### السماح لجميع المجموعات، بدون اشتراط @mention
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -351,7 +94,7 @@ openclaw pairing approve feishu <CODE>
|
||||
}
|
||||
```
|
||||
|
||||
### السماح لجميع المجموعات، مع الاستمرار في طلب @mention
|
||||
### السماح لجميع المجموعات، مع الاستمرار في اشتراط @mention
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -371,16 +114,14 @@ openclaw pairing approve feishu <CODE>
|
||||
channels: {
|
||||
feishu: {
|
||||
groupPolicy: "allowlist",
|
||||
// Feishu group IDs (chat_id) look like: oc_xxx
|
||||
// تبدو معرّفات المجموعات بهذا الشكل: oc_xxx
|
||||
groupAllowFrom: ["oc_xxx", "oc_yyy"],
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### تقييد المرسلين المسموح لهم بالمراسلة داخل مجموعة (قائمة سماح للمرسلين)
|
||||
|
||||
بالإضافة إلى السماح للمجموعة نفسها، فإن **كل الرسائل** داخل تلك المجموعة يتم ضبطها حسب `open_id` الخاص بالمرسل: فقط المستخدمون المدرجون في `groups.<chat_id>.allowFrom` تتم معالجة رسائلهم؛ أما الرسائل من الأعضاء الآخرين فيتم تجاهلها (هذا ضبط كامل على مستوى المرسل، وليس فقط لأوامر التحكم مثل `/reset` أو `/new`).
|
||||
### تقييد المرسلين داخل مجموعة
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -390,7 +131,7 @@ openclaw pairing approve feishu <CODE>
|
||||
groupAllowFrom: ["oc_xxx"],
|
||||
groups: {
|
||||
oc_xxx: {
|
||||
// Feishu user IDs (open_id) look like: ou_xxx
|
||||
// تبدو معرّفات open_id للمستخدمين بهذا الشكل: ou_xxx
|
||||
allowFrom: ["ou_user1", "ou_user2"],
|
||||
},
|
||||
},
|
||||
@ -401,35 +142,23 @@ openclaw pairing approve feishu <CODE>
|
||||
|
||||
---
|
||||
|
||||
<a id="get-groupuser-ids"></a>
|
||||
|
||||
## الحصول على معرّفات المجموعة/المستخدم
|
||||
|
||||
### معرّفات المجموعات (chat_id)
|
||||
### معرّفات المجموعات (`chat_id`، التنسيق: `oc_xxx`)
|
||||
|
||||
تبدو معرّفات المجموعات بهذا الشكل `oc_xxx`.
|
||||
افتح المجموعة في Feishu/Lark، وانقر على أيقونة القائمة في الزاوية العلوية اليمنى، ثم انتقل إلى **Settings**. يظهر معرّف المجموعة (`chat_id`) في صفحة الإعدادات.
|
||||
|
||||
**الطريقة 1 (مستحسنة)**
|
||||

|
||||
|
||||
1. شغّل البوابة واذكر البوت باستخدام @mention داخل المجموعة
|
||||
2. شغّل `openclaw logs --follow` وابحث عن `chat_id`
|
||||
### معرّفات المستخدمين (`open_id`، التنسيق: `ou_xxx`)
|
||||
|
||||
**الطريقة 2**
|
||||
ابدأ Gateway، وأرسل رسالة مباشرة إلى البوت، ثم تحقق من السجلات:
|
||||
|
||||
استخدم مصحح Feishu API لسرد دردشات المجموعات.
|
||||
```bash
|
||||
openclaw logs --follow
|
||||
```
|
||||
|
||||
### معرّفات المستخدمين (open_id)
|
||||
|
||||
تبدو معرّفات المستخدمين بهذا الشكل `ou_xxx`.
|
||||
|
||||
**الطريقة 1 (مستحسنة)**
|
||||
|
||||
1. شغّل البوابة وأرسل رسالة مباشرة إلى البوت
|
||||
2. شغّل `openclaw logs --follow` وابحث عن `open_id`
|
||||
|
||||
**الطريقة 2**
|
||||
|
||||
تحقق من طلبات الاقتران للحصول على Open IDs الخاصة بالمستخدمين:
|
||||
ابحث عن `open_id` في مخرجات السجل. ويمكنك أيضًا التحقق من طلبات الاقتران المعلقة:
|
||||
|
||||
```bash
|
||||
openclaw pairing list feishu
|
||||
@ -439,59 +168,43 @@ openclaw pairing list feishu
|
||||
|
||||
## الأوامر الشائعة
|
||||
|
||||
| الأمر | الوصف |
|
||||
| --------- | ----------------- |
|
||||
| `/status` | عرض حالة البوت |
|
||||
| `/reset` | إعادة تعيين الجلسة |
|
||||
| `/model` | عرض/تبديل النموذج |
|
||||
| الأمر | الوصف |
|
||||
| --------- | --------------------------- |
|
||||
| `/status` | عرض حالة البوت |
|
||||
| `/reset` | إعادة تعيين الجلسة الحالية |
|
||||
| `/model` | عرض نموذج الذكاء الاصطناعي أو تبديله |
|
||||
|
||||
> ملاحظة: لا يدعم Feishu قوائم الأوامر الأصلية حتى الآن، لذلك يجب إرسال الأوامر كنص.
|
||||
|
||||
## أوامر إدارة البوابة
|
||||
|
||||
| الأمر | الوصف |
|
||||
| -------------------------- | ----------------------------- |
|
||||
| `openclaw gateway status` | عرض حالة البوابة |
|
||||
| `openclaw gateway install` | تثبيت/بدء خدمة البوابة |
|
||||
| `openclaw gateway stop` | إيقاف خدمة البوابة |
|
||||
| `openclaw gateway restart` | إعادة تشغيل خدمة البوابة |
|
||||
| `openclaw logs --follow` | تتبع سجلات البوابة |
|
||||
> لا يدعم Feishu/Lark قوائم أوامر الشرطة المائلة الأصلية، لذا أرسل هذه الأوامر كرسائل نصية عادية.
|
||||
|
||||
---
|
||||
|
||||
## استكشاف الأخطاء وإصلاحها
|
||||
|
||||
### البوت لا يستجيب في دردشات المجموعات
|
||||
### البوت لا يرد في الدردشات الجماعية
|
||||
|
||||
1. تأكد من إضافة البوت إلى المجموعة
|
||||
2. تأكد من أنك تشير إلى البوت باستخدام @mention (السلوك الافتراضي)
|
||||
3. تحقق من أن `groupPolicy` ليس مضبوطًا على `"disabled"`
|
||||
2. تأكد من أنك تذكر البوت باستخدام @mention (مطلوب افتراضيًا)
|
||||
3. تحقق من أن `groupPolicy` ليس `"disabled"`
|
||||
4. تحقق من السجلات: `openclaw logs --follow`
|
||||
|
||||
### البوت لا يستقبل الرسائل
|
||||
|
||||
1. تأكد من أن التطبيق منشور ومعتمد
|
||||
1. تأكد من أن البوت منشور ومعتمد في Feishu Open Platform / Lark Developer
|
||||
2. تأكد من أن اشتراك الأحداث يتضمن `im.message.receive_v1`
|
||||
3. تأكد من تفعيل **long connection**
|
||||
4. تأكد من اكتمال أذونات التطبيق
|
||||
5. تأكد من أن البوابة قيد التشغيل: `openclaw gateway status`
|
||||
3. تأكد من تحديد **persistent connection** (WebSocket)
|
||||
4. تأكد من منح جميع نطاقات الأذونات المطلوبة
|
||||
5. تأكد من أن Gateway قيد التشغيل: `openclaw gateway status`
|
||||
6. تحقق من السجلات: `openclaw logs --follow`
|
||||
|
||||
### تسرّب App Secret
|
||||
|
||||
1. أعد تعيين App Secret في Feishu Open Platform
|
||||
2. حدّث App Secret في إعداداتك
|
||||
3. أعد تشغيل البوابة
|
||||
|
||||
### فشل إرسال الرسائل
|
||||
|
||||
1. تأكد من أن التطبيق يملك إذن `im:message:send_as_bot`
|
||||
2. تأكد من أن التطبيق منشور
|
||||
3. تحقق من السجلات للحصول على أخطاء مفصلة
|
||||
1. أعد تعيين App Secret في Feishu Open Platform / Lark Developer
|
||||
2. حدّث القيمة في التكوين الخاص بك
|
||||
3. أعد تشغيل Gateway: `openclaw gateway restart`
|
||||
|
||||
---
|
||||
|
||||
## الإعداد المتقدم
|
||||
## التكوين المتقدم
|
||||
|
||||
### حسابات متعددة
|
||||
|
||||
@ -504,12 +217,12 @@ openclaw pairing list feishu
|
||||
main: {
|
||||
appId: "cli_xxx",
|
||||
appSecret: "xxx",
|
||||
name: "Primary bot",
|
||||
name: "البوت الأساسي",
|
||||
},
|
||||
backup: {
|
||||
appId: "cli_yyy",
|
||||
appSecret: "yyy",
|
||||
name: "Backup bot",
|
||||
name: "البوت الاحتياطي",
|
||||
enabled: false,
|
||||
},
|
||||
},
|
||||
@ -518,42 +231,53 @@ openclaw pairing list feishu
|
||||
}
|
||||
```
|
||||
|
||||
يتحكم `defaultAccount` في حساب Feishu المستخدم عندما لا تحدد واجهات API الصادرة `accountId` بشكل صريح.
|
||||
يتحكم `defaultAccount` في الحساب المستخدم عندما لا تحدد واجهات API الصادرة `accountId`.
|
||||
|
||||
### حدود الرسائل
|
||||
|
||||
- `textChunkLimit`: حجم مقطع النص الصادر (الافتراضي: 2000 حرف)
|
||||
- `mediaMaxMb`: حد رفع/تنزيل الوسائط (الافتراضي: 30MB)
|
||||
- `textChunkLimit` — حجم مقطع النص الصادر (الافتراضي: `2000` حرف)
|
||||
- `mediaMaxMb` — حد رفع/تنزيل الوسائط (الافتراضي: `30` ميغابايت)
|
||||
|
||||
### البث
|
||||
|
||||
يدعم Feishu الردود المتدفقة عبر البطاقات التفاعلية. عند التفعيل، يحدّث البوت بطاقة أثناء توليد النص.
|
||||
يدعم Feishu/Lark الردود المتدفقة عبر البطاقات التفاعلية. وعند التفعيل، يحدّث البوت البطاقة في الوقت الفعلي أثناء إنشاء النص.
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
streaming: true, // enable streaming card output (default true)
|
||||
blockStreaming: true, // enable block-level streaming (default true)
|
||||
streaming: true, // تفعيل إخراج البطاقات المتدفقة (الافتراضي: true)
|
||||
blockStreaming: true, // تفعيل البث على مستوى الكتل (الافتراضي: true)
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
اضبط `streaming: false` للانتظار حتى يكتمل الرد بالكامل قبل الإرسال.
|
||||
اضبط `streaming: false` لإرسال الرد الكامل في رسالة واحدة.
|
||||
|
||||
### تحسين الحصة
|
||||
|
||||
قلّل عدد استدعاءات API الخاصة بـ Feishu/Lark باستخدام علامتين اختياريتين:
|
||||
|
||||
- `typingIndicator` (الافتراضي `true`): اضبطه على `false` لتخطي استدعاءات تفاعل الكتابة
|
||||
- `resolveSenderNames` (الافتراضي `true`): اضبطه على `false` لتخطي عمليات البحث عن ملف تعريف المرسل
|
||||
|
||||
```json5
|
||||
{
|
||||
channels: {
|
||||
feishu: {
|
||||
typingIndicator: false,
|
||||
resolveSenderNames: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
### جلسات ACP
|
||||
|
||||
يدعم Feishu ACP في:
|
||||
يدعم Feishu/Lark بروتوكول ACP للرسائل المباشرة ورسائل سلاسل المجموعات. ويعتمد ACP في Feishu/Lark على الأوامر النصية — لا توجد قوائم أوامر شرطة مائلة أصلية، لذا استخدم رسائل `/acp ...` مباشرة داخل المحادثة.
|
||||
|
||||
- الرسائل المباشرة
|
||||
- محادثات موضوعات المجموعات
|
||||
|
||||
يعتمد ACP في Feishu على أوامر نصية. لا توجد قوائم أوامر slash أصلية، لذا استخدم رسائل `/acp ...` مباشرة في المحادثة.
|
||||
|
||||
#### ارتباطات ACP الدائمة
|
||||
|
||||
استخدم ارتباطات ACP المكتوبة على المستوى الأعلى لتثبيت رسالة مباشرة أو محادثة موضوع في Feishu إلى جلسة ACP دائمة.
|
||||
#### ربط ACP دائم
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -597,58 +321,39 @@ openclaw pairing list feishu
|
||||
}
|
||||
```
|
||||
|
||||
#### إنشاء ACP مرتبط بسلسلة محادثة من الدردشة
|
||||
#### تشغيل ACP من الدردشة
|
||||
|
||||
في رسالة مباشرة أو محادثة موضوع في Feishu، يمكنك إنشاء جلسة ACP وربطها في مكانها:
|
||||
في رسالة مباشرة أو سلسلة محادثة في Feishu/Lark:
|
||||
|
||||
```text
|
||||
/acp spawn codex --thread here
|
||||
```
|
||||
|
||||
ملاحظات:
|
||||
|
||||
- يعمل `--thread here` مع الرسائل المباشرة وموضوعات Feishu.
|
||||
- يتم توجيه الرسائل اللاحقة في الرسالة المباشرة/الموضوع المرتبط مباشرة إلى جلسة ACP تلك.
|
||||
- لا يستهدف الإصدار v1 دردشات المجموعات العامة غير المرتبطة بموضوع.
|
||||
يعمل `--thread here` مع الرسائل المباشرة ورسائل السلاسل في Feishu/Lark. ويتم توجيه الرسائل اللاحقة في المحادثة المرتبطة مباشرة إلى جلسة ACP تلك.
|
||||
|
||||
### توجيه متعدد الوكلاء
|
||||
|
||||
استخدم `bindings` لتوجيه الرسائل المباشرة أو المجموعات في Feishu إلى وكلاء مختلفين.
|
||||
استخدم `bindings` لتوجيه الرسائل المباشرة أو المجموعات في Feishu/Lark إلى وكلاء مختلفين.
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
list: [
|
||||
{ id: "main" },
|
||||
{
|
||||
id: "clawd-fan",
|
||||
workspace: "/home/user/clawd-fan",
|
||||
agentDir: "/home/user/.openclaw/agents/clawd-fan/agent",
|
||||
},
|
||||
{
|
||||
id: "clawd-xi",
|
||||
workspace: "/home/user/clawd-xi",
|
||||
agentDir: "/home/user/.openclaw/agents/clawd-xi/agent",
|
||||
},
|
||||
{ id: "agent-a", workspace: "/home/user/agent-a" },
|
||||
{ id: "agent-b", workspace: "/home/user/agent-b" },
|
||||
],
|
||||
},
|
||||
bindings: [
|
||||
{
|
||||
agentId: "main",
|
||||
agentId: "agent-a",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "direct", id: "ou_xxx" },
|
||||
},
|
||||
},
|
||||
{
|
||||
agentId: "clawd-fan",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "direct", id: "ou_yyy" },
|
||||
},
|
||||
},
|
||||
{
|
||||
agentId: "clawd-xi",
|
||||
agentId: "agent-b",
|
||||
match: {
|
||||
channel: "feishu",
|
||||
peer: { kind: "group", id: "oc_zzz" },
|
||||
@ -660,56 +365,45 @@ openclaw pairing list feishu
|
||||
|
||||
حقول التوجيه:
|
||||
|
||||
- `match.channel`: `"feishu"`
|
||||
- `match.peer.kind`: `"direct"` أو `"group"`
|
||||
- `match.peer.id`: معرّف Open للمستخدم (`ou_xxx`) أو معرّف المجموعة (`oc_xxx`)
|
||||
- `match.channel`: `"feishu"`
|
||||
- `match.peer.kind`: `"direct"` (رسالة مباشرة) أو `"group"` (دردشة جماعية)
|
||||
- `match.peer.id`: Open ID للمستخدم (`ou_xxx`) أو معرّف المجموعة (`oc_xxx`)
|
||||
|
||||
راجع [الحصول على معرّفات المجموعة/المستخدم](#get-groupuser-ids) للحصول على نصائح البحث.
|
||||
راجع [الحصول على معرّفات المجموعة/المستخدم](#الحصول-على-معرّفات-المجموعةالمستخدم) للحصول على نصائح حول البحث.
|
||||
|
||||
---
|
||||
|
||||
## مرجع الإعداد
|
||||
## مرجع التكوين
|
||||
|
||||
الإعداد الكامل: [إعدادات البوابة](/gateway/configuration)
|
||||
التكوين الكامل: [تكوين Gateway](/ar/gateway/configuration)
|
||||
|
||||
الخيارات الأساسية:
|
||||
|
||||
| الإعداد | الوصف | الافتراضي |
|
||||
| ------------------------------------------------- | --------------------------------------- | ---------------- |
|
||||
| `channels.feishu.enabled` | تفعيل/تعطيل القناة | `true` |
|
||||
| `channels.feishu.domain` | نطاق API (`feishu` أو `lark`) | `feishu` |
|
||||
| `channels.feishu.connectionMode` | وضع نقل الأحداث | `websocket` |
|
||||
| `channels.feishu.defaultAccount` | معرّف الحساب الافتراضي للتوجيه الصادر | `default` |
|
||||
| `channels.feishu.verificationToken` | مطلوب لوضع webhook | - |
|
||||
| `channels.feishu.encryptKey` | مطلوب لوضع webhook | - |
|
||||
| `channels.feishu.webhookPath` | مسار route لـ webhook | `/feishu/events` |
|
||||
| `channels.feishu.webhookHost` | مضيف الربط لـ webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | منفذ الربط لـ webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | - |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | - |
|
||||
| `channels.feishu.accounts.<id>.domain` | تجاوز نطاق API لكل حساب | `feishu` |
|
||||
| `channels.feishu.dmPolicy` | سياسة الرسائل المباشرة | `pairing` |
|
||||
| `channels.feishu.allowFrom` | قائمة السماح للرسائل المباشرة (قائمة `open_id`) | - |
|
||||
| `channels.feishu.groupPolicy` | سياسة المجموعات | `allowlist` |
|
||||
| `channels.feishu.groupAllowFrom` | قائمة السماح للمجموعات | - |
|
||||
| `channels.feishu.requireMention` | طلب @mention افتراضيًا | مشروط |
|
||||
| `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` | تفعيل البث على مستوى الكتل | `true` |
|
||||
|
||||
---
|
||||
|
||||
## مرجع dmPolicy
|
||||
|
||||
| القيمة | السلوك |
|
||||
| ------------- | --------------------------------------------------------------- |
|
||||
| `"pairing"` | **الافتراضي.** يحصل المستخدمون غير المعروفين على رمز اقتران؛ ويجب اعتمادهم |
|
||||
| `"allowlist"` | فقط المستخدمون الموجودون في `allowFrom` يمكنهم الدردشة |
|
||||
| `"open"` | السماح لجميع المستخدمين (يتطلب `"*"` في `allowFrom`) |
|
||||
| `"disabled"` | تعطيل الرسائل المباشرة |
|
||||
| الإعداد | الوصف | الافتراضي |
|
||||
| ------------------------------------------------- | ----------------------------------------- | ---------------- |
|
||||
| `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` | مضيف ربط Webhook | `127.0.0.1` |
|
||||
| `channels.feishu.webhookPort` | منفذ ربط Webhook | `3000` |
|
||||
| `channels.feishu.accounts.<id>.appId` | App ID | — |
|
||||
| `channels.feishu.accounts.<id>.appSecret` | App Secret | — |
|
||||
| `channels.feishu.accounts.<id>.domain` | تجاوز النطاق لكل حساب | `feishu` |
|
||||
| `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 لكل مجموعة | inherited |
|
||||
| `channels.feishu.groups.<chat_id>.enabled` | تفعيل/تعطيل مجموعة محددة | `true` |
|
||||
| `channels.feishu.textChunkLimit` | حجم مقطع الرسالة | `2000` |
|
||||
| `channels.feishu.mediaMaxMb` | حد حجم الوسائط | `30` |
|
||||
| `channels.feishu.streaming` | إخراج البطاقات المتدفقة | `true` |
|
||||
| `channels.feishu.blockStreaming` | البث على مستوى الكتل | `true` |
|
||||
| `channels.feishu.typingIndicator` | إرسال تفاعلات الكتابة | `true` |
|
||||
| `channels.feishu.resolveSenderNames` | تحليل أسماء عرض المرسلين | `true` |
|
||||
|
||||
---
|
||||
|
||||
@ -732,65 +426,21 @@ openclaw pairing list feishu
|
||||
- ✅ ملفات
|
||||
- ✅ صوت
|
||||
- ✅ فيديو/وسائط
|
||||
- ✅ بطاقات تفاعلية
|
||||
- ⚠️ نص منسق (تنسيق بنمط post وبطاقات، وليس ميزات التأليف العشوائية في Feishu)
|
||||
- ✅ بطاقات تفاعلية (بما في ذلك التحديثات المتدفقة)
|
||||
- ⚠️ نص منسق (تنسيق بنمط post؛ لا يدعم كامل إمكانات التأليف في Feishu/Lark)
|
||||
|
||||
### سلاسل المحادثات والردود
|
||||
### السلاسل والردود
|
||||
|
||||
- ✅ ردود مضمّنة
|
||||
- ✅ ردود سلسلة الموضوع عندما يوفّر Feishu `reply_in_thread`
|
||||
- ✅ تظل ردود الوسائط مدركة للسلسلة عند الرد على رسالة سلسلة/موضوع
|
||||
- ✅ ردود مضمنة
|
||||
- ✅ ردود السلاسل
|
||||
- ✅ تظل ردود الوسائط مدركة للسلسلة عند الرد على رسالة ضمن سلسلة
|
||||
|
||||
## تعليقات Drive
|
||||
|
||||
يمكن لـ Feishu تشغيل الوكيل عندما يضيف شخص ما تعليقًا على مستند Feishu Drive (Docs وSheets وغيرها). يتلقى الوكيل نص التعليق وسياق المستند وسلسلة التعليق حتى يتمكن من الرد داخل السلسلة أو إجراء تعديلات على المستند.
|
||||
|
||||
المتطلبات:
|
||||
|
||||
- الاشتراك في `drive.notice.comment_add_v1` ضمن إعدادات اشتراك أحداث تطبيق Feishu
|
||||
(إلى جانب `im.message.receive_v1` الموجود)
|
||||
- أداة Drive مفعلة افتراضيًا؛ عطّلها باستخدام `channels.feishu.tools.drive: false`
|
||||
|
||||
تكشف أداة `feishu_drive` عن إجراءات التعليقات التالية:
|
||||
|
||||
| الإجراء | الوصف |
|
||||
| ---------------------- | ----------------------------------- |
|
||||
| `list_comments` | سرد التعليقات على مستند |
|
||||
| `list_comment_replies` | سرد الردود في سلسلة تعليق |
|
||||
| `add_comment` | إضافة تعليق جديد على المستوى الأعلى |
|
||||
| `reply_comment` | الرد على سلسلة تعليق موجودة |
|
||||
|
||||
عندما يتعامل الوكيل مع حدث تعليق Drive، فإنه يتلقى:
|
||||
|
||||
- نص التعليق والمرسل
|
||||
- بيانات المستند الوصفية (العنوان والنوع وURL)
|
||||
- سياق سلسلة التعليق للردود داخل السلسلة
|
||||
|
||||
بعد إجراء تعديلات على المستند، يتم توجيه الوكيل لاستخدام `feishu_drive.reply_comment` لإخطار
|
||||
المعلّق ثم إخراج الرمز الصامت المطابق تمامًا `NO_REPLY` / `no_reply` لتجنب
|
||||
الإرسال المكرر.
|
||||
|
||||
## سطح إجراءات وقت التشغيل
|
||||
|
||||
يكشف Feishu حاليًا عن إجراءات وقت التشغيل التالية:
|
||||
|
||||
- `send`
|
||||
- `read`
|
||||
- `edit`
|
||||
- `thread-reply`
|
||||
- `pin`
|
||||
- `list-pins`
|
||||
- `unpin`
|
||||
- `member-info`
|
||||
- `channel-info`
|
||||
- `channel-list`
|
||||
- `react` و`reactions` عندما تكون التفاعلات مفعّلة في الإعدادات
|
||||
- إجراءات تعليقات `feishu_drive`: `list_comments` و`list_comment_replies` و`add_comment` و`reply_comment`
|
||||
---
|
||||
|
||||
## ذو صلة
|
||||
|
||||
- [نظرة عامة على القنوات](/channels) — جميع القنوات المدعومة
|
||||
- [الاقتران](/channels/pairing) — مصادقة الرسائل المباشرة وتدفق الاقتران
|
||||
- [المجموعات](/channels/groups) — سلوك دردشات المجموعات وضبط الإشارات
|
||||
- [توجيه القنوات](/channels/channel-routing) — توجيه الجلسات للرسائل
|
||||
- [الأمان](/gateway/security) — نموذج الوصول والتحصين
|
||||
- [نظرة عامة على القنوات](/ar/channels) — جميع القنوات المدعومة
|
||||
- [الاقتران](/ar/channels/pairing) — مصادقة الرسائل المباشرة وتدفق الاقتران
|
||||
- [المجموعات](/ar/channels/groups) — سلوك الدردشة الجماعية والتحكم عبر الإشارة
|
||||
- [توجيه القنوات](/ar/channels/channel-routing) — توجيه الجلسات للرسائل
|
||||
- [الأمان](/ar/gateway/security) — نموذج الوصول والتدعيم الأمني
|
||||
|
||||
Loading…
Reference in New Issue
Block a user