AWS Pinpoint/SNS: 实现双向短信取消订阅/重新订阅

0

【以下的问题经过翻译处理】 我在使用AWS Pinpoint和SNS实现双向短信退订/重新订阅功能时遇到了一些问题。

使用案例: 在收集用户的手机号后,用户会收到一条确认短信。他可以回复YES关键字以选择加入短信列表。稍后,他可以通过回复STOP关键字来退出。在退出后,他仍然可以通过回复START关键字来重新订阅。此外,即使在重新订阅后,他仍然可以通过回复STOP关键字再次退订,以此类推。

当前实现: 类似于文档中提供的示例(https://docs.aws.amazon.com/pinpoint/latest/developerguide/tutorials-two-way-sms.html),我已经创建了一个Lambda函数并订阅到SNS主题,用于处理YES和START关键字。对于STOP(和HELP)关键字的响应由AWS Pinpoint处理。

  1. 在收集用户的手机号后,后端创建了一个Pinpoint端点以表示用户,发送了确认短信,并将端点的退订状态更新为ALL。
  2. 用户回复YES,Lambda函数处理他的回复并将端点的退订状态更新为NONE。
  3. 用户回复STOP,Pinpoint自动处理他的回复并将他退出。
  4. 用户回复START,Lambda函数处理他的回复并将端点的退订状态更新为NONE。

我需要解决以下问题:

  1. 在上述实现的第3步中,我注意到用户的手机号已添加到SNS的退订列表中(从AWS控制台检查),但他在Pinpoint中的端点退订状态(从aws-cli检查)仍然是NONE而不是ALL。如预期的那样,我无法向该用户发送SMS。Pinpoint和SNS是否如我观察到的那样维护两个独立的退订状态?如果是的话,是否有关于它们如何更新的详细文档?
  2. 在上述实现的第4步中,我注意到用户的手机号码没有从SNS退订列表中移除,而且Pinpoint端点的退订状态保持为NONE。与预期行为相反,我仍然无法向该用户发送SMS。我的重新订阅实现是否正确?

请回答我的问题,并指导我正确实现我的使用案例。

profile picture
EXPERTE
gefragt vor 5 Monaten36 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 在进一步探索后,我发现了以下情况:

观察结果:

  1. 如果不使用Pinpoint,并且用户的号码显示在SNS退订列表中,通过SNS发布消息发送的消息将无法送达。
  2. 无论是否使用Pinpoint,来自用户的进入短信总是通过SNS传递,并检查退订关键词,如STOP、END、CANCEL等(https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-sms-manage.html)。如果发现退订关键词,该号码将始终被添加到SNS退订列表中。(进一步阅读 - https://docs.aws.amazon.com/sns/latest/dg/sms_manage.html)
  3. 如果Pinpoint长代码的“Self-managed opt-outs”选项被禁用,并且用户的号码显示在SNS退订列表中 3.1. 无法为该号码创建新的Pinpoint端点 3.2. 通过现有Pinpoint端点为该号码发送的消息将无法送达 3.3. 通过SNS发布消息发送的消息也将无法送达。
  4. 如果Pinpoint长代码的“自管理退订”选项已启用,并且用户的号码显示在SNS退订列表中 4.1. 上述3.1和3.2点仍然成立 4.2. 通过SNS发布消息发送的消息将能够送达,因为启用了“Self-managed opt-outs”,尽管号码被添加到SNS退订列表中。

问题的原因 在我的案例中,“Self-managed opt-outs”选项被禁用了,这就是为什么Pinpoint端点退订状态不相关,SNS退订列表具有优先权。

解决方案:

  1. 如上所述,保持“Self-managed opt-outs”禁用并没有满足我的要求。所以我启用了它。
  2. 由于SNS退订列表始终具有优先级,因此无法使用Pinpoint端点。
  3. 最后,我只使用Pinpoint获取启用了双向SMS和“Self-managed opt-outs”的长代码。我使用SNS发布消息而不是Pinpoint端点来发送消息。
  4. 现在我正在使用“Self-managed opt-outs”,这里需要注意的一点是 - 我在后端为每个用户的号码维护退订状态,并在中间件级别处理传出消息的允许/拒绝。
profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen