Twilio TaskRouterで着信の負荷分散する仕組みをつくってみた

Twilio TaskRouterで着信の負荷分散する仕組みをつくってみた

Twilio TaskRouterで着信の負荷分散する仕組みをつくってみた
2025.08.29

こんにちは、昴です。
今回はTwilio TaskRouterで着信の負荷分散する仕組みを構築してみました。

はじめに

Twilioの電話機能を使用していると、一つの番号に対して一度に多くの着信があった場合、どう対処したらいいんだろうかという疑問が生まれたことはないでしょうか?

例えば、キャンペーンの告知直後や障害時の問い合わせなど、通常の何倍もの着信が集中してしまうケースです。そのまま放置すると、顧客の待ち時間が長くなったり、特定のオペレーターに負荷が偏ったりしてしまいます。

そこで今回Twilio TaskRouterという機能について注目していきます。Twilio TaskRouterは着信した電話やチャットを最適な担当者に自動で振り分けてくれる機能になります。

今回は実際にTaskRouterを使って、大量着信時でも効率的に処理できる仕組みを作ってみたいと思います。

設定

TaskRouter

TwilioのコンソールからTaskRouterのWorkspacesへ移動します。移動後、Create new WorkspaceからWorkspaceを作成します。

TaskRouterのWorkspace作成①

Workspaceの名前を入力しSaveで作成します。

TaskRouterのWorkspace作成②

TaskQueue

次にTaskQueueを作成していきます。TaskQueueはタスク(電話やチャットなどの問い合わせ)が一時的に入る「待ち行列」を指します。
作成したWorkspaceを開き、TaskQueuesへ移動します。Create new TaskQueueをクリックし、TaskQueueを作成します。

TaskRouterのTaskQueue作成①

TaskQueueの名前を入力し、Saveで作成します。

TaskRouterのTaskQueue作成②

Worker

次にWorkerを作成していきます。Workerは電話やチャットなどのタスクを受け取る「人」や「端末」を表します。
Workspace内のWorkersへ移動し、Create new Workerから作成します。

TaskRouterのWorker作成①

Workerの名前を入力し、Activityを選択してSaveで作成します。
またAttributesフィールドにJSON形式で実際に繋げる先(Contact URI)を設定します。Twilio Clientのユーザー名やSIPアドレス、電話番号(E.164形式)を指定します。

TaskRouterのWorker作成②

Workflow

次にWorkflowを作成していきます。WorkflowはタスクをどのTaskQueueに振り分けるかを決める「ルールセット」を指します。。
Workspace内のWorkflowsへ移動し、Create new Workflowから作成します。

TaskRouterのWorkflow作成①

名前を入力し、Task queueの項目にて先ほど作成したTaskQueueを選択します。選択後はSaveで作成します。(Filterは1==1を入力し、Routing targetsは先ほど選択したTaskQueueを設定します)

TaskRouterのWorkflow作成②

以上でTaskRouterの設定は完了となります。

Studio

続いてStudioの設定を行います。
今回はTaskRouterに関するWidgetにのみ注目していきます。フローの作成画面へ移動し、Incoming callからスタートします。Say/Play WIdgetの後にEnqueue Call Widgetを接続してWidget内の設定に移ります。各項目(Queue or TaskRouter Task、Task Router Workspace、Task Router Workflow)でこれまでTaskRouterで作成してきたものを選択していきます。

Studio設定20250829

フローが完成したら、Publishでフローを公開し、Twilio番号の「A Call Comes In」設定で、このStudioフローを選択します。
実際に架電があった場合、Say/Playを通ってEnqueue CallからTaskRouterへ移行し、Workflowの条件に従い、TaskQueueにタスクが入る。TaskQueueの条件に合致し、当てはまるオペレーターがいれば割り当てられます。

補足

ユーザーから着信がある場合に考慮するべき点として、同時通話数と同時着信数があります。同時通話数はアカウント単位で上限が250となっており、250人通話中で251人目からの着信があった場合はエラーとなります。(この同時通話数の上限を上げたい場合はご相談ください。)同時着信数は電話番号ごとに100件/秒となっており、1秒の間に100件を超えるとサーバーやシステムの処理能力・設計に依存して少しラグが発生する仕組みとなっています。

まとめ

今回はTwilio TaskRouterで着信の負荷分散する仕組みを構築してみました。
本ブログが少しでも参考になれば幸いです。

告知

Twilio/SendGridセミナーを毎月開催しています

クラスメソッドでは毎月Twilio/SendGridのセミナーを実施しています。

クラスメソッドではTwilio/SendGridのセミナーを毎月開催しております。いずれもTwilio及びSendGridを良く知らない方向けに基本的な部分から解説する内容となっておりますので、今後Twilio/SendGridの導入を検討している方や、既に導入済で改めて基本的な部分を勉強したいと考える方は、是非お気軽にご参加いただければと思います。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.