@oleg_ka
Студент

Как правильно получить обновление от Telegram бота посредством WebHook?

Имеется telegram бот, реализованный на C#, который получает обновления методом getUpdates следующим образом:
string response = webClient.DownloadString("https://api.telegram.org/bot" + token + "/getUpdates" + "?offset=" + (lastUpdateId + 1));
                var n = JSON.Parse(response);
                foreach (JSONNode jr in n["result"].AsArray)
                {
                    lastUpdateId = jr["update_id"].AsInt;
                    newmess = jr["message"]["text"];
                    chat_id = jr["message"]["chat"]["id"].AsInt;
                 }

Подскажите, как правильно, реализовать обновление с помощью вебхука? И что для этого требуется?
Перерыл множество статей, так и не смог разобраться. Надеюсь на вашу помощь.
  • Вопрос задан
  • 5489 просмотров
Пригласить эксперта
Ответы на вопрос 2
yamaoto
@yamaoto
la programmeur
1) Создаешь проект на WebApi2 или MVC 5 ну или на новёхоньком asp net core
2) Создаешь классы моделей данных которые будут поступать от телеграма
3) Создаешь контроллер и экшен в нем, который будет принимать входящий запрос от телеграм

что-то типо такого:
//пример для WebApi2:
//телеграм не дает возможности как-то проверять что запрос пришел от самого телеграма
//так что в официальном факе рекомендовано создавать сложный адрес
//так как такой адрес известен только разработчику и телеграму
//никто не сможет подделать запросы
[RoutePrefix("api/myveryawesomebot123802539483")]
public MyTelegramBotController:ApiController
{
    [HttpPost]
    [Route("sdfsdf2342f2q")]
    public void Update([FromBody] UpdateModel model)
     {
          ...
     }
}


Рекомендую разместить веб проект на Azure - он даст возможность БЕСПЛАТНО разместить вашего бота в датацентре со всей защитой + бесплатный и сразу валидный SSL сертификат + возможности удаленной отладки кода в VS
Ответ написан
@nllm
При webhook сервера telegram сами присылают https-запросы с данными. Т.е. подход другой. Сейчас у вас так: программа делает запросы на обновления и сразу отвечает. С вебхуком будет так: обработка запросов отдельно, обработка ответов отдельно

Что требуется:
1. доступ из вне к скриптам бота для приема https-запроса
2. ssl сертификат (сгенерированный самостоятельно, полученный бесплатно или купленный)
Ответ написан
Ваш ответ на вопрос

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

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