如何在Twilio中获取接收到的WhatsApp消息
实现接收WhatsApp消息的两种常用方案
方案1:实时接收消息(Webhook回调方式,最常用)
Twilio收到发给你绑定号码的WhatsApp消息时,会自动将消息内容以POST请求的形式推送到你提前配置的公网可访问回调地址,你只需要在自己的服务中解析请求参数即可拿到消息内容,具体实现步骤如下:
- 编写服务端接口接收Twilio的回调请求,以下是Flask框架的示例代码:
from flask import Flask, request from twilio.twiml.messaging_response import MessagingResponse app = Flask(__name__) @app.route("/whatsapp/receive", methods=['POST']) def receive_whatsapp(): # 解析Twilio推送的消息参数 sender_number = request.values.get('From', '') # 发送方号码,格式为whatsapp:+实际号码 received_text = request.values.get('Body', '') # 收到的文本内容 media_url = request.values.get('MediaUrl0', '') # 若消息带附件,可通过该参数获取资源地址 # 此处可添加自定义业务逻辑处理收到的消息 print(f"收到来自 {sender_number} 的消息:{received_text}") # 可选:自动回复消息给发送方 resp = MessagingResponse() resp.message("消息已收到") return str(resp) if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=True)
- 将上述接口部署到公网可访问的服务器,本地调试阶段可以用ngrok做内网穿透获取临时公网地址
- 打开Twilio控制台的WhatsApp号码配置页面,将
Webhook URL填写为你的接口地址,请求方式选择POST,保存配置后即可实时接收消息
方案2:主动拉取历史接收消息
如果不需要实时获取,只想主动查询一段时间内的接收记录,可以直接调用Twilio的Messages API拉取,示例代码如下:
from twilio.rest import Client # 替换为你自己的Twilio账户凭证 account_sid = '你的ACCOUNT_SID' auth_token = '你的AUTH_TOKEN' client = Client(account_sid, auth_token) # 拉取所有发给你的Twilio WhatsApp号码的消息记录 messages = client.messages.list( to='whatsapp:+你的Twilio绑定的WhatsApp号码' ) for msg in messages: print(f"发送方:{msg.from_},内容:{msg.body},接收时间:{msg.date_sent}")
注意:查询时可添加date_sent_before、date_sent_after参数过滤时间范围,单次查询最多返回1000条记录
内容的提问来源于stack exchange,提问作者user13808691
相关产品推荐
相关产品推荐

