Regional platforms
Zalo 個人
ステータス: 実験的。この連携は、OpenClaw 内のネイティブ zca-js を通じて 個人 Zalo アカウントを自動化します。
バンドル Plugin
Zalo Personal は現在の OpenClaw リリースではバンドル Plugin として同梱されているため、通常の パッケージ版ビルドでは別途インストールは不要です。
Zalo Personal を含まない古いビルドまたはカスタムインストールを使用している場合は、 npm パッケージを直接インストールしてください。
- CLI でインストール:
openclaw plugins install @openclaw/zalouser - 固定バージョン:
openclaw plugins install @openclaw/zalouser@2026.5.2 - またはソースチェックアウトから:
openclaw plugins install ./path/to/local/zalouser-plugin - 詳細: Plugin
外部の zca/openzca CLI バイナリは不要です。
簡単セットアップ(初心者向け)
- Zalo Personal Plugin が利用可能であることを確認します。
- 現在のパッケージ版 OpenClaw リリースにはすでに同梱されています。
- 古いインストールやカスタムインストールでは、上記のコマンドで手動追加できます。
- ログインします(QR、Gateway マシン上):
openclaw channels login --channel zalouser- Zalo モバイルアプリで QR コードをスキャンします。
- チャンネルを有効化します。
{ channels: { zalouser: { enabled: true, dmPolicy: "pairing", }, },}- Gateway を再起動します(またはセットアップを完了します)。
- DM アクセスはデフォルトでペアリングです。初回接触時にペアリングコードを承認します。
概要
zca-jsを通じて完全にプロセス内で実行されます。- ネイティブイベントリスナーを使用して受信メッセージを受け取ります。
- JS API(テキスト/メディア/リンク)を通じて返信を直接送信します。
- Zalo Bot API が利用できない「個人アカウント」のユースケース向けに設計されています。
命名
チャンネル ID は zalouser です。これは 個人 Zalo ユーザーアカウント(非公式)を自動化することを明示するためです。将来の公式 Zalo API 連携の可能性に備えて、zalo は予約しています。
ID の検索(ディレクトリ)
ディレクトリ CLI を使用してピア/グループとその ID を検出します。
openclaw directory self --channel zalouseropenclaw directory peers list --channel zalouser --query "name"openclaw directory groups list --channel zalouser --query "work"制限
- 送信テキストは約 2000 文字ごとに分割されます(Zalo クライアントの制限)。
- ストリーミングはデフォルトでブロックされます。
アクセス制御(DM)
channels.zalouser.dmPolicy は pairing | allowlist | open | disabled をサポートします(デフォルト: pairing)。
channels.zalouser.allowFrom には安定した Zalo ユーザー ID を使用してください。静的な送信者アクセスグループ(accessGroup:<name>)も参照できます。対話型セットアップ中に入力した名前は、Plugin のプロセス内連絡先検索を使用して ID に解決できます。
生の名前が設定に残っている場合、起動時の解決は channels.zalouser.dangerouslyAllowNameMatching: true が有効な場合にのみ行われます。このオプトインがない場合、実行時の送信者チェックは ID のみで行われ、生の名前は認可では無視されます。
承認方法:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
グループアクセス(任意)
- デフォルト:
channels.zalouser.groupPolicy = "open"(グループを許可)。未設定時のデフォルトを上書きするにはchannels.defaults.groupPolicyを使用します。 - allowlist に制限するには:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(キーには安定したグループ ID を使用してください。名前はchannels.zalouser.dangerouslyAllowNameMatching: trueが有効な場合にのみ起動時に ID へ解決されます)channels.zalouser.groupAllowFrom(許可されたグループ内のどの送信者が bot を起動できるかを制御します。静的な送信者アクセスグループはaccessGroup:<name>で参照できます)
- すべてのグループをブロック:
channels.zalouser.groupPolicy = "disabled"。 - 設定ウィザードはグループ allowlist の入力を求めることができます。
- 起動時、OpenClaw は allowlist 内のグループ名/ユーザー名を ID に解決し、そのマッピングをログに記録します。ただし、これは
channels.zalouser.dangerouslyAllowNameMatching: trueが有効な場合にのみ行われます。 - グループ allowlist の照合はデフォルトで ID のみです。未解決の名前は、
channels.zalouser.dangerouslyAllowNameMatching: trueが有効でない限り、認証では無視されます。 channels.zalouser.dangerouslyAllowNameMatching: trueは、変更可能な起動時の名前解決と実行時のグループ名照合を再有効化する緊急互換モードです。groupAllowFromが未設定の場合、実行時はグループ送信者チェックでallowFromにフォールバックします。- 送信者チェックは、通常のグループメッセージと制御コマンド(例:
/new、/reset)の両方に適用されます。
例:
{ channels: { zalouser: { groupPolicy: "allowlist", groupAllowFrom: ["1471383327500481391"], groups: { "123456789": { allow: true }, "Work Chat": { allow: true }, }, }, },}グループメンションゲート
channels.zalouser.groups.<group>.requireMentionは、グループ返信にメンションを必須とするかどうかを制御します。- 解決順序: 正確なグループ ID/名前 -> 正規化されたグループスラッグ ->
*-> デフォルト(true)。 - これは allowlist に登録されたグループとオープングループモードの両方に適用されます。
- bot メッセージの引用は、グループ起動の暗黙的なメンションとして扱われます。
- 認可済みの制御コマンド(例:
/new)はメンションゲートをバイパスできます。 - メンションが必須のためにグループメッセージがスキップされた場合、OpenClaw はそれを保留中のグループ履歴として保存し、次に処理されるグループメッセージに含めます。
- グループ履歴の上限はデフォルトで
messages.groupChat.historyLimit(フォールバック50)です。アカウントごとにchannels.zalouser.historyLimitで上書きできます。
例:
{ channels: { zalouser: { groupPolicy: "allowlist", groups: { "*": { allow: true, requireMention: true }, "Work Chat": { allow: true, requireMention: false }, }, }, },}マルチアカウント
アカウントは OpenClaw 状態内の zalouser プロファイルにマッピングされます。例:
{ channels: { zalouser: { enabled: true, defaultAccount: "default", accounts: { work: { enabled: true, profile: "work" }, }, }, },}環境変数
Zalo Personal Plugin は、環境変数からプロファイル選択を読み取ることもできます。
ZALOUSER_PROFILE: チャンネルまたはアカウント設定でprofileが設定されていない場合に使用するプロファイル名。ZCA_PROFILE: レガシーのフォールバックプロファイル名。ZALOUSER_PROFILEが設定されていない場合にのみ使用されます。
プロファイル名は、OpenClaw 状態に保存された Zalo ログイン認証情報を選択します。解決順序は次のとおりです。
- 設定内の明示的な
profile。 ZALOUSER_PROFILE。ZCA_PROFILE。- デフォルト以外のアカウントではアカウント ID、デフォルトアカウントでは
default。
マルチアカウント構成では、1 つの環境変数によって複数のアカウントが同じログイン
セッションを共有しないように、設定で各アカウントに profile を設定することを推奨します。
入力中表示、リアクション、配信確認
- OpenClaw は返信を送信する前に入力中イベントを送信します(ベストエフォート)。
- メッセージリアクションアクション
reactは、チャンネルアクション内のzalouserでサポートされています。- メッセージから特定のリアクション絵文字を削除するには
remove: trueを使用します。 - リアクションのセマンティクス: リアクション
- メッセージから特定のリアクション絵文字を削除するには
- イベントメタデータを含む受信メッセージについて、OpenClaw は配信済み + 既読確認を送信します(ベストエフォート)。
トラブルシューティング
ログインが保持されない場合:
openclaw channels status --probe- 再ログイン:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
allowlist/グループ名が解決されない場合:
allowFrom/groupAllowFromには数値 ID を使用し、groupsには安定したグループ ID を使用します。正確な友達名/グループ名が意図的に必要な場合は、channels.zalouser.dangerouslyAllowNameMatching: trueを有効にしてください。
古い CLI ベースのセットアップからアップグレードした場合:
- 古い外部
zcaプロセスに関する前提を削除します。 - このチャンネルは現在、外部 CLI バイナリなしで OpenClaw 内で完全に実行されます。
関連
- チャンネル概要 — サポートされているすべてのチャンネル
- ペアリング — DM 認証とペアリングフロー
- グループ — グループチャットの動作とメンションゲート
- チャンネルルーティング — メッセージのセッションルーティング
- セキュリティ — アクセスモデルと強化