記事のサマリー(TL;DR)
- Twilio Webhook が WhatsApp の転送メッセージ(テキスト・画像・音声・動画)を受け取り、OpenAI で真偽判定
- 音声・動画は
gpt-4o-mini-transcribeで文字起こし後、gpt-5.4-miniで軽量ウェブ検索付き検証を実施 - 必要スタックは Node.js 20+、express、twilio、openai、dotenv の4パッケージのみ
Twilio × WhatsApp Business API を使った情報検証ボットが国内コミュニケーション基盤に与える影響
WhatsApp は日本国内での普及率こそ LINE に劣るが、インバウンド対応・海外取引先との連絡・グローバル EC の顧客サポートでは実用的な選択肢です。Twilio WhatsApp Business API はすでに国内の業務 SaaS や EC 企業での導入実績があり、本チュートリアルのアーキテクチャ(Webhook → 分類 → OpenAI 判定 → 返信)は、ファクトチェック以外にも「注文確認の自動応答」「画像付き問い合わせの自動仕分け」「音声メモのテキスト化と CRM 連携」などに転用できます。Twilio と Rails 製カスタム UI を組み合わせて業務 SaaS の UI を補完する構成であれば、同様の Webhook パターンをそのまま適用できます。
詳細
作るものの概要
このチュートリアルで完成するのは、以下の機能を持つ WhatsApp ボットです。
- Twilio Webhook 経由で転送メッセージを受信
- プレーンテキストをそのまま LLM に渡して検証
- 画像をマルチモーダルモデルで解析
- 音声メモ・短い動画を文字起こしてから解析
- 時事性・事実性の高いクレームに対してウェブ検索ステップを挿入
- 信頼性評価の短文と、公式ソースが見つかった場合はその URL を WhatsApp で返信
エンドツーエンドのフロー:
- ユーザーがメッセージをあなたの WhatsApp 番号に転送
- Twilio がそのメッセージを Webhook へ送信
- アプリがテキスト/画像/音声/動画を判別
- 音声・動画の場合は先に文字起こし
- コンテンツを OpenAI へ送信して解析
- クレームが事実確認を要する場合、モデルが軽量ウェブ検索を実施
- Twilio 経由でユーザーに短い信頼性評価を返信
前提条件
- Twilio アカウント(WhatsApp Sender または WhatsApp Sandbox)
- OpenAI API キー
- Node.js 20 以上
- ngrok などのトンネリングツール
プロジェクトのセットアップ
[コードは原文をご参照ください]
依存パッケージのインストール:
[コードは原文をご参照ください]
package.json に以下を追加:
[コードは原文をご参照ください]
.env ファイルを作成し、以下の値を設定:
[コードは原文をご参照ください]
アプリは以下の3ファイルに分割します:
src/index.js:Express サーバーと Twilio Webhooksrc/services/media.js:メディアのダウンロードと分類src/services/openai.js:文字起こしと検証
WhatsApp Webhook の構築
src/index.js を作成し、以下を記述します:
[コードは原文をご参照ください]
Twilio は Webhook パラメータをフォームエンコードで送信するため、
express.urlencoded()だけで対応できます。
次に /whatsapp ルートを追加します:
[コードは原文をご参照ください]
画像・音声メモ・動画の処理
src/services/media.js を作成します:
[コードは原文をご参照ください]
Twilio がインバウンドメディアを保存する URL には認証が必要なため、OpenAI へ送る前にアカウント SID と Auth Token でダウンロードします:
[コードは原文をご参照ください]
src/index.js のコメント行を以下に置き換えます:
[コードは原文をご参照ください]
画像はマルチモーダルモデルへ直接送信し、音声・動画は先に文字起こしを行います。OpenAI の音声認識は mp3、mp4、m4a、wav、webm などの一般的な形式に対応しており、WhatsApp の音声メモや短い転送動画に適しています。
OpenAI による文字起こしと検証の追加
src/services/openai.js を作成し、OpenAI クライアントと toFile ユーティリティを初期化します:
[コードは原文をご参照ください]
※ 本記事は Twilio Blog(2026年5月4日公開、著者:Charles Oduk、レビュー:Dhruv Patel)の内容を翻訳・編集したものです。