OpenClawSkills
GitHub
チャンネル • 5分で読める

Zalo

Zalo bot: support status, capabilities, and configuration.

ステータス:実験的。現在はDM(1:1)のみ対応。グループチャット対応はZaloドキュメントで「近日公開」となっています。

Tutorial.step

プラグインのインストールが必要

Zaloはプラグインとして提供されており、コアインストールには含まれていません。

- CLIインストール:openclaw plugins install @openclaw/zalo

- またはオンボーディングでZaloを選択してインストールプロンプトを確認

- Details: ''/plugin''

Tutorial.step

初心者向けクイック設定

1. Zaloプラグインをインストール:

- ソースからチェックアウト:openclaw plugins install ./extensions/zalo

- npmから(公開済みの場合):openclaw plugins install @openclaw/zalo

- またはオンボーディングでZaloを選択してインストールプロンプトを確認

2. トークンを設定:

- Env: ZALO_BOT_TOKEN=...

- または設定:channels.zalo.botToken: "..."。

3. Gatewayを再起動(またはオンボーディングを完了)。

4. DMはデフォルトでペアリング:最初の連絡でペアリングコードを受け取り、承認後にメッセージを処理。

Minimum configuration:

Json5
{
  channels: {
    zalo: {
      enabled: true,
      botToken: "12345689:abc-xyz",
      dmPolicy: "pairing",
    },
  },
}
Tutorial.step

これは何ですか

Zaloはベトナムで人気のあるメッセージングアプリ。Bot APIによりGatewayで1:1ボットを実行できます。サポート/通知などのシナリオに適しています(Zaloへの決定論的ルーティングが必要)。

- Gatewayが管理するZalo Bot APIチャンネル。

- 決定論的ルーティング:返信は常にZaloに戻り、モデルはチャンネルを選択しません。

- DMはエージェントのメインセッションを共有。

- グループチャットはまだ未対応(Zaloドキュメントでは「近日公開」)。

Tutorial.step

設定(クイックパス)

#

Tutorial.step

1)ボットトークンを作成(Zalo Bot Platform)

1. https://bot.zaloplatforms.comを開いてログイン。

2. 新しいボットを作成して設定を完了。

3. ボットトークンをコピー(形式:12345689:abc-xyz)。

#

Tutorial.step

2)トークンを設定(環境変数または設定)

Example:

Json5
{
  channels: {
    zalo: {
      enabled: true,
      botToken: "12345689:abc-xyz",
      dmPolicy: "pairing",
    },
  },
}

環境変数方式:ZALO_BOT_TOKEN=...(デフォルトアカウントのみ適用)。

マルチアカウント:channels.zalo.accountsを使用して各アカウントのトークンを設定(オプションのname)。

3. Gatewayを再起動。トークンが解決可能になると(環境変数または設定)Zaloが起動。

4. DMはデフォルトでペアリング:最初の連絡時にペアリングコードを承認。

Tutorial.step

動作仕組み(動作)

- 受信メッセージは汎用チャンネルエンベロープに正規化(メディアプレースホルダー付き)。

- 返信は常に同じZaloチャットに戻ります。

- デフォルトはロングポーリング。channels.zalo.webhookUrl経由でwebhookモードを有効化可能。

Tutorial.step

Limitations

- 送信テキストは2000文字ごとに分割(Zalo API制限)。

- メディアダウンロード/アップロード上限:channels.zalo.mediaMaxMb(デフォルト5MB)。

- 2000文字制限によりストリーミングの意味が薄いため、デフォルトでストリーミングを無効化。

Tutorial.step

アクセス制御(DM)

#

Tutorial.step

DMアクセス

- デフォルト:channels.zalo.dmPolicy = "pairing"。不明な送信者はペアリングコードを受け取り、承認前にメッセージは無視(ペアリングコードは1時間で期限切れ)。

- Approve:

- openclaw pairing list zalo

