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

在Twilio Studio Flow中如何控制入站消息媒体的文件扩展名及大小限制

Twilio入站消息媒体限制需求实现解答

该需求完全可以通过Twilio Functions实现,具体实现方案如下:

接入流程

  • 在Twilio Studio Flow的入站消息触发节点后,添加「Run Function」节点,将入站消息的全量参数透传给自定义的Twilio Function
  • Function完成校验后返回校验结果到Studio Flow,你可根据返回的成功/失败标记配置后续流程:校验通过进入后续业务逻辑,校验失败则自动回复提示用户发送符合要求的文件

核心校验逻辑

Twilio入站MMS消息会自动携带以下相关参数:

  • NumMedia:本次消息携带的媒体文件总数
  • MediaContentType{N}:下标为N的媒体文件的MIME类型,N从0开始计数
  • MediaUrl{N}:下标为N的媒体文件的存储地址

你只需在Function内按如下规则校验即可:

  1. 遍历所有媒体文件的MIME类型,仅放行image/jpeg、image/png两种类型
  2. 对符合格式要求的文件,发起HEAD请求获取对应MediaUrl的Content-Length响应头,换算为MB后超过7MB则判定为不合法

参考代码示例

exports.handler = function(context, event, callback) {
  const MAX_FILE_SIZE_MB = 7;
  const ALLOWED_MIME_TYPES = ['image/jpeg', 'image/png'];
  const https = require('https');

  // 无媒体文件场景,可根据自身业务调整是否允许
  if (parseInt(event.NumMedia || 0) === 0) {
    return callback(null, { is_valid: true, message: '无媒体文件' });
  }

  let isValid = true;
  let errorMsg = '';
  let completedCheckCount = 0;
  const totalMedia = parseInt(event.NumMedia);

  for (let i = 0; i < totalMedia; i++) {
    const currentType = event[`MediaContentType${i}`];
    const currentUrl = event[`MediaUrl${i}`];

    // 格式校验
    if (!ALLOWED_MIME_TYPES.includes(currentType)) {
      isValid = false;
      errorMsg = '仅支持jpeg、png格式的图片';
      break;
    }

    // 大小校验
    https.request(currentUrl, { method: 'HEAD' }, (res) => {
      const fileSizeMb = parseInt(res.headers['content-length'] || 0) / (1024 * 1024);
      if (fileSizeMb > MAX_FILE_SIZE_MB) {
        isValid = false;
        errorMsg = '单张图片大小不能超过7MB';
      }
      completedCheckCount++;
      if (completedCheckCount === totalMedia) {
        return callback(null, { is_valid: isValid, message: errorMsg });
      }
    }).end();
  }
};

注意事项

  • 建议提前将Twilio Functions的超时时间调整到10秒以上,避免大文件HEAD请求超时导致校验失败
  • 如果需要处理多文件场景,可自行调整逻辑累加所有文件大小或者逐一校验单文件大小即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:04