TwilioのSMSでオプトアウトを自動化する


はじめに

みなさん、こんにちは。
KDDIウェブコミュニケーションズ Twilio エバンジェリストの高橋です。

最近のSMS動向

SMSって最近非常に増えてきましたね。
実際、メールに比べて到達率が高くユーザーの反応も非常に早いことから、SMSをマーケティングツールとして活用しようという動きが加速してきています。

しかし一方で、SMSを使ったフィッシング詐欺も増えてきていて、社会問題化されるようになってきました。そのため一部のキャリアでは、フィッシングSMS対策機能を提供するとのニュースも届きました。
ドコモとソフトバンク、フィッシングSMS対策機能を提供--利用料は無料

SMSが広く普及している米国では、すでにSMSへの規制が厳しくなってきていて、配信事業者はルールを厳守しなくては罰金を課されることもあります。
Twilioもこうした動きと連携し、罰則を設けています。詳しくはこちら
現在のところこの罰則については、米国内への配信が対象となっているため、現時点では日本宛のSMS送信には適用されません。
ただし、この流れは日本でも今後加速してくると予想されていますので、これからSMSを使ったサービスを提供される方や、すでにSMSをご利用中の皆さんも対岸の火事では済まされません。

SMSを安全に運用するために

米国ほど規制が厳しくない日本において、ユーザーからの信頼を得たSMS送信をするためにはどうすればよいでしょうか。
現時点で考えるられる対策は以下のとおりです。

  • Alphanumeric Sender ID を極力使わない
  • オプトイン・オプトアウトの仕組みをしっかり作る

Alphanumeric Sender ID とは

TwilioのSMS送信は、高品質SMSサービスを除いて、海外ルートから配信される国際SMSになります。そのため、送信元電話番号は海外の番号が利用されます。Alphanumeric Sender ID を利用することで、海外の電話番号を文字にして送信することができるのが、Alphanumeric Sender ID です。

たとえば、企業がSMSを送信する際に、海外の番号ではなく企業名で送信が可能になるため、利用したいと考えるのは至極当然です。しかし、この機能は送信主を認証しているわけではないので、たとえば悪意のある第三者が、その企業と同じ名前を騙ってSMSを送信することもできてしまいます(一応、著名な企業名などはチェックされますが、一般企業ではチェックの対象にはなりません)。

すなわち、Alphanumeric Sender ID を使って、企業ブランドでSMS送信をすることは、逆にフィッシングのターゲットにもなり得ることを意味します。なので、安全なSMSを運用するためには、現時点では極力 Alphanumeric Sender ID は使わず、海外の番号をそのまま利用して送信したほうがよいです。そして、SMSを送信する番号はこの番号ですというアナウンスを行うことです。
ちなみに、Twilioの提供する Alphanumeric Sender ID は、数字だけの指定ができないため、電話番号を使ってのなりすましはできません(他の事業者のことはわからないので、なりすまし自体を否定しているわけではありません)。

オプトイン・オプトアウト

SMSを送信する前に、ユーザーに対して同意を得る行為を「オプトイン」、送信後にユーザーからの配信停止に対応する行為を「オプトアウト」といいます。これらはどちらも非常に重要な手続きで、SMSを送信するサービスを構築する際には必ず必要となります。

ここで重要なことは、ユーザーが主体となっていることです。これはすなわち、ユーザー自身が購読も停止もコントロールできることを意味します。

たとえばオプトインを実現する方法としてよくあるのが、ユーザーの電話番号を取得する際に利用規約に同意してもらうことです。また、電話による問い合わせに対してその場でSMSを送信するようなケースでは、IVR もしくは口頭ベースで配信の許可を行うことになります。

一方、オプトアウトについては少し面倒です。メールなどでは、メール内に配信停止リンクを設定することで、ユーザー自身での配信停止が可能になっているケースがほとんどですが、SMSの場合はちょっと事情が異なります。

まず、SMSで送信できる文字数は限られているため(通常、全角70文字)、あまり長い文章を入れたり、URLを貼り付けることが難しいケースが多いです。もちろん、70文字以上のSMSを送信することも技術的にはできます(コンカチSMS)が、その分送信料が高くなります。
そのため、別途ユーザーサイト上に配信を停止するボタンを設置したり、問い合わせ窓口経由で配信停止を行うなど、実はSMS配信を停止する仕組みを実装するのはハードルの高い作業なのです。

