Google Chat机器人消息卡片限制及投票消息更新失败咨询
Google Chat卡片消息的官方限制及更新失败问题解析
官方权威限制规则
Google Chat的卡片消息限制核心基于JSON Payload的总字节大小,官方明确规定卡片消息的Payload最大为50KB。这个限制包含卡片的所有结构代码(如widget定义、标签、样式参数等)和文本内容,并非仅计算纯文本字符数。
除此之外,还有两个辅助限制需要注意:
- 单张卡片内最多包含100个Widget元素(如文本块、按钮、图片等)
- 单个文本块(
TextParagraph)的字符上限为4096,和普通文本消息的限制一致
关于你遇到的更新失败问题
你测试中35000字符的卡片能成功更新、40000字符左右失败,本质是因为JSON Payload的总字节数接近或超过了50KB阈值:
- 纯文本字符本身占用字节(UTF-8编码下大多数字符是1字节,特殊字符是2-4字节)
- 卡片的JSON结构(比如
"textParagraph": {"text": "..."}这类标签)会额外占用字节,导致实际可容纳的纯文本数量远小于50KB对应的字符数(50KB约等于5万左右的纯ASCII字符,但加上结构代码后会大幅减少)
另外,Webhook方式调用更新时,若Payload超限,Google Chat会静默丢弃请求,不会返回明确错误,这就是你看到“端点调用成功但消息未更新”的原因。改用REST API的PATCH请求更新消息时,会返回400 Bad Request的明确错误响应,便于排查。
建议解决方案
- 优先使用Google Chat REST API的消息更新接口,获取明确的错误反馈
- 优化卡片结构:移除不必要的Widget、简化样式参数,减少Payload的结构开销
- 拆分内容:如果投票数据过多,可将内容拆分到多张卡片中(需注意Chat消息最多可包含10张卡片)
- 提前计算Payload大小:将卡片的JSON转为字符串后统计字节数,确保不超过50KB
内容的提问来源于stack exchange,提问作者Muhammad Dyas Yaskur
相关产品推荐
相关产品推荐

