如不知道如何部署carp,請看《carp的介紹和配置》一文php
公衆平臺提供的服務號可以爲用戶發送客服消息、得到用戶列表、分組信息等內容;api
carp經過weixin.task.xml文件進行此類消息的發送處理的配置,先解釋一下配置選項異步
<task>ide <name>downloadfile</name>post <class>com.voa.weixin.task.DownloadFileTask</class>測試 <method>get</method>this <url><![CDATA[http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID]]></url>url <work>com.voa.weixin.work.DownloadFileWork</work>spa </task>.net |
name:task的名字
method:接口提交方式,可省略,若是省略,默認爲post
class:task的類名,可省略,若是省略,默認使用的上CommonTask類
url:公衆平臺開發文檔提供的url接口(點擊這裏查看開發者文檔)
work:消息發送成功後的回調類,可省略,如省略,則無後續回調
咱們使用demo中的SendCustomerMessage這個類來解釋上述描述,首先在weixin.task.xml註冊了一個task,以下:
<task> <name>message</name> <url><![CDATA[https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN]]></url> <work>com.voa.weixin.work.CustomerMessageWork</work> </task> |
SendCustomerMessage代碼以下:
public class SendCustomerMessage { public static void main(String[] args) throws Exception { Carp.ROOTPATH = System.getProperty("user.dir") + File.separator; Carp carp = Carp.getInstance(); carp.init(); Task task = carp.getTaskRepertory().getTaskByName("message"); TextMessage message = new TextMessage(); //設置用戶的openId message.setTouser("oTMC0txGNUisZyU9lMpGu8K8TlsU"); message.setTextContent("測試"); task.setMessage(message);
task.send(); carp.destroy(); } } |
一、Task task = carp.getTaskRepertory().getTaskByName("message");
根據message關鍵字,得到須要發送的task
二、TextMessage message = new TextMessage();
構造一個文本消息類,根據開發者文檔,填入touser和文本內容content
三、task.setMessage(message);
將須要發送的message填入到task中
四、task.send();
發送task到公衆平臺;
注意,task.send()方法是一個同步發送消息到公衆平臺的方法,若是須要異步發送消息,須要調用task.send(false);
消息發送成後,根據配置文件(<work>com.voa.weixin.work.CustomerMessageWork</work>),會回調CustomerMessageWork這個類,看一下CustomerMessageWork的內容
public class CustomerMessageWork extends Work { @Override public void toDo() throws WorkException { System.out.println(this.weixinResult.getJson()); } @Override public void failedToDo() throws WorkException { // TODO Auto-generated method stub } } |
能夠看到,CustomerMessageWork這個類沒有對返回的信息作任何處理,僅僅打印出來了;
toDo()方法是消息發送成功的回調方法;
failedToDo()方法是消息發送失敗後的回調方法
能夠自定義個Work類(別忘了繼承Work父類),就能夠自定義保存文本消息了,也能夠作任意的其餘處理。
carp技術羣:368193775
相關文章: