Неверная ошибка с платформой Facebook Messenger/bot Приветствие Confugration

Я получаю странную ошибку при настройке приветственного сообщения для моего бот-сервера Messenger. Я использовал тот же код (как показано ниже), и он только что работал нормально до прошлой ночи. Я попробовал это с обоими 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>"

Кроме того, код, который я использую, точно такой же, как показано в официальном документе API Facebook. Я не понимаю, почему это сообщение "сообщение" не является допустимым ключом. Кто-нибудь испытывает ту же проблему? Facebook изменил свой api?

Любая помощь будет высоко оценена!

Ответы

Ответ 1

Теперь docs обновлены, вам нужно определить свою полезную нагрузку в параметре payload (кодированная строка UTF-8), например:

"call_to_actions":[
    {
      "payload":"USER_DEFINED_PAYLOAD"
    }
]

Ответ 3

Я получаю ту же проблему и исправляю ее. Я думаю, ваш запрос 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"
              }
             ]
        }
    }

он работает для меня.

Ответ 4

Эта ошибка произошла из-за изменения API.

Новый вызов:

curl -X POST -H "Content-Type: application/json" -d '{
  "setting_type":"call_to_actions",
  "thread_state":"new_thread",
  "call_to_actions":[{
    "payload":"START"
  }]
}' "https://graph.facebook.com/v2.6/<PAGE_ID>/thread_settings?access_token=<PAGE_TOKEN>"

Просто добавьте полезную нагрузку, например {"payload":"START"}

Если пользователь нажимает кнопку "Начало работы", вы получаете эту полезную нагрузку в своем сообщенииHandler (webhook). Проверьте, если $incomingMessage == "START" и отправьте назад структурированное сообщение или что угодно.

Сообщения, подобные ранее, больше не поддерживаются.

Отчет об ошибке: https://developers.facebook.com/bugs/1751749508372552/