Twilio Studioでゲームメンテナンス通知システム作ってみた【開始&終了の両方】

Twilio Studioでゲームメンテナンス通知システム作ってみた【開始&終了の両方】

Classmethod SaaSで加速するゲーム開発 Advent Calendar 2025の6日目となります! Twilio Studioでゲームメンテナンス通知システムを作ってみました!
2025.12.06

こんにちは、昴です。
本ブログはClassmethod SaaSで加速するゲーム開発 Advent Calendar 2025の6日目のブログとなります!
今回はTwilio Studioでゲームメンテナンス通知システムを作ってみました。

はじめに

Twilioとは、音声通話やSMS、WhatsAppなどの通信機能をAPI経由で簡単に実装できるクラウドコミュニケーションプラットフォームです。特にTwilio Studioは、コードを一切書かずにドラッグ&ドロップのGUI操作だけで、複雑な通信フローを構築できるツールです。視覚的にフロー図を作成するだけで、SMS送信や音声通話、条件分岐などを組み合わせた自動応答システムが作れます。

今回はTwilio StudioでSMS通知システムを作成し、ゲームのメンテナンス通知を自動配信する仕組みを構築してみました。

ゲーム運営でよくあるのが、「アプリを開いたらメンテナンス中だった」というユーザーの不満です。アプリ内通知やプッシュ通知だけでは、アプリを開かないと見えません。公式Twitterで告知しても、フォローしていないユーザーには届きません。そこで、SMSという確実に届く手段を使ってメンテナンス通知を送る仕組みを作ります。

ただし、メンテナンス開始の通知だけでは不十分です。ユーザーにとって本当に嬉しいのは「メンテナンスが終わったよ!もうプレイできるよ!」という終了通知です。開始通知は「今プレイできないんだな」という情報ですが、終了通知は「今すぐプレイできる!」という行動を促す情報になります。今回は開始と終了、両方の通知システムを作成していきます。

対象読者

  • ゲーム運営でメンテナンス通知の改善を検討している方
  • Twilio Studio で SMS 通知フローを組んでみたい方
  • Twilio は触ったことがあるが、Studio の REST API トリガーは初めての方

前提・検証環境

  • Twilio アカウント
  • SMS 対応の Twilio 電話番号を 1 つ取得済み

今回やること

今回やることは以下の通りです。

Twilio Studioでメンテナンス開始通知のフローを作成する。
同じくメンテナンス終了通知のフローを作成する。
それぞれのフローをREST API経由で呼び出せるようにする。
実際にSMSを送信して動作を確認する。

メンテナンス開始と終了、2つの異なる通知を送り分ける形で作成していきます。

メンテ通知全体像

実践

フローの構築

それではフローを構築していきます。
まずコンソールのStudioに移動し、Create new Flowを選択します。

create new flow

フローの名前は「メンテナンス開始通知」と入力し、フローを初めから作成するため「Start from scratch」を選択します。

フローテンプレート選択

下記がTwilio Studioの初期画面になります。トリガーからウィジェットを繋げてフローを作成していきます。

フロー作成初期画面

メンテナンス開始通知

まずSend Messageウィジェットを使用します。トリガーのREST APIからSend Messageウィジェットに接続します。ウィジェット内の設定として、送信先と本文の設定をしていきます。

【TO】:SMSの送信先は、APIリクエストで送られてくる電話番号を使用します。Send message Toに{{contact.channel.address}}を入力します。

Twilio-Send Message-To

【Message Body】:通知の本文です。終了時刻や理由をAPI経由で受け取る変数として本文に組み込みます。

Twilio-Send Message-本文

本文の作成と接続が完了したら、画面上部の 公開(Publish) ボタンを押してフローを公開します。
Triggerウィジェットを選択すると表示される「REST API URL」が、外部システムからこのフローを呼び出すためのアドレスになります。これを控えておきます。

フロー公開とWebhookURL①

メンテナンス終了通知

ユーザー体験において特に重要な「メンテナンス終了」の通知も、メンテナンス開始とは別のフローとして作成します。
新規で「メンテナンス終了通知」という名前のフローを作成し、同様にトリガーのREST APIからSend Messageウィジェットに接続します。

ウィジェット接続(メンテ終了通知)

Send Messageウィジェットも同様に下記のように設定していきます。

【TO】:{{contact.channel.address}}

【Message Body】:終了通知のメッセージは、ユーザーに「すぐにゲームに戻りたい」と思ってもらえるよう、ポジティブな文面にする。

Twilio-Send Message-本文②

