Heim >WeChat-Applet >WeChat-Entwicklung >Detaillierte Erläuterung des benutzerdefinierten Menücodes für die .Net-Entwicklung der öffentlichen WeChat-Plattform

Detaillierte Erläuterung des benutzerdefinierten Menücodes für die .Net-Entwicklung der öffentlichen WeChat-Plattform

Y2J
Y2JOriginal
2017-04-25 10:41:391572Durchsuche

Dieser Artikel bietet Ihnen hauptsächlich eine detaillierte Analyse des von der öffentlichen WeChat-Plattform entwickelten benutzerdefinierten Menüs Verwenden Sie die zuvor erläuterte Funktion IsExistAccess_Token(). Soweit ich weiß, sind die Menüs auf der öffentlichen WeChat-Plattform in Schaltflächen und Unterschaltflächen unterteilt, dh Menüs und Untermenüs, und die Kategorien sind in Klick- und Ansichtsklassen unterteilt ; und die Ansichtsklasse hat das URL-Attribut und enthält das Untermenü. Das Menü hat kein Schlüsselattribut oder URL-Attribut. Diese Situationen lassen sich anhand der folgenden Beispiele erkennen.



Rufen Sie dies MyMenu() in der Page_Load-Funktion Ihrer Seite auf und es wird angezeigt.
 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);
  }
Wie starte ich nun, da es angezeigt wird, die Menüzeit? Wir haben bereits erfahren, dass der Typ „Ansicht“ über ein URL-Attribut verfügt. Nach dem Klicken wird direkt zur Seite der von Ihnen festgelegten URL gesprungen dem Klick. Sie können der WeChat-Dokumentation folgen. Verwenden Sie (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK"), um den vorherigen Code zu beurteilen und den Wert von EventKey anzufügen die GetWxMessage()-Methode ,wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText




Dies entspricht Ihrem Menü. Es gibt viele Bereiche, die in dem oben geschriebenen Code optimiert werden können. Hier werde ich mich hauptsächlich auf die Einführung konzentrieren. In Zukunft werden wir schrittweise ein .net-Framework erstellen Plattform, einschließlich Menüklassen, Nachrichtenklassen usw.
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;
  }

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des benutzerdefinierten Menücodes für die .Net-Entwicklung der öffentlichen WeChat-Plattform. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn