无法通过 Amazon Simple Notification Service (Amazon SNS) 或 Amazon Pinpoint 发送手机短信。然后,我在 Amazon SNS 或 Amazon Pinpoint 中收到错误短信,提醒“尝试联系手机时出现未知错误”。
简短描述
短信通过第三方下游聚合商、短信供应商和移动运营商传送给移动设备。也就是说,当您使用 Amazon SNS、Amazon Pinpoint 或任何与 Amazon SNS 或 Amazon Pinpoint 集成的 AWS 服务时,当这些下游合作伙伴无法访问移动设备时,您会收到“尝试联系手机时出现未知错误”错误提醒。
**重要事项:**短信的底层架构就是分散式的。最好不要对应用程序的短信传输可靠性和性能做出假设。请参阅互联网工程任务组 (IETF) 的 RFC 5724,了解更多信息。
解决方法
根据自身用例执行以下故障排除步骤。
排查常见问题
排除与 Amazon SNS 或 Amazon Pinpoint 不相关的常见问题。
您可能会由于以下原因收到此错误提醒:
- 运营商将该电话号码当作骚扰号码屏蔽。
- 目的地已被封锁。
- 短信正文无效。
- 手机号码在请勿打扰 (DND) 列表中。
- 手机处于漫游网络中。
- 手机运营商屏蔽了这条消息。
- 手机屏蔽了短信。
- 手机暂时不在服务区。
- 手机已关机。
- 号码是座机(不是手机)。
- 消息正文包含未注册的 URL。
- 手机号码无效。
- 对于给定数量或一组区域号码,下游合作伙伴的网络配置不正确。
查看短信最佳实践
确认您遵循目的地国家/地区或您发送短信所在的 AWS 区域的短信最佳实践、规则和法规。
确认您使用的是正确的始发身份。如果需要,必须注册身份。有关详细信息,请参阅支持的国家和地区(短信渠道)。
如果向美国发送短信,请确保使用美国支持的始发号码。
如果使用的是美国的免费号码,请确保该电话号码已注册。
如果您使用本地路由向印度发送短信,请先预注册您的专用字母发件人 ID。然后,使用 DLT 注册模板。向短信添加内容时,请确保与 DLT 注册模板中的内容完全匹配。有关详细信息,请参阅印度的发件人 ID 注册要求。
排查单台设备传送问题
设备级短信屏蔽、漫游、脱离服务区及其他因素都有可能导致单台设备传送问题。
要排查这些问题,请执行以下操作:
- 使用 Amazon Pinpoint API 验证电话号码。使用座机和 VoIP 电话号码可能会导致传送问题。
- 从另一台设备发送短信,然后检查消息是否已送达。
如果这两个步骤都成功,则可以考虑在其他设备上进行测试。
如果问题仍然存在,则设备所有者必须联系其移动运营商寻求支持。
排查多台设备传送问题
如果延迟的短信传送影响多个设备,可能是下游的聚合商、供应商、提供商和运营商存在问题。
要解决潜在的下游问题,请为您用于发送短信的服务创建支持案例。
请在支持案例中提供以下信息:
- 用于发送短信的区域。
- 问题开始发生时的时间戳。
- 三条短信日志示例,其中包含不同电话号码三天之内的失败短信消息 ID。
- (仅限印度)提供您的 DLT 注册实体 ID、模板 ID 以及用于发送短信的内容示例。
**注意:**移动运营商存储短信的时间可能不会超过三天。
重要事项: Amazon CloudWatch Logs 的短信传输不一定能始终提供准确的短信传输时间。某些情况下,短信在收到 CloudWatch Logs 之前便送达。传输日志中的 dwellTimeMsUntilDeviceAck 值显示运营商在何时接受消息,但不提供有关延迟短信的信息。有关详细信息,请参阅查看短信传输的 CloudWatch 指标和日志。
相关信息
如何使用 Amazon Pinpoint 管理短信的全局发送
使用 CloudWatch 监控 Amazon SNS 主题