Бот-мессенджер FB не получает данные обратной передачи

Я разрабатываю чат-бота для facebook. Я столкнулся с проблемой, которую не могу решить. Я разрабатываю это в laravel. Здесь я не могу получить данные обратной передачи. вот мой код


    public function index(Request $request) {
        if ($request->hub_verify_token === $this->verifyToken) {
            echo $request->hub_challenge;
            exit;
        }

        $input          = json_decode(file_get_contents("php://input"), true);
        $senderId       = $input['entry'][0]['messaging'][0]['sender']['id'];
        $messageText    = $input['entry'][0]['messaging'][0]['message']['text'];
        $pageId         = $input['entry'][0]['id'];

        $accessToken = "access_token_that_got_from_fb";

        //set Message
        if ($messageText != "") {
            $answer = "Howdy! User";
        }

        if ($messageText == "hello") {
            $answer = 'Testing hello from bot';
        }

        foreach ($input['entry'][0]['messaging'] as $message) {
            // When bot receive message from user
            if (!empty($message['postback'])) {
                $answer = 'got it tada';
            }
        }

        //send message to facebook bot
        $response = [
            'recipient' => [ 'id' => $senderId ],
            'message' => [ 'text' =>  $answer ] //json_encode($request->getContent())
        ];


        $ch = curl_init('https://graph.facebook.com/v2.11/me/messages?access_token='.$accessToken);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($response));
        curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

        $result = curl_exec($ch);
        curl_close($ch);
    }

и мой маршрут

Route::any('chatbot', 'ChatbotController@index');

вот сообщение рабочее. но запрос полезной нагрузки обратной передачи не отправляется на сервер. с другой стороны, используя тот же код в обычном файле php, я могу получить обратную выплату.


    $hubVerifyToken = 'chatbot';
    $accessToken =   "access_token";
    // check token at setup
    if ($_REQUEST['hub_verify_token'] === $hubVerifyToken) {
        echo $_REQUEST['hub_challenge'];
        exit;
    }
    // handle bot's anwser
    $input          = json_decode(file_get_contents('php://input'), true);
    $senderId       = $input['entry'][0]['messaging'][0]['sender']['id'];
    $messageText    = $input['entry'][0]['messaging'][0]['message']['text'];
    $postback       = isset($input['entry'][0]['messaging'][0]['postback']['payload']) ? $input['entry'][0]['messaging'][0]['postback']['payload'] : '' ;

    //set Message
    if ($messageText == "hi") {
        $answer = "Hello";
    }
    if ($messageText == "hello") {
        $answer = "Hello there, welcome to Chatleads";
    }

    if ($postback) {
        $answer = "postback TADA";
    }

    //send message to facebook bot
    $response = [
        'recipient' => [ 'id' => $senderId ],
        'message' => [ 'text' => $answer ]
    ];

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/v2.11/me/messages?access_token=$accessToken");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($response));
    curl_setopt($ch, CURLOPT_POST, 1);

    $headers = array();
    $headers[] = "Content-Type: application/json";
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

    $result = curl_exec($ch);
    if (curl_errno($ch)) {
        echo 'Error:' . curl_error($ch);
    }
    curl_close ($ch);

Как решить эту проблему? может кто-нибудь указать мне путь?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
475
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решил это, проверив файл laravel.log.

$this->messageText  = isset($this->input['entry'][0]['messaging'][0]['message']['text']) ? $this->input['entry'][0]['messaging'][0]['message']['text'] : '' ;

messageText должен быть таким. вот почему это вызывает ошибку.

Другие вопросы по теме