Ramapriya
@Ramapriya

Не работает вебхук телеграм бота?

Всем добрый день!

Пишу чат-бота, добавил вебхук (обработчик на европейском шаред-хостинге лежит).

Отправляю запрос через Postman, всё работает, пишу сообщение боту в телеграм - тишина.

Вызвал getWebhookInfo, получил следующее:

Array
(
    [ok] => 1
    [result] => Array
        (
            [url] => https://webhook.url.php
            [has_custom_certificate] => 
            [pending_update_count] => 6
            [last_error_date] => 1582905610
            [last_error_message] => Bad Request: zlib error -5
            [max_connections] => 40
        )
)


Кто-нибудь с подобной проблемой сталкивался?
Как решили?
  • Вопрос задан
  • 703 просмотра
Пригласить эксперта
Ответы на вопрос 2
@elena81kachanova
Как вы обрабатываете ответ от Telegram?
Ответ написан
@KandiDev
Проблема в типе сжатия ответа вашего сервера. Скорее всего ваш сервер возвращает:

Content-Encoding: br

Сервер Telegram не может распарсить ответ используя gzip, в конечном итоге возвращает ошибку связанную с zlib.

Решение: изменить тип сжатия вашего сервер на gzip или использовать PHP код для сжатия:

function compress($data) {

    $supportsGzip = strpos( $_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip' ) !== false;

    if ( $supportsGzip ) {
        $content = gzencode( trim( preg_replace( '/\s+/', ' ', $data ) ), 9);
        header('Content-Encoding: gzip');
    } else {
        $content = $data;
    }

    $offset = 60 * 60;
    $expire = "expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";

    header("content-type: text/html; charset: UTF-8");
    header("cache-control: must-revalidate");
    header( $expire );
    header( 'Content-Length: ' . strlen( $content ) );
    header('Vary: Accept-Encoding');

    echo $content;
}

compress(""); //Сжимаем пустой ответ в gzip
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы