>  기사  >  위챗 애플릿  >  WeChat 공개 플랫폼의 .Net 개발을 위한 사용자 정의 메뉴 코드에 대한 자세한 설명

WeChat 공개 플랫폼의 .Net 개발을 위한 사용자 정의 메뉴 코드에 대한 자세한 설명

Y2J
Y2J원래의
2017-04-25 10:41:391554검색

이 글은 주로 WeChat 공개 플랫폼에서 개발한 사용자 정의 메뉴 .Net 코드에 대한 자세한 분석을 제공합니다. 관심 있는 친구들은 이를 참고할 수 있습니다.

사용자 정의 메뉴를 만들 때 access_token이 필요합니다. 앞서 설명한 IsExistAccess_Token() 함수를 사용하세요. 제가 알기로는 위챗 공개 플랫폼의 메뉴는 버튼과 하위 버튼, 즉 메뉴와 하위 메뉴로 나누어져 있으며, 이러한 메뉴에는 이름 속성이 있고, 클릭 클래스에는 키 속성이 있습니다. ; 그리고 뷰 클래스에는 url 속성이 있으며 메뉴 메뉴에는 키 속성이나 url 속성이 없습니다. 이러한 상황은 다음 예에서 볼 수 있습니다.


 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 페이지로 바로 이동합니다. 클릭하면 WeChat 문서를 따라갈 수 있습니다. (!string.IsNullOrEmpty(wx.EventName) && wx.EventName.Trim() == "CLICK")을 사용하여 이전 코드를 수정하고 EventKey 값을 첨부했습니다. GetWxMessage() 메서드 ,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直接回复“你好”";
    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;
  }

메뉴 이벤트에 응답할 수 있습니다. 위에서 작성한 코드에는 최적화할 수 있는 영역이 많이 있습니다. 여기서는 주로 소개에 중점을 두고 앞으로 WeChat 공개 플랫폼을 위한 .net 프레임워크를 구축할 것입니다. 메뉴 클래스, 메시지 클래스 등을 포함합니다.

위 내용은 WeChat 공개 플랫폼의 .Net 개발을 위한 사용자 정의 메뉴 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.