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

Node环境下MMS状态回调中Delivered状态无法获取问题咨询

MMS无法获取Delivered状态的常见原因及排查方向

首先得明确:MMS的状态回调逻辑和SMS有不小差异,拿不到Delivered状态通常不是代码bug,更多是服务提供商或运营商的限制,我来梳理几个最常见的排查方向:

1. 服务提供商未开启MMS送达回执能力

这是最普遍的原因。很多短信/MMS服务API默认只返回Sent(已提交到运营商网关)状态,而Delivered(已到达用户设备)状态需要额外手动开启,甚至部分服务商根本不支持MMS的送达回执推送。

  • 先去你的服务商控制台或API文档里找「MMS状态回调」相关配置,确认是否需要单独开启Delivered状态的推送权限;
  • 部分服务商可能对MMS回执收取额外费用,或者仅针对特定地区、运营商提供该能力。

2. 运营商网络不支持回传MMS送达状态

即使服务商支持,部分移动运营商也不会把MMS的最终送达状态回传给网关。比如某些地区的运营商,MMS发送成功后只会返回「已提交」,不会跟踪最终是否到达用户手机终端。

  • 可以测试给不同运营商的号码发送MMS,看是否只有特定运营商无Delivered状态,以此判断是不是运营商侧的限制。

3. 回调代码逻辑的疏漏

虽然你能正常接收Sent状态,但还是要确认下代码细节:

  • 检查Webhook回调地址是否完整接收所有状态类型,有没有在代码里只处理了Sent而忽略了Delivered?比如是不是加了条件判断只处理特定状态值,漏掉了Delivered对应的字段;
  • 确认服务商回调参数里,Delivered状态的字段名/值是否和Sent有差异?比如有些服务商用小写的delivered而非Delivered,字符串格式的差异可能导致你没识别到状态。

举个Node端的排查示例,你可以先打印完整回调内容,确认是否存在Delivered状态:

app.post('/mms-webhook', (req, res) => {
  // 打印完整回调参数,排查是否有delivered相关状态
  console.log('Full MMS callback data:', req.body);
  const status = req.body.status?.toLowerCase();
  
  if (status === 'sent') {
    // 处理已发送逻辑
  } else if (status === 'delivered') {
    // 处理已送达逻辑
  }
  res.sendStatus(200);
});

4. MMS本身的技术特性限制

和SMS不同,MMS基于WAP/HTTP协议,送达回执依赖用户设备的主动确认。如果用户手机离线、停机、存储空间不足,或者设备不支持MMS,服务商都无法获取到Delivered状态,自然不会推送给你。

优先从服务商配置和运营商兼容性入手排查,大概率是前两个原因导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:48