栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

实例:用C#.NET手把手教你做微信公众号开发(8)--普通消息处理之链接(普通消息终结篇)

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实例:用C#.NET手把手教你做微信公众号开发(8)--普通消息处理之链接(普通消息终结篇)

一、应用举例

链接消息没有太多感知的用途,或许是我孤陋寡闻。

已知的应用可以是超级链接分类汇总,就像hao123.com,紧紧只是一个静态HTML页面,对各种网站分类汇总导航,依然也可以发展的很好,后来被百度收购了。

那么公众号也可以通过粉丝推荐来收集各式各样的网站应用。

二、获取微信用户链接信息方式

在微信里面打开一个页面,直接转发给公众号,就收到了链接消息。如下图

 

三、微信服务器发送消息格式

用户发送的链接消息,经微信服务器处理后,形成如下XML格式发到你的服务器: 


  
  
  1351776360
  
  <![CDATA[公众平台官网链接]]>
  
  
  1234567890123456

四、具体实现的源码

在接收到微信服务器发来的内容之后,首先由指定的接口网页AccessWx.aspx对信息类型进行判别,然后交给指定的消息处理类处理和回应。在本系列文章第1篇介绍的AccessWx.aspx.cs中开始部分引入命名空间using QinMing.Weixin.MessageHandlerLink;

			else if(MsgType == "link")
			{
				//对用户发送的链接消息处理,使用QinMing.Weixin.MessageHandlerLink命名空间下的LinkMessageDeal类
				LinkMessageDeal lkmd = new LinkMessageDeal();
				Response.Write(lkmd.DealResult(weixinXML));	
			}

在命名空间QinMing.Weixin.MessageHandlerLlink下新建一个类LinkMessageDeal,用来处理微信服务器发来的链接消息。记得类源码文件要放在App_Code目录下!下面是链接消息处理源码:QinMingWeixinMessageHandlerLink.cs

using System;
using System.Web;
using System.Xml;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using QinMing.Config;
using QinMing.Weixin.ReturnContent;
//using QinMing.WeixinSendTemplateMessage;

namespace QinMing.Weixin.MessageHandlerLink
{
	//链接消息处理
    public class LinkMessageDeal :System.Web.UI.Page
    {

		public string DealResult(string weixinXML)
        {
            string content = DealLink(weixinXML);  
            return content;
        }

        public string DealLink(string weixinXML)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(weixinXML);
            XmlNodeList list = doc.GetElementsByTagName("xml");
            XmlNode xn = list[0];
            string FromUserName = xn.SelectSingleNode("//FromUserName").InnerText;   //关注用户的加密后openid
            string ToUserName = xn.SelectSingleNode("//ToUserName").InnerText;       //公众微信号原始ID
            string strresponse = "";
			
			//用户通过向公众号发送位置发送链接信息
			string Title = xn.SelectSingleNode("//Title").InnerText;
			string Description = xn.SelectSingleNode("//Description").InnerText;
			string Url = xn.SelectSingleNode("//Url").InnerText;
			string MsgId = xn.SelectSingleNode("//MsgId").InnerText;
			
			//保存链接信息
			SaveLink(FromUserName, ToUserName, Title, Description, Url, MsgId);
			
			ReturnMsg rm = new ReturnMsg();
			strresponse = rm.ReturnText(FromUserName, ToUserName, "您发送的链接信息已收录,感谢您的参与");			
			
			//告知客服人员有微信用户发送链接消息
			//QinMingWeixinSendTemplateMessage SendTempMsg = new QinMingWeixinSendTemplateMessage();
			//SendTempMsg.SendTempMsgRemind("管理员的openid", "客户发送位置消息", "");  

            return strresponse; 
        }
		
		//把用户发的链接信息保存到数据表表中
		public void SaveLink(string FromUserName, string ToUserName, string Title, string Description , string Url, string MsgId)
		{
            SqlConnection conn = new SqlConnection(QinMingConfig.DatabaseConnStr);
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
			
			cmd.CommandText = "insert into weixin_recv_msg (msg_type,msg_id,open_id,gh_id,recv_time,link_title,link_description,link_url) values("
			    + "'link','" + MsgId + "','" + FromUserName + "','" + ToUserName + "',getdate(),'" + Title + "','" + Description + "','" + Url + "')";
            cmd.ExecuteScalar();
			
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
                conn.Dispose();
            }
		}

    }
}

 五、普通消息篇章所用的数据表创建语句

--公众号接收到微信用户的普通消息
create table weixin_recv_msg
(
msg_type varchar(30),              --消息类型
msg_id varchar(40),                --消息编号
open_id varchar(40),               --微信用户的openid
gh_id varchar(30),                 --公众号原始id
recv_time datetime,                --接收时间
text_content ntext,                --微信用户发送的文本内容
pic_url ntext,                     --微信用户发送的图片链接
media_id varchar(40),              --微信用户发送的媒体链接,微信服务器专用链接(含语音、视频、段视频)
voice_format varchar(20),          --语音消息格式
voice_recognition varchar(40),     --语音消息转译后的文字
video_thumb_media_id varchar(40),  --视频消息、段视频消息的缩略图链接
location_x float,                  --位置消息纬度
location_y float,                  --位置消息经度
location_scale int,                --位置消息精度
location_label varchar(200),       --位置消息详细地址
link_title varchar(300),           --链接消息标题
link_description ntext,            --链接消息描述
link_url ntext                     --链接消息超链接
)

上表只是用来学习的参考用表,不符合关系数据库的范式要求,存在冗余字段,猿友们可以根据需要自行拆表。

到这里微信公众提供的普通消息如何处理就全部讲解完了,下一篇预告:介绍菜单设置;然后开始讲解事件消息如何处理;再然后讲解激动人心的发红包和收钱,涉及微信支付知识,请提前准备好微信支付功能。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905160.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号