2016-12-11 25 views
1

我使用C#編程Telegram Bot,但是當我設置webhook時,我無法填充更新對象?我使用ashx處理程序。如何使用C#中的webhook獲取更新對象?

public void ProcessRequest(HttpContext context) 
    { 
     Fwk_Log.Insert("before","before"); 
     var update = context.Request.QueryString["Update"]; 
     Fwk_Log.Insert(update, "update = "); 
     long offset = 0; 
     int whilecount = 0; 
     int updateId = 0; 
     whilecount += 1; 
     string updates = Fwk_HttpRequest.ExecuteUrlRequestJSONString("https://api.telegram.org/bot" + Token + "/getUpdates"); 
     Shp_Telegram_GetUpdate list = new JavaScriptSerializer().Deserialize<Shp_Telegram_GetUpdate>(updates); 
     if (list != null) 
     { 
      foreach (var r in list.result) 
      { 
       //offset = list.result.First().update_id; 
       if (r.message.text == "/start") 
       { 
        Fwk_HttpRequest.ExecuteUrlRequestJSONString("https://api.telegram.org/bot" + Token + 
         "/sendMessage?chat_id=" + r.message.chat.id + "&text=" + "Hello World"); 
        Fwk_Log.Insert("sendMessage", ""); 
       } 
      } 
     } 
    } 

回答

1

你正在混淆事物。見here

有兩個爲您 機器人接收更新的相互排斥的方式 - 一方面和網絡掛接在其他的getUpdates方法。 傳入更新存儲在服務器上,直到機器人以任一方式收到它們 ,但它們不會超過24小時。

無論您選擇哪種選項,您都會收到 JSON序列化的更新對象。

如果您正在使用網絡掛接,你不需要調用getUpdate方法。

+0

謝謝你的回答。我在webhook上設置了我的服務,並讓我的電報機器人成功建立。現在如果有人向Bot發送了一條消息給服務,但不知道如何填充更新對象? @ charles-okwuagwu public void ProcessRequest(HttpContext context) { Fwk_Log.Insert(「before」,「before」); var update = context.Request.QueryString [「Update」]; Fwk_Log.Insert(update,「update =」); context.Response.Write(「my service」); } – milad

+0

@milad所以你可以收到更新,你需要的只是一種處理它們的方式,對吧? –

+0

是的,我需要一種方式來處理這個。只是我想要如何填充更新對象?當你收到一個傳入的更新時,我使用ASP – milad