如不知道如何下载和部署carp,请看《carp的介绍和配置》一文。数据库
根据开发者文档,公众平台的用户信息由3部分组成,第一次是获取openId,第二次获取用户信息,第三次获取组信息;json
若是有1000个用户,就是须要发出2001个请求才能得到,因此通常得到一次后,把信息保存在本地数据库最好,同时因为请求次数过多,建议使用异步多线程获取,才能快速完成。
api
carp已经内建了一个task用来获取全部用户信息,并保存到数据库中;在demo中有个例子:GetAllFans,执行后会获取公众号的全部用户,并在数据库中保存了全部的用户信息,如图:微信
在carp中定义一个主动客服任务很简单,仔细观察公众平台提供的开发者手册,大多数url是这样的:多线程
https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN
https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN
https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN
https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN
能够看出,只须要替换access_token就好了;异步
carp中定义这种新的task任务很简单,在weixin.task.xml中定义一个新的task元素就行了,主要是须要为这个task建立一个新的work类,方便任务完成后就行回调,举个例子,咱们但愿得到微信的分组信息后保存到数据库,则首先定义一个GroupGetWork类,以下:ide
public class GroupsGetWork extends Work {url @Overridespa public void failedToDo() throws WorkException {.net // TODO Auto-generated method stub } @Override public void toDo() throws WorkException { JSONArray groupsJson = JSONObject.fromObject(weixinResult.getJson()) .getJSONArray("groups"); FansInfoService service = new FansInfoService(); for (int i = 0; i < groupsJson.size(); i++) { JSONObject groupJson = groupsJson.getJSONObject(i); WeixinGroup group = new WeixinGroup(); group.setFname(groupJson.getString("name")); group.setWeixinId(groupJson.getString("id")); service.saveOrUpdateGroup(group); } } } |
能够看到,当任务执行成功后,将会解析返回的json数据,并保存到数据库中;
而后在weixin.task.xml中配置task元素:
<task> <name>groupsget</name> <url><![CDATA[https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN]]></url> <work>com.voa.weixin.work.GroupsGetWork</work> </task> |
OK,当须要执行这个任务是,只须要两行代码就够了:
Task task = carp.getTaskRepertory().getTaskByName("groupget");//获取任务
task.send();//发送任务
carp中内建了大部分的task和work,包括文件上传和下载,若是须要自定义新的回调work,继承Work接口便可;
若有问题,可发送邮件至150092628@qq.com
carp技术群:368193775
相关文章: