ログイン無料トライアルを開始
Meta Tech Provider

Dify アプリで WhatsApp メッセージに自動応答する

番号の Webhook を小さな受信側に向けます。n8n のワークフローや自社コードのルートなどで、各メッセージを Dify の Send Chat Message API に渡し、回答を Cloud API 経由で返します。Dify 側では EasyCoexistence MCP サーバーをツールとして追加でき、エージェントが番号そのものを操作できます。

JSON only

Dify の Webhook Trigger は JSON 以外のレスポンス本文を JSON で包むため、Meta の生のチャレンジを返せません。

POST /chat-messages

Dify の Service API の呼び出しで、チャットアプリにユーザーのメッセージを 1 件送り、その返信を受け取ります。

OAuth

Dify の MCP ツールは、デフォルトで有効な動的クライアント登録により OAuth 認証情報を取得します。

Meta は WhatsApp メッセージを Dify に直接送れますか?

Meta のハンドシェイクを完了できる形では送れません。Meta はメッセージを配信する前に、送信先へ GET リクエストを送り、hub.challenge の値を生のレスポンス本文としてそのまま返すことを求めます。Dify の Webhook Trigger は 1 つのトリガーにつき HTTP メソッドを 1 つしか受け付けず、ドキュメントによると JSON 以外のレスポンス本文は自動的に JSON に変換されるため、OK はメッセージオブジェクトとして返ります。チャレンジを正確にそのまま返すことはできず、Meta は配信を開始しません。

そのため、手前に小さな受信側を置きます。n8n の Webhook ノード、Python や Node のルート、サーバーレス関数のいずれかで GET に応答し、POST を受け取り、テキストを Dify に渡します。Webhook URL に含めた長いランダムな秘密文字列を確認するのもこの受信側です。X-Hub-Signature-256 ヘッダーは Tech Provider のアプリシークレットで署名されており、顧客側では検証できないためです。

受信側は Dify アプリとどのようにやり取りしますか?

Dify の Service API を 1 回呼び出します。POST /chat-messages を、アプリの API キーで認証して送ります。本文には、顧客のテキストである query と、自分で定めた識別子である user を含めます。user には送信者の WhatsApp 番号を使い、Dify が返す conversation_id を保持しておくと、同じ相手の次のメッセージが同じ会話として続きます。

response_mode には注意が必要です。blocking は回答の完成後に返りますが、Dify のドキュメントは、Dify Cloud では長い生成がエッジプロキシによって打ち切られることがあると警告しています。エージェントアプリはストリーミングのみに対応しており、blocking のリクエストは 400 で失敗します。ストリームを読み取り、最後に WhatsApp メッセージを 1 通送る受信側が堅実な構成です。

返信は Cloud API のテキストメッセージとして同じ番号へ送ります。顧客のメッセージで開いた 24 時間のウィンドウ内であれば無料です。

1MetaDelivers the message to your receiver
2ReceiverChecks the URL secret, answers 200
3DifyPOST /chat-messages with user = sender
4Cloud APISends the answer to the customer

Dify の中で MCP サーバーは何を可能にしますか?

呼び出しごとの配線なしで、Dify のエージェントが番号を操作できるようになります。Dify は HTTP で MCP サーバーに接続し、デフォルトでは OAuth の動的クライアント登録でサーバーに自身を登録します。EasyCoexistence MCP サーバーはこれに対応しています。「ツール」から追加して一度サインインすると、エージェントは次のツールを使えます。番号の一覧、番号の接続状態の確認、メッセージ送信、承認済みテンプレートの送信、テンプレートのステータス確認です。

これは能動的な処理に適した使い方です。翌日にフォローアップする Dify のワークフローでは send_template を使う必要があります。ウィンドウ外のフリーテキストはエラー 131047 を返し、ツールの説明がモデルにそう伝えているためです。

MCP にできないのは、顧客が書き込んだときに Dify を起動することです。このプロトコルはリクエストとレスポンスの形式なので、受信メッセージは引き続き Webhook と手前の受信側を通って届きます。

よくある間違い

  • Dify の Webhook Trigger の URL を Webhook の送信先にすること。チャレンジが JSON で包まれて返り、Meta はエンドポイントを確認できません。
  • Dify のエージェントアプリに blocking のリクエストを送ること。エージェントアプリはストリーミングのみ対応で、呼び出しは 400 で失敗します。
  • メッセージごとに新しい user の値を使うこと。Dify は会話を user 単位で管理するため、毎回新しい会話になり、記憶が引き継がれません。
EasyCoexistence で実現する

easycoexistence.com で番号を接続し、Webhook の送信先を受信側に向け、エージェントの操作用に MCP サーバーを Dify に追加します。接続済みの番号 1 件あたり月額 US$ 9 から、番号が増えるにつれて US$ 1 まで。最初の 3 日間は無料です。

よくある質問

Dify に WhatsApp チャネルはありますか?

ドキュメントにはありません。Dify アプリは Service API で呼び出せるため、その API を呼ぶ受信側を通して WhatsApp に接続します。

n8n を受信側にできますか?

はい。Webhook ノードで受信し、HTTP Request ノードで Dify を呼び出し、2 つ目の HTTP Request ノードで Cloud API 経由の返信を送ります。

チームは携帯電話から返信できますか?

はい。Coexistence により、番号上で WhatsApp Business アプリを引き続き使えます。携帯電話から送った返信は、echo イベントとして受信側に届きます。

EasyCoexistence は会話を見られますか?

いいえ。Meta は受信側へ直接配信し、メッセージの内容は当社側に保存されません。MCP サーバーが読み取るのはアカウントと番号の状態です。

続きを読む

始める準備はできましたか?

WhatsApp Coexistence の設定は数分で完了し、数か月もかかりません。スマートフォン上のアプリも引き続き使えます。

無料トライアルを始める

確認日

Dify を WhatsApp に接続|公式 Cloud API