平台说明

首先再次感谢您对本公众号的关注!

welcome

想必大家也发现了,这个公众号的布局和我们关注的一般公众号有些区别(没有自定义菜单以及文章界面的巨大差别),在大家探索这个公众号之前,我先简单介绍下这个公众号和它的支撑平台是如何运转的。

一般公众号的后台处理是基于微信公众平台服务器的,所有的自动回复,自定义菜单等等功能都是在接到数据后转入微信的后端服务器处理并返回,所以这类公众号的文章板块样式几乎一模一样:最上面是标题,标题左下角是时间和作者,右下角是文章来源的公众号。如果在文章页面把屏幕下拉,可以看到后台支持网站,这类公众号都是mp.weixin.qq.com如下图。我所关注的40余个公众号全部都是这类没有启用自己后端服务器的公众号(当然也不是说用微信自带的平台不好,只是少了很多自己开发的乐趣)

wechatp1

从腾讯云租到了服务器和域名之后,我开始搭建一个属于自己的网络平台(关于搭建过程,在公众号的相应文章里有涉及)。经过一定时间的探索,顺利地把基于edwardxu.cn这个网站的前后端已经公众号拓展平台全部搭建起来。因此,这个公众号接到的数据不会再接入微信公众平台的后端服务器,而是接入我自己edwardxu.cn的后端cms系统进行处理并返回。这就是微信公众号的开发者模式。但由于只是个人订阅号,不能进行微信认证,所以不具有开发自定义菜单的接口权限,所以这个公众号没有菜单。下图是公众号开发者模式和默认模式的后台数据来源区别。

wechatp2

虽然没有了自定义菜单这个优秀的功能,但不妨碍开发模式灵活的优势,我在自定义回复模块里实现了一个简单的机器人功能(相应技术细节请见技术贴:公众号+建站过程简述)。大家在探索公众号时,不仅可以接收到不定时的消息推送,还可以在输入框里输入相应关键词实践对相应文章的阅读(默认模式也有这个功能,但开发者模式里的这个功能更加灵活)。如果没有匹配到文章时,还会有贴心小助手洛丽塔陪大家聊天,可别小瞧洛丽塔,她的功能十分强大。除此之外,相应的输入规则在欢迎辞里已经显示,如果大家忘记了,可以在对话框里输入help,所有的规则就会出现。大家也可以在对话框里随便输入点什么,说不定可以挖到我埋下的彩蛋~

这个公众号只是整个平台体系的一个扩展,大家如果有兴趣可以访问我的个人主页edwardxu.cn。最后祝大家在日天的炉边谈话中收获快乐和经验~

公众号+建站过程简述

最近实验室基本没工作,申请材料也准备的差不太多了,闲来无事就想开发个微信公众号玩玩,但只用公众号助手提供的那些基本功能太不过瘾,学CS的当然要进入开发模式了。

于是,怀着实习后对腾讯爆炸般的好感,我自然选择了腾讯云作为整个的平台支持。在腾讯云认证学生身份后,服务器加cn域名简直是白菜价,一个月1RMB。连着抢了2天优惠名额后,终于顺利斩获属于自己的服务器和域名,就这样,时隔1个多月,我再次用secureCRT登上了属于自己的服务器。

最早也没有做网站的打算,只想用这个服务器作为公众号的后台,实现些公众号自动回复的机器人功能。后来一想既然有了服务器和域名,为什么不在做公众号的同时自己也开发一个网站。其实申请到www.edwardxu.cn这个域名很方便,但域名备案的过程真的特别繁琐(各种材料拍照上传,腾讯还要特意寄个幕布过来让网站负责人在幕布前照相才能在工信部备案)。这里有个小插曲,最早其实我是想申请com域名的,但发现www.edwardxu.com这个域名已经被注册了,然后我到这个网站里去看了看,发现他用的cms系统和我这个网站是同一个,这倒不算什么,但我点进这个同叫Edward Xu的网站站主留下的领英时,简直惊呆了!他居然也是西安交通大学毕业的!比我大10届,简直太有缘分了0.0,果断加了领英联系人。

