carp搭建公衆平臺(二)——得到全部客戶信息和自定義任務

如不知道如何下載和部署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

相關文章:

carp的介紹和配置

carp搭建公衆平臺(一)——發送客服消息

carp搭建公衆平臺(三)——上傳下載多媒體文件

相關文章
相關標籤/搜索