Twilio Webhooks は、通話や SMS にまつわるイベントを自社サーバーに通知し、通信フローをプログラムで制御するための仕組みだ。Twilio の通信機能を「受け」と「制御」の両面から扱う中核になる。

Webhook が制御の起点になる

着信があると、Twilio は設定された URL に Webhook を投げてくる。サーバーはそれに対して TwiML(通話制御の XML)を返し、「音声を読み上げる」「番号入力を待つ」「別の番号に転送する」といった応答を指示する。つまり Webhook は単なる通知ではなく、対話的な通話フローを駆動する起点になっている。これにより電話自動応答(IVR)システムをコードで組み立てられる。

SMS / MMS の受信通知も同じ仕組みで、SMS の到着をトリガーに業務処理を起動できる。さらに通話ステータス(開始・終了・失敗)やメッセージ配信ステータスのコールバックがあり、「送ったメッセージが本当に届いたか」を追跡できる。送りっぱなしにせず、配信結果を業務ロジックに反映できるのは実務で効く。

セキュリティと再送への備え

公開エンドポイントである以上、リクエスト署名の検証は必須だ。Twilio はリクエストに署名を付けており、これを検証しないと偽のコールバックを受け入れてしまう。あわせて、Twilio はサーバーの応答が得られないと Webhook を再送する。ステータスコールバックの処理は、同じイベントが二重に届いても破綻しないよう冪等に書いておくのが安全だ。

料金の構造と向かないケース

Webhook の受信自体は無料で、課金は通話・SMS の送受信に対して発生する。単価は国や番号種別で大きく変わり、特に国際 SMS や音声通話は宛先国によって桁が変わるため、対象国を固定して見積もる必要がある。電話番号のレンタル料も月額で別途かかる点を見落とさないようにしたい。

なお、Webhook を使わず一方向に SMS を送るだけなら、Twilio API を直接叩く方がシンプルだ。Webhook が要るのは「受信」や「双方向」が絡むときだ。