web-dev-qa-db-ja.com

FacebookMes​​sengerプラットフォーム/ボットのウェルカム構成での奇妙なエラー

メッセンジャーボットのウェルカムメッセージの設定中に奇妙なエラーが発生します。私は同じコードを使用していて(以下に示すように)、昨夜まで正常に機能しています。 cURLと Postman の両方で試してみました。どちらも機能しません。

curl -X POST -H "Content-Type: application/json" -d '{
  "setting_type":"call_to_actions",
  "thread_state":"new_thread",
  "call_to_actions":[
    {
      "message":{
        "text":"Welcome to My Company!"
      }
    }
  ]
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"

上記のコードを実行するとエラーメッセージが表示されます:

{"error":{"message":"(#100) Invalid keys \"message\" were found in param \"call_to_actions[0]\".","type":"OAuthException","code":100,"fbtrace_id":"Hn42Wa+hapI"}}%

次のコードでウェルカムメッセージを削除しようとすると正常に機能するため、PAGE_IDとPAGE_ACCESS_TOKENの両方が正しいことを確認できます。

curl -X POST -H "Content-Type: application/json" -d '{
  "setting_type":"call_to_actions",
  "thread_state":"new_thread",
  "call_to_actions":[
    {
      "message":{
        "text":"Welcome to My Company!"
      }
    }
  ]
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_ACCESS_TOKEN>"

また、私が使用しているコードは、 Facebookの公式APIドキュメント に示されているものとまったく同じです。 「メッセージ」が有効なキーではないと言っている理由がわかりません。誰かが同じ問題を経験していますか? FacebookはAPIを変更しましたか?

どんな助けでも大歓迎です!

17
lei he

docs が更新されました。ペイロードをpayloadパラメータ(UTF-8でエンコードされた文字列)で定義する必要があります。例:

"call_to_actions":[
    {
      "payload":"USER_DEFINED_PAYLOAD"
    }
]
7
Sahil Mittal

更新されたドキュメント:

https://developers.facebook.com/docs/messenger-platform/thread-settings/greeting-text

例:

curl -X POST -H "Content-Type: application/json" -d '{
  "setting_type":"greeting",
  "greeting":{
    "text":"Welcome to My Company!"
  }
}' "https://graph.facebook.com/v2.6/me/thread_settings?access_token=PAGE_ACCESS_TOKEN"
1
Ladislau

同じ問題が発生して修正します。リクエストのjsonは

let messageData = {
"setting_type":"call_to_actions",
"thread_state":"new_thread",
"call_to_actions":[
  {
    "payload":"welcome_payload"
  }
]
}
request({
    url: 'https://graph.facebook.com/v2.6/me/thread_settings',
    qs: {access_token:token},
    method: 'POST',
    json: {
        messageData
    }
}

しかし、それは機能せず、ログには「setting_type」がないと表示されます= = aこれを試してください

  request({
        url: 'https://graph.facebook.com/v2.6/me/thread_settings',
        qs: {access_token:token},
        method: 'POST',
        json: {
            setting_type:"call_to_actions",
            thread_state:"new_thread",
             call_to_actions:[
              {
                "payload":"welcome_payload"
              }
             ]
        }
    }

それは私のために働きます。

1
Ymow Wu