返回首页
当前位置:首页>网络编程>it生活>>文章浏览:一次接收微信公众平台推送消息的实例

一次接收微信公众平台推送消息的实例

时间:2017年7月1日来源:互联网 作者:小恩 我要评论
朋友咨询怎么做微信公众号信息的收发消息功能,因此本着为社区做贡献的态度申请了个人公众号,然后尝试对接了一下接收公众号内容信息的流程;要说对接其实呢也算不上,因为个人账号只有简单的一些接收,被动回复等功能信息,不能群发和使用客服接口

 

在公众平台上绑定消息通知接收地址

这种设置的东西,其实跟着官网设置就行了,不过本人根据官网文档一步一步设置的时候,还是遇到一些问题,因此这里需要记录下注意的关键点;首先我们登陆公众平台-》开发-》基本配置-》点击“修改配置”-》这个时候会出现以下截图:

填写上面内容的时候需要注意以下几点:

1. 接收的url地址必须外网能访问并且在80端口

2. 第一次保存“服务器配置”时,必须在接收地址中以get方式获取的公众平台通知的“echostr”参数,然后返回输出这个“echostr”值给平台(这样你在公众平台保存服务配置的时候才能成功),这个地方官网文字描述不是很突出,不重点看的话很难发现

到此,只要做到上面两点那么您“服务器配置”才能保存成功,千万仔细哦;

 

分享接收公众平台通知信息的代码

复制代码

                                                                      echostr = Request.Query[              (.IsNullOrWhiteSpace(echostr)) {                 sbLog =  StringBuilder(             sbLog.Append($                               sbLog.Append($                                sbLog.Append($                                       }

复制代码

接收post过来的用户发送的内容信息,目前公众平台通知的类型有: text:文本消息 image:图形消息 voice:语音消息 video:视频消息 shortvideo:小视频消息 location:地理位置 link:链接消息;

复制代码

                                                         sbLog =  StringBuilder(              now =              reStr = .Empty;               sbLog.Append($                                str =                   ( stream =                       ( reader =                           str =                   sbLog.Append($                  (.IsNullOrWhiteSpace(str)) {                    data = PublicTool._XmlDeserialize<xml>                  (data == ) {                  sbLog.Append($                                                                                                                                                                                                                                                                                                                                                                                                                                            reHuaYu =                   (data.Content.Contains() || data.Content.Contains(                      reHuaYu =                     (data.Content.Contains() || data.Content.Contains() || data.Content.Contains() || data.Content.Contains(                      reHuaYu =                     (!                      reStr = .Format(                                                                                       sbLog.Append($                                 (!                          }

复制代码

 

iis和Kestrel监听项目端口引发的一些思考,待解惑

本次我使用的是.netcore的webapi来接收通知消息,但是当公众平台有80端口限制的时候,顿时我蒙了,因为我服务器iis上有一个项目是绑定了80端口的,这个时候如果使用Kestrel再绑定一个端口那肯定不行的;想到iis可以创建虚拟子应用程序(多个子应用程序对应一个大的网站配置,这样80端口就可以共享了),思考着Kestrel是不是也可以呢,失望的是查了很多资料都暂时没有涉及到或者是我没有找到这方面的资料,因此只好放弃了;

下面分享下.netcore中我操作xml序列化和反序列方法,首先需要引入 System.Xml.Serialization :

复制代码

                                                               T _XmlDeserialize<T>( xml)  T : ,               T t =               (.IsNullOrEmpty(xml))               XmlSerializer serializer =  XmlSerializer(              ( reader =                   t =                                                                             _XMLSerialize(              XmlSerializer xs =              StringBuilder strBuidler =              XmlWriterSettings setting =              setting.OmitXmlDeclaration = ;              (System.Xml.XmlWriter xw =                  XmlSerializerNamespaces xmlns =                  xmlns.Add(.Empty,                         }

复制代码

文本日志

复制代码

                                                      WriteLog( content,  basePath =               basePath = basePath ??              now =               year = now.ToString(              month = now.ToString(              date = now.ToString(               fileName = $HH              path =              (!                   basePath =                  (!                  basePath =                  (!                  basePath =                  (!                  path =               (FileStream stream =                    ( writer =                        writer.WriteLineAsync($yyyy-MM-dd HH:mm:ss.fff           }

复制代码

总结一下吧:

有点好奇为什么微信公众平台使用的是xml格式数据来交互,不知道是出于什么考虑;从接口对接上来说很简单,就是平长的get,post方式来传递数据,需要注意的应该是一些细节上的问题吧;还有待解决Kestrel部署netcore时是否能创建多个子虚拟目录问题(如果您已经知道了这个答案,请不吝赐教,谢谢);最后发一张测试的公众号二维码,关注后输入:测试 或 您好,群主等信息会有我接口返回的自动回复信息;

(责任编辑:小恩)
顶一下

()
踩一下
()
------分隔线----------------------------