LINE (إضافة)¶
يتصل LINE بـ OpenClaw عبر LINE Messaging API. تعمل الإضافة كمستقبِل webhook على الـ Gateway وتستخدم رمز وصول القناة + سرّ القناة للمصادقة.
الحالة: مدعوم عبر إضافة. الرسائل المباشرة، ودردشات المجموعات، والوسائط، والمواقع، ورسائل Flex، ورسائل القوالب، والردود السريعة مدعومة. ردود الفعل والسلاسل غير مدعومة.
الإضافة المطلوبة¶
ثبّت إضافة LINE:
openclaw plugins install @openclaw/line
التشغيل من نسخة محلية (عند التشغيل من مستودع git):
openclaw plugins install ./extensions/line
الإعداد¶
- أنشئ حساب LINE Developers وافتح لوحة التحكم: https://developers.line.biz/console/
- أنشئ (أو اختر) موفّرًا وأضِف قناة Messaging API.
- انسخ Channel access token وChannel secret من إعدادات القناة.
- فعّل Use webhook في إعدادات Messaging API.
- اضبط عنوان webhook URL على نقطة نهاية الـ Gateway لديك (يتطلب HTTPS):
https://gateway-host/line/webhook
يستجيب الـ Gateway لعملية التحقق من webhook الخاصة بـ LINE (GET) وللأحداث الواردة (POST).
إذا احتجت مسارًا مخصصًا، فاضبط channels.line.webhookPath أو
channels.line.accounts.<id>.webhookPath وحدّث عنوان URL وفقًا لذلك.
التهيئة¶
التهيئة الدنيا:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}
متغيرات البيئة (الحساب الافتراضي فقط):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
ملفات الرمز/السر:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}
حسابات متعددة:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}
التحكم في الوصول¶
الرسائل المباشرة تُقترن افتراضيًا. يحصل المرسلون غير المعروفين على رمز اقتران ويتم تجاهل رسائلهم حتى تتم الموافقة.
openclaw pairing list line
openclaw pairing approve line <CODE>
قوائم السماح والسياسات:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: مُعرّفات مستخدمي LINE المسموح بها للرسائل المباشرةchannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: مُعرّفات مستخدمي LINE المسموح بها للمجموعات- تجاوزات لكل مجموعة:
channels.line.groups.<groupId>.allowFrom
مُعرّفات LINE حساسة لحالة الأحرف. تبدو المُعرّفات الصحيحة كما يلي:
- المستخدم:
U+ 32 محرفًا سداسيًا - المجموعة:
C+ 32 محرفًا سداسيًا - الغرفة:
R+ 32 محرفًا سداسيًا
سلوك الرسائل¶
- يتم تقسيم النص عند 5000 محرف.
- تُزال تنسيقات Markdown؛ وتُحوَّل كتل الشيفرة والجداول إلى بطاقات Flex عند الإمكان.
- تُخزَّن الاستجابات المتدفقة مؤقتًا؛ ويتلقى LINE كتلًا كاملة مع رسوم متحركة للتحميل أثناء عمل الوكيل.
- تنزيل الوسائط مقيّد بواسطة
channels.line.mediaMaxMb(الافتراضي 10).
بيانات القناة (الرسائل الغنية)¶
استخدم channelData.line لإرسال الردود السريعة، والمواقع، وبطاقات Flex، أو
رسائل القوالب.
{
text: "Here you go",
channelData: {
line: {
quickReplies: ["Status", "Help"],
location: {
title: "Office",
address: "123 Main St",
latitude: 35.681236,
longitude: 139.767125,
},
flexMessage: {
altText: "Status card",
contents: {
/* Flex payload */
},
},
templateMessage: {
type: "confirm",
text: "Proceed?",
confirmLabel: "Yes",
confirmData: "yes",
cancelLabel: "No",
cancelData: "no",
},
},
},
}
تتضمن إضافة LINE أيضًا أمر /card لإعدادات مسبقة لرسائل Flex:
/card info "Welcome" "Thanks for joining!"
استكشاف الأخطاء وإصلاحها¶
- فشل التحقق من webhook: تأكد من أن عنوان webhook URL يستخدم HTTPS وأن
channelSecretيطابق إعدادات لوحة تحكم LINE. - لا توجد أحداث واردة: تحقّق من أن مسار webhook يطابق
channels.line.webhookPathوأن الـ Gateway قابل للوصول من LINE. - أخطاء تنزيل الوسائط: ارفع قيمة
channels.line.mediaMaxMbإذا تجاوزت الوسائط الحد الافتراضي.