Telegram Bot - PHP Webhook POST в файл

Я уже прочитал несколько вопросов об API бота, но не могу найти решение.

Мой бот отлично работает без установки вебхука и обработки /getUpdates. Но я не могу заставить его работать с настройкой "https://www.domain.com/page.php" как веб-перехватчик.

У меня есть виртуальный хостинг за гибким SSL-сертификатом Cloudflare, и браузеры не предупреждают об этом, поэтому я предполагаю, что он работает нормально.

Я пытаюсь передать POST Telegram в файл, чтобы понять, нужен ли веб-перехватчику другой анализ, но он пуст и не может видеть ssl_acces.log, поэтому я даже не могу смотреть, доходит ли Telegram до страницы...

Вот фрагмент:

$message = json_decode(file_get_contents('php://input'), true);
file_put_contents('telegram.txt', var_dump($message));

Что я делаю не так? Спасибо.

[РЕШЕНИЕ]

Способ входа:

$debug = file_get_contents('php://input');
$fp = fopen('debug.txt', 'w');
fwrite($fp, $debug);
fclose($fp);

И решение в том, что вебхук надо ставить без wwww:/setwebhook?url=https://domain.com/page.php


person edumgui    schedule 07.07.2015    source источник
comment
Также пробовал: $debug = file_get_contents('php://input'); $fp = fopen('debug.txt', 'w'); fwrite($fp, $debug); fclose($fp);   -  person edumgui    schedule 07.07.2015
comment
$message = json_decode($_POST, true); file_put_contents('telegram.txt', $message); почему бы вам не попробовать так? Веб-хук Telegram, похоже, делает запрос POST.   -  person Ugur    schedule 07.07.2015
comment
Готово @Ugur. Спасибо, но не повезло. Я отправляю сообщения своему боту, но txt файлы не отображаются... Я думаю, что Telegram не доходит до страницы, но я не знаю, как это проверить. Если я попытаюсь, /getUpdates только скажет, что активно: {"ok":false,"error_code":409,"description":"Error: Conflict: another webhook is active"}   -  person edumgui    schedule 07.07.2015
comment
Вы можете попробовать добраться до страницы самостоятельно и посмотреть, генерирует ли она вывод. Также, как описано в сообщении об ошибке, веб-хук вообще не достигает вашей страницы.   -  person Ugur    schedule 07.07.2015
comment
@Ugur, ты пробовал? Читая API, я думаю, что в сообщении говорится, что установлен веб-хук. Если нет, /getUpdates покажет json. Может я ошибаюсь...   -  person edumgui    schedule 07.07.2015
comment
Я не пробовал. Я думаю, вам следует проверить core.telegram.org/bots/api#setwebhook и core.telegram.org/bots/api#getupdates . Если Telegram вообще не вызывает ваш скрипт, для начала нужно с этим разобраться. Тогда мы можем обсудить проблему в рамках программирования.   -  person Ugur    schedule 07.07.2015
comment
@Ugur, читая API, я думаю, что в сообщении говорится: Эй, веб-перехватчик активен, ничего не видно здесь, в /getUpdates ... И да, мой вопрос: почему Telegram не достигает моего веб-перехватчика. Спасибо.   -  person edumgui    schedule 08.07.2015
comment
В этом случае нам нужно проверить core.telegram.org/bots/api#setwebhook каков ответ на setWebhook запрос. Также есть примечание о самоподписанных сертификатах. We currently do not support self-signed certificates. Я не думаю, что SSL Cloudflare является самоподписанным и недействительным для Telegram. Вы можете попробовать установить другой URL-адрес без SSL и проверить, попадает ли Telegram по этому URL-адресу. Таким образом, вы сможете понять, речь идет о ssl или Cloudflare. Также вы уверены, что делаете правильный шаг, чтобы активировать веб-хук?   -  person Ugur    schedule 08.07.2015
comment
@Ugur, /setWebhook не будет устанавливать URL-адрес, отличный от https: {"ok":false,"error_code":400,"description":"Error: Bad webhook: Error: [webhook:[protocol:HTTP][host:www.domain.com][port:80][query:\/telegrambot.php]]:Error: HTTPS url must be provided for webhooks"} Единственным триггером веб-перехватчика является отправка сообщений боту. Я пытался спросить Telegram CM в Твиттере, но без ответа...   -  person edumgui    schedule 08.07.2015
comment
Согласно документации, порт 80 кажется допустимым Ports currently supported for Webhooks: 443, 80, 88, 8443. Может ли документация устареть? Думаю, лучше всего на этот вопрос смогут ответить люди из Telegram.   -  person Ugur    schedule 08.07.2015
comment
Большое спасибо за ваше время, @Ugur.   -  person edumgui    schedule 08.07.2015
comment
пожалуйста. Telegram имеет интересные функции. Когда вы найдете способ, я был бы рад увидеть решение.   -  person Ugur    schedule 08.07.2015


Ответы (1)


У меня была аналогичная проблема, и я исправил ее, удалив строку

 (RewriteCond %{HTTP_USER_AGENT} ^$ [OR]) 

из файла .htaccess

person U.Ard    schedule 08.04.2016
comment
Спасибо за негатив :applause: - person U.Ard; 12.04.2016