当InlineKeyboardCallbackButton在C#中的电报Bot中点击时,如何获取当前的CallbackData?

时间:2017-09-10 18:24:06

标签: c# telegram-bot telegram-webhook

如何在电报机器人中点击InlineKeyboardCallbackButton?

这是我的代码:我编辑了代码

public async System.Threading.Tasks.Task<ActionResult> GetMsgAsync()
     {
     var req = Request.InputStream; 
     var responsString = new StreamReader(req).ReadToEnd(); 
     var update = JsonConvert.DeserializeObject<Update>(responsString);
     var message = update.Message;  
     var chat = message.Chat;  


  InlineKeyboardMarkup categoryInlineMarkup = new 
      InlineKeyboardMarkup(
         new InlineKeyboardButton[][]
                        {
                        new InlineKeyboardButton[]
                            {
                  new InlineKeyboardCallbackButton("button1","callbackData")
                            }
                        }
                           );

                await api.SendTextMessageAsync(update.Message.Chat.Id, "Please click the button", replyMarkup: categoryInlineMarkup);

                if (update.Type == Telegram.Bot.Types.Enums.UpdateType.MessageUpdate)
                {
                    // all codes just run in this block
                }



                if (update.Type == Telegram.Bot.Types.Enums.UpdateType.CallbackQueryUpdate)
                {
                    // I can't get clicked button here 
                    if (update.CallbackQuery.Data.Contains("callbackData"))
                    {
                        await api.AnswerCallbackQueryAsync(update.CallbackQuery.Id, update.CallbackQuery.Data);
                    }
                }


   }

如何在webhook方法中点击此按钮,而不是在控制台程序中?

1 个答案:

答案 0 :(得分:0)

最后我找到答案,问题是这行代码:

  var message = update.Message; 
  

这行代码是主要问题,因为这行不在try中   catch block,我无法理解哪一行是问题。

在这个问题之后,我有一个建议给你 您可以在个人计算机上调试电报机器人,而无需在任何主机上上传任何代码,为此您可以在以下步骤中运行3 ::

1- Accessing an IIS Express site from a remote computer

2- Download NGROK

下载ngrok后,您可以将电报webhook请求转发到您的个人计算机。