はじめに
最近上場したTwilioをはじめ、SMS(ショートメッセージサービス)を送れるサービスはたくさんあり、送ること事態は簡単にできる。
しかし、普通に実装すると落とし穴が存在するので、その落とし穴に落ちないためのマニュアル。
今回は、個人認証をするために、SMSで認証番号を送る部分を作成したので、その時にどのような対応をしたかを書く。
TL;DL
-
Twilioだけでは、SMSが届かない人が
7%30%いる → SMSは、その国の配信事業者で、到達率が高いものを使おう -
それでも届かない人へ向けて → SMS通知以外の手段も用意しよう。たとえば音声通知など
SMSの基礎知識
なぜSMSを使うか
- メールに比べると、開封率が高い
- 迷惑メールなどにまぎれない
- 到達確認が可能
- MNP制度(ナンバーポータビリティ)による宛先変更が少ない
- アカウントの複製が困難(回線を用意する必要がある)
送受信の方法
- パケット通信ではなく、回線交換ネットワーク上での通信
- ネットワーク事業者(SMSC)によって回線ネットワークが違う
出典 : http://uncw.edu/itsd/documents/computer-sms_pdf.pdf
SMS送信サービスの選び方と、その理由
選ぶときに重視すること
- (その国で)到達率が高いサービスを利用する
- その国のネットワーク事業者に直接送信できるサービス
なぜ到達率に差が出るのか
到達しない理由は、大きく分けると以下の3つの理由になる。
- ネットワーク事業者(SMSC)へつながらない
- ネットワーク事業者(SMSC)でフィルタリングされている
- たとえば送信元の電話番号や、メッセージにURLが入っているetc
- SMSに対応していない(SMS無し契約)
届かない場合、具体的に起こっていること
- 別のネットワーク事業者に送信しようとしている
- SMSサービスが持っているネットワーク事業者の情報が古い
- 例)MNPされた情報が更新されておらず、以前のネットワーク事業者に送信処理を行う
- SMSサービスが持っているネットワーク事業者の情報が古い
- フィルターにひっかかっている
- 利用している電話番号がブラックリストに乗っている
- 国際SMSなどの理由により、不正なサービスと判断されている
- メッセージ内に不適切なテキストが含まれている
- URLが記載されている、入力されてはダメな文字列が含まれているetc
各サービス比較表
サービス名 | 初期費用 | 月額 | 円/1送信 | 到達率(日本国内) | SDK | 備考 |
---|---|---|---|---|---|---|
Twilio | 無料 | 無料 | 8~9.6円 | 70% | あり | 国際SMSでの送信 |
EZSMS | 無料 | 無料 | 10~50円 | 不明 | なし | ポイント式(前払い) |
空電プッシュ | 105,000円~ | 50,000円~ | ~8円 | 日本国内の全端末をカバー(※数値での説明なし) | なし | BtoB契約 |
AOS SMS | 30万円 | 10万円 | 15円 | 99.9% | 不明 | BtoB契約、月15万円で3カ月までトライアル利用可能 |
それでも届かないときのために
SMS以外の手段を用意する
どれだけこちら側で万全を尽くしても、SMSが100%届くとは限らない。
SMSを送る目的にもよるが、必ず代替手段を用意しておく。
電話番号の本人確認を行いたい場合
指定の電話番号に掛けてもらって、自動音声応答装置(IVR)で対応できる。
もちろん、電話番号の確認の場合、番号通知をしてもらう必要がある。
電話料金は掛けた人が負担することになるが、
電話してもらえばネットワーク事業者のフィルタなどに引っかかることなく、
かかってきた電話番号をもとに認証コードをお届けできる。
その他
あまり本人確認以外で、100%届けなければいけない、というパターンが思い浮かばないが、何らかの連絡の場合は、その人へのメールも送信するなどが考えられる。