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

如何使用TFN向美国号码发送短信?AWS SNS代码报错求助

使用AWS SNS免费电话号码(TFN)向美国号码发送短信的正确方法

针对你遇到的发送失败问题,从配置和代码层面逐一排查修正:

1. 确认TFN的基础状态

  • 你的TFN(+12012345563)必须在AWS SNS控制台完成验证,状态为已启用,且确认该号码支持短信发送(部分TFN仅提供语音服务)。
  • 确保TFN归属的AWS区域与你调用SNS API的区域一致,美国地区推荐使用us-east-1或us-west-2。

2. 修正代码中的错误

你的代码存在格式错误,同时优化参数配置如下:

async sendMessage(testId: number) {
  const mobileNo = test.customer.phoneNo;
  const params = {
    Message: 'A backflow test was completed successfully',
    PhoneNumber: '+17711111113',
    MessageAttributes: {
      'AWS.MM.SMS.OriginationNumber': {
        DataType: 'String',
        StringValue: '+12012345563',
      },
    },
  };
  return new AWS.SNS({
      apiVersion: '2010-03-31' // 注意:原代码使用了中文全角连字符,需改为英文半角
    })
    .publish(params)
    .promise()
    .then((message) => {
      console.log('Message SEND SUCCESS', message.MessageId);
    })
    .catch((err) => {
      // 打印完整错误信息,精准定位问题
      console.log('发送失败详情:', err.code, err.message);
      return err;
    });
}

3. 关键配置与权限检查

  • IAM权限:执行代码的IAM用户/角色必须拥有SNS:Publish权限,且策略需明确允许使用指定TFN作为源号码,示例策略片段:
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "sns:OriginationNumber": "+12012345563"
        }
      }
    }
    
  • 内容合规性:美国运营商对短信内容有垃圾信息过滤规则,确保你的通知属于合法业务通知,无违规关键词。
  • 目标号码有效性:确认接收号码+17711111113是有效的美国手机号,且未开通短信拒收服务。

4. 故障排查技巧

发送失败时,重点查看错误代码:

  • InvalidParameter:参数格式错误(如号码格式、API版本号)
  • PermissionDenied:IAM权限不足或TFN未授权使用
  • NotFound:指定TFN未在账户中或已被删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:10:23