本系列文章均为A2BGeek原创,转载务必在明显处注明:
转载自A2BGeek的【微信易信公众平台开发】系列,原文链接:http://blog.csdn.net/a2bgeek/article/details/17397157
我的个人博客站点已经开通,会有技术分享和其他一些有意思的东西,希望读者能去访问一下,网址是http://a2bgeek.me
这篇博客来介绍微信易信自定义菜单的创建。
概述
自定义菜单是目前很多平台公众号的一个标配,比如微信、易信、支付宝手机客户端等,这个自定义菜单有什么优点呢?对用户来说就是简化了操作步骤,原来需要输入文字,有了自定义菜单后就只需要点击一下;对于开发者来说,当然是为交互设计提供了更多的选择。那么自定义菜单有什么缺点呢?对用户来说我觉得没有缺点,但是对于开发者来说少了自定义菜单是一件非常不幸福的事情,目前微信的自定义菜单只有申请成为服务号才能玩,易信就没有这个限制,所以我的这个系列博客叫做“微信易信公众平台开发”。微信目前的情况就是如果想用公众号做营销那么最好不要升级为服务号,因为服务号一个月才能群发一条消息。如果你发现“骑行西藏、云南移动精彩无限”这样的账号怎么既有自定义菜单又能每天群发消息,我只能说是刚有自定义菜单时的内测号或者是有内部申请渠道也不一定。。。
创建自定义菜单的步骤
其实不难,很简单,即使不写代码也能创建,我用命令行执行两条命令就能创建。
STEP1
第一条是:
curl https://api.yixin.im/cgi-bin/token?grant_type=client_credential\&appid=XXXXX\&secret=XXXXX
这条是发送一个GET请求到微信易信的服务器,去申请一个叫做access_token的东西,这个access_token有什么用呢?它是我们去调用微信易信接口的凭证,微信中用到access_token的接口比较多,比如用户管理、自定义菜单、推广支持这些功能,易信目前只有自定义菜单会用到。
STEP2
第二条我们需要发送一个POST请求到微信易信的服务器,POST的请求的数据是一个JSON字符串,这个JSON字符串的结构如下:
{
"button": [
{
"name": "天气查询",
"type": "click",
"key": "queryweather"
},
{
"name": "空气质量查询",
"type": "click",
"key": "queryairquality"
},
{
"name": "优质内容",
"sub_button": [
{
"name": "每日英语",
"type": "click",
"key": "dailyen"
},
{
"name": "知乎每日精选",
"type": "click",
"key": "dailyzhihu"
},
{
"name": "每日笑话",
"type": "click",
"key": "dailyjoke"
}
]
}
]
}
第二条指令如下:
curl https://api.yixin.im/cgi-bin/menu/create?access_token=XXXXXX -d '{"button":[{"name": "天气查询", "type": "click","key": "queryweather"}, {"name": "空气质量查询", "type": "click","key": "queryairquality"}, {"name": "优质内容", "sub_button": [{"name": "每日英语","type": "click","key": "dailyen"},{"name": "知乎每日精选","type": "click","key": "dailyzhihu"},{"name": "每日笑话","type": "click","key": "dailyjoke"}]}]}'
OK,创建成功了,上图:
至此自定义菜单就创建成功了,但这只是界面,没有功能,那么自定义菜单怎么和我们的服务器交互呢?这一点上微信易信的做法是相同的,把点击事件封装成一个XML发送到我们的服务器,这个XML的格式如下:
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[CLICK]]></Event>
<EventKey><![CDATA[EVENTKEY]]></EventKey>
</xml>
其中<EventKey>对应的就是上面JSON中的"key",这样就可以知道用户想要得到什么内容了。
最后还要说一点就是易信的自定义菜单功能上比微信的还是差一些的,微信的button多了一个view type,用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值(即网页链接),达到打开网页的目的。
OK,今天的内容就到这里。