cds-snc / notification-planning-core

Project planning for GC Notify Core Team
0 stars 0 forks source link

Phone Pool System #282

Open ben851 opened 5 months ago

ben851 commented 5 months ago

Description

As a system operator I would like the short code to be used only with services that are associated with it, instead of the short code being used globally, so that the short code is only used for 2FA messages.

As a policy person, I want long codes and short codes to be sent from Canada only so that SMS do not come from the US.

WHY are we building?

Short codes need to be reserved exclusively for 2FA as per our agreement with telecoms

WHAT are we building?

Implement a system where we can, on a per-service/template basis:

VALUE created by our solution

Acceptance Criteria

QA Steps

jimleroyer commented 5 months ago

We received communication back from AWS for proposed solutions we had in mind, this is their feedback:

  1. Creating a pool of numbers is a recommended option, however, PoolId can only be used in Amazon Pinpoint with the SendTextMessage API call [1] where you could provide it in "OriginationIdentity" parameter. The primary benefit of this approach is if an origination identity in the phone pool fails, the phone pool will fail over to another origination identity if it is in the same phone pool. Please refer to our documentation for further information on phone pools [2].

  2. If you choose to move your short code to a different region, it would be, as stated by you, an additional cost and effort, however, you would be able to use Amazon SNS. Please note that inter-region migration of short codes is not yet supported, hence, you would have to provision a new short code in ca-west-1 region which would be an additional cost.

  3. Having a pool of codes of your own on the software side and having your own selection of codes would definitely provide you with the most flexibility, however, again it would be an additional cost and effort.

Summing up, using different pool of numbers with Amazon Pinpoint would be the recommended option at the moment.