AWS SNS SMS - 以编程方式从选择退出列表中删除 phone 号码(即选择加入)

AWS SNS SMS - Programmatically remove a phone number from the opt-out list (i.e. opt-in)

似乎无法使用 AWS 命令​​行 API(或 Java SDK)选择加入已选择退出 SMS 的 phone 号码(通过发送 STOP信息)。这是一个命令行示例(编辑了 phone 数字):

> aws sns check-if-phone-number-is-opted-out --phone-number "612XXXYYYY"
{ "isOptedOut": false }

因此需要国家代码。补充一点,我看到选择退出有“+”或没有:

> aws sns check-if-phone-number-is-opted-out --phone-number "+1612XXXYYYY"
{ "isOptedOut": true }

> aws sns check-if-phone-number-is-opted-out --phone-number "1612XXXYYYY"
{ "isOptedOut": true }

然后我尝试重新选择那个号码:

> aws sns opt-in-phone-number --phone-number "+1612XXXYYYY"
An error occurred (InvalidParameter) when calling the OptInPhoneNumber operation: Invalid parameter: 

> aws sns opt-in-phone-number --phone-number "1612XXXYYYY"
An error occurred (InvalidParameter) when calling the OptInPhoneNumber operation: Invalid parameter: 

> aws sns opt-in-phone-number --phone-number "612XXXYYYY"

最后一个没有国家代码的 return 不是错误,但它也没有做任何事情:

> aws sns check-if-phone-number-is-opted-out --phone-number "1612XXXYYYY"
{ "isOptedOut": true }

为了好玩,这里是 Java SDK 版本,它也不起作用:

SnsClient snsClient = SnsClient.builder().region(Region.US_WEST_2).build();
OptInPhoneNumberResponse response = snsClient.optInPhoneNumber(b -> b.phoneNumber("1612XXXYYYY"));

有没有办法以编程方式从 SMS 选择退出列表中删除 phone 号码?我可以使用 Web 控制台手动执行此操作,但这没有帮助。

上面的 commands/code 将适用于撤销 STOP 请求,但只能执行一次。显然,在发送第二个 STOP 回复后,AWS 将不再允许您选择再次使用该 phone 号码接收 SMS 消息。因此,如果你想支持多个 STOP->START 序列,如果你必须在 Pinpoint 中“启用 self-managed opt-outs” 并自行处理。

根据 OptInPhoneNumber 的 Amazon SNS 文档:

You can opt in a phone number only once every 30 days.