如不知道如何下載和部署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
相關文章: