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 را از تنظیمات کانال کپی کنید.
- در تنظیمات Messaging API، گزینهٔ Use webhook را فعال کنید.
- نشانی Webhook را روی نقطهٔ پایانی Gateway خود تنظیم کنید (HTTPS الزامی است):
https://gateway-host/line/webhookGateway به راستیآزمایی Webhook متعلق به LINE با درخواست GET پاسخ میدهد و رویدادهای
ورودی امضاشده با درخواست POST را بلافاصله پس از اعتبارسنجی امضا و محموله تأیید میکند؛
پردازش عامل بهصورت ناهمگام ادامه مییابد.
اگر به مسیر سفارشی نیاز دارید، channels.line.webhookPath یا
channels.line.accounts.<id>.webhookPath را تنظیم و نشانی را متناسب با آن بهروزرسانی کنید.
نکات امنیتی:
- راستیآزمایی امضای LINE به بدنه وابسته است (HMAC روی بدنهٔ خام)، بنابراین OpenClaw پیش از احراز هویت، محدودیت سختگیرانهٔ اندازهٔ بدنه (۶۴ کیلوبایت) و مهلت خواندن اعمال میکند.
- 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) - گروههای دسترسی ایستای فرستندگان را میتوان با
accessGroup:<name>ازallowFrom،groupAllowFromوallowFromمختص هر گروه ارجاع داد؛ گروههای دسترسی را ببینید. - نکتهٔ زمان اجرا: اگر
channels.lineکاملاً وجود نداشته باشد، زمان اجرا برای بررسی گروهها بهgroupPolicy="allowlist"بازمیگردد (حتی اگرchannels.defaults.groupPolicyتنظیم شده باشد).
شناسههای LINE به بزرگی و کوچکی حروف حساساند. شناسههای معتبر چنین هستند:
- کاربر:
U+ ۳۲ نویسهٔ شانزدهشانزدهی - گروه:
C+ ۳۲ نویسهٔ شانزدهشانزدهی - اتاق:
R+ ۳۲ نویسهٔ شانزدهشانزدهی
رفتار پیام
- متن در قطعههای ۵۰۰۰ نویسهای تقسیم میشود.
- قالببندی Markdown حذف میشود؛ بلوکهای کد و جدولها در صورت امکان به کارتهای Flex تبدیل میشوند.
- پاسخهای جریانی بافر میشوند؛ هنگام کار عامل، LINE قطعههای کامل را همراه با پویانمایی بارگذاری دریافت میکند.
- حجم بارگیری رسانه با
channels.line.mediaMaxMbمحدود میشود (پیشفرض ۱۰). - رسانهٔ ورودی پیش از ارسال به عامل در
~/.openclaw/media/inbound/ذخیره میشود؛ این همان مخزن رسانهٔ مشترک مورد استفادهٔ سایر Pluginهای کانال است.
دادههای کانال (پیامهای غنی)
برای ارسال پاسخهای سریع، موقعیتهای مکانی، کارتهای Flex یا پیامهای قالبی از
channelData.line استفاده کنید.
{ 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 را برای پیشتنظیمهای پیام Flex ارائه میکند:
/card info "Welcome" "Thanks for joining!"پشتیبانی از ACP
LINE از اتصال مکالمههای ACP (پروتکل ارتباط عامل) پشتیبانی میکند:
/acp spawn <agent> --bind hereگفتوگوی فعلی LINE را بدون ایجاد رشتهٔ فرزند به یک نشست ACP متصل میکند.- اتصالهای پیکربندیشدهٔ ACP و نشستهای فعال ACP متصل به مکالمه، در LINE مانند سایر کانالهای مکالمه کار میکنند.
برای جزئیات، عاملهای ACP را ببینید.
رسانهٔ خروجی
Plugin مربوط به LINE تصاویر، ویدئوها و صدا را از طریق ابزار پیام عامل ارسال میکند:
- تصاویر: بهصورت پیام تصویری LINE ارسال میشوند؛ تصویر پیشنمایش بهطور پیشفرض همان نشانی رسانه است.
- ویدئوها: به تصویر پیشنمایش نیاز دارند؛
channelData.line.previewImageUrlرا روی نشانی یک تصویر تنظیم کنید. - صدا: بهصورت پیام صوتی LINE ارسال میشود؛ مدتزمان بهطور پیشفرض ۶۰ ثانیه است، مگر آنکه
channelData.line.durationMsتنظیم شده باشد.
نوع رسانه در صورت تنظیم از channelData.line.mediaKind گرفته میشود؛ در غیر این صورت
از سایر گزینههای LINE یا پسوند فایل در نشانی استنباط میشود و تصویر گزینهٔ جایگزین است.
نشانیهای رسانهٔ خروجی باید نشانیهای عمومی HTTPS با حداکثر ۲۰۰۰ نویسه باشند. OpenClaw پیش از تحویل نشانی به LINE، نام میزبان مقصد را اعتبارسنجی میکند و مقصدهای local loopback، پیوند-محلی و شبکهٔ خصوصی را رد میکند.
ارسالهای عمومی رسانه بدون گزینههای مختص LINE از مسیر تصویر استفاده میکنند.
رفع اشکال
- راستیآزمایی Webhook ناموفق است: مطمئن شوید نشانی Webhook از HTTPS استفاده میکند و
channelSecretبا LINE Console مطابقت دارد. - هیچ رویداد ورودی دریافت نمیشود: تأیید کنید مسیر Webhook با
channels.line.webhookPathمطابقت دارد و LINE میتواند به Gateway دسترسی پیدا کند. - خطاهای بارگیری رسانه: اگر حجم رسانه از حد پیشفرض بیشتر است، مقدار
channels.line.mediaMaxMbرا افزایش دهید.
مرتبط
- نمای کلی کانالها — همهٔ کانالهای پشتیبانیشده
- جفتسازی — احراز هویت پیام مستقیم و فرایند جفتسازی
- گروهها — رفتار گفتوگوی گروهی و الزام اشاره
- مسیریابی کانال — مسیریابی نشست برای پیامها
- امنیت — مدل دسترسی و مقاومسازی