AWSを使ってSMSを送信したんですけど、送信者IDがへんなのになってしまうんです
SMSの機能はリージョンに依存するみたいだよ

 

Laravel + AWS でショートメッセージを送信しようとしました。

$sns = App::make('aws')->createClient('sns');

$sns->publish([
  'Message' => 'テストです',
  'PhoneNumber' => '+810000000000',
]);

このコードで送信自体はすんなりできたのですが(すごく簡単)、送信者のところに”NOTICE” と表示されてしまいます。

これは送信者IDを指定しなかったときのデフォルトのIDのようで、以下のように送信者IDを指定して送信してみました。

$sns = App::make('aws')->createClient('sns');

$sns->publish([
  'Message' => 'テストです',
  'PhoneNumber' => '+810000000000',
  'MessageAttributes' => [
    'AWS.SNS.SMS.SenderID' => [
      'DataType' => 'String',
      'StringValue' => 'TestSender'
    ]
  ]
]);

 

すると今度は「+141xxxxxxxx」のような送信者IDになってしまって指定したIDが表示されません。

ひとしきり悩んだ結果、AWSのリージョン設定が ap-northeast-1 (東京) になっていたことが原因だとわかりました。

リージョンを us-east-1 にしたら送信者IDが表示されるようになりました。

東京リージョンでは送信者IDに対応していない?

リージョンが us-east-1 だと距離が遠いのですが、特に遅延などの機能的なデメリットはなさそうでした。