You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twilio WhatsApp API接收贴纸无媒体URL问题技术求助

问题成因
  • Twilio WhatsApp 集成的默认媒体识别规则未覆盖贴纸专属格式:WhatsApp贴纸多为WebP静态格式、APNG/WebM动态格式,默认配置下这类格式不会被判定为有效媒体,因此Webhook推送参数中NumMedia返回0,无相关媒体URL字段。
  • 账号配置限制:部分Twilio WhatsApp消息服务默认开启「仅接收白名单媒体类型」,未包含贴纸格式,导致贴纸资源被过滤。
  • 第三方自定义贴纸兼容问题:非WhatsApp官方贴纸库的自定义贴纸,Twilio暂不支持识别,不会返回对应媒体参数。
解决方案

1. 调整Twilio控制台配置

进入Twilio控制台对应WhatsApp消息服务的「媒体设置」页面:

  • 关闭「仅接收白名单媒体类型」开关,开启接收所有媒体
  • 手动添加贴纸相关媒体类型到支持列表:image/webp、image/apng、video/webm

2. 代码层面主动拉取消息媒体

不要仅依赖Webhook推送的参数,拿到MessageSid后主动调用Twilio接口拉取消息关联的媒体资源,示例代码如下:

from flask import Flask, request
from dotenv import load_dotenv
from twilio.twiml.messaging_response import MessagingResponse
from twilio.rest import Client

load_dotenv()
app = Flask (__name__)
client = Client()

@app.route("/image", methods=["POST"])
def analyse():
    message_values = request.values
    message_sid = message_values.get("MessageSid")
    # 主动拉取消息完整信息
    message_detail = client.messages(message_sid).fetch()
    # 获取该消息绑定的所有媒体资源
    media_items = message_detail.media.list()
    for media in media_items:
        # 拼接完整媒体URL,也可直接通过media.fetch()获取资源内容
        media_url = f"https://api.twilio.com/2010-04-01/Accounts/{client.account_sid}/Messages/{message_sid}/Media/{media.sid}"
        print(f"媒体类型:{media.content_type},媒体地址:{media_url}")
    r = MessagingResponse()
    return str(r)

3. 替代方案

如果上述方法仍无法获取自定义贴纸,可以更换对接方案,不通过Twilio中转,直接使用whatsapp-web.js等开源库对接WhatsApp客户端,可完整获取所有类型的贴纸资源。

内容的提问来源于stack exchange,提问作者Levi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:24:03