- openclaw pairing approve zalo <CODE>

- ペアリングはデフォルトのトークン交換。詳細:''/start/pairing''

- channels.zalo.allowFromは数値ユーザーIDのみ受け付け(ユーザー名検索なし)。

Tutorial.step

ロングポーリング vs webhook

- デフォルト:ロングポーリング(公開URL不要)。

- Webhookモード:channels.zalo.webhookUrlとchannels.zalo.webhookSecretを設定。

- シークレットは8–256文字である必要があります。

- Webhook URLはHTTPSである必要があります。

- ZaloはX-Bot-Api-Secret-Tokenヘッダーで検証。

- Gatewayはchannels.zalo.webhookPathでwebhookを処理(デフォルトはwebhook URLのパス)。

注意: Zalo APIドキュメントによると、getUpdates(ポーリング)とwebhookは相互排他的。

Tutorial.step

対応メッセージタイプ

- テキスト:完全対応(2000文字分割)。

- 画像:受信画像のダウンロード/処理に対応。送信はsendPhoto経由。

- ステッカー:ログに記録されますが、完全には処理されません(通常、エージェント返信をトリガーしません)。

- 非対応タイプ:ログのみ記録(例:保護されたユーザーからのメッセージ)。

Tutorial.step

Capabilities

| Feature | Status |

| -- |

| DM | ✅ 対応済み |

| グループチャット | ❌ Zaloドキュメント says coming soon |

| メディア(画像) | ✅ 対応済み |

| リアクション | ❌ 未対応 |

| スレッド | ❌ 未対応 |

| Polls | ❌ Not supported |

| ネイティブコマンド | ❌ 未対応 |

| ストリーミング | ⚠️ デフォルトで無効(2000文字制限) |

Tutorial.step

配信ターゲット(CLI/cron)

- ターゲットはチャットIDを使用。

- Example: openclaw message send --channel zalo --target 123456789 --message "hi".

Tutorial.step

トラブルシューティング

ボットが応答しない:

- openclaw channels status --probeでトークンが有効か確認

- 送信者が承認済みか確認(ペアリングまたはallowFrom)

- ログを確認:openclaw logs --follow

Webhookがイベントを受信しない:

- Webhook URLがHTTPSであることを確認

- シークレットの長さが8–256文字であることを確認

- GatewayのHTTPエンドポイントが設定されたパスで到達可能であることを確認

- getUpdatesポーリングが実行されていないことを確認(相互排他的)

Tutorial.step

設定リファレンス(Zalo)

完全な設定:''/gateway/configuration''

プロバイダーオプション:

- channels.zalo.enabled

- channels.zalo.botToken

- channels.zalo.tokenFile(ファイルから読み取り)

- channels.zalo.dmPolicy:pairing | allowlist | open | disabled(デフォルトpairing)

- channels.zalo.allowFrom:DM許可リスト(ユーザーID)。openには"*"が必要。ウィザードは数値IDを要求

- channels.zalo.mediaMaxMb:受信/送信メディア上限(MB、デフォルト5)

- channels.zalo.webhookUrl:webhookモードを有効化(HTTPSが必要)

- channels.zalo.webhookSecret:webhookシークレット(8–256文字)

- channels.zalo.webhookPath:Gatewayのwebhookパス

- channels.zalo.proxy:APIリクエストのプロキシURL

マルチアカウントオプション:

- channels.zalo.accounts.<id>.botToken

- channels.zalo.accounts.<id>.tokenFile

- channels.zalo.accounts.<id>.name

- channels.zalo.accounts.<id>.enabled

- channels.zalo.accounts.<id>.dmPolicy

- channels.zalo.accounts.<id>.allowFrom

- channels.zalo.accounts.<id>.webhookUrl

- channels.zalo.accounts.<id>.webhookSecret

- channels.zalo.accounts.<id>.webhookPath

- channels.zalo.accounts.<id>.proxy