指南
长轮询 getUpdates
适合本机 / 无公网 IP 调试;与 Webhook 互斥。
适用场景
没有稳定公网 HTTPS、或只想本机跑通收发时用长轮询。生产有公网时优先 Webhook。
步骤
- 确保未配置 Webhook:控制台删除,或调
POST /api/v1/bots/deleteWebhook。 - 循环调用
POST /api/v1/bots/getUpdates,用上一批最大update_seq + 1作为下次offset(等价 ack)。 - 处理
updates[]后继续拉取;需要稳定进程时用官方 SDKstartPolling()。
示例
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()。