Zalo Personal(非公式)
ステータス: 実験的。この連携は、OpenClaw内でネイティブzca-jsを使用して個人のZaloアカウントを自動化します。
警告: これは非公式の連携であり、アカウントの停止やBANにつながる可能性があります。自己責任で使用してください。
バンドル済みプラグイン
Zalo Personalは現在のOpenClawリリースにバンドル済みプラグインとして含まれているため、通常の パッケージ版ビルドでは別途インストールは不要です。 古いビルドまたはZalo Personalを含まないカスタムインストールを使用している場合は、 手動でインストールしてください。- CLIでインストール:
openclaw plugins install @openclaw/zalouser - またはソースチェックアウトから:
openclaw plugins install ./path/to/local/zalouser-plugin - 詳細: Plugins
zca/openzca CLIバイナリは不要です。
クイックスタート(初心者向け)
- Zalo Personalプラグインが利用可能であることを確認します。
- 現在のパッケージ版OpenClawリリースにはすでにバンドルされています。
- 古い/カスタムインストールでは、上記のコマンドで手動追加できます。
- ログインします(QR、Gatewayマシン上で)。
openclaw channels login --channel zalouser- ZaloモバイルアプリでQRコードをスキャンします。
- チャンネルを有効にします:
- Gatewayを再起動します(またはセットアップを完了します)。
- DMアクセスのデフォルトはpairingです。最初の接触時にペアリングコードを承認してください。
これは何か
zca-jsを介して完全にインプロセスで動作します。- ネイティブのイベントリスナーを使用して受信メッセージを受け取ります。
- JS APIを介して直接返信を送信します(テキスト/メディア/リンク)。
- Zalo Bot APIが利用できない「個人アカウント」のユースケース向けに設計されています。
命名
チャンネルIDはzalouserです。これは個人のZaloユーザーアカウント(非公式)を自動化することを明確にするためです。zaloは、将来追加される可能性のある公式Zalo API連携用に予約されています。
IDの確認(ディレクトリ)
ディレクトリCLIを使用して、相手先/グループとそのIDを見つけます:制限事項
- 送信テキストは約2000文字ごとに分割されます(Zaloクライアントの制限)。
- ストリーミングはデフォルトでブロックされます。
アクセス制御(DM)
channels.zalouser.dmPolicyでサポートされる値: pairing | allowlist | open | disabled(デフォルト: pairing)。
channels.zalouser.allowFromにはユーザーIDまたは名前を指定できます。セットアップ時に、名前はプラグインのインプロセス連絡先検索を使ってIDに解決されます。
承認方法:
openclaw pairing list zalouseropenclaw pairing approve zalouser <code>
グループアクセス(任意)
- デフォルト:
channels.zalouser.groupPolicy = "open"(グループを許可)。未設定時のデフォルトを上書きするにはchannels.defaults.groupPolicyを使用します。 - 許可リストに制限するには:
channels.zalouser.groupPolicy = "allowlist"channels.zalouser.groups(キーは安定したグループIDにするべきです。可能な場合、起動時に名前はIDに解決されます)channels.zalouser.groupAllowFrom(許可されたグループ内でどの送信者がボットをトリガーできるかを制御します)
- すべてのグループをブロック:
channels.zalouser.groupPolicy = "disabled"。 - configureウィザードではグループ許可リストを確認できます。
- 起動時に、OpenClawは許可リスト内のグループ/ユーザー名をIDに解決し、その対応関係をログに記録します。
- グループ許可リストのマッチングは、デフォルトではIDのみです。未解決の名前は、
channels.zalouser.dangerouslyAllowNameMatching: trueが有効でない限り、認可では無視されます。 channels.zalouser.dangerouslyAllowNameMatching: trueは、変更可能なグループ名によるマッチングを再有効化するブレークグラス互換モードです。groupAllowFromが未設定の場合、ランタイムはグループ送信者チェックにallowFromをフォールバックとして使用します。- 送信者チェックは、通常のグループメッセージと制御コマンド(例:
/new、/reset)の両方に適用されます。
グループメンションゲーティング
channels.zalouser.groups.<group>.requireMentionは、グループ返信にメンションを必須にするかどうかを制御します。- 解決順序: 正確なグループID/名前 -> 正規化されたグループslug ->
*-> デフォルト(true)。 - これは、許可リスト対象のグループとオープングループモードの両方に適用されます。
- ボットメッセージの引用は、グループ起動における暗黙のメンションとしてカウントされます。
- 認可された制御コマンド(例:
/new)は、メンションゲーティングをバイパスできます。 - メンションが必要なためにグループメッセージがスキップされた場合、OpenClawはそれを保留中のグループ履歴として保存し、次に処理されるグループメッセージに含めます。
- グループ履歴の上限はデフォルトで
messages.groupChat.historyLimit(フォールバックは50)です。アカウント単位で上書きするにはchannels.zalouser.historyLimitを使用できます。
マルチアカウント
アカウントはOpenClawの状態内でzalouserプロファイルにマッピングされます。例:
入力中表示、リアクション、配信確認
- OpenClawは返信を送信する前に入力中イベントを送ります(ベストエフォート)。
- メッセージリアクションアクション
reactは、チャンネルアクションでzalouserに対応しています。- メッセージから特定のリアクション絵文字を削除するには
remove: trueを使用します。 - リアクションの仕様: Reactions
- メッセージから特定のリアクション絵文字を削除するには
- イベントメタデータを含む受信メッセージについては、OpenClawは配信済み + 既読確認を送信します(ベストエフォート)。
トラブルシューティング
ログイン状態が維持されない場合:openclaw channels status --probe- 再ログイン:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
allowFrom/groupAllowFrom/groupsには数値IDまたは正確な友だち名/グループ名を使用してください。
- 古い外部
zcaプロセス前提は削除してください。 - このチャンネルは現在、外部CLIバイナリなしでOpenClaw内で完全に動作します。
関連
- Channels Overview — サポートされているすべてのチャンネル
- Pairing — DM認証とペアリングフロー
- Groups — グループチャットの動作とメンションゲーティング
- Channel Routing — メッセージのセッションルーティング
- Security — アクセスモデルとハードニング