使用WhatsApp Studio Flow获取含地理数据的POST Webhook及离线位置经纬度
解决方案:获取WhatsApp离线位置消息的经纬度(需求可行)
核心逻辑
Twilio的Message资源本身不会存储位置经纬度,这些数据仅在入站消息的Webhook POST请求中附带。所以必须提前把Webhook里的经纬度和对应消息的MessageSid绑定存储,后续通过消息SID关联查询。
具体步骤
部署后端服务接收Webhook,存储位置数据
- 给你的Twilio号码配置Webhook端点,指向自己的后端接口(比如Node.js/Python写的简单服务)。当用户发送消息(包括离线后联网推送的缓存消息),Twilio会把请求发送到这个端点。
- 当消息是位置类型时,Webhook请求会包含
Latitude、Longitude、MessageSid参数。把这三个字段存入你的数据库(如SQLite、PostgreSQL),用MessageSid作为唯一标识。 - 如果不想中断原有Studio Flow逻辑,可以让后端存储数据后,再把请求转发到Studio Flow的Webhook URL,实现数据存储和Studio流程的兼容。
获取离线消息并关联查询经纬度
- 用户联网后,用
CLIENT.messages.stream拉取指定时间段内的所有入站消息,确保设置正确的过滤条件:- 指定
From参数为用户的WhatsApp号码(格式如whatsapp:+123456789) - 设置
DateSent的时间范围(比如用户离线开始到联网的时间段)
- 指定
- 遍历返回的每条消息,提取
MessageSid,到你的数据库中查询对应的Latitude和Longitude,即可获取位置信息。
- 用户联网后,用
解决http_request仅返回最后一条的问题
- 不要用Studio的
http_request直接调用Twilio API获取消息列表,改用CLIENT.messages.stream(在Studio的Run Function组件中执行代码),并正确设置过滤参数,就能拉取到所有符合条件的离线消息,而不是仅最后一条。
- 不要用Studio的
关键说明
Twilio官方不支持从Message API直接获取位置经纬度,必须通过Webhook实时捕获并存储,这是满足需求的唯一可行方案,完全可以实现你需要的离线位置消息回溯功能。
内容的提问来源于stack exchange,提问作者Carst
相关产品推荐
相关产品推荐

