Regional platforms
LINE
LINE terhubung ke OpenClaw melalui LINE Messaging API. Plugin berjalan sebagai penerima webhook di Gateway dan menggunakan token akses channel + secret channel Anda untuk autentikasi.
Status: plugin resmi, dipasang secara terpisah. Pesan langsung, obrolan grup, media, lokasi, pesan Flex, pesan templat, dan balasan cepat didukung. Reaksi dan utas tidak didukung.
Instalasi
Instal LINE sebelum mengonfigurasi channel:
openclaw plugins install @openclaw/lineCheckout lokal (saat menjalankan dari repositori git):
openclaw plugins install ./path/to/local/line-pluginPenyiapan
- Buat akun LINE Developers dan buka Console: https://developers.line.biz/console/
- Buat (atau pilih) Provider dan tambahkan channel Messaging API.
- Salin Channel access token dan Channel secret dari pengaturan channel.
- Aktifkan Use webhook di pengaturan Messaging API.
- Tetapkan URL webhook ke endpoint gateway Anda (HTTPS wajib):
https://gateway-host/line/webhookGateway menjawab verifikasi webhook LINE (GET). Untuk peristiwa masuk bertanda tangan
(POST), Gateway menulis setiap peristiwa ke antrean ingress persisten sebelum mengembalikan 200;
pemrosesan agen berlanjut secara asinkron. Pengiriman yang gagal dicoba ulang dari
antrean, termasuk setelah Gateway dimulai ulang, dan peristiwa bermasalah menjadi catatan antrean
gagal setelah percobaan ulang terbatas. Jika persistensi tahan lama gagal, permintaan mengembalikan
500 alih-alih mengakui peristiwa yang dapat hilang.
Pengiriman dilakukan setidaknya sekali pada batas antrean-ke-agen: penghentian atau
crash Gateway selama pengiriman aktif dapat memutar ulang giliran. Peristiwa pesan dideduplikasi berdasarkan
ID pesan LINE; jenis peristiwa lainnya menggunakan webhookEventId. Catatan penyelesaian yang dipertahankan
mencegah webhook duplikat biasa, tetapi penangan yang melakukan efek samping eksternal
tetap harus idempoten.
Jika memerlukan path khusus, tetapkan channels.line.webhookPath atau
channels.line.accounts.<id>.webhookPath dan perbarui URL sebagaimana mestinya.
Catatan keamanan:
- Verifikasi tanda tangan LINE bergantung pada isi body (HMAC atas body mentah), sehingga OpenClaw menerapkan batas body praautentikasi yang ketat (64 KB) dan batas waktu baca sebelum verifikasi.
- OpenClaw memproses peristiwa webhook dari byte permintaan mentah yang telah diverifikasi. Nilai
req.bodyyang ditransformasi middleware upstream diabaikan demi keamanan integritas tanda tangan.
Konfigurasi
Konfigurasi minimal:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "pairing", }, },}Konfigurasi DM publik:
{ channels: { line: { enabled: true, channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN", channelSecret: "LINE_CHANNEL_SECRET", dmPolicy: "open", allowFrom: ["*"], }, },}Variabel lingkungan (hanya akun default):
LINE_CHANNEL_ACCESS_TOKENLINE_CHANNEL_SECRET
File token/secret:
{ channels: { line: { tokenFile: "/path/to/line-token.txt", secretFile: "/path/to/line-secret.txt", }, },}tokenFile dan secretFile harus menunjuk ke file reguler. Symlink ditolak.
Nilai konfigurasi inline lebih diutamakan daripada file; variabel lingkungan merupakan fallback terakhir untuk akun default.
Beberapa akun:
{ channels: { line: { accounts: { marketing: { channelAccessToken: "...", channelSecret: "...", webhookPath: "/line/marketing", }, }, }, },}Kontrol akses
Pesan langsung secara default menggunakan pemasangan. Pengirim yang tidak dikenal mendapatkan kode pemasangan dan pesan mereka diabaikan hingga disetujui:
openclaw pairing list lineopenclaw pairing approve line <CODE>Daftar izin dan kebijakan:
channels.line.dmPolicy:pairing | allowlist | open | disabled(defaultpairing)channels.line.allowFrom: ID pengguna LINE yang masuk daftar izin untuk DM;dmPolicy: "open"memerlukan["*"]channels.line.groupPolicy:allowlist | open | disabled(defaultallowlist)channels.line.groupAllowFrom: ID pengguna LINE yang masuk daftar izin untuk grup; entri DMallowFromtidak mengizinkan pengirim grup- Penimpaan per grup:
channels.line.groups.<groupId>.allowFrom(sertaenabled,requireMention,systemPrompt,skills). DengangroupPolicy: "allowlist", tetapkangroupAllowFromatauallowFromper grup; daftar izin grup yang kosong memblokir pesan grup meskipun DM terbuka. - Grup akses pengirim statis dapat dirujuk dari
allowFrom,groupAllowFrom, danallowFromper grup denganaccessGroup:<name>; lihat Grup akses. - Catatan runtime: jika
channels.linesama sekali tidak ada, runtime kembali menggunakangroupPolicy="allowlist"untuk pemeriksaan grup (meskipunchannels.defaults.groupPolicyditetapkan).
ID LINE peka huruf besar-kecil. ID yang valid terlihat seperti:
- Pengguna:
U+ 32 karakter heksadesimal - Grup:
C+ 32 karakter heksadesimal - Ruang:
R+ 32 karakter heksadesimal
Perilaku pesan
- Teks dipecah menjadi potongan berukuran 5000 karakter.
- Pemformatan Markdown dihapus; blok kode dan tabel dikonversi menjadi kartu Flex jika memungkinkan.
- Respons streaming dibuffer; LINE menerima potongan lengkap dengan animasi pemuatan selagi agen bekerja.
- Unduhan media dibatasi oleh
channels.line.mediaMaxMb(default 10). - Media masuk disimpan di bawah
~/.openclaw/media/inbound/sebelum diteruskan ke agen, sesuai dengan penyimpanan media bersama yang digunakan oleh plugin channel lainnya.
Data channel (pesan kaya)
Gunakan channelData.line untuk mengirim balasan cepat, lokasi, kartu Flex, atau pesan
templat.
{ text: "Ini dia", channelData: { line: { quickReplies: ["Status", "Bantuan"], location: { title: "Kantor", address: "123 Main St", latitude: 35.681236, longitude: 139.767125, }, flexMessage: { altText: "Kartu status", contents: {/* Muatan Flex */}, }, templateMessage: { type: "confirm", text: "Lanjutkan?", confirmLabel: "Ya", confirmData: "yes", cancelLabel: "Tidak", cancelData: "no", }, }, },}Plugin LINE juga menyediakan perintah /card untuk preset pesan Flex:
/card info "Selamat datang" "Terima kasih telah bergabung!"Dukungan ACP
LINE mendukung pengikatan percakapan ACP (Agent Communication Protocol):
/acp spawn <agent> --bind heremengikat obrolan LINE saat ini ke sesi ACP tanpa membuat utas turunan.- Pengikatan ACP yang dikonfigurasi dan sesi ACP aktif yang terikat ke percakapan berfungsi di LINE seperti pada channel percakapan lainnya.
Lihat Agen ACP untuk detailnya.
Media keluar
Plugin LINE mengirim gambar, video, dan audio melalui alat pesan agen:
- Gambar: dikirim sebagai pesan gambar LINE; gambar pratinjau secara default menggunakan URL media.
- Video: memerlukan gambar pratinjau; tetapkan
channelData.line.previewImageUrlke URL gambar. - Audio: dikirim sebagai pesan audio LINE; durasi defaultnya 60 detik kecuali
channelData.line.durationMsditetapkan.
Jenis media diambil dari channelData.line.mediaKind jika ditetapkan, jika tidak akan disimpulkan
dari opsi LINE lainnya atau sufiks file URL, dengan gambar sebagai fallback.
URL media keluar harus berupa URL HTTPS publik dengan panjang maksimal 2000 karakter. OpenClaw memvalidasi nama host tujuan sebelum menyerahkan URL ke LINE dan menolak tujuan loopback, link-local, serta jaringan privat.
Pengiriman media generik tanpa opsi khusus LINE menggunakan rute gambar.
Pemecahan masalah
- Verifikasi webhook gagal: pastikan URL webhook menggunakan HTTPS dan
channelSecretcocok dengan console LINE. - Tidak ada peristiwa masuk: pastikan path webhook cocok dengan
channels.line.webhookPathdan gateway dapat dijangkau dari LINE. - Kesalahan pengunduhan media: naikkan
channels.line.mediaMaxMbjika media melampaui batas default.
Terkait
- Ikhtisar Channel — semua channel yang didukung
- Pemasangan — autentikasi DM dan alur pemasangan
- Grup — perilaku obrolan grup dan pembatasan penyebutan
- Perutean Channel — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan