您的位置:首页 > 其它

carp搭建公众平台(二)——获得所有客户信息和自定义任务

2014-02-18 09:31 288 查看
如不知道如何下载和部署carp,请看《carp的介绍和配置》一文。

根据开发者文档,公众平台的用户信息由3部分组成,第一次是获取openId,第二次获取用户信息,第三次获取组信息;

如果有1000个用户,就是需要发出2001个请求才能获得,所以一般获得一次后,把信息保存在本地数据库最好,同时由于请求次数过多,建议使用异步多线程获取,才能快速完成。

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类,如下:

public class GroupsGetWork extends Work {

@Override
public void failedToDo() throws WorkException {
// 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

相关文章:

carp的介绍和配置

carp搭建公众平台(一)——发送客服消息

carp搭建公众平台(三)——上传下载多媒体文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: