Regional platforms
خط
LINE از طریق LINE Messaging API به OpenClaw متصل میشود. Plugin بهعنوان گیرندهی Webhook روی Gateway اجرا میشود و برای احراز هویت از channel access token + channel secret شما استفاده میکند.
وضعیت: Plugin قابل دانلود. پیامهای مستقیم، چتهای گروهی، رسانه، مکانها، پیامهای Flex، پیامهای قالبی، و پاسخهای سریع پشتیبانی میشوند. واکنشها و رشتهگفتگوها پشتیبانی نمیشوند.
نصب
پیش از پیکربندی کانال، LINE را نصب کنید:
openclaw plugins install @openclaw/linecheckout محلی (هنگام اجرا از یک مخزن 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 را از تنظیمات کانال کپی کنید.
- در تنظیمات Messaging API، گزینهی Use webhook را فعال کنید.
- URL وبهوک را روی endpoint گیتوی خود تنظیم کنید (HTTPS الزامی است):
https://gateway-host/line/webhookGateway به راستیآزمایی وبهوک LINE (GET) و رویدادهای ورودی (POST) پاسخ میدهد.
اگر به مسیر سفارشی نیاز دارید، channels.line.webhookPath یا
channels.line.accounts.<id>.webhookPath را تنظیم کنید و URL را مطابق آن بهروزرسانی کنید.
نکتهی امنیتی:
- راستیآزمایی امضای LINE به بدنه وابسته است (HMAC روی بدنهی خام)، بنابراین OpenClaw پیش از راستیآزمایی محدودیتهای سختگیرانهی بدنه و timeout اعمال میکند.
- OpenClaw رویدادهای وبهوک را از بایتهای خام درخواستِ راستیآزماییشده پردازش میکند. مقدارهای
req.bodyکه توسط میانافزار بالادستی تغییر شکل داده شدهاند، برای ایمنی یکپارچگی امضا نادیده گرفته میشوند.
پیکربندی
پیکربندی حداقلی:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}پیکربندی DM عمومی:
{ 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 باید به فایلهای معمولی اشاره کنند. symlinkها رد میشوند.
چند حساب:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}کنترل دسترسی
پیامهای مستقیم بهصورت پیشفرض روی جفتسازی هستند. فرستندگان ناشناس یک کد جفتسازی دریافت میکنند و پیامهایشان تا زمان تأیید نادیده گرفته میشود.
openclaw pairing list lineopenclaw pairing approve line <CODE>allowlistها و سیاستها:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: شناسههای کاربری LINE در allowlist برای DMها؛dmPolicy: "open"به["*"]نیاز داردchannels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: شناسههای کاربری LINE در allowlist برای گروهها- بازنویسیهای هر گروه:
channels.line.groups.<groupId>.allowFrom - گروههای دسترسی فرستندهی ایستا را میتوان از
allowFrom،groupAllowFrom، وallowFromهر گروه باaccessGroup:<name>ارجاع داد. - نکتهی runtime: اگر
channels.lineکاملاً وجود نداشته باشد، runtime برای بررسی گروهها بهgroupPolicy="allowlist"برمیگردد (حتی اگرchannels.defaults.groupPolicyتنظیم شده باشد).
شناسههای LINE به بزرگی و کوچکی حروف حساس هستند. شناسههای معتبر به این شکلاند:
- کاربر:
U+ 32 نویسهی hex - گروه:
C+ 32 نویسهی hex - اتاق:
R+ 32 نویسهی hex
رفتار پیام
- متن در قطعههای 5000 نویسهای تقسیم میشود.
- قالببندی Markdown حذف میشود؛ بلوکهای کد و جدولها در صورت امکان به کارتهای Flex تبدیل میشوند.
- پاسخهای جریانی بافر میشوند؛ LINE قطعههای کامل را همراه با یک پویانمایی loading هنگام کار کردن agent دریافت میکند.
- دانلودهای رسانه با
channels.line.mediaMaxMbمحدود میشوند (پیشفرض 10). - رسانهی ورودی پیش از ارسال به agent، در
~/.openclaw/media/inbound/ذخیره میشود، مطابق با ذخیرهگاه رسانهی مشترکی که سایر Pluginهای کانال bundled از آن استفاده میکنند.
دادههای کانال (پیامهای غنی)
از 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", }, }, },}Plugin مربوط به LINE همچنین یک دستور /card برای presetهای پیام Flex ارائه میکند:
/card info "Welcome" "Thanks for joining!"پشتیبانی ACP
LINE از bindingهای مکالمهی ACP (Agent Communication Protocol) پشتیبانی میکند:
/acp spawn <agent> --bind hereچت فعلی LINE را بدون ایجاد یک child thread به یک session ACP bind میکند.- bindingهای ACP پیکربندیشده و sessionهای ACP فعالِ متصل به مکالمه روی LINE مانند سایر کانالهای مکالمه کار میکنند.
برای جزئیات، agentهای ACP را ببینید.
رسانهی خروجی
Plugin مربوط به LINE از ارسال تصویر، ویدئو، و فایلهای صوتی از طریق ابزار پیام agent پشتیبانی میکند. رسانه از طریق مسیر تحویل ویژهی LINE با مدیریت مناسب preview و tracking ارسال میشود:
- تصاویر: بهعنوان پیامهای تصویری LINE همراه با تولید خودکار preview ارسال میشوند.
- ویدئوها: با مدیریت صریح preview و content-type ارسال میشوند.
- صوت: بهعنوان پیامهای صوتی LINE ارسال میشود.
URLهای رسانهی خروجی باید URLهای عمومی HTTPS باشند. OpenClaw پیش از تحویل URL به LINE، hostname هدف را اعتبارسنجی میکند و هدفهای loopback، link-local، و شبکهی خصوصی را رد میکند.
ارسالهای رسانهی عمومی، وقتی مسیر ویژهی LINE در دسترس نباشد، به مسیر موجودِ فقط تصویر برمیگردند.
عیبیابی
- راستیآزمایی Webhook شکست میخورد: مطمئن شوید URL وبهوک HTTPS است و
channelSecretبا Console مربوط به LINE مطابقت دارد. - هیچ رویداد ورودی وجود ندارد: تأیید کنید مسیر وبهوک با
channels.line.webhookPathمطابقت دارد و Gateway از سمت LINE قابل دسترسی است. - خطاهای دانلود رسانه: اگر رسانه از محدودیت پیشفرض بیشتر است،
channels.line.mediaMaxMbرا افزایش دهید.
مرتبط
- نمای کلی کانالها — همهی کانالهای پشتیبانیشده
- جفتسازی — احراز هویت DM و جریان جفتسازی
- گروهها — رفتار چت گروهی و gating بر اساس mention
- مسیریابی کانال — مسیریابی session برای پیامها
- امنیت — مدل دسترسی و سختسازی