亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

微信公眾平臺(tái)開發(fā)之自定義菜單.Net代碼解析

 更新時(shí)間:2016年06月29日 12:02:16   作者:hemeng  
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開發(fā)之自定義菜單.Net代碼,感興趣的小伙伴們可以參考一下

用戶自定義菜單制作時(shí),需要用到access_token,我們直接使用前面講解的IsExistAccess_Token()函數(shù)。我理解的微信公共平臺(tái)里面菜單分為button和sub_button,即菜單和子菜單,這些菜單都有一個(gè)name的屬性,類別分為click和view,click類有key屬性;而view類有url屬性,含有子菜單的菜單沒(méi)有key屬性也沒(méi)有url屬性。這些情況可以從下面的例子看出來(lái)。

 public void MyMenu()
  {
   string weixin1 = "";
   weixin1 = @" {
  ""button"":[
  { 
   ""type"":""click"",
   ""name"":""你好!"",
   ""key"":""Hello""
  },
  {
   ""type"":""view"",
   ""name"":""公司簡(jiǎn)介"",
   ""url"":""http://www.4ugood.net""
  },
  {
   ""name"":""產(chǎn)品介紹"",
   ""sub_button"":[
   {
    ""type"":""click"",
    ""name"":""產(chǎn)品1"",
    ""key"":""P1""
   },
   {
    ""type"":""click"",
    ""name"":""產(chǎn)品2"",
    ""key"":""P2""
   }]
  }]
 }
";

   string access_token = IsExistAccess_Token();
   string i = GetPage("https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+access_token, weixin1);
   Response.Write(i);
  }

在你頁(yè)面的 Page_Load 函數(shù)中調(diào)用這個(gè)MyMenu(),就可以顯示出來(lái)了。
既然顯示出來(lái)了,菜單的時(shí)間如何出發(fā)呢?我們已經(jīng)了解到了如果類型為view的話,他有url屬性,這個(gè)不需要處理,點(diǎn)擊后會(huì)直接跳轉(zhuǎn)到你設(shè)定的url的頁(yè)面,下面我來(lái)看看如何觸發(fā)click吧,按照微信的文檔可以用(!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")來(lái)判斷,我把之前的代碼改造一下,同時(shí)把在GetWxMessage()方法中把EventKey的值附上,wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;  

protected void Page_Load(object sender, EventArgs e)
  {
  
   MyMenu();
   wxmessage wx = GetWxMessage();
   string res = "";

   if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "subscribe")
   {
    string content = "";
    content = "/:rose歡迎北京永杰友信科技有限公司/:rose\n直接回復(fù)“你好”";
    res = sendTextMessage(wx, content);
   }
   else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")
   {
    if(wx.EventKey=="Hello")
     res = sendTextMessage(wx, "你好,歡迎使用北京永杰友信科技有限公司公共微信平臺(tái)!");
    if(wx.EventKey=="P1")
     res = sendTextMessage(wx, "你好,點(diǎn)擊了產(chǎn)品1");
    if(wx.EventKey=="P2")
     res = sendTextMessage(wx, "你好,點(diǎn)擊了產(chǎn)品2");
   }
   else
   {
    if (wx.MsgType == "text" && wx.Content == "你好")
    {
     res = sendTextMessage(wx, "你好,歡迎使用北京永杰友信科技有限公司公共微信平臺(tái)!");
    }
    else if (wx.MsgType == "voice")
    {
     res = sendTextMessage(wx, wx.Recognition);
    }
    else
    {
     res = sendTextMessage(wx, "你好,未能識(shí)別消息!");
    }
   }

   Response.Write(res);
  }



  private wxmessage GetWxMessage()
  {
   wxmessage wx = new wxmessage();
   StreamReader str = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8);
   XmlDocument xml = new XmlDocument();
   xml.Load(str);
   wx.ToUserName = xml.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;
   wx.FromUserName = xml.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
   wx.MsgType = xml.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
   if (wx.MsgType.Trim() == "text")
   {
    wx.Content = xml.SelectSingleNode("xml").SelectSingleNode("Content").InnerText;
   }
   if (wx.MsgType.Trim() == "event")
   {
    wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
    wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;
   }
   if (wx.MsgType.Trim() == "voice")
   {
    wx.Recognition = xml.SelectSingleNode("xml").SelectSingleNode("Recognition").InnerText;
   }
   
   return wx;
  }




