コンテンツにスキップ

LINE (plugin) のセットアップガイド

ユーザーとのコミュニケーションを自動化したい時、LINEは欠かせないプラットフォームです。しかし、Messaging APIの設定やセキュリティの確保、リッチメッセージのハンドリングなど、いざ実装しようとすると意外と手間がかかるものですよね。

OpenClawを使えば、これらの複雑な処理をスマートに統合できます。LINEをOpenClawに接続して、効率的なチャットボット運用を始めましょう。

LINEは、LINE Messaging APIを介してOpenClawに接続します。このプラグインは Gateway 上で Webhook レシーバーとして動作し、認証には Channel access token と Channel secret を使用します。

ステータス:プラグインによりサポートされています。ダイレクトメッセージ、グループチャット、メディア、位置情報、Flex messages、テンプレートメッセージ、クイックリプライをサポートしています。リアクションとスレッドはサポートされていません。

LINEプラグインをインストールします:

Terminal window
openclaw plugins install @openclaw/line

ローカルチェックアウト(gitリポジトリから実行する場合):

Terminal window
openclaw plugins install ./path/to/local/line-plugin
  1. LINE Developersアカウントを作成し、コンソールを開きます: https://developers.line.biz/console/
  2. プロバイダーを作成(または選択)し、Messaging API チャネルを追加します。
  3. チャネル設定から Channel access token と Channel secret をコピーします。
  4. Messaging API設定で Webhookの利用 を有効にします。
  5. Webhook URLを Gateway のエンドポイントに設定します(HTTPSが必須です):
https://gateway-host/line/webhook

Gateway はLINEの Webhook 検証(GET)およびインバウンドイベント(POST)に応答します。カスタムパスが必要な場合は、channels.line.webhookPath または channels.line.accounts.<id>.webhookPath を設定し、それに応じてURLを更新してください。

セキュリティに関する注意点:

  • LINEの署名検証はボディに依存する(生のボディに対するHMAC)ため、OpenClawは検証前に厳格な事前認証ボディ制限とタイムアウトを適用します。
  • OpenClawは、検証済みの生のリクエストバイトから Webhook イベントを処理します。署名の整合性を守るため、アップストリームのミドルウェアによって変換された req.body の値は無視されます。

最小限の設定:

{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}

環境変数(デフォルトアカウントのみ):

  • LINE_CHANNEL_ACCESS_TOKEN
  • LINE_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",
},
},
},
},
}

ダイレクトメッセージはデフォルトで pairing に設定されています。不明な送信者にはペアリングコードが送信され、承認されるまでそのメッセージは無視されます。

Terminal window
openclaw pairing list line
openclaw pairing approve line <CODE>

許可リストとポリシー:

  • channels.line.dmPolicy: pairing | allowlist | open | disabled
  • channels.line.allowFrom: DMを許可するLINEユーザーIDのリスト
  • channels.line.groupPolicy: allowlist | open | disabled
  • channels.line.groupAllowFrom: グループを許可するLINEユーザーIDのリスト
  • グループごとのオーバーライド: channels.line.groups.<groupId>.allowFrom
  • 実行時の注意:channels.line の設定が完全に欠落している場合、グループチェックの実行時は(channels.defaults.groupPolicy が設定されていても)groupPolicy="allowlist" にフォールバックします。

LINE IDはケースセンシティブ(大文字小文字を区別)です。有効なIDの形式は以下の通りです:

  • ユーザー: U + 32文字の16進数
  • グループ: C + 32文字の16進数
  • トークルーム: R + 32文字の16進数
  • テキストは5000文字ごとに分割されます。
  • Markdown 形式は削除されます。コードブロックとテーブルは、可能な場合は Flex cards に変換されます。
  • ストリーミングレスポンスはバッファリングされます。LINE側では、エージェントの動作中にローディングアニメーションが表示され、完了後にフルチャックを受信します。
  • メディアのダウンロードは channels.line.mediaMaxMb(デフォルトは10)によって制限されます。

Channel data(リッチメッセージ)

Section titled “Channel data(リッチメッセージ)”

クイックリプライ、位置情報、Flex cards、またはテンプレートメッセージを送信するには、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",
},
},
},
}

LINEプラグインには、Flex message のプリセット用の /card コマンドも用意されています:

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

LINEは ACP (Agent Communication Protocol) の会話バインディングをサポートしています。

  • /acp spawn <agent> --bind here を実行すると、子スレッドを作成せずに、現在のLINEチャットを ACP セッションにバインドします。
  • 設定済みの ACP バインディングやアクティブな会話バインド ACP セッションは、他の会話チャネルと同様にLINE上でも動作します。

詳細は ACP agents を参照してください。

LINEプラグインは、エージェントのメッセージツールを介した画像、動画、音声ファイルの送信をサポートしています。メディアは、適切なプレビューとトラッキング処理を伴うLINE専用の配信パスで送信されます。

  • 画像: 自動プレビュー生成機能を備えたLINE画像メッセージとして送信されます。
  • 動画: 明示的なプレビューとコンテンツタイプ処理を伴って送信されます。
  • 音声: LINE音声メッセージとして送信されます。

LINE専用のパスが利用できない場合、一般的なメディア送信は既存の画像専用ルートにフォールバックします。

  • Webhookの検証に失敗する: Webhook URLが HTTPS であること、および channelSecret が LINE Developers コンソールのものと一致していることを確認してください。
  • インバウンドイベントが発生しない: Webhook パスが channels.line.webhookPath と一致していること、および LINE から Gateway に到達可能であることを確認してください。
  • メディアのダウンロードエラー: メディアがデフォルトの制限を超える場合は、channels.line.mediaMaxMb の値を引き上げてください。
  • Channels Overview — サポートされているすべてのチャネル
  • Pairing — DM認証とペアリングのフロー
  • Groups — グループチャットの動作とメンションによる制御
  • Channel Routing — メッセージのセッションルーティング
  • Security — アクセスモデルとセキュリティ強化

設定でお困りですか? AI Setup Assistant がお手伝いします。

次のステップ:

OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。