Я только что наткнулся на бот-мессенджера и тоже захотел сделать это сам.
Я правильно настроил webhooks, проверил свой скрипт webhook и сделал себе временную простую вещь, чтобы увидеть запрос при отправке сообщения моему боту.
<?php
$file = "data.txt";
$current = file_get_contents($file);
$data = $current ."\n". json_encode($_REQUEST);
file_put_contents ( $file , $data );
Это работает (перехватывает все запросы), но когда я набираю сообщение в чате, я получаю только пустое [] в моем файле. Это означает, что facebook связывается с моим сайтом, когда я пытаюсь связаться с ботом, но без какого-либо запроса (данных)?
Может кто-нибудь сказать мне, что я делаю не так?
Спасибо!
Facebook попадает в ваш веб-крюк с Content-type application/json
и JSON-строка в теле запроса. $ _REQUEST не может справиться с этим, потому что $ _REQUEST содержит данные с HTTP-типом контента application/x-www-form-urlencoded
или же multipart/form-data
,
Здесь вам нужно прочитать входной поток (необработанные данные).
<?php
$file = "data.txt";
$current = file_get_contents($file);
$data = $current ."\n". file_get_contents('php://input');
file_put_contents ( $file , $data );
Других решений пока нет …