こちらも同様に 公開(Publish) し、REST API URLを控えておきます。これで、2種類の通知をAPIで送り分ける仕組みが整いました。

フロー公開とWebhookURL②

補足 送信元番号の確認ー

Send Messageウィジェットの設定画面には「Send message from」という項目があります。ここに、SMSの送信元となるTwilioの電話番号(またはMessaging Service SID)を設定します。

  • 初期設定値:デフォルトでは {{flow.channel.address}} となっています。これは、フローが起動したチャネルの番号を使うという意味です。

  • 推奨設定:今回は外部API(REST API)で起動するため、ご自身がTwilioコンソールで取得済みの電話番号、またはメッセージングサービスID (MessagingServiceSID) を直接入力することで、どの番号から送られるかを明確に指定できます。

確認

それでは実際に通知を行って動作を検証していきます。
実運用においては、ゲームのバックエンドシステムや運用ツールから、ユーザーのデータベースを参照し、メンテナンス対象となる全ユーザーの電話番号一覧を抽出し、それらをAPI経由で一括送信することになります。
しかし、今回はTwilio Studioの動作検証が目的です。そのため、事前に確認しておいたREST API URLを使用し、cURLコマンドを使って、テスト用の電話番号に通知を送信して確認していきます。

メンテナンス開始通知

まずはメンテナンス開始通知からテストします。APIリクエストのJSONデータに、変数となるend_timeとmaintenance_reasonを渡します。

$ curl -X POST 'https://studio.twilio.com/v2/Flows/FW****/Executions' \
  -u 'ACCOUNT_SID:AUTH_TOKEN' \
  --data-urlencode 'To=+819012345678' \
  --data-urlencode 'From=+819099999999' \
  --data-urlencode 'Parameters={"end_time":"15:00","maintenance_reason":"緊急サーバー増強作業"}'

上記のコマンドを実行し、end_timeやmaintenance_reasonがフロー内の変数として使用されていることを確認します。 今回はスクリーンショットのように send message ウィジェットの body 部分でこれらの変数を参照することで値が正しく格納されていることを確認しました。

コマンド成功時

{
 "account_sid": "AC**************************", 
 "contact_channel_address": "+8170**********", 
 "context": { }, 
 "date_created": "2025-12-04T04:54:50Z", 
 "date_updated": "2025-12-04T04:54:50Z", 
 "flow_sid": "FW**************************", 
 "links": {
  "execution_context": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN******/Context", 
  "steps": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN******/Steps"
 }, 
 "sid": "FN**************************", 
 "status": "active", 
 "url": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN**************************"
 }

コマンド実行後、指定した電話番号にSMSが届いていることが確認できました。

SMSメンテ開始通知

メンテナンス終了通知

終了通知についても同様にテストします。こちらは開始通知よりもシンプルに、送信先のみを渡します。

$ curl -X POST 'https://studio.twilio.com/v2/Flows/FW****/Executions' \
  -u 'ACCOUNT_SID:AUTH_TOKEN' \
  --data-urlencode 'To=+819012345678' \
  --data-urlencode 'From=+819099999999'

コマンド成功時

{
 "account_sid": "AC**************************", 
 "contact_channel_address": "+8170**********", 
 "context": { }, 
 "date_created": "2025-12-04T04:58:24Z", 
 "date_updated": "2025-12-04T04:58:24Z", 
 "flow_sid": "FW**************************", 
 "links": {
  "execution_context": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN******/Context", 
  "steps": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN******/Steps"
 }, 
 "sid": "FN**************************", 
 "status": "active", 
 "url": "https://studio.twilio.com/v2/Flows/FW****/Executions/FN**************************"
 }

こちらも指定した電話番号にSMSが届いていることが確認できました。

SMSメンテ終了通知

まとめ

今回はTwilio Studioを用いて、ゲームのメンテナンス開始と終了をユーザーに確実にSMSで通知するシステムをご紹介しました。

開始通知と終了通知を別々のフローで作成し、REST APIで簡単に送り分ける仕組みは、運用側の負担を減らしつつ、「メンテナンスが終わったよ!もうプレイできるよ!」というユーザーにとって最も価値のある情報(終了通知)を確実に届けることができます。

アプリを開かないと見えないプッシュ通知や、フォローしていないと見えないSNS告知ではなく、確実に届くSMSを活用することで、「アプリを開いたらメンテ中だった」というユーザーの不満を解消し、ユーザー体験の向上に直結します。サポートコストの削減だけでなく、ユーザーの継続率向上にも繋がるでしょう。

本ブログが少しでも参考になれば幸いです 。

この記事をシェアする

FacebookHatena blogX

関連記事