メインコンテンツまでスキップ

📱 WhatsApp Cloud API

WhatsApp は Meta の Cloud API を通じて接続されます — これは公式の無料ティアで利用可能な API で、自分のサーバーから WhatsApp メッセージの送受信ができます。サードパーティの BSP(ビジネスソリューションプロバイダー)は不要です。


前提条件

  1. developers.facebook.com での Meta 開発者アカウント
  2. Meta Business アカウント(Business Manager とも呼ばれます)
  3. WhatsApp 用の電話番号(個人の WhatsApp に登録されていないもの。SIM、仮想番号、固定電話が使用可能)

セットアップ手順

1. Meta アプリを作成

  1. developers.facebook.com/apps にアクセス
  2. Create App をクリック
  3. Business タイプを選択
  4. 名前を入力し、Business アカウントを接続

2. WhatsApp プロダクトを追加

  1. アプリのダッシュボードで Add Products to Your App までスクロール
  2. WhatsAppSet Up をクリック
  3. Business アカウントを選択

3. 認証情報を取得

アプリダッシュボードで WhatsApp → API Setup に移動:

認証情報場所
Phone Number ID"From" セクションに記載 — 123456789012345 のような数値 ID
Access Tokenこのページに表示される一時トークン。本番環境では、System Users 経由で永続トークンを生成してください。
App Secretアプリダッシュボード → Settings → Basic → App Secret
Verify Token自分で決める文字列 — 任意のランダム文字列、例:my_secret_verify_token_2024

4. PulseHub でチャネルを追加

  1. チャネル → チャネルを追加 に移動
  2. WhatsApp を選択
  3. 4 つのフィールドをすべて入力
  4. チャネルを保存 をクリック
  5. チャネルカードに表示された Webhook URL をコピー

5. Meta で Webhook を設定

  1. Meta アプリで WhatsApp → Configuration に移動
  2. Webhook セクションの横の Edit をクリック
  3. Callback URL: PulseHub の webhook URL を貼り付け
  4. Verify Token: PulseHub に設定したのと同じ文字列を入力
  5. Verify and Save をクリック

Meta が webhook URL に ?hub.mode=subscribe&hub.verify_token=...&hub.challenge=... 付きの GET リクエストを送信します。PulseHub がトークンを検証し、challenge を返します。

  1. Webhook Fieldsmessages をサブスクライブ

6. テスト

ビジネス番号に WhatsApp メッセージを送信します。数秒以内に PulseHub の受信トレイに新しい会話として表示されるはずです。


署名検証

Meta はすべての webhook に X-Hub-Signature-256 ヘッダーを含めます:

X-Hub-Signature-256: sha256=abc123...

PulseHub は App Secret を使用した HMAC-SHA256 で検証します。検証に失敗した場合、webhook は 401 Signature mismatch を返します。


メッセージ送信

エージェントが受信トレイから返信を送信すると、PulseHub は WhatsApp Cloud API を呼び出します:

POST https://graph.facebook.com/v18.0/{phone_number_id}/messages
Authorization: Bearer {access_token}
{
"messaging_product": "whatsapp",
"to": "{recipient_phone}",
"type": "text",
"text": {"body": "返信内容をここに"}
}

本番環境へのアクセス

デフォルトの Meta アプリは Development モードです — テスト番号として追加された番号にのみメッセージを送信できます。本番環境に移行するには:

  1. Meta Business Manager でビジネス認証を完了
  2. WhatsApp のユースケースを Meta のレビューに提出
  3. 承認されると、すべての WhatsApp ユーザーにメッセージを送信できるようになります

よくある問題

症状考えられる原因
webhook セットアップ中に検証が失敗PulseHub の verify_token が Meta に入力したものと一致しない
ログに署名不一致エラーapp_secret が間違っている — App Settings → Basic からコピーし、API Setup からはコピーしない
メッセージが届かないMeta ダッシュボードで webhook フィールド messages がサブスクライブされていない
送信時に Invalid phone number番号形式は + なしの E.164 である必要がある(例:15551234567
Development モードアプリエラーdev モードでは認証済みテスト番号のみがメッセージを受信可能