有点扯远了,继续回到建站的流程,我服务器装的是CentOS系统,考虑了半天是用Apache还是Nginx作为服务器,最后还是用了lamp(Linux+Apache+Mysql+php)这一套(别问我为什么)。最早是用yum分别装Apache, Mysql和php的,但折腾一天碰到各种版本配置问题的我还是妥协了,用了别人集成好的lamp安装脚本进行安装(技不如人甘拜下风)。但这期间也遇到了些问题,比如服务器上有2个版本的Mysql(开始独立包安装的和后来集成的)半天登不进数据库的问题,比如Apache默认Document Root错误问题,还有后来的php权限问题等等。好不容易把这个折腾过了,终于可以开始选择cms用哪一套了,考虑过几个:国内做的比较好的phpcms和禅知系统,但最后还是选了比较小清新的wordpress。

当然整个Apache不会只留给wordpress,主页我还是打算自己写的,虽然现在的主页还丑陋无比。就这样,整个网站的大体框架就搭建起来了,首先是自己写的主页edwardxu.cn,然后大家可以跳转到由wordpress搭建的博客或者我的知乎或者以后添加的各个模块之类的。再然后回到公众号上面来,wordpress作为一个cms已经提供了很好的插件,其中有一个叫Wechat-Manager的插件可以用来开发公众号(还有一个很赞的插件Add-From-Server完美地解决了我不能从本地上传文件到wordpress的问题)。但这样以网站服务器作为公众号的后台,把博客的文章转入公众号里,这点功能不足以拿出手,于是我又再此基础上增加了一个强大的功能:微信机器人。只采用wordpress作为后台的话公众号就相当于是个博客的外延,单后台的架构也很无聊。于是我想到了再增加一个图灵机器人的后台,这样可以实现公众号有意思的自动回复。然而双后台肯定会遇到问题,当用户发送消息到公众号里,该消息会同时给wordpress和图灵机器人,它们都返回会使得用户收到两条反馈,极大地影响用户体验。查阅资料后发现不能对图灵机器人进行关键字屏蔽,只有一个总开关获取所有的公众号消息,这样肯定不符合要求。于是,还是得以网站服务器为主导地位,修改Wechat-Manager的php源码,使得没有匹配到文章的用户输入值转入一个新的逻辑(旧逻辑是直接输出:暂无相关文章。这样很无聊)。新的逻辑是把这个值导入图灵机器人提供的web API中,通过JSON post到其相应后端,后台经过处理再返回到wordpress的Wechat-Manager,再又Wechat-Manager返回公众号,实现了一个嵌套后台的逻辑解决了双后台的问题。这样,公众号的功能就相当强大了,用户输入预留关键字获得相应信息,输入文章关键字返回博客文章列表,无匹配时,会有机器人洛丽塔陪用户聊天,进入图灵机器人的后台。嵌套后台的架构使得这个公众号活力无穷,也能带给用户很好的体验。

就这样,一整个大系统就这样建立起来了(服务器+微信公众号+网站),扯了半天,稍微总结下整个流程:申请微信公众号+腾讯云学生套餐(服务器+域名),把域名绑定到服务器上,公众号定义菜单写文章+搭建服务器基本环境(lamp)+域名备案(不必须),建立建站工具(当然也可以纯手写),把公众号绑定到网站后台使得公众号收到的消息进入服务器进行解析并根据相应代码处理并返回,加入微信机器人功能(洛丽塔),继续完善网站和公众号。整个流程不算复杂,但也会或多或少碰到各种各样奇葩的问题,攻克它们之后就可以尽情地发挥创造力随便折腾自己的网站和公众号了,大家也可以尝试尝试,其实很有意思!

Edward Xu

About

CONIUNCTIONEM is a Latin word which means connection.

I built this personal website is for letting people know me in a better way. The homepage is just like a website-hub which contains most social websites I frequently use: Facebook, Instagram, LinkedIn, ZhiHu and hidden GitHub. I may share some technology articles or just some life trivia in my Blog, occasionally. If you guys like my website, just collect it into your bookmarks or subscribe via WeChat QR code.

Best wishes!

 

CONIUNCTIONEM是一个拉丁单词,意思是连接。

让大家更好地认识我,是当初创建这个个人网站的唯一目的。网站的主页就像是一个收集器一样聚集了我常用的网络平台:脸书,ins,领英,知乎和隐藏的GitHub。我会在博客上不定期地更新些技术文章或是生活感想。如果大家喜欢这个网站,请把它收藏进你的书签中,或者通过主页上分享的微信二维码订阅网站绑定的公众号。

祝好~

 

Edward Xu