如何为Google Action发送到webhook的userresponse添加自定义参数
Google Action 自定义参数传递与视频播放控制实现方案
1. 自定义参数主动传递实现方式
你之前使用的intent参数只能获取用户输入匹配的内容,要主动传递自定义参数,使用**会话存储(session storage)**即可,不需要依赖用户话术匹配。
- 首次返回媒体响应时,在webhook返回的JSON中添加
session字段,把你需要传递的videoNumber、布尔值这类自定义参数放到session.params中即可,示例结构如下:
{ "session": { "params": { "videoNumber": 1, "autoPlayNext": false } }, // 剩余的媒体响应、提示话术等内容按原有逻辑编写 }
- 后续不管是媒体播放结束触发的
MEDIA_STATUS_FINISHED事件,还是用户回复触发的intent请求,Google Action都会自动把session.params里的所有参数完整带到你webhook收到的请求JSON中,不需要用户说出对应内容,也不需要提前在intent里配置这些参数。 - 你每次处理完请求,更新
videoNumber的值之后再写回session.params返回即可实现参数自增效果,比如看完第一个视频返回时把videoNumber改成2,下次请求携带的就是更新后的值,以此类推。
2. 单视频播放结束后交互的实现方案
你不需要使用默认的媒体播放列表自动播放逻辑,按以下步骤实现即可:
- 首次返回响应时,仅添加当前要播放的单个
MediaObject,不要配置多内容的播放列表。 - 监听系统内置的
actions.intent.MEDIA_STATUS事件,该事件会在媒体播放结束时自动触发,不需要你配置额外的intent。 - 收到播放结束的事件请求时,从
session.params中拿到当前的videoNumber,返回给用户的响应中带上询问话术:“当前视频已播放结束,你可以选择播放下一个、重播当前视频或者回看前一个”,同时可以配置对应的建议芯片方便用户点击选择。 - 配置三个对应的intent分别匹配“下一个”、“重播”、“回看前一个”的用户话术,收到对应请求时根据
videoNumber的值计算要返回的视频序号:- 下一个:
videoNumber + 1 - 重播:
videoNumber保持不变 - 前一个:
videoNumber -1(注意做边界判断,序号不能小于1)
- 下一个:
- 计算好新的序号之后更新到
session.params的videoNumber字段,再返回对应序号的视频内容即可。
3. 其他类型自定义参数的传递
布尔值、字符串、对象这类任意类型的自定义参数都可以放到session.params中传递,不需要提前在Action Console里做任何配置,只要你在返回的时候把参数写进去,后续的会话请求都会自动携带。如果需要跨会话持久存储用户的参数,还可以用user.params字段,只要用户账号处于关联状态,参数会一直保留。
内容的提问来源于stack exchange,提问作者XCarb
相关产品推荐
相关产品推荐

