Google Chat创建对话框时如何正确响应REQUEST_DIALOG事件?
Google Chat 机器人REQUEST_DIALOG事件正确响应示例
你无法唤起对话框的核心原因是响应结构不符合Google Chat的要求,收到REQUEST_DIALOG事件时不能直接返回普通消息卡片,必须返回包含dialog对象的特定响应结构。
前置校验
先确认你的机器人配置满足以下要求:
- 斜杠命令的配置页已勾选支持对话框选项
- 机器人权限配置允许响应用户的斜杠命令交互
Node.js 云函数运行示例
exports.googleChatBotHandler = async (req, res) => { const event = req.body; // 匹配REQUEST_DIALOG事件 if (event.isDialogEvent && event.dialogEventType === "REQUEST_DIALOG") { // 构建对话框响应 const dialogResponse = { actionResponse: { type: "DIALOG", dialogAction: { dialog: { body: { sections: [ { header: "示例对话框", widgets: [ { textInput: { name: "user_input", label: "请输入内容", type: "SINGLE_LINE" } }, { buttonList: { buttons: [ { text: "提交", onClick: { action: { function: "submit_form", parameters: [] } } } ] } } ] } ] } } } } }; // 必须设置正确的响应头 res.setHeader("Content-Type", "application/json"); // 返回200状态码 + 响应体 return res.status(200).send(dialogResponse); } // 其他事件的处理逻辑 return res.status(200).send({ text: "其他事件响应" }); };
通用JSON响应结构(所有语言通用)
如果是其他开发语言,直接返回以下结构的JSON即可:
{ "actionResponse": { "type": "DIALOG", "dialogAction": { "dialog": { "body": { "sections": [ { "header": "测试对话框", "widgets": [ { "textParagraph": { "text": "这是一个可正常唤起的对话框示例" } } ] } ] } } } } }
常见错误排查
- 不要直接返回卡片数组,所有卡片内容必须嵌套在
dialog.body.sections字段下 - 不要返回普通MESSAGE类型的响应,必须指定
actionResponse.type为DIALOG - 响应状态码不能是204、400等非200的状态码
内容的提问来源于stack exchange,提问作者456q
相关产品推荐
相关产品推荐

