はじめに
クイックスタート:WhatsApp で最初のメッセージ
WhatsApp メッセージアカウントを接続し、テキストを送信して Webhook で返信を受信します。電話番号によるペアリングを使用します。
はじめる
- 1
API キーを用意する
ワークスペースの API Key、WhatsApp アカウント、公開 HTTPS Webhook を準備します。API Key と署名シークレットはサーバーで保管し、次のリクエストでキーを確認します。
現在の Workspace を取得curl "https://api.unifyport.ai/v1/workspace" \ -H "X-Api-Key: <YOUR_API_KEY>" - 2
Webhook エンドポイントを登録する
最初に登録してください。認証の進行状況とリアルタイム受信メッセージは webhook で届き、取り逃した配信の再送は保証されません。["*"] は公開標準イベントをすべて購読します。WhatsApp HistorySync は限定的な直近の連続性に留まり、永続履歴ではありません。
Webhook エンドポイント作成curl -X POST "https://api.unifyport.ai/v1/webhook-endpoints" \ -H "X-Api-Key: <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/webhook", "status": "active", "subscribed_events": ["*"], "signing_secret": "<WEBHOOK_SIGNING_SECRET>" }' - 3
利用可能なリージョンを確認する
アカウントはリージョンに紐づき、すべてのプロバイダがどこでも稼働するわけではありません。まずプロバイダのリージョン一覧を取得し、allocatable: true のリージョンを選んでください — 割り当てできないリージョンでアカウントを作成すると 409 no_allocatable_server で失敗します。
プロバイダのリージョン一覧curl "https://api.unifyport.ai/v1/providers/whatsapp/regions" \ -H "X-Api-Key: <YOUR_API_KEY>" - 4
WhatsApp アカウントを作成する
選択した割り当て可能なリージョンにメッセージ用アカウントを作成します。WhatsApp の電話番号ペアリングでは auth_mode=code を指定し、provider_data.phone に数字のみの完全な国際電話番号を設定します。返された data.id を後続の account_id として保存してください。
アカウント作成curl -X POST "https://api.unifyport.ai/v1/accounts" \ -H "X-Api-Key: <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "WhatsApp Support", "provider": "whatsapp", "region": "<REGION>", "status": "active", "auth_mode": "code", "provider_data": { "phone": "8600000000000" } }' - 5
電話をペアリングする
保存済みの電話番号を使い、POST /auth/start に {} を送信します。data.verify_code を表示し、利用者が電話の WhatsApp に入力します。/auth/code への送信は不要です。送信前に認証状態と接続状態を確認してください。
コード認証を開始curl -X POST "https://api.unifyport.ai/v1/accounts/<ACCOUNT_ID>/auth/start" \ -H "X-Api-Key: <YOUR_API_KEY>" - 6
送信できる状態を確認
同じ account_id で /auth とアカウント情報を取得し、認証が authorized、runtime_status が running であることを確認します。認証待ちなら続行し、認証済みでオフラインなら実行状態を確認・更新します。
認証ステータス取得curl -X GET "https://api.unifyport.ai/v1/accounts/<ACCOUNT_ID>/auth" \ -H "X-Api-Key: <YOUR_API_KEY>" curl -X GET "https://api.unifyport.ai/v1/accounts/<ACCOUNT_ID>" \ -H "X-Api-Key: <YOUR_API_KEY>" - 7
最初のメッセージを送信する
作成時の account_id を使います。この WhatsApp 例では国際電話番号に @s.whatsapp.net を付けます。返信にはイベントの data.conversation.id を再利用します。他チャネルにこの形式を適用しないでください。
テキストメッセージ送信curl -X POST "https://api.unifyport.ai/v1/messages" \ -H "X-Api-Key: <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "account_id": "<ACCOUNT_ID>", "to": { "id": "8600000000000@s.whatsapp.net", "type": "user" }, "message": { "type": "text", "text": "Hello from UnifyPort" } }' - 8
最初のイベントを受信する
テスト受信者から返信します。受信側で署名を検証し、イベントを保存して受信確認を返します。通常のイベントはイベント ID で重複を除外し、順序の逆転に対応します。conversation.history は provider + account_id + conversation.id + messages[].id でメッセージを統合し、イベント ID だけでバッチ全体を捨てないでください。届かない場合は購読設定、受信 URL、配信応答を確認します。
Webhook delivery & signature verification