🐸

SMS受信サービスを使ってみた(使ってみてない)

2021/03/21に公開

序文

最近ユーザ認証にSMS利用を強要するサービスが増えてきたのやめて欲しいって話題をちらほら目にする。
確かにSMS認証は身近な人間からのソーシャルハックのリスクが高いように思うし、セキュリティ以外の面でもそもそもSMS持ってないとかもある。そして個人的に身近な話としては、チームでシステム開発とかやってる際にSMS認証必須だと試験用アカウントの共用がやりにくくなるのが非常に面倒だなぁと思う。

今後SMS認証必須なサービスが増えてくるようだと、SMS受信をマルチ転送するサービスとか、SMS受信箱サービスとか、サーバレス関数でSMS受信を処理できるサービスとかが欲しくなるよなぁ。

今日はちょっと時間あるし、何か試してみるか。

Twilio を試した→ 結論:日本の番号(+81)で使えない

まず思いついたのはその手のテレなんちゃら系のサービスとして老舗な Twilio だった、電話のコール何かは昔からこれを使った自動化処理なんかで色々お世話になってるやつ。
SMS送信もできるし、SMS受信もできるんじゃんね?と思ってドキュメント確認してみたらSMS受信も出来るみたい。ってことで試してみよう!

結論として Twilio は使えなかった。自分が必要なのは日本(+81)のSMS利用可能な番号だが、Twilio の番号購入メニューで日本をエラー部とSMSが使えない…。通話や留守電用のボイス系サービスになら使えるがSMSの送受信が可能な日本の番号は取得できない事がわかった。(他の国の番号で良ければ取れるが今回は日本の番号が欲しかったので)

Xoxzo を試した→ 結論:料金高すぎて無理

登録→ APIユーザ作成=トークン取得→ curlでAPI(まずはSMS送信)実行確認。までが面倒なステップ無しですぐ使えた。
管理画面もわかりやすくドキュメントも日本語で充実してて分かりやすいしすぐに使える curl サンプルもあってよい。さて、SMS送信は一瞬でできたけど受信はどうだろう?ユーザ作成移行の操作(電話番号の取得とか)は特にWEB-UIがは見当たらない。基本APIでやるようだ。

ドキュメントページを「受信」で検索、即見つかったので順に試していこう。

APIを試す(取得可能番号一覧→ 番号取得→ 取得番号でSMS送信→ 取得番号でSMS受信)

まずはAPIユーザ作成

これは WEB UI から行う。ボタンぽち→ニックネーム入力→作成で即出来る。

作成したら「使用例」を押すと curl のワンライナーがコピペできるので実行するとSMS送信の試験が出来る。

curl -u SID:TOKEN --data-urlencode 'recipient=+8190XXXXXXXX' --data-urlencode 'sender=kawaz' --data-urlencode 'message=こんにちは' https://api.xoxzo.com/sms/messages/

[{"msgid":"sejdABHuGp5PKM16wEytzcnR0FU7COLJ"}]

で、サクッとスマホにSMSが来た。

でもコピペしたコマンドで recipient は自分の番号にしてそこで受信できたが、 sendermessage は適当文字列のまま。よく見るとSMSは届いたが特に指定したパラメータや本文が使われてる様子もない。これは多分 sender が本番用じゃないとか、課金が必要とかそいういうことかな?
この時点でダッシュボードに最初から表示されていたクレジットの値が 50 から 40 に減ってた。どうやらSMS送信は10クレジット消費するようだ?(1クレジットが何円なのかはまだ知らんが…)

ていうか本文よく見たら支払い方法を設定しろって書いてあるぽいな。

取得可能番号一覧

まずは番号の取得から取得可能な番号一覧をGETする。

curl -s -u SID:TOKEN https://api.xoxzo.com/sms/sins/ | jq '.|map({tel:("0"+.sin[2:])}+.)|sort_by(.tel)[]' -c

↓番号が見やすいようちょい加工したJSON

{"tel":"07040347227","sin_uid":"JPHKxa2kJsbuij8z","country_code":"81","prefix":"70","sin":"817040347227","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"07040686682","sin_uid":"JP6BQ3U02Dnr8odI","country_code":"81","prefix":"70","sin":"817040686682","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"07044435498","sin_uid":"JP60RnVFLxwIKhJk","country_code":"81","prefix":"70","sin":"817044435498","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"07044455284","sin_uid":"JPcZ1eIXwnt2sS7R","country_code":"81","prefix":"70","sin":"817044455284","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"07044522632","sin_uid":"JPrChP4BSxyRZ9sL","country_code":"81","prefix":"70","sin":"817044522632","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"07044584598","sin_uid":"JP7YGu9HyNwdvaF8","country_code":"81","prefix":"70","sin":"817044584598","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"08092164500","sin_uid":"JPM9i1JGBHfx4ya6","country_code":"81","prefix":"80","sin":"818092164500","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"08095782093","sin_uid":"JP4OBtYj5iHosGv3","country_code":"81","prefix":"80","sin":"818095782093","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"08095785478","sin_uid":"JPgDxrXPoZyuAJlm","country_code":"81","prefix":"80","sin":"818095785478","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}
{"tel":"08099952035","sin_uid":"JPc7P2QYy4qSW0n1","country_code":"81","prefix":"80","sin":"818099952035","monthly_cost":7500,"message_rate":3,"initial_subscription_cost":37500}

適当な番号を自分用に取得する

次に適当な番号を選んで実際に取得してみる。

curl -u 3v8Ke0hEY17ji6OHQTIturWCdXFk25Jp:cs4fjy8vkeqm52nhiz719a3ot0bpw6ul -d 'sin_uid=JPc7P2QYy4qSW0n1' https://api.xoxzo.com/sms/sins/subscriptions/

{"non_field_errors":"Not enough credits, required: 37500.00"}

おっふ…、どうやら番号取得には最初に貰える無料クレジット(50)では全然足りない模様…。てか 37500.00 ていくらだ?3万7500円とかだったら流石にちょっと試験進めるの躊躇するぞ…。

料金高すぎ問題

クレジットの購入ページを見るとどうやら1クレジット=1円のようだ。え、じゃSMS受信まじで37,500円なのかよ!?
え、購入したクレジットに使用期限とかもあるの!?しかも90日!?短すぎだろそれ…。いや待て?最終利用から90日ならまぁ…ワンちゃんあるか?て思って確認したら「取得から90日」かよ!?ナイナイあり得んわそれは。

料金ページも見つけた(トップやホームにも無く、ヘルプとかドキュメント内を探し回ってようやく発見、なんで料金ページがこんなに見つけにくいんだ…)
https://www.xoxzo.com/ja/about/pricing/

なるほどSMS受信を利用するには↓この料金がかかるのね。

  • 初期: 37,500円
  • 月額: 7,500円/月
  • 受信: 3円/通

…てか受信3円はまだしも、月額と初期費用が高すぎでしょこれ…。
初期2000円、月額200円くらいだったら試しやすいんだけど。
あと仮に仕事で使うにしたら適当に10万円くらいチャージして使うことになると思うんだけど、クレジット期限90日がありえなさすぎて…。これは無理。

結論

とりあえず「SMS受信 サービス」とかでググって目に止まった2つのサービスを試してみたが、どっちもニーズに合わなくて頓挫した。

今日時点の結論:楽天モバイル契約してラズパイでSMS受信サーバ作るのが自由度&コスパ的に一番良さそう!

続き> SMS受信サービスを使ってみたNEXT 〜海外番号編〜

Discussion