从零开始。
——创造的乐趣
小雅ya,为它取了这个名字,寓意优雅。用PHP编写所有代码,30%时间用于编码,40%用于代码优化,40%用于编写本地测试类。
在第一版中,实现了基础的公众号自动回复功能,或者称作"自动回复机器人(以下简称小雅)"。值得骄傲的是小雅具有灵巧的代码结构,并拥有相配套的本地测试用例,这意味着——没有公众号也可以在本地测试,小雅也是对新手友好的微信公众号开发助手。
了解一点基础知识
在微信公众平台,配置启用我们的开发者服务器。用户与我们的对话始终要通过微信服务器中转,响应对话或关注事件也要通过微信中转。我们与用户之间,这有点"鹊桥相会"的感觉。在这个数据流动的过程中微信服务器充当了第三方红娘的角色(大只电灯泡
)。我们注意到以下几点:
1、数据严格采用XML格式传递
2、在回复时就像两人写信,发信人和收信人反转
用户[你好]→小雅
<xml> <ToUserName><![CDATA[gh_747e2105165a]]></ToUserName> <FromUserName><![CDATA[op181vw09SsmHbIcodenightFe99]]></FromUserName> <CreateTime>1525426430</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content></xml>
小雅[欢迎你]→用户
<xml> <ToUserName><![CDATA[op181vw09SsmHbIcodenightFe99]]></ToUserName> <FromUserName><![CDATA[gh_747e2105165a]]></FromUserName> <CreateTime>1525426430</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[欢迎你]]></Content></xml>
文本消息参数说明:
<ToUserName>-收信人(开发者微信号|用户OpenID)<FromUserName>-发信人(用户OpenID|开发者微信号)<CreateTime>-消息创建时间Unix时间戳<MsgType>-消息类型<Content>-文本消息内容
更多数据类型
如图中绘制的路径,目前的小雅实现了:
1、关注消息回复
2、简单的文本消息回复。
创造小雅
通过绘制函数调用关系图,发现了不易察觉的错误,才能够进一步优化了小雅的结构,虽然绘图耗费了大量的时间,但最终说明这会非常有帮助。思路就是坚持DRY(不要重复自身)编程原则,将反复出现的代码封装成函数。
功能演示
回复[图文]-获取默认文章推送
回复[任意mysql4位错误码] -获取数据库错误原因帮助
回复[1111] -获取图片响应
源码下载
https://github.com/nasaplayer/WeChatRobotYa
注:受限于个人公众号权限,用户仅有一个OpenID,不能获取基本信息资料(头像、用户名等)。另外,因为没有存储用户的对话数据,用户发出的每句话是没有上下文相关的,每次回复的依据是这句话本身的内容。就像人失忆一样,没有记忆的存储,小雅也是聊天瞬间失忆。
经过测试,发现就算没有用户基本信息接口的权限,OpenID对于单个用户也是唯一不变的。可以通过人工识别的方法,手工维护一套用户信息系统,用于记忆聊天...
调用一些文本聊天接口可以更加职能,但距离真正的自然语言识别处理机器人,还有很长的路要走
有点偏题了,我们这是初级,打住打住
下一阶段功能计划:
回复[任意关键字]-智能组合相关文章列表
回复[换]-获取随机文章列表
回复[新]-获取最新文章列表
回复[热|火]-获取点击率最高的文章列表
持续改进中...
封面来源:文文 http://pic.netbian.com/tupian/20068.html
代码配色:paraiso-light http://md.aclickall.com/