WhatsApp
TriggerfishエージェントをWhatsAppに接続して、スマートフォンから対話できるようにします。 アダプターはWhatsApp Business Cloud API(Meta公式のHTTP API)を使用し、Webhook経由で メッセージを受信し、REST経由で送信します。
デフォルト分類
WhatsAppはデフォルトでPUBLIC分類です。WhatsAppの連絡先には電話番号を知っている誰でも 含まれる可能性があるため、PUBLICが安全なデフォルトです。
セットアップ
ステップ1:Metaビジネスアカウントを作成する
- Meta for Developersポータルにアクセス
- デベロッパーアカウントをまだお持ちでない場合は作成
- 新しいアプリを作成してアプリタイプとしてBusinessを選択
- アプリダッシュボードでWhatsAppプロダクトを追加
ステップ2:認証情報を取得する
アプリダッシュボードのWhatsAppセクションから以下の値を収集します:
- アクセストークン — 永続的なアクセストークン(またはテスト用に一時トークンを生成)
- 電話番号ID — WhatsApp Businessに登録された電話番号のID
- 確認トークン — Webhookの登録確認に使用する、自分で選んだ文字列
ステップ3:Webhookを設定する
- WhatsAppプロダクト設定でWebhooksに移動
- コールバックURLをサーバーのパブリックアドレスに設定(例:
https://your-server.com:8443/webhook) - 確認トークンをTriggerfishの設定で使用する値と同じに設定
messagesWebhookフィールドをサブスクライブ
パブリックURLが必要 WhatsApp WebhookにはパブリックにアクセスできるHTTPSエンドポイントが
必要です。Triggerfishをローカルで実行している場合は、トンネルサービス(例:ngrok、Cloudflare Tunnel) またはパブリックIPを持つサーバーが必要です。 :::
ステップ4:Triggerfishを設定する
WhatsAppチャンネルをtriggerfish.yamlに追加します:
yaml
channels:
whatsapp:
# accessTokenはOSキーチェーンに保存
phoneNumberId: "your-phone-number-id"
# verifyTokenはOSキーチェーンに保存
ownerPhone: "15551234567"| オプション | タイプ | 必須 | 説明 |
|---|---|---|---|
accessToken | string | はい | WhatsApp Business APIアクセストークン |
phoneNumberId | string | はい | MetaビジネスダッシュボードからのPhone Number ID |
verifyToken | string | はい | Webhook確認用トークン(自分で決める) |
webhookPort | number | いいえ | Webhookのリッスンポート(デフォルト:8443) |
ownerPhone | string | 推奨 | オーナー確認のための電話番号(例:"15551234567") |
classification | string | いいえ | 分類レベル(デフォルト:PUBLIC) |
シークレットを安全に保存する アクセストークンをソースコントロールにコミットしないでください。
環境変数またはOSキーチェーンを使用してください。 :::
ステップ5:Triggerfishを起動する
bash
triggerfish stop && triggerfish startスマートフォンからWhatsApp Businessの番号にメッセージを送信して接続を確認します。
オーナーアイデンティティ
Triggerfishは送信者の電話番号を設定されたownerPhoneと比較することでオーナーステータスを 決定します。このチェックはLLMがメッセージを見る前にコードで行われます:
- 一致 — メッセージはオーナーコマンドです
- 不一致 — メッセージは
PUBLICtaintの外部入力です
ownerPhoneが設定されていない場合、すべてのメッセージはオーナーからのものとして扱われます。
常にオーナー電話番号を設定する WhatsApp Businessの番号に他の人からメッセージが届く可能性がある場合は、
不正なコマンド実行を防ぐために常にownerPhoneを設定してください。 :::
Webhookの仕組み
アダプターは設定されたポート(デフォルト8443)でHTTPサーバーを起動し、2種類のリクエストを処理します:
- GET /webhook — Metaがこれを送信してWebhookエンドポイントを確認します。 確認トークンが一致した場合、Triggerfishはチャレンジトークンで応答します。
- POST /webhook — Metaが受信メッセージをここに送信します。TriggerfishはCloud API Webhookペイロードを解析し、テキストメッセージを抽出して、メッセージハンドラーに転送します。
メッセージ制限
WhatsAppは最大4,096文字のメッセージをサポートします。この制限を超えるメッセージは 送信前に複数のメッセージに分割されます。
タイピングインジケーター
TriggerfishはWhatsAppでタイピングインジケーターの送受信を行います。エージェントがリクエストを 処理しているとき、チャットにタイピングインジケーターが表示されます。既読確認もサポートされています。
分類の変更
yaml
channels:
whatsapp:
# accessTokenはOSキーチェーンに保存
phoneNumberId: "your-phone-number-id"
# verifyTokenはOSキーチェーンに保存
classification: INTERNAL有効なレベル:PUBLIC、INTERNAL、CONFIDENTIAL、RESTRICTED。
