LINE(プラグイン)
LINEは、LINE Messaging API経由でOpenClawに接続します。このプラグインは、Gateway上でウェブフック 受信機として動作し、チャネルアクセストークン + チャネルシークレットを使用して 認証を行います。
ステータス: プラグイン経由でサポート。ダイレクトメッセージ、グループチャット、メディア、位置情報、Flex メッセージ、テンプレートメッセージ、クイックリプライがサポートされています。リアクションとスレッド はサポートされていません。
プラグインが必要
LINEプラグインをインストールします:
openclaw plugins install @openclaw/line
ローカルチェックアウト(gitリポジトリから実行する場合):
openclaw plugins install ./extensions/line
セットアップ
- LINE Developersアカウントを作成し、コンソールを開きます: https://developers.line.biz/console/
- プロバイダーを作成(または選択)し、Messaging APIチャネルを追加します。
- チャネル設定からチャネルアクセストークンとチャネルシークレットをコピーします。
- Messaging API設定でWebhookを利用するを有効にします。
- ウェブフックURLをゲートウェイエンドポイントに設定します(HTTPS必須):
https://gateway-host/line/webhook
Gatewayは、LINEのウェブフック検証(GET)とインバウンドイベント(POST)に応答します。 カスタムパスが必要な場合は、channels.line.webhookPathまたは channels.line.accounts.<id>.webhookPathを設定し、それに応じてURLを更新してください。
設定
最小限の設定:
{
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"
}
}
}
複数アカウント:
{
channels: {
line: {
accounts: {
marketing: {
channelAccessToken: "...",
channelSecret: "...",
webhookPath: "/line/marketing"
}
}
}
}
}
アクセス制御
ダイレクトメッセージはデフォルトでペアリングになります。未知の送信者はペアリングコードを受け取り、 承認されるまでメッセージは無視されます。
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
LINE IDは大文字小文字を区別します。有効なIDは次のようになります:
- ユーザー: U + 32桁の16進数文字
- グループ: C + 32桁の16進数文字
- ルーム: R + 32桁の16進数文字
メッセージの動作
- テキストは5000文字でチャンク分割されます。
- Markdownフォーマットは削除されます。コードブロックとテーブルは可能な場合、Flex カードに変換されます。
- ストリーミングレスポンスはバッファリングされます。エージェントが動作している間、LINEは ローディングアニメーションとともに完全なチャンクを受信します。
- メディアダウンロードはchannels.line.mediaMaxMb(デフォルト10)で制限されます。
チャネルデータ(リッチメッセージ)
channelData.lineを使用して、クイックリプライ、位置情報、Flexカード、またはテンプレート メッセージを送信します。
{
text: "どうぞ",
channelData: {
line: {
quickReplies: ["ステータス", "ヘルプ"],
location: {
title: "オフィス",
address: "東京都千代田区丸の内1-2-3",
latitude: 35.681236,
longitude: 139.767125
},
flexMessage: {
altText: "ステータスカード",
contents: { /* Flexペイロード */ }
},
templateMessage: {
type: "confirm",
text: "続行しますか?",
confirmLabel: "はい",
confirmData: "yes",
cancelLabel: "いいえ",
cancelData: "no"
}
}
}
}
LINEプラグインには、Flexメッセージプリセット用の/cardコマンドも含まれています:
/card info "ようこそ" "ご参加ありがとうございます!"
トラブルシューティング
- ウェブフック検証が失敗する: ウェブフックURLがHTTPSであり、 channelSecretがLINEコンソールと一致していることを確認してください。
- インバウンドイベントがない: ウェブフックパスがchannels.line.webhookPathと一致し、 GatewayがLINEから到達可能であることを確認してください。
- メディアダウンロードエラー: メディアがデフォルト制限を超える場合は、 channels.line.mediaMaxMbを増やしてください。