Как правильно получить обновление от Telegram бота посредством WebHook?
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
При webhook сервера telegram сами присылают https-запросы с данными. Т.е. подход другой. Сейчас у вас так: программа делает запросы на обновления и сразу отвечает. С вебхуком будет так: обработка запросов отдельно, обработка ответов отдельно
Что требуется:
1. доступ из вне к скриптам бота для приема https-запроса
2. ssl сертификат (сгенерированный самостоятельно, полученный бесплатно или купленный)