Regional platforms

BARIS

LINE terhubung ke OpenClaw melalui LINE Messaging API. Plugin berjalan sebagai penerima webhook di gateway dan menggunakan channel access token + channel secret Anda untuk autentikasi.

Status: Plugin yang dapat diunduh. Pesan langsung, obrolan grup, media, lokasi, pesan Flex, pesan templat, dan balasan cepat didukung. Reaksi dan utas tidak didukung.

Instal

Instal LINE sebelum mengonfigurasi channel:

openclaw plugins install @openclaw/line

Checkout lokal (saat berjalan dari repo git):

openclaw plugins install ./path/to/local/line-plugin

Penyiapan

  1. Buat akun LINE Developers dan buka Console: https://developers.line.biz/console/
  2. Buat (atau pilih) Provider dan tambahkan channel Messaging API.
  3. Salin Channel access token dan Channel secret dari pengaturan channel.
  4. Aktifkan Use webhook di pengaturan Messaging API.
  5. Atur URL webhook ke endpoint gateway Anda (HTTPS wajib):
https://gateway-host/line/webhook

Gateway merespons verifikasi webhook LINE (GET) dan event masuk (POST). Jika Anda memerlukan path khusus, atur channels.line.webhookPath atau channels.line.accounts.<id>.webhookPath dan perbarui URL sesuai kebutuhan.

Catatan keamanan:

  • Verifikasi tanda tangan LINE bergantung pada body (HMAC atas body mentah), sehingga OpenClaw menerapkan batas body pra-autentikasi yang ketat dan timeout sebelum verifikasi.
  • OpenClaw memproses event webhook dari byte permintaan mentah yang terverifikasi. Nilai req.body yang diubah 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 env (hanya akun default):

  • LINE_CHANNEL_ACCESS_TOKEN
  • LINE_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.

Beberapa akun:

{
  channels: {
    line: {
      accounts: {
        marketing: {
          channelAccessToken: "...",
          channelSecret: "...",
          webhookPath: "/line/marketing",
        },
      },
    },
  },
}

Kontrol akses

Pesan langsung secara default menggunakan pairing. Pengirim yang tidak dikenal akan menerima kode pairing dan pesan mereka diabaikan hingga disetujui.

openclaw pairing list line
openclaw pairing approve line &lt;CODE&gt;

Allowlist dan kebijakan:

  • channels.line.dmPolicy: pairing | allowlist | open | disabled
  • channels.line.allowFrom: ID pengguna LINE yang di-allowlist untuk DM; dmPolicy: "open" memerlukan ["*"]
  • channels.line.groupPolicy: allowlist | open | disabled
  • channels.line.groupAllowFrom: ID pengguna LINE yang di-allowlist untuk grup
  • Override per grup: channels.line.groups.<groupId>.allowFrom
  • Catatan runtime: jika channels.line benar-benar hilang, runtime fallback ke groupPolicy="allowlist" untuk pemeriksaan grup (meskipun channels.defaults.groupPolicy diatur).

ID LINE peka huruf besar-kecil. ID yang valid terlihat seperti:

  • Pengguna: U + 32 karakter hex
  • Grup: C + 32 karakter hex
  • Ruang: R + 32 karakter hex

Perilaku pesan

  • Teks dipecah pada 5000 karakter.
  • Pemformatan Markdown dihapus; blok kode dan tabel dikonversi menjadi kartu Flex jika memungkinkan.
  • Respons streaming dibuffer; LINE menerima chunk lengkap dengan animasi pemuatan saat agent bekerja.
  • Unduhan media dibatasi oleh channels.line.mediaMaxMb (default 10).
  • Media masuk disimpan di bawah ~/.openclaw/media/inbound/ sebelum diteruskan ke agent, sesuai dengan penyimpanan media bersama yang digunakan oleh Plugin channel bawaan lainnya.

Data channel (pesan kaya)

Gunakan channelData.line untuk mengirim balasan cepat, lokasi, kartu Flex, atau pesan templat.

{
  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 juga menyertakan perintah /card untuk preset pesan Flex:

/card info "Welcome" "Thanks for joining!"

Dukungan ACP

LINE mendukung binding percakapan ACP (Agent Communication Protocol):

  • /acp spawn <agent> --bind here mengikat obrolan LINE saat ini ke sesi ACP tanpa membuat thread anak.
  • Binding ACP yang dikonfigurasi dan sesi ACP aktif yang terikat percakapan berfungsi di LINE seperti channel percakapan lainnya.

Lihat agent ACP untuk detail.

Media keluar

Plugin LINE mendukung pengiriman file gambar, video, dan audio melalui alat pesan agent. Media dikirim melalui jalur pengiriman khusus LINE dengan penanganan pratinjau dan pelacakan yang sesuai:

  • Gambar: dikirim sebagai pesan gambar LINE dengan pembuatan pratinjau otomatis.
  • Video: dikirim dengan penanganan pratinjau dan tipe konten eksplisit.
  • Audio: dikirim sebagai pesan audio LINE.

URL media keluar harus berupa URL HTTPS publik. OpenClaw memvalidasi hostname target sebelum menyerahkan URL ke LINE dan menolak target loopback, link-local, dan jaringan privat.

Pengiriman media generik fallback ke rute khusus gambar yang sudah ada saat jalur khusus LINE tidak tersedia.

Pemecahan masalah

  • Verifikasi webhook gagal: pastikan URL webhook menggunakan HTTPS dan channelSecret cocok dengan konsol LINE.
  • Tidak ada event masuk: konfirmasi path webhook cocok dengan channels.line.webhookPath dan gateway dapat dijangkau dari LINE.
  • Kesalahan unduhan media: naikkan channels.line.mediaMaxMb jika media melebihi batas default.

Terkait