Как обрабатывать нажатия кнопок в чат боте Telegram на ASP Net Core 2.0 в Azure

пишу Telegram бот на Asp NET Core. Приложение развернуто на платформе Azure.
Хочу чтобы при нажатии кнопки в сообщении от пользователя можно было получать ответное сообщение с текстом от бота. Задача довольно тривиальная, но пока не освоил отладку через Azure и не могу посмотреть дебагером значения переменных. В сообщении добавляю кнопки следующим образом:

public override async Task Execute(Message message, TelegramBotClient client)
        {
            var requests = await SQLiteAdapter.GetAllRequestsAsync();

            var keyboard = new InlineKeyboardMarkup(new [] {
                                            InlineKeyboardButton.WithCallbackData("Text1","callback1"),
                                            InlineKeyboardButton.WithCallbackData("Text2","callback1"),
                                            InlineKeyboardButton.WithCallbackData("Text3","callback1"),
                                                 });

            await client.SendTextMessageAsync(message.Chat.Id, $"Текущий размер базы запросов: {requests.Count} ед.", replyMarkup: keyboard);

        }

Для обработки Callback запросов создаю eventHandler в классе бота:

public class Bot
    {
        private static TelegramBotClient botClient;
        private static List<Command> commandsList;
        public static IReadOnlyList<Command> Commands => commandsList.AsReadOnly();

        public static async Task<TelegramBotClient> GetBotClientAsync()
        {
            if (botClient != null)
            {
                return botClient;
            }
            commandsList = new List<Command>();
            //Список команд
            botClient = new TelegramBotClient(Settings.Key);

            string hook = string.Format(Settings.GetUrl(Settings.DevParam.Azure), "api/message");
            await botClient.SetWebhookAsync(hook);
            botClient.OnCallbackQuery += BotClient_OnCallbackQueryAsync;
            return botClient;
        }

        private static async void BotClient_OnCallbackQueryAsync(object sender, CallbackQueryEventArgs e)
        {
            await botClient.SendTextMessageAsync(e.CallbackQuery.Message.Chat.Id, "Received message " + e.CallbackQuery.Data);
        }
    }

Контроллер:

[Route("api/[controller]")]
    [ApiController]
    public class MessageController : ControllerBase
    {
        TelegramBotClient botClient;
        [HttpPost]
        public async Task<OkResult> Post([FromBody]Update update)
        {
            if (update == null) return Ok();

            var commands = Bot.Commands;
            var message = update.Message;
            botClient = await Bot.GetBotClientAsync();

            if (update.Type == Telegram.Bot.Types.Enums.UpdateType.Message)
            {
                foreach (var command in commands)
                {
                    if (command.Contains(message))
                    {
                        await command.Execute(message, botClient);
                        break;
                    }
                }
            }
            return Ok();
        }
    }

В ответ на нажатие ничего не происходит. Пробовал в обработчике метод AnswerCallbackQueryAsync
Подскажите пожалуйста каким образом можно решить поставленную задачу, используя выбранный стек.
Asp NET Core v2.0
Telegram API https://github.com/TelegramBots/Telegram.Bot


Ответы (0 шт):