web-dev-qa-db-ja.com

Facebook Messengerボットエラー:パラメーターの受信者が必要です

ボットの接続に使用したbashコマンドは次のとおりです。curl-ik-XPOST ' https://graph.facebook.com/v2.6/me/messages?access_token =#AccessToken '

私のエラーメッセージは次のとおりです。

{"error":{"message": "(#100)パラメータの受信者が必要です"、 "type": "OAuthException"、 "code":100、 "fbtrace_id": "EFqWAGq2ABs"}}

誰かそれを解決する方法はありますか?

6

誰かがこれを見逃した場合に備えて、誤って間違ったコンテンツタイプを使用したときにこの問題が発生しました-application/x-www-form-urlencodedの代わりにapplication/jsonを使用していました

だから私のアドバイスは全体的に、

  • 本当にパラメータを渡しているかどうかを確認してください
  • 文字とエンコーディングを再確認してください
  • 正しいエンドポイントを使用してください
  • jSONリクエストを投稿するときは、必ず正しいコンテンツタイプを使用してください。
4
Alvin Reyes

受信者IDパラメータを送信する必要があります。試してください:

curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{"id":"YOUR RECIPIENT ID" }, "message":{ "text":"hello from bot" }}' "https://graph.facebook.com/v2.6/me/messages?access_token=YOUR_ACCESSTOKEN"

宜しくお願いします。

2
Johalf Farina

APIエンドポイントとして「thread_settings」エンドポイント「 https://graph.facebook.com/v2.6/me/thread_settings "」を使用してください。

メッセージエンドポイントを使用しています。

1
Rupul Safaya

しばらく前に同様のエラーが発生しました。 Postmanを使用してみてください。同じリクエストを試し、ユーザーIDとページアクセストークンを置き換えました。それはうまくいきます。

上部のImportボタンをクリックして、curlリクエストをrawの下に貼り付けます。次に、通話を実行してみてください。同じエラーが発生する場合は、本文に移動して変更してください。これをPostmanリクエストの本文部分に必ず入れてください。受信者IDを自分のものに置き換えます。

{
    "recipient":
    {
        "id":"123456789"
    },
    "message":
    {
        "text":"hello, world!"
    }

}

これは完全なcURL呼び出しです:受信者IDとページアクセストークンの変更

curl -X POST -H "Content-Type: application/json" -d '{ "recipient":{"id":"1234567" }, "message":{ "text":"hello from bot" }}' "https://graph.facebook.com/v2.6/me/messages?access_token=PASTETHETOKENHERE"
1
Nandhu Saran

エンドポイントが間違っています。の代わりに https://graph.facebook.com/v2.6/me/messages?access_token=#AccessToken、このエンドポイントを使用します

https://graph.facebook.com/v2.6/me/messenger_profile?access_token=<PAGE_ACCESS_TOKEN>

これは、ドキュメントを読まない場合に発生します。情報はここにあります https://developers.facebook.com/docs/messenger-platform/discovery/welcome-screen# "Get Started Button Postbackの設定"

1

それはあなたのボットのロジックに帰着します。このエラーも最近発生し、デバッグに数日かかりました。私にとっての問題は、messageDataオブジェクトをコンパイルした関数の外部でcallSendAPI(messageData)メソッドを呼び出したことでした。

明らかに、コンパイルする関数の外にmessageDataを渡すと、コンパイルされたオブジェクトの代わりに空のオブジェクトが送信されます。したがって、エラーメッセージ(#100) The parameter recipient is required。空のオブジェクトにreceipientIdが定義されていないという理由だけで。

コードのロジックをチェックして、私と同じ間違いをしなかったことを確認してください。これがお役に立てば幸いです:)ハッピープログラミング。

1
sylvery

このエラーメッセージには別の理由があります。間違った文字(-tab-など)を送信すると、Facebookもこのエラーを返すので、特殊文字の戻りテキストを確認してください。

0
Jeroen

この問題は、コードにエラー(構文エラーまたは論理エラー)がある場合にも発生する可能性があります。私の場合、この部分はwebhook.php(Facebookに登録されているコールバックページ)のコードに含まれていました。

$message = $input['entry'][0]['messaging'][0]['message']['text'];

"message":{
    "text":"Sorry, we currently do not have an article related to "'.$message.'"."
    }

https://domain.com/webhook.php をコールバックとして登録するまでに、まだ$messageを受信しないため、エラーが発生し、コールバックを受け入れません。 url。

コードをチェックして、チャレンジのみをエコーするようにしてください。

$challenge = $_REQUEST['hub_challenge'];
$verify_token = $_REQUEST['hub_verify_token'];

if ($verify_token === 'verify_token') {
    echo $challenge;
}
0
Carmela