浏览文档目录

指南

长轮询 getUpdates

适合本机 / 无公网 IP 调试;与 Webhook 互斥。

适用场景

没有稳定公网 HTTPS、或只想本机跑通收发时用长轮询。生产有公网时优先 Webhook。

步骤

  1. 确保未配置 Webhook:控制台删除,或调 POST /api/v1/bots/deleteWebhook。
  2. 循环调用 POST /api/v1/bots/getUpdates,用上一批最大 update_seq + 1 作为下次 offset(等价 ack)。
  3. 处理 updates[] 后继续拉取;需要稳定进程时用官方 SDK startPolling()。

示例

curl -X POST "$API/bots/getUpdates" \
  -H "Authorization: Bearer $SOCHAT_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"offset":0,"limit":100,"timeout":30}'
// Node SDK
await bot.startPolling()
// 停止:await bot.stopPolling()

约束与错误

  • timeout:0–50 秒(0 = 立即返回);网关对该路由 RPC 放宽到约 60s。
  • limit:1–100,默认 100。
  • 已挂 Webhook 时调用 → 409 Conflict: can't use getUpdates method while webhook is active。
  • 可选 allowed_updates[](如 ["message","callback_query"]);缺省为平台默认集合。
本地调试最常见踩坑:控制台还留着 Webhook。先删掉再 startPolling()。

下一步

getUpdates / setWebhook API · 5 分钟上手。