如不知道如何部署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
相关文章: