Google Actions无法读取错误响应并顺利结束会话问题咨询
可行处理方案
- 调整webhook响应基础规则:Google Actions的webhook调用要求所有业务侧返回的响应(包括业务错误场景)都必须返回200 OK的HTTP状态码,若返回4xx/5xx类错误码,Google端会直接判定为webhook调用失败,不会读取你返回的JSON响应体。
- 修正响应结构:你当前返回的JSON外层包了
responseJson字段,不符合Google Actions的会话响应规范,需要直接返回符合官方要求的结构。业务错误信息可以放在prompt中告知用户,同时携带"expectUserResponse": false字段即可直接结束会话。如果需要先触发webhook回调处理业务逻辑,可以在响应中指定需要调用的handler,处理完成后再返回结束会话的响应即可,参考示例:
{ "prompt": { "firstSimple": { "speech": "很抱歉,服务处理超时,本次会话已结束。", "text": "很抱歉,服务处理超时,本次会话已结束。" } }, "expectUserResponse": false }
- 配置Scene全局兜底路由:在所有关联业务的Scene的条件路由中,新增优先级最高的规则,匹配系统内置变量
scene.webhookInError值为true的场景,匹配后直接触发你需要的webhook handler处理后续逻辑,再跳转至结束会话的节点。 - 超时场景兜底处理:Google Actions规定webhook的最大超时时间为10秒,若你的服务执行时长接近阈值,可以提前返回上述的会话结束响应,再异步处理剩余业务逻辑;若已经触发了Google侧的超时断开,可以调用Google Actions的会话管理接口主动终止对应会话,避免会话长期处于开启状态。
内容的提问来源于stack exchange,提问作者user2206676
相关产品推荐
相关产品推荐

