Asosiy tarkibga o'tish

Zalo (Bot API)

Status: experimental. Direct messages only; groups coming soon per Zalo docs.

Plagin talab qilinadi

Zalo plagin sifatida taqdim etiladi va asosiy o‘rnatish paketiga kiritilmagan.
  • CLI orqali o‘rnating: openclaw plugins install @openclaw/zalo
  • Yoki boshlang‘ich sozlash vaqtida Zalo ni tanlang va o‘rnatishni tasdiqlang
  • Tafsilotlar: Plugins

Tezkor sozlash (boshlovchilar uchun)

  1. Zalo plaginini o‘rnating:
    • Manba kodidan: openclaw plugins install ./extensions/zalo
    • npm orqali (agar chop etilgan bo‘lsa): openclaw plugins install @openclaw/zalo
    • Yoki boshlang‘ich sozlashda Zalo ni tanlang va o‘rnatishni tasdiqlang
  2. Tokenni sozlang:
    • Muhit o‘zgaruvchisi: ZALO_BOT_TOKEN=...
    • Yoki konfiguratsiyada: channels.zalo.botToken: "...".
  3. Gateway’ni qayta ishga tushiring (yoki boshlang‘ich sozlashni yakunlang).
  4. Shaxsiy xabarlarga kirish sukut bo‘yicha pairing orqali amalga oshiriladi; birinchi aloqa vaqtida pairing kodini tasdiqlang.
Minimal konfiguratsiya:
{
  channels: {
    zalo: {
      enabled: true,
      botToken: "12345689:abc-xyz",
      dmPolicy: "pairing",
    },
  },
}

Bu nima?

Zalo is a Vietnam-focused messaging app; its Bot API lets the Gateway run a bot for 1:1 conversations. It is a good fit for support or notifications where you want deterministic routing back to Zalo.
  • Gateway tomonidan boshqariladigan Zalo Bot API kanali.
  • Deterministik marshrutlash: javoblar Zalo’ga qaytadi; model kanallarni tanlamaydi.
  • Shaxsiy xabarlar agentning asosiy sessiyasi bilan bo‘lishiladi.
  • Guruhlar hozircha qo‘llab-quvvatlanmaydi (Zalo hujjatlarida “tez orada” deb ko‘rsatilgan).

Sozlash (tezkor usul)

1. Bot tokenini yarating (Zalo Bot Platform)

  1. https://bot.zaloplatforms.com sahifasiga o‘ting va tizimga kiring.
  2. Yangi bot yarating va sozlamalarini moslang.
  3. Bot tokenini nusxalang (format: 12345689:abc-xyz).

2) Tokenni sozlang (muhit yoki konfiguratsiya orqali)

Misol:
{
  channels: {
    zalo: {
      enabled: true,
      botToken: "12345689:abc-xyz",
      dmPolicy: "pairing",
    },
  },
}
Muhit o‘zgaruvchisi varianti: ZALO_BOT_TOKEN=... (faqat sukut bo‘yicha akkaunt uchun ishlaydi). Ko‘p akkauntli qo‘llab-quvvatlash: har bir akkaunt uchun token va ixtiyoriy name bilan channels.zalo.accounts dan foydalaning.
  1. Restart the gateway. Zalo starts when a token is resolved (env or config).
  2. DM access defaults to pairing. Approve the code when the bot is first contacted.

Qanday ishlaydi (xulq-atvor)

  • Kiruvchi xabarlar media o‘rinbosarlari bilan umumiy kanal formatiga normallashtiriladi.
  • Javoblar har doim o‘sha Zalo chatiga qaytariladi.
  • Sukut bo‘yicha long-polling; channels.zalo.webhookUrl bilan webhook rejimi mavjud.

Cheklovlar

  • Chiquvchi matn 2000 belgiga bo‘linadi (Zalo API cheklovi).
  • Media yuklab olish/yuklash channels.zalo.mediaMaxMb bilan cheklangan (sukut bo‘yicha 5 MB).
  • 2000 belgi cheklovi sababli streaming sukut bo‘yicha bloklangan.

Kirishni boshqarish (DM)

Shaxsiy xabarlarga kirish

  • Default: channels.zalo.dmPolicy = "pairing". Unknown senders receive a pairing code; messages are ignored until approved (codes expire after 1 hour).
  • Tasdiqlash:
    • openclaw pairing list zalo
    • openclaw pairing approve zalo <CODE>
  • Pairing is the default token exchange. Details: Pairing
  • channels.zalo.allowFrom raqamli foydalanuvchi ID’larini qabul qiladi (username orqali qidirish mavjud emas).

Long-polling va webhook

  • Sukut bo‘yicha: long-polling (ommaviy URL talab qilinmaydi).
  • Webhook rejimi: channels.zalo.webhookUrl va channels.zalo.webhookSecret ni sozlang.
    • Webhook siri 8–256 belgidan iborat bo‘lishi kerak.
    • Webhook URL HTTPS’dan foydalanishi shart.
    • Zalo tasdiqlash uchun X-Bot-Api-Secret-Token sarlavhasi bilan hodisalarni yuboradi.
    • Gateway HTTP webhook so‘rovlarini channels.zalo.webhookPath da qabul qiladi (sukut bo‘yicha webhook URL yo‘li).
