Почему не работает, телеграм вебхук с контроллером Yii2?

Ссылка скопирована
1 ответ

Всем привет. Наверняка кто-то уже сталкивался с проблемой. Прошу поделиться.
Почему телеграм webhook работает только со ссылкой на обработчик, который находится в корне сайта. С ним проблем нет, приходит все, что отправишь боту. А если указать ссылку на контроллер, то не работает.
Если что: enableCsrfValidation = false;
В конфиге прописал разрешение для контроллера:

[                     'class' => 'yiiwebUrlRule',                     'pattern' => 'bot',                     'route' => 'bot/bot',                     'verb' => 'POST, GET'                 ],

[ 'class' => 'yiiwebUrlRule', 'pattern' => 'bot', 'route' => 'bot/bot', 'verb' => 'POST, GET' ],

Какие еще ему нужны разрешения?
Ссылка на контроллер такого вида: https://site.ru/bot/bot

Дополнительно:

и как определили что не работает?

  • ThunderCat, не приходят данные.
  • Александр,
    и как определили что не работает?
  • Александр, как проверяли? Логи смотрели? Реквесты?
  • ThunderCat,
    'REMOTE_PORT' => '53454'     'REDIRECT_URL' => '/index.php'     'REDIRECT_QUERY_STRING' => '/web/bot/bot'     'GATEWAY_INTERFACE' => 'CGI/1.1'     'SERVER_PROTOCOL' => 'HTTP/1.0'     'REQUEST_METHOD' => 'POST'     'QUERY_STRING' => '/web/bot/bot'     'REQUEST_URI' => '/bot/bot'     'SCRIPT_NAME' => '/frontend/web/index.php'     'PHP_SELF' => '/frontend/web/index.php'     'REQUEST_TIME_FLOAT' => 1692212556.4972     'REQUEST_TIME' => 1692212556 ]

    'REMOTE_PORT' => '53454' 'REDIRECT_URL' => '/index.php' 'REDIRECT_QUERY_STRING' => '/web/bot/bot' 'GATEWAY_INTERFACE' => 'CGI/1.1' 'SERVER_PROTOCOL' => 'HTTP/1.0' 'REQUEST_METHOD' => 'POST' 'QUERY_STRING' => '/web/bot/bot' 'REQUEST_URI' => '/bot/bot' 'SCRIPT_NAME' => '/frontend/web/index.php' 'PHP_SELF' => '/frontend/web/index.php' 'REQUEST_TIME_FLOAT' => 1692212556.4972 'REQUEST_TIME' => 1692212556 ]

  • Dmitry Bay, точно такой же код в корне сайта отрабатывает хорошо. В контроллере нет. Как понять в чем причина?
  • Александр,
    Сделайте аналог запроса через postman. Это довольно быстрое решение.
    Сделайте запись всех запросов raw/post/get на контроллер в базу данных (я именно так и сделал, удобно очень).
    Посмотрите логи веб сервера.

    Может у вас тупо сервер фигово настроен, и вы вините бота.

  • Dmitry Bay, бота не виню. Непонятно почему не работает только через Yii2 контроллер.
  • Александр, Чувак, все работает. Я сейчас настраиваю бота. Разбирайтесь и делайте логи запросов.
  • Dmitry Bay, совет на все времена)))
  • Александр, А чего вы ожидаете ? сделайте лог .
  • Александр, У сервера есть лог запросов. Открываешь, смотришь глазками, есть ли запросы к /web/bot/bot
    Если нет - проблема в боте, если есть - проблема в ю. Смотришь лог ошибок, так как вряд ли что-то "не работает" просто так.
  • ThunderCat,
    91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-"

    91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:42 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:43 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-" 91.108.6.102 - - [17/Aug/2023:21:06:44 +0400] "POST /bot/bot HTTP/1.0" 200 166 "-" "-"

  • Александр, Ну значит запросы приходят, и проблема не в боте.

    Смотришь лог ошибок, так как вряд ли что-то "не работает" просто так.

    "Руками" этот урл открывается? Там же разрешен гет, открой да проверь что там происходит. Логи смотри, что за ошибки вываливаются.

  • ThunderCat, руками открывается.
  • Александр, Пипец, как маленький ребенок, все за ручку... значит гет работает, проверяй пост, сделай форму с теми же пост данными что приходят от бота, проверь как отрабатывает... Или постмэном постучись.
  • Вопрос решен, но не могу сказать как именно.
  • Ответы:

    если работает с файлом корне то каие проблемы?

    может контролер авторизацмию требует или еще что

    • Нужно делать запросы к БД средствами Yii. Из корня этого не сделать.
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Никита Орлов Ответ

    Для того чтобы установить и настроить телеграм вебхук с контроллером Yii2, необходимо выполнить ряд шагов. Наиболее распространенной причиной неработоспособности вебхука является неправильная настройка или несоответствие параметров.

    Ниже приведены шаги, которые могут помочь вам разобраться с проблемой:

    1. Убедитесь, что у вас установлен composer, который используется для установки зависимостей Yii2. Если composer не установлен, его можно скачать с официального сайта и установить.

    2. Создайте контроллер, который будет обрабатывать запросы от телеграм бота. Убедитесь, что ваш контроллер наследуется от yii\web\Controller.

    3. В контроллере определите метод действия, который будет обрабатывать входящие запросы от телеграм. Например:

    public function actionWebhook() {
        $data = Yii::$app->request->post();
        // обработка данных от телеграм
    }

    public function actionWebhook() { $data = Yii::$app->request->post(); // обработка данных от телеграм }

    4. Зарегистрируйте маршрут для вашего контроллера в файле конфигурации приложения (config/web.php). Например:

    'rules' => [
        'POST webhook' => 'controller/webhook',
    ],

    'rules' => [ 'POST webhook' => 'controller/webhook', ],

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

    6. Наконец, установите вебхук, используя API телеграм, указав URL вашего контроллера. Например:

    https://api.telegram.org/bot{your_bot_token}/setWebhook?url=https://yourdomain.com/webhook

    https://api.telegram.org/bot{your_bot_token}/setWebhook?url=https://yourdomain.com/webhook

    Если после выполнения всех этих шагов вебхук все еще не работает, рекомендуется проверить логи ошибок на сервере, чтобы узнать возможные причины сбоя. Также полезно проверить документацию телеграм и Yii2 для более подробной информации о настройке вебхуков.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно