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

如不知道如何下载和部署carp,请看carp的介绍和配置一文。

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

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

carp已经内建了一个task用来获取所有用户信息,并保存到数据库中;在demo中有个例子:GetAllFans,执行后会获取公众号的所有用户,并在数据库中保存了所有的用户信息,如图:

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


在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接口即可;


如有问题,可发送邮件至[email protected]

carp技术群:368193775

相关文章:

carp的介绍和配置

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

carp搭建公众平台(三)——上传下载多媒体文件

你可能感兴趣的:(carp搭建公众平台(二)——获得所有客户信息和自定义任务)