オプトアウトを自動化する

メルマガなどでは、件名や本文に「配信停止」と記載することで自動的に配信が停止する機能があります。同様に、SMSでも「配信停止」とユーザーに送信してもらうことでオプトアウトが実現できれば便利そうです。もちろん、そのことは、たとえば以下のように、初回のSMS送信の際に事前にユーザーに通知しておくとよいでしょう。

初回のSMS送信文の例

ご登録ありがとうございます。弊社からのSMSは、こちらの番号からのみ送信されます。配信停止は、「配信停止」と送信してください。

実装はどうするか

では、この仕組みを実装する方法について考えてみましょう。

Twilioの国際SMSは、ユーザー側からの送信についてキャリアの高額な国際SMS料金がかかるため、基本的には企業側からの送信のみの運用としているケースがほとんどです。そのため、Twilio 上の設定で、メッセージを受信したときのWebhookを空欄にして運用します。

こうすることで、仮にユーザーからSMSが送られてきたとしても、着信は拒否され、課金されることはありません。

一方、自前で上記のようなオプトアウトを実装しようとすると、以下のような作業が必要になるでしょう。

  • SMSの着信を許可する(配信停止以外のメッセージでも課金が発生します)。
  • 「配信停止」と書かれていた場合は、その番号をデータベースなどに記録するプログラムを作成し、それを電話番号の着信動作として実装する。
  • SMSを送信する際には、そのデータベースを参照し、登録されている電話番号には送信しないように制限をかける。
  • 必要に応じて、配信を再開する仕組みも実装する。

どうです?面倒ですよねー。
でも、Twilio には、オプトアウトを自動化する仕組みがあるのです!

では実際に、オプトアウトの自動化と、配信再開の自動化を実装してみましょう。

Messaging サービスの設定

SMSのオプトアウトを自動化する設定は、Messaging の設定項目の中に存在します。

Messaging サービスの作成

  • 管理コンソールにログインします。
  • Messagingの中のServicesを選択します。

すでにメッセージングサービスが存在する場合は、そちらのメッセージングサービスを選択して、Messaging サービスの設定に進んでください。

  • Create Messaging Serviceボタンを押します。

  • Messaging Service friendly name欄には、適当な識別子(例えば「SMS」)を入力します。
  • Select what you want to use Messaging forのリストボックスは、「Notify my users」のままにしておきます。
  • Create Messaging Serviceボタンを押します。

  • そのまま、Step 3: Set up integrationボタンを押します。

  • Incoming Messagesの中の選択肢から、「Drop the message」を選択します。
  • Step 4: Add compliance infoボタンを押します。

  • Complete Messaging Service Setupボタンを押します。
  • 以下のようなダイアログが表示されます。

  • View my new Messaging Serviceの方のボタンを押します。

メッセージングサービスの設定

作成されたメッセージングサービスのサブメニューの中に、Opt-Out-Managementという項目があるので、そちらを選択します。

  • Language-Specific Opt-Out Keywordsの中にある、Add Opt-Out Keywordsリンクをクリックします。

  • Languageのプルダウンリストから「Japanese」を選択します。

続けて、その下の設定も行います。

  • Opt-outの中のKeywordsに、ユーザーが配信停止をするために入力するキーワードを登録します。今回は「配信停止」と入力します。
  • Confirmation Messageには、配信を停止した旨のメッセージを入力します。今回は、「配信を停止いたしました。再開をご希望の際は、「配信開始」というメッセージを送信してください。」と入力します。
  • Opt-inの中のKeywordsには、一度配信を停止したユーザーが配信を再開したい場合のキーワードを登録します。今回は「配信開始」と入力します。
  • Confirmation Messageには、配信を開始した旨のメッセージを入力します。今回は、「配信を開始いたしました。停止をご希望の際は、「配信停止」というメッセージを送信してください。」と入力します。

続いて、その下の設定もしていきましょう。

  • Helpの中のKeywordsには、ユーザーからの問い合わせキーワードを登録します。今回は「ヘルプ」と入力します。
  • Confirmation Messageには、対応するメッセージを入力します。今回は、「お手数ですが、サービスサイトからお問い合わせください。」と入力します。

  • Saveボタンを押して設定を保存します。

