对微信的一点研究


最近这几天,对微信做了一点研究,研究的角度主要还是从微信公众号的二次开发方面出发。本文所有的描述都是基于订阅号以及最新版本的微信为基础。

1、       如何使微信支持二次开发

在微信公众号的管理后台,有一个频道叫“开发者中心”,在这个频道里,按照操作步骤即可启用开发者平台。

要实现开发模式的要求,需要做完成以下几个步骤:

1)、按照微信SDK开发一个认证请求页面,主要是认证存放二次开发代码的web服务访问入口;后续所有的请求都以该认证域名为准;

如:http://www.yourdomain.com/wx/auto.aspx


2)、按照要求,需要开发者定义一个Token(令牌);

3)、通过后,还需要启用“服务器配置”。

注:如启用服务器配置后,微信自有的两个功能“自动回复”和“自定义菜单”将被停用,即自动回复和自定义菜单都必须用程序实现。请慎重!!!

4)、将接口配置中的url地址换成实现微信功能的请求页面。

如 http://www.yourdomain.com/wx/wxservice.ashx

注:验证页面和调用请求页面是不一样的。

5)、现在你可以开始随心所欲了…..

2、       什么是微信消息,它们是如何进行传递的

所有推送到终端的消息都是被动式的,即通俗点讲,就是你必须先敲打(Request)下微信,然后微信才会给你一个反应(Response)。当然,也有特殊情况,下面再说。

首先微信在消息的归类上,有2大类:

1)       请求(Request)消息,也叫接收消息。意指向微信做出一个请求,希望微信能回复点什么。如:“上帝,告诉我附件哪儿有吃的”,这就是一个请求消息。

按微信的定义,请求消息分为7种:文本消息、图片消息、语音消息、视频消息、地理位置消息、链接消息、事件消息。

2)       响应(Response)消息,也叫发送消息。意指向用户给出一个答复。前面都问上帝了,上帝总得给个说法;那么上帝就回复说,“你现在的位置再拐个弯就到了KFC了”。这就是响应消息。上帝觉得,光文字消息不直观,不如再加个图片,那么就变成图文信息了。

按微信的定义,响应消息分为:文本消息、图片消息、语音消息、视频消息、音乐消息、图文消息。

以上两个概念必须搞清楚,这是微信编程的基础。总结一句话,就是”需先请求(Request),再做响应(Response)!“

现在讲讲特殊情况,大致有2种:

(1)“客服消息”

服务号功能,因此没具体研究,但从微信开发文档的描述上看,指微信管理员可以对48小时内做出请求的用户进行回复。

严格意义上,也是需先请求,再做回应,不同的是可以回复多次。

      (2)“消息(提醒)通知”

      就是像短信一样会给用户进行消息发送,一般用以提醒或通知,这类接口微信是存在的,但没有公开,只有像招商银行这样的大鳄才能拿得到。

3、       开发模式下,没有了自定义菜单设置怎么办

上文不是已经提到,启用了开发模式后,微信后台自带的”自定义菜单“功能就停用了。这个时候,我们必须使用编码的方式实现编辑微信菜单。好在微信公众号有这个接口,具体实现可参考微信开发API。

这里有一个疑问,微信为什么要在开发模式下停用自有的”自定义菜单“功能呢??

前面第2节中提到有一个事件请求(Request)消息,在微信自带的菜单定义功能中,是无法实现事件功能的。

开发模式下的菜单2种模式:

1)       链接(link)模式:微信自带的菜单模块中使用的模式,每个菜单都挂一个超链接,然后跳到该页面上去;现在好多微信都这样实现,但在某些情况下是很不人性化。(注:父菜单是不允许挂链接的。)

2)       事件(click)模式:这个在非开发模式下是没有的。点击该类菜单,会向微信发出一个事件类型的请求消息。根据定义返回响应信息。

关于事件(click)模式菜单,我认为举个例子比较有代表性。

我们常有类似这样的一个需求,希望点击”最新文章“菜单,然后显示最新的10篇文章(该文章信息是在第三方系统)。

链接模式做法通常是,点击”最新文章“菜单,然后跳到自己开发的一个页面,在页面中显示最新10条文章。

事件模式做法可以这样做,点击“最新文章“菜单,然后将最新的10条文章信息直接推送响应(Response)到微信终端,页面不跳转。

类似于”互软智慧社区“微信号中,输入”fjcy“,将附近的餐饮信息推送到微信终端,而不是在web页上显示。

4、       如何让开发的页面只能在微信中显示

这个不多讲了,原理很简单,只需要判断打开页面的浏览器版本即可。关键词是HTTP_USER_AGENT。只需要在返回的Agent信息中是否包含MicroMessenger这个字符串即可。有码有真相,上图。

 

纯html页面也可用Javascript判断。

5、       关于服务号的一点遐想

因手头没有服务号,对于服务号提供的高级功能只能做一点遐想:

1)、语音识别:该功能如果跟智能问答机器人结合,对于公众服务来说,又一大进步;想想一下,当老百姓对着微信说”我要结婚“,微信立马将语音识别成文字再塞给机器人,然后机器人将结果推送给老百姓的微信上说”你还没有买房子,不能结婚“。呵呵!!!

2)、推广二维码:服务号提供生成1个或多个场景二维码。利用这个功能可以推出更好的应用服务。我们又想想一下,公司取消指纹打卡,每天自动产生一个微信二维码,该二维码仅显示15分钟,然后员工扫二维码进行上下班签到。

3)、获取地理信息:服务号直接可以获取当前用户的地理信息,用来查询附近资源信息。”互软智慧社区“微信号也实现了附近餐饮信息的查询,但由于是订阅号,无法直接获取地理信息;只能采用变通的方式获取地理信息,操作繁琐了点,效果是一样的。至于怎么实现,下回分解。

 

好了,今天晚上就写到这儿了….

还有,公司的”互软智慧社区“已实现如下功能:

【查询违章】:输入”wz“即可,第一次使用时,需要绑定车辆;

【自动翻译】:输入”fy:需翻译的文“;

【查询附近餐饮】:输入”fjcy“,请先发送地理位置信息,然后再输入”fjcy“或”fjcy500“。带数字表示查询多少米范围内的餐饮信息。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章