Задать вопрос

Как настроить Telegram Bot API если провайдер блокирует api.telegram.org?

Настраиваю бота, запрос:

https://api.telegram.org/bot~token~/setWebhook?url=https://site.ru/api/telegram/bot.php

Показывает сообщение:
{"ok":true,"result":true,"description":"Webhook is already set"}

Но, если делаем запрос getWebhookInfo:
https://api.telegram.org/bot~token~/getWebhookInfo?url=https://site.ru/api/telegram/bot.php

То видим:
{"ok":true,"result":{"url":"https://site.ru/api/telegram/bot.php","has_custom_certificate":false,"pending_update_count":12,"last_error_date":1542709402,"last_error_message":"Connection timed out","max_connections":40}}

На самом сервере провайдер блокирует телеграм, ssl сертификат имеет рейтинг A+ (если это имеет какое то значение)

Из всего этого я сделал вывод что проблема в блокировке телеграма, у меня такой вопрос, есть ли сервисы где я могу создать свою ссылку, обращения на которую передавались бы на другую ссылку и возвращался бы результат? Может сервисы какие то есть, слышал про hook.io, но не знаю то ли это и будет ли это бесплатно.

Как проще всего сделать, чтобы бот заработал?
  • Вопрос задан
  • 5436 просмотров
Подписаться 4 Простой 6 комментариев
Решения вопроса 1
@Kerm Автор вопроса
Я это решил так, арендовал хостинг где не блокируется телеграмм, создал пустой домен и в nginx прописал:

server {
	listen         *:80;
	listen         *:443 ssl;
	server_name    site.ru;

	ssl_certificate               sert.pem;
	ssl_certificate_key           sert.pem;


	location / {
		proxy_set_header X-Forwarded-Host $host;
		proxy_set_header X-Forwarded-Server $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass https://site.ru/api/telegram/bot.php;
		client_max_body_size 100M;
	}
}


В папку с доменом положил index.php с кодом:

<?php
require_once "C:/OSPanel/domains/site.ru/vendor/autoload.php";

use Proxy\Proxy;
use Proxy\Adapter\Guzzle\GuzzleAdapter;
use Proxy\Filter\RemoveEncodingFilter;
use Zend\Diactoros\ServerRequestFactory;

// Create a PSR7 request based on the current browser request.
$request = ServerRequestFactory::fromGlobals();

// Create a guzzle client
$guzzle = new GuzzleHttp\Client();

// Create the proxy instance
$proxy = new Proxy(new GuzzleAdapter($guzzle));

// Add a response filter that removes the encoding headers.
$proxy->filter(new RemoveEncodingFilter());

// Forward the request and get the response.
$response = $proxy->forward($request)->to('https://site.ru/api/telegram/bot.php');

// Output response to the browser.
(new Zend\Diactoros\Response\SapiEmitter)->emit($response);

?>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Хуки до серверов в России не заработают до разбана Телеграма.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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