では最後に、この自動オプトアウトを有効にしましょう。

  • 画面上部にある、Enable Advanced Opt-Outボタンを押します。
  • Opt-Out Managementの右側に、Enabledと表示されれば設定は有効です。

SMS番号の設定

続いて、電話番号側の設定をしていきます。
今回はすでにSMS送信用の番号として、US番号を1つ購入しているものとします。

  • 管理コンソールのPhone Numbersから、Active numbersを選択します。
  • 購入済みの電話番号一覧が表示されるので、設定した電話番号を選択します。

  • Voice & Faxの中のA CALL COMES INが「Webhook」になっていて、さらにその下が空になっていることを確認します。もし、空になっていない場合は設定を削除しておいてください。

次にMessagingの項目を設定していきましょう。

  • MESSAGING SERVICEのプルダウンリストから、先程生成した、もしくは設定した Messaging Service を選択します。
  • A MESSAGE COMES INは、「Webhook」が選択されており、その下が空になっていることを確認します。もし空になっていない場合は設定を削除しておいてください。

  • 以上で設定は完了です。Saveボタンを押して、設定を保存します。

テスト

ではいよいよテストをしましょう。
先程設定した電話番号を使って、実際にSMSが送信できることを確認します。

では次に、「配信停止」と送信してみましょう。

先程登録した確認メッセージが正しく表示されることを確認します。もし、メッセージが戻ってこない場合は、 Opt-Out Management が有効になっていない可能性がありますので、先程の手順をもう一度確認してみてください。
ちなみに、この確認メッセージについては、Twilio上にはログとして記録されず、課金もされません。

ではこの状態で、もう一度Twilio側からSMSを送ってみましょう。
今度は、ユーザーが配信停止をしているのでメッセージが送れないというエラーが戻ってきます。

Error code 21610 from Twilio: Attempt to send to unsubscribed recipient. See https://www.twilio.com/docs/errors/21610 for more info.

もちろん、ユーザー側にはメッセージは配信されていません。また、この送信については、Twilio上のログにも記録されませんし、課金もされません。

このオプトアウトの仕組みは、発信元の電話番号と相手先の電話番号のペアで管理されるため、たとえば送信用に別の番号を取得し、同じ Messaging Service を割り当てたとしても、送信元番号が違えばオプトアウトは引き継がれません。

まとめ

オプトアウトの自動化についてのまとめです。

  • オプトアウトの自動化は、Messaging Service のオプションとして提供されます。
  • Messaging Service の料金はSMSの料金に含まれるため、オプトアウトも無料で利用できます。
  • 番号の設定でWebhookを指定しない状態でもオプトアウトは利用できます。
  • 配信停止、配信開始の確認メッセージは、Twilio側で自動的に送信され、ログにも記録されず料金もかかりません。
  • 配信停止状態のユーザーへのメッセージもログには記録されず、料金もかかりません。
  • 配信停止は、送信元番号と配信先番号のペアで管理されています。
  • 配信停止中のユーザーからのメッセージについては、Webhookが設定されていれば処理は可能です。

今回は、あまり知られていないけれど、とても便利な機能として、オプトアウトの自動化について解説をしました。この他にもSMS送信サービスをご検討中の方で、ご質問やご相談がある方は、ぜひ毎週水曜日に開催しております相談会にお申し込みください。
相談会の申し込みはこちらです。


Twilio(トゥイリオ)とは

https://cloudapi.kddi-web.com
Twilio は音声通話、メッセージング(SMS /チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウド API サービスです。初期費用不要な従量課金制で、各種開発言語に対応しているため、多くのハッカソンイベントやスタートアップなどにも、ご利用いただいております。

自己紹介  
高橋克己(Katsumi Takahashi) 自称「赤い芸人
グローバル・インターネット・ジャパン株式会社 代表取締役
株式会社KDDIウェブコミュニケーションズ Twilio事業部エバンジェリスト

2001年より大手通信事業者の法人サービスの教育に携わり、企業における電話のしくみや重要性を研究。2016年よりTwilio事業部にジョインし、Twilioを使ったスマートコミュニケーションの普及活動を精力的に行っている。
2015 Hall of Doers
2019 Twilio Champions