CMPP接入示例(java)

接入说明

JDK支持版本:jdk1.8及以上
cmpp版本:cmpp2.0

初始化

导入类和初始化客户端实例

1
2
3
4
5
6
7
8
9
10
11
12
import com.ly.sms.client.cmpp.*;
public class Demo {
private CMPPClient client;
public void create() {
String host = "111.222.333.44"; //CMPP网关IP地址
int port = 7890; //CMPP网关端口
String spId = "123456"; //发送方企业代码
String spNumber = "10691234"; //发送方服务代码
String password = "test_password"; //发送方服务密码
this.client = new CMPPClient(host, port, spId, spNumber, CMPPConstant.SERVICE_TYPE_SMS, password);
}
}

发送短信

发送普通短信方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14

SmsRequest sms = new SmsRequest();
public void send(){
String message = "这是一条普通的短信发送示例。";
sms.setContent(message); //要发送短信内容,必填
String[] moblies = {"15000000000"}; //接收短信的手机号,必填
sms.setMobiles(moblies);
SmsResponse smsResponse = this.client.send(sms); //发送短信并获得返回结果
for (SmsResponseResult result : smsResponse.getResults()) {
//收到的短信发送的结果。
System.out.println("msgId=" + result.getMessageId());
System.out.println("result=" + result.getResult());
}
}

发送短信成功示例

1
2
messageId=8270084185578930176 //短信ID
result=0 //状态码 0 表示发送成功

发送短信失败示例

1
2
messageId=8270084185578930176 //短信ID
result=1 //状态码 1 表示发送失败,请查询状态码

发送长短信方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14

SmsRequest sms = new SmsRequest();
public void send(){
String message = "这应该是一条很长的短信,大概需要超过70个字符的长度,作为长短信的发送例子,你可以清楚的了解长短信是如何发送的。当短信的内容超过70个字符后,SDK会将短信内容就会自动进行拆分,分成多条发送出去这应该是一条很长的短信,大概需要超过70个字符的长度,作为长短信的发送例子,你可以清楚的了解长短信是如何发送的。当短信的内容超过70个字符后,SDK会将短信内容就会自动进行拆分,分成多条发送出去";
sms.setContent(message); //要发送短信内容,必填
String[] moblies = {"15000000000"}; //接收短信的手机号,必填
sms.setMobiles(moblies);
SmsResponse smsResponse = this.client.send(sms); //发送短信并获得返回结果
for (SmsResponseResult result : smsResponse.getResults()) {
//收到的短信发送的结果。
System.out.println("msgId=" + result.getMessageId());
System.out.println("result=" + result.getResult());
}
}

发送短信成功示例

1
2
3
4
5
6
messageId=8270084185578930176 //拆分的第一条短信ID
result=0 //状态码 0 表示发送成功
messageId=8270084185578930177 //拆分的第二条短信ID
result=0 //状态码 0 表示发送成功
messageId=8270084185578930178 //拆分的第三条短信ID
result=0 //状态码 0 表示发送成功

发送短信失败示例

1
2
3
4
5
6
messageId=8270084185578930176 //拆分的第一条短信ID
result=1 //状态码 1 表示发送失败,请查询状态码
messageId=8270084185578930177 //拆分的第二条短信ID
result=1 //状态码 1 表示发送失败,请查询状态码
messageId=8270084185578930178 //拆分的第三条短信ID
result=1 //状态码 1 表示发送失败,请查询状态码

cmpp状态码

详情查询cmpp状态码

接收上行短信

注册消息侦听,用于接收上行短信

1
2
3
4
5
6
7
 //接收上行短信
public void onDeliver(CMPPMoMessage msg) {
System.out.println("收到上行短信了[" + msg.toString() + "]");
msg.getDestnationId(); //用户回复的号码
msg.getMobile(); //用户手机号
msg.getContent(); //回复的内容
}

接收上行短信结果示例

1
2
3
destnationId=0511   //用户回复的号码
mobile=15000000000 //用户手机号
content='T' //上行短信内容

接收状态报告

注册消息侦听,用于接收状态报告

1
2
3
4
5
6
7
8
9
10
 //接收状态报告
public void onReport(CMPPReportMessage msg) {
System.out.println("收到状态报告了[" + msg.toString() + "]");
msg.getDestnationId(); //发送短信的号码
msg.getStatusMessageId(); //状态报告对应的发送messageId;
msg.getMobile(); //状态报告对应的手机号
msg.getStat(); //投递结果
msg.getSubmitTime(); //提交时间
msg.getDoneTime(); //完成时间
}

接收状态报告结果示例

1
2
3
4
5
6
7
messageId=8270084185578930177       //消息ID
destnationId=0511 //发送短信的号码
statusMessageId=8270084185578930176 //对应发送的消息ID
mobile=15000000000 //用户手机号
stat='DELIVRD' //状态报告值,请查询状态报告值。
submitTime='2020-08-05 17:35:01' //提交时间
doneTime='2020-08-05 17:38:43' //完成时间

状态报告值

状态报告值查询状态报告值

关闭客户端

应用退出时应关闭客户端,避免占用服务器资源。

1
2
3
public void close(){
this.client.close();
}