/// <summary> 
  /// 發(fā)送文字消息 
  /// </summary> 
  /// <param name="wx">獲取的收發(fā)者信息</param> 
  /// <param name="content">內(nèi)容</param> 
  /// <returns></returns> 
  private string sendTextMessage(wxmessage wx, string content)
  {
   string res = string.Format(@"<xml>
         <ToUserName><![CDATA[{0}]]></ToUserName>
         <FromUserName><![CDATA[{1}]]></FromUserName>
         <CreateTime>{2}</CreateTime>
         <MsgType><![CDATA[text]]></MsgType>
         <Content><![CDATA[{3}]]></Content>
         </xml> ",
    wx.FromUserName, wx.ToUserName, DateTime.Now, content);
   return res;
  }

 這樣就可以相應(yīng)你的菜單事件了,我上面的代碼寫的有很多可以優(yōu)化的地方,這里主要以簡(jiǎn)介為主,以后我們會(huì)逐漸搭建起一個(gè)微信公共平臺(tái)的.net框架,什么菜單類,消息類等等。 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解析.netcore項(xiàng)目中IStartupFilter使用教程

    解析.netcore項(xiàng)目中IStartupFilter使用教程

    netcore項(xiàng)目中有些服務(wù)是在通過(guò)中間件來(lái)通信的,比如orleans組件,今天通過(guò)實(shí)例代碼給大家介紹下netcore項(xiàng)目中IStartupFilter使用教程,感興趣的朋友一起看看吧
    2021-11-11
  • ASP.NET服務(wù)器控件開發(fā)(1)封裝html

    ASP.NET服務(wù)器控件開發(fā)(1)封裝html

    在我們的項(xiàng)目開發(fā)中,由于ASP.NET的服務(wù)器控件功能有限,所以我們經(jīng)常會(huì)自己定義特定的服務(wù)器控件,來(lái)滿足開發(fā)中特定的業(yè)務(wù)要求??梢?jiàn)知道如何開發(fā)ASP.NET服務(wù)器控件是非常有必要的
    2015-12-12
  • UrlRewrite概念原理及使用方法解析

    UrlRewrite概念原理及使用方法解析

    這篇文章主要介紹了UrlRewrite概念原理及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • .net 數(shù)據(jù)表格顯示控件介紹

    .net 數(shù)據(jù)表格顯示控件介紹

    這篇文章主要介紹了.net 數(shù)據(jù)表格顯示控件有哪些,適用于哪些場(chǎng)景,需要的朋友可以參考下
    2014-06-06
  • Asp.Mvc 2.0用戶的編輯與刪除實(shí)例講解(5)

    Asp.Mvc 2.0用戶的編輯與刪除實(shí)例講解(5)

    這篇文章主要介紹了Asp.Mvc 2.0用戶的編輯與刪除功能,需要的朋友可以參考下
    2015-08-08
  • asp.net中ADO SQL數(shù)據(jù)庫(kù) 筆記匯總 持續(xù)更新中

    asp.net中ADO SQL數(shù)據(jù)庫(kù) 筆記匯總 持續(xù)更新中

    asp.net中ADO SQL數(shù)據(jù)庫(kù) 筆記匯總 持續(xù)更新中,需要的朋友可以參考下
    2012-07-07
  • WPF常用控件用法及介紹

    WPF常用控件用法及介紹

    本文詳細(xì)講解了WPF常用控件用法及介紹,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • asp.net動(dòng)態(tài)添加js文件調(diào)用到網(wǎng)頁(yè)的方法

    asp.net動(dòng)態(tài)添加js文件調(diào)用到網(wǎng)頁(yè)的方法

    這篇文章主要介紹了asp.net動(dòng)態(tài)添加js文件調(diào)用到網(wǎng)頁(yè)的方法,涉及asp.net動(dòng)態(tài)添加js的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • asp.net 按字節(jié)檢查包含全半角的文字

    asp.net 按字節(jié)檢查包含全半角的文字

    (VB.Net) 這個(gè)方法用于檢查又有全角字符,又有半角字符的寫入信息很有用的!
    2009-04-04
  • ASP.NET如何自定義項(xiàng)目模板詳解

    ASP.NET如何自定義項(xiàng)目模板詳解

    這篇文章主要給大家介紹了關(guān)于ASP.NET如何自定義項(xiàng)目模板的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論