国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 微信公眾平臺開發之自定義菜單.Net代碼解析

微信公眾平臺開發之自定義菜單.Net代碼解析

2020-01-20 10:47hemeng ASP.NET教程

這篇文章主要為大家詳細解析了微信公眾平臺開發之自定義菜單.Net代碼,感興趣的小伙伴們可以參考一下

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void MyMenu()
  {
   string weixin1 = "";
   weixin1 = @" {
  ""button"":[
  {
   ""type"":""click"",
   ""name"":""你好!"",
   ""key"":""Hello""
  },
  {
   ""type"":""view"",
   ""name"":""公司簡介"",
   ""url"":""http://www.4ugood.net""
  },
  {
   ""name"":""產品介紹"",
   ""sub_button"":[
   {
    ""type"":""click"",
    ""name"":""產品1"",
    ""key"":""P1""
   },
   {
    ""type"":""click"",
    ""name"":""產品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);
  }

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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直接回復“你好”";
    res = sendTextMessage(wx, content);
   }
   else if (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")
   {
    if(wx.EventKey=="Hello")
     res = sendTextMessage(wx, "你好,歡迎使用北京永杰友信科技有限公司公共微信平臺!");
    if(wx.EventKey=="P1")
     res = sendTextMessage(wx, "你好,點擊了產品1");
    if(wx.EventKey=="P2")
     res = sendTextMessage(wx, "你好,點擊了產品2");
   }
   else
   {
    if (wx.MsgType == "text" && wx.Content == "你好")
    {
     res = sendTextMessage(wx, "你好,歡迎使用北京永杰友信科技有限公司公共微信平臺!");
    }
    else if (wx.MsgType == "voice")
    {
     res = sendTextMessage(wx, wx.Recognition);
    }
    else
    {
     res = sendTextMessage(wx, "你好,未能識別消息!");
    }
   }
 
   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>
  /// 發送文字消息
  /// </summary>
  /// <param name="wx">獲取的收發者信息</param>
  /// <param name="content">內容</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;
  }

 這樣就可以相應你的菜單事件了,我上面的代碼寫的有很多可以優化的地方,這里主要以簡介為主,以后我們會逐漸搭建起一個微信公共平臺的.net框架,什么菜單類,消息類等等。 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美91| 国产午夜精品视频 | 波多野结衣一区二区三区免费视频 | 男女做爰猛烈叫床无遮挡 | 精品免费视频 | 欧美日韩精品久久久免费观看 | 久久精品二区 | 凹凸日日摸日日碰夜夜爽孕妇 | 亚洲一一在线 | 亚洲精品一区二区三区在线 | 欧美a级片在线观看 | 午夜午夜精品一区二区三区文 | 色综合久 | 欧美区国产区 | av在线入口| 激情久久久 | 久久久精品蜜桃 | 亚洲一区二区在线视频 | 欧美自拍一区 | 日韩精品专区在线影院重磅 | 日韩在线观看成人 | 亚洲欧美另类久久久精品2019 | 日本不卡视频 | 国产精品黄色 | 亚州国产精品视频 | 青青草原综合久久大伊人精品 | 日韩一区二区视频 | 日韩中文字幕一区二区三区 | 成人精品视频在线观看 | 不卡一区二区三区视频 | 黄色一级毛片免费看 | 91在线免费观看 | 免费观看污污视频 | 小情侣高清国产在线播放 | 色a在线 | 91精选| 激情五月婷婷av | 91av在线免费观看 | 国产精品免费视频观看 | 免费国产黄色大片 | 国产精品成人3p一区二区三区 |