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 لعملية تحقق Webhook الخاصة بـ LINE (GET)، ويؤكد فورًا استلام
الأحداث الواردة الموقّعة (POST) بعد التحقق من التوقيع والحمولة؛ وتستمر معالجة الوكيل
بشكل غير متزامن.
إذا كنت بحاجة إلى مسار مخصص، فعيّن channels.line.webhookPath أو
channels.line.accounts.<id>.webhookPath وحدّث عنوان URL وفقًا لذلك.
ملاحظات أمنية:
- يعتمد التحقق من توقيع LINE على جسم الطلب (HMAC على الجسم الخام)، لذلك يطبّق OpenClaw حدًا صارمًا لحجم الجسم قبل المصادقة (64 كيلوبايت) ومهلة للقراءة قبل التحقق.
- يعالج 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 المسموح بها للمجموعات- تجاوزات لكل مجموعة:
channels.line.groups.<groupId>.allowFrom(بالإضافة إلىenabledوrequireMentionوsystemPromptوskills) - يمكن الإشارة إلى مجموعات وصول المرسلين الثابتة من
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، ويرفض أهداف local loopback، والشبكة المحلية للرابط، والشبكات الخاصة.
تستخدم عمليات إرسال الوسائط العامة التي لا تتضمن خيارات خاصة بـ LINE مسار الصور.
استكشاف الأخطاء وإصلاحها
- فشل التحقق من Webhook: تأكد من أن عنوان URL الخاص بـ Webhook يستخدم HTTPS وأن
channelSecretيطابق LINE Console. - لا توجد أحداث واردة: تأكد من أن مسار Webhook يطابق
channels.line.webhookPathوأن LINE يستطيع الوصول إلى Gateway. - أخطاء تنزيل الوسائط: ارفع قيمة
channels.line.mediaMaxMbإذا تجاوزت الوسائط الحد الافتراضي.
ذو صلة
- نظرة عامة على القنوات — جميع القنوات المدعومة
- الاقتران — مصادقة الرسائل المباشرة وتدفق الاقتران
- المجموعات — سلوك المحادثات الجماعية واشتراط الإشارة
- توجيه القنوات — توجيه جلسات الرسائل
- الأمان — نموذج الوصول والتقوية