LINE
LINE Messaging API プラグイン:導入、設定、使い方。
LINE は LINE Messaging API を介して OpenClaw と統合されます。このプラグインは gateway 上で webhook レシーバーとして動作し、channel access token と channel secret を使用して認証します。
ステータス:プラグイン経由でサポート。DM、グループ、メディア、位置情報、Flex メッセージ、テンプレートメッセージ、クイックリプライをサポート。リアクションとスレッドはサポートしていません。
プラグインのインストールが必要
LINE プラグインをインストールします:
openclaw plugins install @openclaw/line
ローカルインストール(git リポジトリから実行する場合):
openclaw plugins install ./extensions/line
セットアップ
1. LINE Developers に登録し、Console を開きます:
https://developers.line.biz/console/
2. Provider を作成(または選択)し、Messaging API チャンネルを追加します。
3. チャンネル設定から Channel access token と Channel secret をコピーします。
4. Messaging API 設定で Use webhook を有効にします。
5. Webhook URL を gateway アドレスに設定します(HTTPS が必要):
https://gateway-host/line/webhook
gateway は LINE の webhook 検証(GET)とインバウンドイベント(POST)に応答します。
カスタムパスが必要な場合は、''channels.line.webhookPath'' または ''channels.line.accounts.'' を設定し、URL をそれに合わせて更新します。
Configuration
Minimal configuration:
{
channels: {
line: {
enabled: true,
channelAccessToken: "LINE_CHANNEL_ACCESS_TOKEN",
channelSecret: "LINE_CHANNEL_SECRET",
dmPolicy: "pairing",
},
},
}環境変数(デフォルトアカウントのみ):
- LINE_CHANNEL_ACCESS_TOKEN
- LINE_CHANNEL_SECRET
ファイルから token/secret を読み取る:
{
channels: {
line: {
tokenFile: "/path/to/line-token.txt",
secretFile: "/path/to/line-secret.txt",
},
},
}複数アカウント:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing",
},
},
},
},
}アクセス制御
LINE DM はデフォルトでペアリングを使用します。不明な送信者はペアリングコードを受け取り、承認されるまでメッセージは処理されません。
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.''
LINE の ID は大文字と小文字を区別します。有効な ID 形式は通常次のとおりです:
- ユーザー:U + 16 進数 32 桁
- グループ:C + 16 進数 32 桁
- Room: R + 32 hex digits
メッセージの動作
- テキストは 5000 文字で分割されます。
- Markdown 形式は削除されます。コードブロックとテーブルは可能な場合に Flex カードに変換されます。
- ストリーミング返信はバッファリングされます。エージェントが動作している間、LINE はロード中アニメーション付きの完全な分割テキストを受け取ります。
- メディアダウンロード制限は channels.line.mediaMaxMb で制御されます(デフォルト 10MB)。
チャンネルデータ(リッチメッセージ)
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 と一致しており、gateway が LINE から到達可能であることを確認してください。
- メディアダウンロードエラー: メディアがデフォルト制限を超えている場合、channels.line.mediaMaxMb を増やしてください。