Ваш браузер не будет отправлять запрос POST, без некоторого дополнительного кодирования HTML и Javascript.Самый простой способ проверить, работает ли ваш хук, - это использовать клиент командной строки curl
.
. Он может отправлять как запросы GET, так и POST.Проверка правильности работы вашего обработчика GET
:
curl -X GET "localhost:5000/?hub.verify_token=<YOUR_VERIFY_TOKEN>&hub.challenge=CHALLENGE_ACCEPTED&hub.mode=subscribe"
должно выдать CHALLENGE_ACCEPTED
в качестве вывода.Затем протестируйте обработчик POST
с помощью:
curl -H "Content-Type: application/json" -X POST "localhost:5000/" -d '{"sender":{"id":"<PSID>"}, "recipient":{"id":"<PAGE_ID>"}, "timestamp":1458692752478, "message":{"mid":"mid.1457764197618:41d102a3e1ae206a38", "text":"hello, world!", "quick_reply": {"payload": "<DEVELOPER_DEFINED_PAYLOAD>"}}}'
См. Настройка вашего Webhook документации по началу работы с Messenger Platform и получено сообщение событие для получения подробной информации о том, что ожидать при обработке события сообщения.
Другой вариант - написать тесты Python , чтобы покрыть то же самое:
import os
import pytest
import your_flask_module
@pytest.fixture
def client():
your_flask_module.app.config['TESTING'] = True
yield your_flask_module.app.test_client()
def test_register(client):
args = {
'hub.verify_token': os.environ["VERIFY_TOKEN"],
'hub.challenge': 'CHALLENGE_ACCEPTED',
'hub.mode': 'subscribe',
}
rv = client.get('/', params=args)
assert b'CHALLANGE_ACCEPTED' in rv.data
def test_message_event(client):
event = {
"sender": {"id": "<PSID>"},
"recipient": {"id":"<PAGE_ID>"},
"timestamp": 1458692752478,
"message": {
"mid": "mid.1457764197618:41d102a3e1ae206a38",
"text": "hello, world!",
"quick_reply": {
"payload": "<DEVELOPER_DEFINED_PAYLOAD>"
}
}
}
rv = client.post('/', json=event)
assert rv.status_code == 200