Zalo Personal(非公式)
ステータス:実験的。この統合は個人のZaloアカウントをOpenClaw内のネイティブzca-jsで自動化します。
警告: これは非公式の統合であり、アカウントの停止やBANにつながる可能性があります。ご自身の責任でご使用ください。
プラグインが必要
Zalo Personalはプラグインとして提供され、コアインストールには含まれていません。
- CLI経由でインストール:
openclaw plugins install @openclaw/zalouser - ソースチェックアウトから:
openclaw plugins install ./extensions/zalouser - 詳細:プラグイン
外部のzca/openzca CLIバイナリは不要です。
クイックセットアップ(初心者向け)
- プラグインをインストール(上記参照)。
- ログイン(QR、Gatewayマシン上で):
openclaw channels login --channel zalouser- Zaloモバイルアプリでスキャン。
- チャンネルを有効化:
{
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 zalouser
openclaw 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はユーザー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"。 - 設定ウィザードでグループ許可リストのプロンプトが表示されます。
- 起動時にOpenClawは許可リスト内のグループ/ユーザー名をIDに解決し、マッピングをログに記録します。
- グループ許可リストのマッチングはデフォルトで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)。 - これは許可リストのグループとオープングループモードの両方に適用されます。
- 認可されたコントロールコマンド(例:
/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" },
},
},
},
}
タイピング、リアクション、配信確認
- OpenClawは返信の送信前にタイピングイベントを送信します(ベストエフォート)。
- メッセージリアクションアクション
reactはチャンネルアクションでzalouserに対応しています。remove: trueで特定のリアクション絵文字をメッセージから削除します。- リアクションのセマンティクス:リアクション
- イベントメタデータを含む受信メッセージに対して、OpenClawは配信済み+既読確認を送信します(ベストエフォート)。
トラブルシューティング
ログインが維持されない:
openclaw channels status --probe- 再ログイン:
openclaw channels logout --channel zalouser && openclaw channels login --channel zalouser
許可リスト/グループ名が解決されない:
allowFrom/groupAllowFrom/groupsには数値IDを使用するか、正確なフレンド/グループ名を使用してください。
古いCLIベースのセットアップからアップグレードした場合:
- 古い外部
zcaプロセスの前提を削除してください。 - チャンネルは外部CLIバイナリなしでOpenClaw内で完全に実行されます。