Node.js调用Amazon Pinpoint tollfree号码发送短信报错404及规则咨询
开发场景
我当前正在尝试通过Node.js调用Amazon Pinpoint服务,使用tollfree号码发送SMS短信,代码中所有敏感标识、号码信息均已做安全脱敏处理,实际运行代码如下:
router.get("/send-text", async (req, res, next) => { try { const sender = "+18446850251"; const destinationNumber = "+14325948991"; const message = "HELLO from AWS"; const applicationId = "myApplicationId"; const messageType = "TRANSACTIONAL"; AWS.config.update({ region: "us-east-1" }); const pinpoint = new AWS.Pinpoint(); const params = { ApplicationId: applicationId, MessageRequest: { Addresses: { [destinationNumber]: { BodyOverride: message, ChannelType: "SMS" } }, MessageConfiguration: { SMSMessage: { Body: message, MessageType: messageType, OriginationNumber: sender } } } }; const result = await pinpoint.sendMessages(params).promise(); res.send(result); } catch (error) { console.log(error); next(error); } });
运行报错结果
执行上述代码后,接口返回永久失败的响应信息如下:
{ MessageResponse: { ApplicationId: "myApplicationId", RequestId: "8beaebf0-f33a-42d3-bb88-1f3efcf493eb", Result: { "+14325948991": { DeliveryStatus: "PERMANENT_FAILURE", StatusCode: 404, StatusMessage: "Resource not found" } } } }
待确认问题
- 我收到AWS官方通知后理解为:从6月1日起,将无法再通过SNS主题调用应用向个人发送10位长号码短信,必须改用Amazon Pinpoint平台,绑定10DLC长号码或tollfree号码完成短信发送,这个理解是否准确?
报错排查指引
针对当前遇到的Resource not found 404报错,可按以下优先级逐一校验配置:
- 校验
applicationId有效性:确认填入的项目ID是us-east-1区域下、当前账号归属的真实Pinpoint项目ID。如果ID填写错误、或项目实际所在区域和代码配置的服务区域不匹配,会直接触发资源找不到的错误。 - 校验发件号码的绑定关系:确认代码中填入的tollfree发件号码,已在当前账号下完成申请、资质审核,且已绑定到当前填写的Pinpoint项目中。如果号码归属其他账号、其他Pinpoint项目,跨项目直接引用会触发资源不存在的报错。
- 校验号码状态:确认绑定的tollfree号码没有处于停用、审核驳回的状态,且当前配置的
TRANSACTIONAL消息类型和号码的发送权限匹配,不存在被限制发送的情况。
SNS短信规则说明
你的理解存在部分偏差:
- 6月1日生效的短信规则调整,针对的是美国地区使用10位本地长号码发送批量营销类短信的合规要求,并非完全禁止通过SNS发送个人短信。
- 10DLC号码、tollfree号码的短信发送能力,SNS和Pinpoint两个服务均支持接入,并非强制要求必须迁移到Pinpoint完成发送。
内容的提问来源于stack exchange,提问作者Braiden Parkinson
相关产品推荐
相关产品推荐

