Google Chat API:cards_v2卡片按钮无法打开Dialog的技术求助
问题解决方法
一、修正卡片按钮的配置
你当前的按钮配置采用function+interaction的组合,这并非Google Chat触发Dialog的正确方式。正确配置需在onClick中使用dialogAction字段指定打开Dialog的操作。
修改后的卡片请求体:
{ "cards_v2": [{ "card": { "header": { "title": "Rolodex", "subtitle": "Manage your contacts!", "imageType": "CIRCLE", "imageUrl": "https://www.gstatic.com/images/branding/product/2x/contacts_48dp.png" }, "sections": [{ "widgets": [{ "buttonList": { "buttons": [{ "text": "Add Contact", "onClick": { "dialogAction": { "action": "OPEN_DIALOG" } } }] } }] }] } }] }
调整后,点击按钮将触发REQUEST_DIALOG类型事件,而非仅收到CARD_CLICKED事件。
二、修正Dialog响应的格式
你的响应存在两处问题:一是Dialog结构缺少必要的header字段,可能导致渲染异常;二是需确保Dialog内按钮的后续操作逻辑匹配响应规范。
修改后的响应示例:
{ "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "header": { "title": "Add new contact" }, "body": { "sections": [{ "widgets": [{ "textInput": { "name": "contactName", "label": "Name", "type": "SINGLE_LINE" } }, { "buttonList": { "buttons": [{ "text": "Next", "onClick": { "action": { "function": "openSequentialDialog" } } }] } }] }] } } } } }
额外注意事项
- 确保机器人拥有
chat.dialogs:open权限,否则无法触发Dialog; - 处理
REQUEST_DIALOG事件时,必须在3秒内返回响应,超时会导致弹窗错误; - Dialog内按钮触发的后续操作,需保证对应函数逻辑能正确返回下一个Dialog或合规响应。
内容的提问来源于stack exchange,提问作者Anatoliy Botov
相关产品推荐
相关产品推荐

