我们使用AWS SNS(简单通知服务)作为向用户发送通知的机制之一。这意味着,有通过短信(使用AWS SNS)/电子邮件/自动呼叫发送的通知。
但任何时候,如果用户取消订阅这三种方法中的任何一种,我们都应该停止在所有三种模式下向用户发送进一步的警报。
目前,我在API中没有办法检查订阅请求是否已被选择退出(通过发送STOP消息),这样我们也可以阻止其他两种通信模式。
这可能吗,在SNS?我试着查看了API、控制台和亚马逊论坛的列表。
我已经发现,AWS SNS(针对SMS端点)的以下行为可以是一种变通方法。
尽管目前没有办法通过响应STOP到30304(亚马逊的短号码)来获得取消订阅的端点(用户)列表
但是,当我们为用户订阅某个主题时,AWS会创建一个订阅记录,其中subscriptionArn="PendingConfirmation"
如果用户响应STOP(选择退出),则订阅记录将从主题中删除。如果用户订阅了它,订阅的subscriptionArn将从"PendingConfirmation"更改为一些有效的ARN(亚马逊资源编号)。
ListSubscriptionsByTopic API列出用户订阅,即使它处于"PendingConfirmation"状态。
因此,就目前而言,了解用户是否已取消订阅该主题的唯一方法是,维护一个用户列表及其终点(电话号码/电子邮件ID),并在稍后将其与可用订阅列表进行比较。如果有什么东西消失了,那就意味着他们已经取消了订阅。
当然,它不可能是实时的。但这是目前唯一可用的解决方法。
作为附加信息,如果订阅挂起时间超过72小时,则会自动删除。