LoginSignup
1
1

More than 1 year has passed since last update.

Amazon Pinpoint で SMS を送るときに、表示名を指定する Sender ID を設定してみる

Last updated at Posted at 2022-07-03

はじめに

Amazon Pinpoint や Amazon SNS を使って SMS (ショートメッセージサービス) を送ると、携帯電話の電話番号を宛先にしてメッセージを送信できます。何も意識しないで、デフォルトのまま SMS を送信すると、日本だと基本的には送信元が NOTICE と表示されます。

image-20220703170453052.png

自分たちが提供しているサービスで、たとえばワンタイムパスワードを SMS で送りたいときに、NOTICE と表示されるのはちょっと味気ないです。また、NOTICE という表示名が他のサービスと被っていると、同じ画面の中に異なるサービスのメッセージが表示されるので、基本的には独自の表示名に変えたくなります。

このときに、Pinpoint や SNS では、大きく分けて 3 つの方法を使って送信元を指定できます。AWS Document にそれぞれの違いが詳細に書かれているのですが、一言で表すとこんな感じです。

  • Sender ID の指定 : 送信元の表示名を追加料金なしに簡単に指定できるので、とてもお手軽です。お手軽な一方、任意な文字を指定できるので、悪い人によるなりすまりの危険があるデメリットもあります。
  • ショートコードを取得 : 自分専用のショートコードを取得するので、なりすましの危険性を下げられます。一方、追加の料金がそこそこかかります。
  • ロングコードを取得 : ショートコードと比べて、一定期間あたりの SMS 送信料が制限されています。また、追加の料金も発生します。

参照 Document : https://docs.aws.amazon.com/ja_jp/pinpoint/latest/userguide/channels-sms-originating-identities.html#channels-sms-originating-identities-long-codes

基本的には、お手軽な表示名設定の Sender ID か、追加のコストをかけて厳密に提供するショートコード、といった使い分けでしょうか。

なお、Sender ID を使った場合は、このように表示名を好きな文字にカスタマイズできます。

image-20220703173725639.png

今回の手順では、Sender ID の設定方法をいくつかみていきましょう。

Pinpoint で SMS

Pinpoint では、20代、男性、ゲーム好き、といった特定の属性を持つユーザーに、最適なメッセージを届けるためのサービスです。特定の属性を持つユーザーに送りたいときは、キャンペーンという機能を利用します。ただ、今回はテスト用途なので、テストメッセージ機能で SMS の Sender ID 設定方法を確認したいと思います。基本的には、キャンペーンでも同じような設定方法です。

なお、Pinpoint では、日本に SMS を送るときに、Sender ID がサポートされている点が書かれています。

Pinpoint のぺージから、Test messaging メニューを選びます。そして、SMS と送信先電話番号を指定します。

送信したい電話番号が、090-1234-5678 だとすると、+819012345678 と入力すればよいです。

image-20220703173020873.png

そして、メッセージ本文を入れ、Sender ID を指定して、Send message を押します。

image-20220703173353144.png

すると、このように送信元の表示名を変更して受信することが出来ました。

image-20220703173716978.png

Pinpoint の OTP で SMS

Pinpoint には、ワンタイムパスワードを生成してくれる機能があります。詳細は割愛しますが、もし自分たちのアプリケーションでワンタイムパスワードを利用する必要性が出てきた場合は、便利に利用できると思います。(認証認可の文脈だと、Cognito だったり他の認証系 SaaS も良い選択肢だと思います)

Pinpoint のワンタイムパスワードは、ざっくり何をしてくれるかというと、指定した携帯電話番号に、SMS でワンタイムパスワードを送ってくれます。また、ユーザーさんから入力してもらったワンタイムパスワードが正しいかを評価してくれます。

Pinpoint の OTP は、AWS CLI や REST API で送信できます。マネージメントコンソール上ではありません。

  • OriginationIdentity : ここに文字列を入れることで、Sender ID として認識してくれます。今回は MyService と入れてみます。

指定するパラメータ詳細はこちら : https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-otp.html

aws pinpoint send-otp-message --application-id 4d1eda5192f94dde85217c395546718f --send-otp-message-request-parameters '{
   "Channel": "SMS",
   "BrandName": "MyBrand",
   "CodeLength": 5,
   "ValidityPeriod": 20,
   "AllowedAttempts": 5,
   "OriginationIdentity": "MyService",
   "DestinationIdentity": "+819012345678",
   "ReferenceId": "redid01",
   "Language": "ja-JP"
}'

すると、携帯電話の SMS に、ワンタイムパスワードが送られてきます。

image-20220703174514807.png

余談ですが、次のコマンドで、ユーザーから入力してもらったワンタイムパスワードの正当性を確認できます。

aws pinpoint verify-otp-message --application-id 4d1eda5192f94dde85217c395546718f --verify-otp-message-request-parameters '{
   "DestinationIdentity": "+819012345678",
   "ReferenceId": "redid01",
   "Otp": "48271"
}'

Response の値です。true と返ってきますね。

{
    "VerificationResponse": {
        "Valid": true
    }
}

なお、同じコマンドをもう一度実行すると、false に変わります。ワンタイムパスワードなので、1回しか使えないわけですね。

{
    "VerificationResponse": {
        "Valid": false
    }
}

余談 : SNS で SMS

Amazon SNS でも Sender ID が利用できそうなのか、確認をしてみたいと思います。

SNS のページで、Publish test message を押します。

image-20220703175400699.png

宛先の番号を入力します。

image-20220703175517196.png

Sender ID に MyCompany03 と指定して、Publish message を押します。

image-20220703175604843.png

検証した携帯電話では無事に表示されました。

image-20220703175729742.png

まとめ

Sender ID を使った送信元表示の方法を確認しました。Pinpoint と SNS でも、この記事の検証環境だと想定通り表示されました。お手軽に表示名をカスタマイズできるので、まずはこのあたりから利用を開始してもいいかもしれません。より厳密に SMS を届けるためには、ショートコードなどを利用すると、なりすましの脅威軽減にも役にたつので、場合によってはこちらも検討しましょう。

参考URL

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1