Regional platforms
LINE
يرتبط LINE بـ OpenClaw عبر LINE Messaging API. يعمل الـ plugin كمستقبِل Webhook على Gateway ويستخدم رمز وصول القناة + سر القناة الخاصين بك للمصادقة.
الحالة: plugin رسمي، يُثبَّت بشكل منفصل. تُدعم الرسائل المباشرة، والمحادثات الجماعية، والوسائط، والمواقع، ورسائل Flex، ورسائل القوالب، والردود السريعة. لا تُدعم التفاعلات وسلاسل المحادثات.
التثبيت
ثبّت LINE قبل تهيئة القناة:
openclaw plugins install @openclaw/lineنسخة العمل المحلية (عند التشغيل من مستودع git):
openclaw plugins install ./path/to/local/line-pluginالإعداد
- أنشئ حساب LINE Developers وافتح Console: https://developers.line.biz/console/
- أنشئ Provider (أو اختر واحدًا) وأضف قناة Messaging API.
- انسخ Channel access token وChannel secret من إعدادات القناة.
- فعّل Use webhook في إعدادات Messaging API.
- عيّن عنوان URL للـ webhook إلى نقطة نهاية Gateway الخاصة بك (يلزم HTTPS):
https://gateway-host/line/webhookيستجيب Gateway لعملية تحقق LINE من الـ webhook (GET)، ويقرّ فورًا بالأحداث
الواردة الموقّعة (POST) بعد التحقق من التوقيع والحمولة؛ وتستمر معالجة
الوكيل بشكل غير متزامن.
إذا كنت بحاجة إلى مسار مخصص، فعيّن channels.line.webhookPath أو
channels.line.accounts.<id>.webhookPath وحدّث عنوان URL وفقًا لذلك.
ملاحظات أمنية:
- يعتمد التحقق من توقيع LINE على المتن (HMAC على المتن الخام)، ولذلك يطبّق OpenClaw حدًا صارمًا لحجم المتن قبل المصادقة (64 KB) ومهلة للقراءة قبل التحقق.
- يعالج OpenClaw أحداث الـ webhook من بايتات الطلب الخام التي تم التحقق منها. تُتجاهل قيم
req.bodyالتي حوّلتها البرمجيات الوسيطة السابقة حفاظًا على سلامة التوقيع.
التهيئة
أدنى تهيئة:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}تهيئة الرسائل المباشرة العامة:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}متغيرات البيئة (الحساب الافتراضي فقط):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
ملفات الرمز/السر:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}يجب أن يشير tokenFile وsecretFile إلى ملفات عادية. تُرفض الروابط الرمزية.
تتغلب قيم التهيئة المضمّنة على الملفات؛ ومتغيرات البيئة هي خيار الرجوع الأخير للحساب الافتراضي.
حسابات متعددة:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}التحكم في الوصول
تستخدم الرسائل المباشرة الاقتران افتراضيًا. يحصل المرسلون غير المعروفين على رمز اقتران، وتُتجاهل رسائلهم حتى تتم الموافقة عليهم:
openclaw pairing list lineopenclaw pairing approve line <CODE>قوائم السماح والسياسات:
channels.line.dmPolicy: pairing | allowlist | open | disabled(الافتراضيpairing)channels.line.allowFrom: معرّفات مستخدمي LINE المسموح بها للرسائل المباشرة؛ يتطلبdmPolicy: "open"القيمة["*"]channels.line.groupPolicy: allowlist | open | disabled(الافتراضيallowlist)channels.line.groupAllowFrom: معرّفات مستخدمي LINE المسموح بها للمجموعات؛ لا تسمح إدخالاتallowFromالخاصة بالرسائل المباشرة لمرسلي المجموعات بالدخول- تجاوزات خاصة بكل مجموعة:
channels.line.groups.<groupId>.allowFrom(بالإضافة إلىenabledوrequireMentionوsystemPromptوskills). معgroupPolicy: "allowlist"، عيّنgroupAllowFromأوallowFromالخاص بكل مجموعة؛ تحظر قائمة سماح المجموعات الفارغة رسائل المجموعات حتى عندما تكون الرسائل المباشرة مفتوحة. - يمكن الإشارة إلى مجموعات وصول المرسلين الثابتة من
allowFromوgroupAllowFromوallowFromالخاص بكل مجموعة باستخدامaccessGroup:<name>؛ راجع مجموعات الوصول. - ملاحظة وقت التشغيل: إذا كان
channels.lineمفقودًا تمامًا، يرجع وقت التشغيل إلىgroupPolicy="allowlist"لإجراء عمليات التحقق الخاصة بالمجموعات (حتى إذا عُيّنchannels.defaults.groupPolicy).
معرّفات LINE حساسة لحالة الأحرف. تبدو المعرّفات الصالحة كما يلي:
- المستخدم:
U+ 32 محرفًا سداسيًا عشريًا - المجموعة:
C+ 32 محرفًا سداسيًا عشريًا - الغرفة:
R+ 32 محرفًا سداسيًا عشريًا
سلوك الرسائل
- يُقسَّم النص إلى أجزاء بطول 5000 محرف.
- تُزال تنسيقات Markdown؛ وتُحوَّل كتل الشيفرة والجداول إلى بطاقات Flex متى أمكن.
- تُخزَّن الاستجابات المتدفقة مؤقتًا؛ ويتلقى LINE أجزاءً كاملة مع رسم متحرك للتحميل أثناء عمل الوكيل.
- تُقيَّد تنزيلات الوسائط بواسطة
channels.line.mediaMaxMb(الافتراضي 10). - تُحفظ الوسائط الواردة ضمن
~/.openclaw/media/inbound/قبل تمريرها إلى الوكيل، بما يتوافق مع مخزن الوسائط المشترك الذي تستخدمه plugins القنوات الأخرى.
بيانات القناة (الرسائل الغنية)
استخدم channelData.line لإرسال ردود سريعة أو مواقع أو بطاقات Flex أو رسائل
قوالب.
{ text: "إليك ما طلبت", channelData: { line: { quickReplies: ["الحالة", "المساعدة"], location: { title: "المكتب", address: "123 الشارع الرئيسي", latitude: 35.681236, longitude: 139.767125, }, flexMessage: { altText: "بطاقة الحالة", contents: {/* حمولة Flex */}, }, templateMessage: { type: "confirm", text: "هل تريد المتابعة؟", confirmLabel: "نعم", confirmData: "yes", cancelLabel: "لا", cancelData: "no", }, }, },}يتضمن plugin LINE أيضًا أمر /card لإعدادات رسائل Flex المسبقة:
/card info "مرحبًا" "شكرًا لانضمامك!"دعم ACP
يدعم LINE ارتباطات محادثات ACP (بروتوكول تواصل الوكلاء):
- يربط
/acp spawn <agent> --bind hereمحادثة LINE الحالية بجلسة ACP دون إنشاء سلسلة محادثة فرعية. - تعمل ارتباطات ACP المُهيأة وجلسات ACP النشطة المرتبطة بالمحادثات على LINE كما في قنوات المحادثة الأخرى.
راجع وكلاء ACP لمزيد من التفاصيل.
الوسائط الصادرة
يرسل plugin LINE الصور ومقاطع الفيديو والصوت عبر أداة رسائل الوكيل:
- الصور: تُرسل كرسائل صور في LINE؛ وتستخدم صورة المعاينة عنوان URL للوسائط افتراضيًا.
- مقاطع الفيديو: تتطلب صورة معاينة؛ عيّن
channelData.line.previewImageUrlإلى عنوان URL لصورة. - الصوت: يُرسل كرسائل صوتية في LINE؛ وتكون المدة الافتراضية 60 ثانية ما لم يُعيَّن
channelData.line.durationMs.
يُؤخذ نوع الوسائط من channelData.line.mediaKind عند تعيينه، وإلا فيُستنتج
من خيارات LINE الأخرى أو لاحقة ملف عنوان URL، مع استخدام الصورة كخيار رجوع.
يجب أن تكون عناوين URL للوسائط الصادرة عناوين HTTPS عامة لا يزيد طولها عن 2000 محرف. يتحقق OpenClaw من اسم المضيف المستهدف قبل تسليم عنوان URL إلى LINE، ويرفض أهداف الاسترجاع المحلي والشبكة المحلية للرابط والشبكات الخاصة.
تستخدم عمليات إرسال الوسائط العامة دون خيارات خاصة بـ LINE مسار الصور.
استكشاف الأخطاء وإصلاحها
- فشل التحقق من الـ webhook: تأكد من أن عنوان URL للـ webhook يستخدم HTTPS وأن
channelSecretيطابق LINE console. - لا توجد أحداث واردة: تأكد من أن مسار الـ webhook يطابق
channels.line.webhookPathوأن LINE يمكنه الوصول إلى Gateway. - أخطاء تنزيل الوسائط: ارفع
channels.line.mediaMaxMbإذا تجاوزت الوسائط الحد الافتراضي.
ذو صلة
- نظرة عامة على القنوات — جميع القنوات المدعومة
- الاقتران — مصادقة الرسائل المباشرة وتدفق الاقتران
- المجموعات — سلوك المحادثات الجماعية والتحكم عبر الإشارات
- توجيه القنوات — توجيه جلسات الرسائل
- الأمان — نموذج الوصول والتقوية