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

    如不知道如何部署carp,请看《carp的介绍和配置》一文

    公众平台提供的服务号能够为用户发送客服消息、获得用户列表、分组信息等内容;

    carp通过weixin.task.xml文件进行此类消息的发送处理的配置,先解释一下配置选项

<task>

<name>downloadfile</name>

<class>com.voa.weixin.task.DownloadFileTask</class>

        <method>get</method>

<url><![CDATA[http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID]]></url>

<work>com.voa.weixin.work.DownloadFileWork</work>

</task>

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();

}

}

1、Task task = carp.getTaskRepertory().getTaskByName("message");

根据message关键字,获得需要发送的task

2、TextMessage message = new TextMessage();

构造一个文本消息类,根据开发者文档,填入touser和文本内容content

3、task.setMessage(message);

将需要发送的message填入到task中

4、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

相关文章:

carp的介绍和配置

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

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



你可能感兴趣的:(carp搭建公众平台(一)——发送客服消息)