Eslatma: Zalo API hujjatlariga ko‘ra getUpdates (polling) va webhook bir vaqtda ishlamaydi.

Qo‘llab-quvvatlanadigan xabar turlari

  • Matnli xabarlar: 2000 belgi bo‘yicha bo‘lish bilan to‘liq qo‘llab-quvvatlanadi.
  • Rasmli xabarlar: kiruvchi rasmlar yuklab olinadi va qayta ishlanadi; rasmlar sendPhoto orqali yuboriladi.
  • Stikerlar: qayd etiladi, ammo to‘liq qayta ishlanmaydi (agent javobi yo‘q).
  • Qo‘llab-quvvatlanmaydigan turlar: qayd etiladi (masalan, himoyalangan foydalanuvchilardan xabarlar).

Imkoniyatlar

FunksiyaHolati
Shaxsiy xabarlar✅ Qo‘llab-quvvatlanadi
Guruhlar❌ Tez orada (Zalo hujjatlariga ko‘ra)
Media (rasmlar)✅ Qo‘llab-quvvatlanadi
Reaksiyalar❌ Qo‘llab-quvvatlanmaydi
Tarmoqlar (threads)❌ Qo‘llab-quvvatlanmaydi
So‘rovnomalar❌ Qo‘llab-quvvatlanmaydi
Native buyruqlar❌ Qo‘llab-quvvatlanmaydi
Streaming⚠️ Bloklangan (2000 belgi cheklovi)

Yetkazib berish manzillari (CLI/cron)

  • Maqsad sifatida chat ID’dan foydalaning.
  • Misol: openclaw message send --channel zalo --target 123456789 --message "hi".

Muammolarni bartaraf etish

Bot javob bermayapti:
  • Token to‘g‘ri ekanini tekshiring: openclaw channels status --probe
  • Yuboruvchi tasdiqlanganini tekshiring (pairing yoki allowFrom)
  • Gateway loglarini tekshiring: openclaw logs --follow
Webhook hodisalarni qabul qilmayapti:
  • Webhook URL HTTPS’dan foydalanayotganini tekshiring
  • Secret token 8–256 belgidan iborat ekanini tekshiring
  • Gateway HTTP endpoint sozlangan yo‘lda ochiq ekanini tasdiqlang
  • getUpdates polling ishlamayotganini tekshiring (ular bir vaqtda ishlamaydi)

Konfiguratsiya ma’lumotnomasi (Zalo)

To‘liq konfiguratsiya: Configuration Provayder sozlamalari:
  • channels.zalo.enabled: kanalni ishga tushirishni yoqish/o‘chirish.
  • channels.zalo.botToken: Zalo Bot Platform’dan olingan bot tokeni.
  • channels.zalo.tokenFile: tokenni fayldan o‘qish yo‘li.
  • channels.zalo.dmPolicy: pairing | allowlist | open | disabled (sukut bo‘yicha: pairing).
  • channels.zalo.allowFrom: DM ruxsatlar ro‘yxati (foydalanuvchi ID’lari). open uchun "*" talab qilinadi. Usta (wizard) raqamli ID’larni so‘raydi.
  • channels.zalo.mediaMaxMb: kiruvchi/chiquvchi media cheklovi (MB, sukut bo‘yicha 5).
  • channels.zalo.webhookUrl: webhook rejimini yoqish (HTTPS talab qilinadi).
  • channels.zalo.webhookSecret: webhook siri (8–256 belgi).
  • channels.zalo.webhookPath: gateway HTTP serveridagi webhook yo‘li.
  • channels.zalo.proxy: API so‘rovlari uchun proxy URL.
Ko‘p akkauntli sozlamalar:
  • channels.zalo.accounts.<id>.botToken: har bir akkaunt uchun token.
  • channels.zalo.accounts.<id>.tokenFile: har bir akkaunt uchun token fayli.
  • channels.zalo.accounts.<id>.name: ko‘rinadigan nom.
  • channels.zalo.accounts.<id>.enabled: akkauntni yoqish/o‘chirish.
  • channels.zalo.accounts.<id>.dmPolicy: har bir akkaunt uchun DM siyosati.
  • channels.zalo.accounts.<id>.allowFrom: har bir akkaunt uchun ruxsatlar ro‘yxati.
  • channels.zalo.accounts.<id>.webhookUrl: har bir akkaunt uchun webhook URL.
  • channels.zalo.accounts.<id>.webhookSecret: har bir akkaunt uchun webhook maxfiy kaliti.
  • channels.zalo.accounts.<id>.webhookPath: har bir akkaunt uchun webhook yo‘li.
  • channels.zalo.accounts.<id>.proxy: har bir akkaunt uchun proxy URL.