自分がSMSサービスの技術選定を間違えて大変なことになったので、他にも犠牲者が出ないようにここに伝記を残しておきます。
自分の背景
担当しているサービスでSMS認証を導入することになって、SMS認証機能の実装を任されることになった。海外にもユーザーがいるサービスだったので、海外への送信にも対応したサービスを選ぶました。
何が起きたか?
SMS経路には国際網接続、国内直収接続、キャリア直接接続 の3パターンがあります。
送信率は右に行けば高くなっていきます。体感ですが、国際網接続の送信率は70%ぐらいでSoftbank系列に対しての送信だと30%ぐらいになります。
この時点で察した人もいるかと思いますが、僕は国際網接続のユーザーからSMS認証ができないという問い合わせが発生しました。
解決策:国ごとに送信経路を分ける
送信率を最大化するためには、国ごとに適切な送信サービスを選択する分岐処理をアプリケーション側で実装する必要があります。
これにより、到達率が安定し、ユーザー体験の改善と問い合わせ削減につながります。
補足
国際網接続は価格が国内に比べて安いので、スイッチングすることで価格的にも良いです。
(国際網接続は一通19円で、国内直収接続・キャリア直接接続は一通9円ぐらいです。)
・AWS SMSの料金仕様(国際網接続)
・SMS LINKの料金仕様(国内直収接続・キャリア直接接続)
それと運用面でおすすめな体制は、SMS送信はハック対策として、レート制限をいれるかなと思います。中には稀に何回やってもSMSが届かないユーザーがいます。
そのユーザーにも対応できるように別のSMSサービスで直接手動でSMSを送れる体制を作っておくとCS周りが楽になります
比較表
| 経路 | 到達率(目安) | 料金(1通あたり) |
|---|---|---|
| 国際網接続 | 70%(SoftBank系は30%程度) | 約19円 |
| 国内直収接続 | 約98% | 約9円 |
| キャリア直接接続 | 約98〜99% | 約9円 |
まとめ
- 国際網依存はSMS送信のアンチパターン
- 国ごとに送信経路を分ける設計が必要
- これにより 到達率向上・カスタマーサポートコスト削減 を実現できる