Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

LINE

ZeroClawはMessaging APIを通じてLINEに対応しており、組み込みのWebhookサーバーでメッセージを受信し、Reply APIで返信します(リプライトークンが失効している場合はPush APIにフォールバックします)。

エージェントと対話できるユーザー

受信側の送信者は、バインドされたエージェントに対して解決されたピアセットに照らして制御されます。これはエージェントが所属する peer_groups 設定から導出されます。照合では先頭の @ を取り除き、チャネルのネイティブな送信者識別子に対して大文字・小文字を区別せずに行われます。のセットはすべてを拒否し、"*" を含むセットはすべてを受け入れます。それ以外の場合は、リストに記載された外部ピア(およびピアエージェント)のみが受け入れられます。これはゲートウェイのペアリング(gateway.require_pairing)とは別物であり、ペアリングはチャットチャネルの送信者ではなく HTTP/WebSocket クライアントを認証します。

line のピアグループでは、channelline に設定し、許可する送信者を external_peers に列挙します(line の場合は LINE ユーザー ID。["*"] は誰でも受け付けます)。必要に応じて、エージェント間ディスパッチ用のピア agentsignore ブロックリスト、output_modalitymirrorvoice、または text)を指定できます。フィールドのリファレンスについては Peer Groups を参照してください。

この設定の場所:

ゲートウェイダッシュボード

Web ダッシュボードで /config/peer_groups を開きます。

zerocode

Config ペインの Peer groups の下。

LINE はピアセットの上に dm_policygroup_policy のレイヤーを重ねます。下記の アクセスポリシー を参照してください。ポリシーが allowlist に設定されている場合、ピアセットがallowlistになります。

前提条件

  1. LINE Developers Consoleアカウント。
  2. LINEのサーバーから到達可能なパブリックHTTPSエンドポイント (ローカル開発ではngrok)。
  3. LINEチャネルサポートが有効になった状態でビルドされたZeroClaw (zeroclaw-channelsクレート上のchannel-line機能)。

1. LINEボットを作成する

  1. LINE Developers Consoleにログインします。
  2. プロバイダーを作成します (または既存のものを使用)。
  3. そのプロバイダーの下に新しいメッセージングAPIチャネルを作成します。
  4. チャネル設定から、2つの値を集めます:
    • チャネルアクセストークン: Messaging API タブ → 長期間有効なトークンを発行します。
    • チャネルシークレット: 基本設定タブ。

2. ZeroClawを設定する

channel_access_token 🔑 secret · default ""

長期有効なチャネルアクセストークン(LINE Developers Console から取得)。Reply API と Push API のフォールバックの両方で使用されます。空の場合は環境変数 LINE_CHANNEL_ACCESS_TOKEN にフォールバックします。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.channel_access_token フィールドを設定してください。

zerocode

Config ペインで、channels.line.<alias>.channel_access_token フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.channel_access_token    # マスクされた入力、暗号化して保存

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__channel_access_token=
channel_secret 🔑 secret · default ""

チャネルシークレット(LINE Developers Consoleから取得)。受信WebhookのX-Line-Signatureヘッダーを検証するために使用します。空の場合はLINE_CHANNEL_SECRET環境変数にフォールバックします。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.channel_secret フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.channel_secret フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.channel_secret    # マスクされた入力、暗号化して保存

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__channel_secret=
dm_policy LineDmPolicy · default "pairing"

DM(1対1チャット)アクセスポリシー。デフォルト: pairing。 - open: 全員に応答する - pairing: 初回接続時に一度だけ /bind <code> ハンドシェイクを要求する - allowlist: allowed_users に列挙されたユーザーIDにのみ応答する

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開いて、channels.line.<alias>.dm_policy フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.dm_policy フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.dm_policy <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__dm_policy=
excluded_tools string[] · default []

このチャネルのツール仕様から除外されるツールです。設定すると、これらのツールはこのチャネル経由で応答する際にモデルに公開されません。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.excluded_tools フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.excluded_tools フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.excluded_tools <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__excluded_tools=
group_policy LineGroupPolicy · default "mention"

グループ/複数人チャットのポリシー。デフォルト: mention。- open: すべてのメッセージに応答する - mention: @メンションされたときのみ応答する - disabled: すべてのグループメッセージを無視する

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.group_policy フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.group_policy フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.group_policy <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__group_policy=
proxy_url string? · default null

チャンネルごとのプロキシURL(http、https、socks5、socks5h)。このチャンネルに対してのみ、グローバルな [proxy] 設定を上書きします。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.proxy_url フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.proxy_url フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.proxy_url <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__proxy_url=
sender_name string? · default null

LINEのチャット吹き出しで送信者として表示される表示名。未設定または空の場合、デフォルトは "AI" です。

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開き、channels.line.<alias>.sender_name フィールドを設定します。

zerocode

Config ペインで、channels.line.<alias>.sender_name フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.sender_name <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__sender_name=
webhook_port integer · default 8443

埋め込み Webhook サーバーがリッスンする TCP ポート。デフォルト: 8443

