Бот Facebook Messenger не отправляет сообщения в веб-перехватчик

Я создавал бота Facebook Messenger, и у меня возникли проблемы с получением сообщений от Messenger на веб-перехватчике на моем сервере. Я работал с API отправки и Webhooks в течение нескольких недель, и до сегодняшнего дня у меня не было проблем с отправкой сообщений пользователю туда и обратно. Я могу проверить веб-перехватчик из консоли разработчика Facebook, и я вижу, что проверка проходит при вызове GET моего маршрута /webhook. Однако, когда я отправляю своему боту сообщение (который должен отправить сообщение на /webhook) из моей личной учетной записи, я не вижу, чтобы какие-либо данные сообщения пересылались на мой сервер. Маршрут никогда не проходит. Страница, на которую я отправляю, подписана на приложение в консоли разработчика Facebook. Странно то, что я могу вручную нажать /webhook с сообщением, используя curl:

curl -i -X POST -H 'Content-Type: application/json' -d 
'{"object":"page","entry":
[{"id":43674671559,"time":1460620433256,"messaging":[{"sender":
{"id":MY_ACTUAL_FACEBOOK_USER_ID},"recipient":
{"id":MY_PAGE_ID},"timestamp":1460620433123,"message":{"mid":"mid.1460620432888:f8e3412003d2d1cd93","seq":12604,"text":"Testing 
Chat Bot .."}}]}]}' "https://XXXXX.ngrok.io/webhook"

Я использую ngrok для переадресации звонков на мой локальный хост. Приведенная выше команда curl работает нормально, то есть я могу видеть сообщение, доставленное на мой сервер по адресу /webhook. На мой взгляд, это говорит о том, что проблема исходит от Facebook, а это значит, что я не могу это контролировать. Я что-то пропустил? Что еще я мог проверить, и почему это не помогло?


person tom-g    schedule 21.06.2017    source источник


Ответы (1)


Проблема, описанная выше, скорее всего, находится в окне Messenger -> settings -> webhooks, где внизу вы должны выбрать Page, чтобы подписаться на приложение (веб-перехватчик).

Кроме того, иногда, если вы отправляете сообщения, а веб-перехватчик находится в автономном режиме, для прохождения всех сообщений требуется несколько минут.

person Jan Sila    schedule 11.10.2017
comment
Просто хотел добавить это для тех, кто получил этот случай, как я, мне потребовалось около 20 минут для all the messages to come through .. мой случай был, когда я отправлял 500 ошибку HTTP в ответ на POST /webhook маршрут ... Facebook просто ждал это количество времени. - person Ahmed Shendy; 08.11.2019
comment
@AhmedShendy, вы всегда должны отправлять 200 статусов в facebook, что вы получили сообщение. Затем, если у вас есть внутренняя проблема, решите ее сами. По крайней мере, я так делаю. - person Jan Sila; 09.11.2019
comment
именно это вчера отлично сработало для меня ... Я продолжал использовать ведение журнала со всеми 200 состояниями и учился на своих ошибках через ведение журнала и ожидаемый результат, а не код состояния HTTP. - person Ahmed Shendy; 09.11.2019