
【最新版】LINEでOpenClawを使う方法(Messaging API連携)
2026年3月18日
LINE
LINE(プラグイン)
LINE は LINE Messaging API を介して OpenClaw に接続します。このプラグインは Gateway 上で Webhook 受信者として動作し、認証にはチャネルアクセストークン と チャネルシークレット を使用します。
ステータス:プラグイン経由でサポート。ダイレクトメッセージ、グループチャット、メディア、位置情報、Flex メッセージ、テンプレートメッセージ、クイックリプライに対応しています。リアクションとスレッドはサポートされません。
プラグインが必要です
LINE プラグインをインストールします:
openclaw plugins install @openclaw/line
(git リポジトリから実行している場合の)ローカルチェックアウト:
openclaw plugins install ./extensions/line
セットアップ
- LINE Developers アカウントを作成し、Console を開きます:https://developers.line.biz/console/
- Provider を作成(または選択)し、Messaging API チャネルを追加します。
- チャネル設定から Channel access token と Channel secret をコピーします。
- Messaging API 設定で Use webhook を有効化します。
- Webhook URL を Gateway のエンドポイントに設定します(HTTPS 必須):
https://gateway-host/line/webhook
Gateway は LINE の Webhook 検証(GET)と受信イベント(POST)に応答します。 カスタムパスが必要な場合は channels.line.webhookPath またはchannels.line.accounts.<id>.webhookPath を設定し、それに合わせて URL を更新してください。
セキュリティ注意:
- LINE の署名検証は body 依存(生の body に対する HMAC)です。そのため OpenClaw は、検証前に厳格な pre-auth の body 上限とタイムアウトを適用します。
設定(Configure)
最小の config:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}環境変数(デフォルトアカウントのみ):
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",
},
},
},
},
}アクセス制御
ダイレクトメッセージのデフォルトは pairing です。未知の送信者はペアリングコードを受け取り、その後承認されるまでメッセージは無視されます。
openclaw pairing list line openclaw pairing approve line <CODE>
Allowlist とポリシー:
channels.line.dmPolicy:pairing | allowlist | open | disabledchannels.line.allowFrom: DM を許可する LINE のユーザー ID(allowlist)channels.line.groupPolicy:allowlist | open | disabledchannels.line.groupAllowFrom: グループで許可する LINE のユーザー ID(allowlist)- グループ単位の上書き:
channels.line.groups.<groupId>.allowFrom - ランタイム注意:
channels.lineが完全に欠けている場合、ランタイムはグループチェックのためにgroupPolicy="allowlist"にフォールバックします(channels.defaults.groupPolicyが設定されていても同様)。
LINE ID は大文字小文字を区別します。有効な ID 例:
- ユーザー:
U+ 32 桁の 16 進数 - グループ:
C+ 32 桁の 16 進数 - ルーム:
R+ 32 桁の 16 進数
メッセージの挙動
- テキストは 5000 文字で分割されます。
- Markdown の書式は取り除かれます。可能な場合、コードブロックとテーブルは Flex カードに変換されます。
- ストリーミング応答はバッファされます。エージェントが動作している間、LINE はローディングアニメーション付きで完全なチャンクを受け取ります。
- メディアのダウンロードは
channels.line.mediaMaxMb(デフォルト 10)で制限されます。
チャネルデータ(リッチメッセージ)
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",
},
},
},
}LINE プラグインには Flex メッセージのプリセット用 /card コマンドも同梱されています:
/card info "Welcome" "Thanks for joining!"
トラブルシューティング
- Webhook 検証が失敗する: Webhook URL が HTTPS であること、そして
channelSecretが LINE console と一致していることを確認してください。 - 受信イベントが来ない: Webhook パスが
channels.line.webhookPathと一致していること、そして LINE から Gateway に到達できることを確認してください。 - メディアのダウンロードエラー: メディアがデフォルト上限を超える場合は
channels.line.mediaMaxMbを増やしてください。
参考
関連記事

AIエージェントのメモリスタックとは?2026年に重要度が上がる理由をやさしく解説
2026年4月8日
OpenClaw vs Hermes vs Claude、創業者はどれを選ぶべき?2026年版の実務比較
2026年4月8日