浏览文档目录

指南

Inline Keyboard 指南

消息上挂按钮;用户点击后你收到 callback_query,应调用 answerCallbackQuery 结束加载态。

适用场景

在机器人发出的消息下方展示可点按钮(确认、选项、跳转等)。点击后平台投递 callback_query Update;也可用 url / action 做外链或 App 内跳转(不产生 callback)。

步骤

  1. 发消息时带上 reply_markup.inline_keyboard(sendMessage / editMessage 等)。
  2. 确保 Webhook 或长轮询能收到 callback_query(默认订阅通常已包含)。
  3. 收到后调用 POST /api/v1/bots/answerCallbackQuery(可带 toast / alert / 外链)。同一 callback_query_id 重复调用按幂等成功返回。

示例

curl -X POST "$API/bots/sendMessage" \
  -H "Authorization: Bearer $SOCHAT_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "chat_id": "<chat_id>",
  "text": "选择一项",
  "reply_markup": {
    "inline_keyboard": [[
      { "text": "确认", "callback_data": "ok" },
      { "text": "文档", "url": "https://example.com/docs" }
    ]]
  }
}'
curl -X POST "$API/bots/answerCallbackQuery" \
  -H "Authorization: Bearer $SOCHAT_BOT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "callback_query_id": "<id>",
  "text": "已处理",
  "show_alert": false
}'

约束与错误

  • 键盘最多 8×8;按钮 text 1–64;callback_data UTF-8 ≤64 字节。
  • 每个按钮三选一:callback_data(产生回调)、url(http(s) 外链)、action(App 内路由,如 user_profile / public_group,不投递 callback)。
  • 未调用 answerCallbackQuery:客户端按钮可能一直转圈;服务端没有「必须 5 秒内应答」的硬超时。重复应答同一 id → 幂等成功(无效 id → 400)。
  • 只能改本机器人发出的消息键盘;改他人消息 → 403。
可选应答字段:text(≤200,toast/alert)、show_alert、url(打开外链)、cache_time。详细字段见 富交互 API。

下一步

answerCallbackQuery / sendMessage · Node SDK。