任意のサーフェスに設定する場合:

ゲートウェイダッシュボード

/config/channels/line を開いて、channels.line.<alias>.webhook_port フィールドを設定してください。

zerocode

Config ペインで、channels.line.<alias>.webhook_port フィールドを設定します。

zeroclaw config

zeroclaw config set channels.line.<alias>.webhook_port <value>

環境変数

オーバーライドをエクスポートします(POSIXシェル用。~/.bashrc~/.zshrc.env、またはDockerfileに記述します)。<alias>を実際のエイリアスに置き換えてください。

export ZEROCLAW_channels__line__<alias>__webhook_port=

[channels.line.<alias>] の下で LINE チャネルを設定し、少なくとも channel_access_tokenchannel_secret を指定します。dm_policy / group_policy のユーザー向けの動作については、以下の §6 で説明します。

設定ファイルの代わりに環境変数を使用する

認証情報を設定ファイルに保存したくない場合は、トークンフィールドを省略し、代わりに環境変数としてエクスポートしてください:

sh

export LINE_CHANNEL_ACCESS_TOKEN="your-channel-access-token"
export LINE_CHANNEL_SECRET="your-channel-secret"

環境変数は空の設定フィールドより優先されます。


3. Webhookエンドポイントを公開する

LINEはWebhook URLにPOSTしてメッセージを配信します。埋め込みサーバーは設定されたwebhook_portでリッスンします。

ローカル開発の場合(ngrok):

sh

ngrok http 8443

ngrokが提供するhttps:// URL(例:https://abc123.ngrok.io)をコピーします。

本番環境の場合: HTTPSリバースプロキシ(nginx、Caddy等)の後ろでポート8443(または設定したポート)を公開するか、TLS証明書を備えたサーバーに直接デプロイしてください。


4. LINE Developers ConsoleでWebhookを登録する

  1. チャネル → Messaging APIタブ → Webhook設定に移動します。
  2. Webhook URLhttps://your-domain.com/line/webhookに設定します。
  3. Webhookを使用するをオンに切り替えます。
  4. Verify をクリックすると、LINE がテストリクエストを送信します。検証を成功させるには、ZeroClaw が実行されている必要があります。

5. ZeroClawを開始する

sh

zeroclaw daemon

スタートアップログシグナル:

LINE: webhook server listening on http://0.0.0.0:8443/line/webhook

6. アクセスポリシー

DM(1対1チャット): dm_policy

動作
pairing(デフォルト)ボットはユーザーが/bind <code>を送信するまですべてのDMを無視します。ペアリングコードはZeroClawログのスタートアップ時に表示されます。
openボットはすべてのDMに即座に応答します。
allowlistボットは、エージェントのピアセットに含まれる LINE ユーザー ID のみに応答します(エージェントと会話できる相手を参照)。

ペアリングワークフロー:

  1. ZeroClawはスタートアップ時にログにペアリングコードを出力します。
  2. ユーザーはボットとのLINE DMを開き、/bind <code>を送信します。
  3. ZeroClawはペアリングを確認し、後続のDMが受け入れられます。

グループ/複数人チャット: group_policy

動作
mention(デフォルト)ボットは明示的に@メンションされた場合にのみ応答します。
openボットはグループ内のすべてのメッセージに応答します。
disabledボットはグループメッセージを完全に無視します。

7. オーディオ/音声メッセージトランスクリプション(オプション)

文字起こしが有効な場合(グローバルな [transcription] 設定経由、Config reference を参照)、LINE の audio メッセージイベントは LINE Content API から自動的にダウンロードされ、モデルに渡される前に文字起こしされます。

最大受け入れオーディオサイズは25 MBです。より大きいファイルはログ警告とともに黙って スキップされます。


8. トラブルシューティング

症状考えられる原因対応
LINE検証が失敗するZeroClawが実行されていない、またはポートに到達できないプロセスが起動し、ポートがインターネットからアクセス可能であることを確認します
ボットはDMに返信しませんdm_policy = pairing でユーザーが /bind を実行していないユーザーは先に /bind <code> を送信するか、dm_policy = open に切り替える必要があります
ボットはグループで返信しませんgroup_policy = mention でメッセージに @mention がないボットに @mention するか、group_policy = open に切り替えます
返信はプッシュメッセージとして到着します返信トークンの有効期限が切れた(約30秒のウィンドウ)フォールバック動作は想定通りであり、対応は不要です
音声メッセージは無視されます[transcription] が設定されていません[transcription] ブロックを enabled = true で追加します

ログキーワード

条件ログメッセージ
起動時に正常LINE: webhook server listening on http://0.0.0.0:<port>/line/webhook
署名が拒否されましたLINE: invalid X-Line-Signature
認可されていないDMLINE: DM from <userId> rejected by policy
ペアリングが必要ですLINE: unpaired user <userId>; ignoring until /bind
音声は無視されました(トランスクリプション未設定)LINE: audio message ignored (transcription not configured)
音声トランスクリプションに失敗しましたLINE: transcription failed for <messageId>:

関連項目も参照してください