Regional platforms
LINE
LINE از طریق LINE Messaging API به OpenClaw متصل میشود. 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 فعال کنید.
- نشانی Webhook را روی نقطه پایانی Gateway خود تنظیم کنید (HTTPS الزامی است):
https://gateway-host/line/webhookGateway به تأیید Webhook مربوط به LINE (GET) پاسخ میدهد. برای رویدادهای ورودی امضاشده
(POST)، پیش از بازگرداندن 200 هر رویداد را در صف ورودی پایدار مینویسد؛
پردازش عامل بهصورت ناهمگام ادامه مییابد. تحویل ناموفق از صف دوباره امتحان میشود،
از جمله پس از راهاندازی مجدد Gateway، و رویدادهای مسموم پس از تعداد محدودی تلاش مجدد
به رکوردهای ناموفق صف تبدیل میشوند. اگر ماندگاری پایدار شکست بخورد، درخواست بهجای
تأیید رویدادی که ممکن است از دست برود، 500 را بازمیگرداند.
تحویل در مرز صف به عامل حداقل یکبار انجام میشود: خاموشی یا خرابی Gateway هنگام
تحویل فعال ممکن است نوبت را دوباره اجرا کند. رویدادهای پیام بر اساس شناسه پیام
LINE رفع تکرار میشوند؛ انواع دیگر رویداد از webhookEventId استفاده میکنند. رکوردهای تکمیل نگهداریشده
Webhookهای تکراری معمول را سرکوب میکنند، اما کنترلگرهایی که عوارض جانبی خارجی دارند
همچنان باید همتوان باشند.
اگر به مسیر سفارشی نیاز دارید، channels.line.webhookPath یا
channels.line.accounts.<id>.webhookPath را تنظیم و نشانی را متناسب با آن بهروزرسانی کنید.
نکات امنیتی:
- تأیید امضای 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/ذخیره میشود و با مخزن رسانه مشترک مورداستفاده سایر Pluginهای کانال مطابقت دارد.
دادههای کانال (پیامهای غنی)
برای ارسال پاسخهای سریع، موقعیتها، کارتهای Flex یا پیامهای قالبی از
channelData.line استفاده کنید.
{ 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 ارسال میشوند؛ تصویر پیشنمایش بهطور پیشفرض همان نشانی رسانه است.
- ویدئوها: به تصویر پیشنمایش نیاز دارند؛
channelData.line.previewImageUrlرا روی نشانی یک تصویر تنظیم کنید. - صدا: بهصورت پیام صوتی LINE ارسال میشود؛ مدتزمان بهطور پیشفرض 60 ثانیه است، مگر اینکه
channelData.line.durationMsتنظیم شده باشد.
نوع رسانه در صورت تنظیم از channelData.line.mediaKind گرفته میشود؛ در غیر این صورت
از سایر گزینههای LINE یا پسوند فایل نشانی استنباط میشود و تصویر گزینه جایگزین است.
نشانیهای رسانه خروجی باید نشانیهای عمومی HTTPS با حداکثر 2000 نویسه باشند. OpenClaw نام میزبان مقصد را پیش از تحویل نشانی به LINE اعتبارسنجی میکند و مقصدهای loopback، link-local و شبکه خصوصی را رد میکند.
ارسالهای عمومی رسانه بدون گزینههای مختص LINE از مسیر تصویر استفاده میکنند.
عیبیابی
- تأیید Webhook شکست میخورد: مطمئن شوید نشانی Webhook از HTTPS استفاده میکند و
channelSecretبا LINE console مطابقت دارد. - هیچ رویداد ورودی دریافت نمیشود: تأیید کنید مسیر Webhook با
channels.line.webhookPathمطابقت دارد و Gateway از LINE قابل دسترسی است. - خطاهای دانلود رسانه: اگر حجم رسانه از محدودیت پیشفرض بیشتر است،
channels.line.mediaMaxMbرا افزایش دهید.
مطالب مرتبط
- نمای کلی کانالها — همه کانالهای پشتیبانیشده
- جفتسازی — احراز هویت پیام مستقیم و جریان جفتسازی
- گروهها — رفتار گفتوگوی گروهی و کنترل اشاره
- مسیریابی کانال — مسیریابی نشست برای پیامها
- امنیت — مدل دسترسی و مقاومسازی