2016-09-26 4 views
0

Я пытаюсь создать бота, который взаимодействует с Facebook Messenger. Я настроил свой webhook и могу получать сообщения от Facebook. Однако, когда я пытаюсь отправить сообщение, я получаю следующее сообщение об ошибке назад от Facebook:Facebook Graph API Messenger интеграция - требуется получатель параметров

{"error":{"message":"(#100) The parameter recipient is required","type":"OAuthException","code":100,"fbtrace_id":"F3iVNecj10i"}} 

Однако, я определенно получил получатель ID в моей просьбе. Я отправил запрос с моим ботом, cURL и расширением Chrome Poster и получал одинаковый результат каждый раз. JSON Я посылаю это:

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

При использовании локон, я взял пример непосредственно из документации Facebook и отправить это:

curl -k -X POST -H "Content-Type: application/json" -d '{"recipient":{"id":"XXXXXXXXXXXXXXXX"},"message":{"text":"hello, world!"}}' "https://graph.facebook.com/v2.6/me/messages?access_token=ACCESS_TOKEN" 

Единственное различие между этим и, например, на Facebook является - k, который останавливает cURL от проверки SSL-сертификата. Я подключаюсь к своему приложению, используя ngrok для входящих сообщений, но отправляю свои запросы прямо в API графиков Facebook. Тот факт, что это происходит в моем приложении, cURL и Chrome Poster, заставляет меня думать, что это как-то связано с запросом (но я не могу понять, что) или моей настройкой приложения Facebook. Любая помощь приветствуется.

ответ

0

Оказывается, было несколько проблем. Запрос cURL не включал кавычки в JSON, поэтому кавычки должны были быть экранированы символами \. Запрос Chrome Poster не работал, потому что «content-type: application/json» не был установлен в заголовке. И мой webapp не работал, потому что у JSON был «;» в конце его.

Итак, сообщение Facebook было признаком плохо отформатированного JSON, просто не очень прямого!

0

Убедитесь, что полезная нагрузка JSON хорошо сформирована.

Я использовал Postman.app, чтобы помочь мне в этом - он также доступен в Windows.

Шаги

  • Скопируйте URL в поле "Введите запрос поля URL". Это будет включать access_token
  • Измените HTTP глагол GET
  • Под заголовком «Заголовки», установите Content-Type в application/json
  • Под заголовком «Body», выберите «сырой» и вставьте JSON полезную нагрузку там. Убедитесь, что эта полезная нагрузка JSON хорошо сформирована, наблюдая за индикатором ошибки, отображаемым рядом с номерами строк.

Как только я это исправил, я смог перейти к следующему шагу.