📄 dwzblistener.java
字号:
package com.gctech.sms.sp.dwzb;
import com.gctech.sms.sp.cms.core.*;
import com.gctech.sms.sp.cms.msg.*;
import com.gctech.sms.sp.cms.util.*;
import org.apache.log4j.Logger;
public class DWZBListener extends RecevierListener {
static Logger logger = Logger.getLogger(DWZBListener.class);
private PlatformAPI api = null;
private SessionFactory sf = null;
private Config cfg = Config.instance();
public DWZBListener(PlatformAPI api, SessionFactory sf) {
this.api = api;
this.sf = sf;
}
public void onMessage(Message msg) {
logger.info("onmessage: " + msg);
if (msg.commandId == Message.DELIVER) {
onDeliver((DeliverMessage) msg);
} else if(msg.commandId == Message.SUBMIT_RES){
SubmitResMessage sub = (SubmitResMessage) msg;
System.out.println("================sequence id:"+sub.sequenceId);
System.out.println("=====================msg id:"+sub.messageId);
//do nothing
}else{
}
}
/**
* 处理该消息
* @param msg
*/
private void onDeliver(DeliverMessage msg) {
DeliverMessage dm = (DeliverMessage) msg;
if(dm.isReport == 1){
System.out.println("this message is a report");
return;
}else{
System.out.println("this message is not a report");
}
// logger.info("deliver " + dm);
String phone = dm.srcTermId;
String dest = dm.destTermId;
String content = dm.content;
// String serviceNo = Config.instance().getServiceNo();
User user = new User(phone);
SMSContent smsContent = new SMSContent(content);
String key = smsContent.keyWord();
//通用帮助指令
if (key.equals("HELP")) {
notify(
"吉芙德提供“灵机e动”短信业务,服务代码:12334,客服11698801 网站 5igift.com.cn",
phone,"BZKF");
return;
}
if (key.equals("12334")) {
notify(
"欢迎咨询吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn,更多咨询请回复menu",
phone,"BZTJ");
return;
}
if (key.equals("MENU")) {
notify(
"欢迎咨询吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn",
phone,"BZTJ");
return;
}
//对0000的处理
if ((key.equals("00000") || key.equals("0000"))
&& !user.isSubscriber()) {
notify("您未订制由吉芙德提供的任何业务,客服 11698801 网站 5igift.com.cn", phone);
return;
}
if (key.equals("KJB")) {
notify(
"欢迎点播吉芙德的短信业务,回复业务编号订阅服务:1 趣占1+1 客服 11698801 网站 5igift.com.cn",
phone,"QZDB");
return;
}
//非订阅用户
if (!user.isSubscriber()) {
//可能是要注册用户,需要继续处理,如果属于语音短信的内容不处理直接返回
if (key == null
|| "YTDX".equals(key)
|| "YFDX".equals(key)
|| "YODX".equals(key))
return; //
//支持二次确认方式订阅
else if (
key.equals(KeyWords.SUB)
|| key.equals(KeyWords.QRSUB)
|| key.equals("1")) {
logger.info("someone register:");
String[] paras = smsContent.parameter();
String err =
"您输入的格式不正确:发送 QRZC+生日+性别 到10612334 订阅生日格式为:YYYYMMDD 性别输入男或者女。如1976年2月14出生的男士,则发送“QRZC 19760214 男” 到10612334";
if (paras == null || paras.length < 2) {
notify(err, phone);
return;
}
if (paras[0].length() != 8) {
notify(err, phone);
return;
}
if (!paras[1].equals("男") && !paras[1].equals("女")) {
notify(err, phone);
return;
}
int result = user.sub(paras[0], paras[1]);
if (result == 0) {
notify(
"您已成功订制了趣占1+1 服务!6元/月。用户名是您的手机号,密码是"
+ user.getPassword()
+ ",谢谢您的使用! 使用指令详见5igift.com.cn网站。回复QXZC 取消该服务,客服 11698801",
phone);
notify(
"您感谢定制趣占1+1服务,发送JB 到10612334 看看自己的基本个性,更多指令见5igift.com.cn网站",
phone);
return;
} else if (result == 1) {
notify(
"系统出现错误,或者输入的参数不正确,请咨询11698801 网站 5igift.com.cn",
phone);
return;
} else {
notify("您已经是订阅用户,如有疑问请咨询11698801 网站 5igift.com.cn", phone);
return;
}
} else {
notify(
"您还未订阅吉芙德提供的趣占1+1服务,发送ZC订阅趣占1+1服务,客服 11698801 网站 5igift.com.cn",
phone);
return;
}
}
//对0000的处理
if (key.equals("0000")) {
notify("回复QX+业务编号,取消所订购的服务:0 所有订制服务 1 趣占1+1", phone,"BZTD");
return;
}
//如果是订阅用户,需要退定
if (key.equals(KeyWords.UNSUB)
|| key.equals("QX0")
|| key.equals("QX1")
|| key.equals("00000")) {
int result = user.unSub();
if (result == 0) {
if (key.equals("QX0")) {
notify(
"您已成功取消吉芙德的所有订阅服务!欢迎您下次使用我们的的短信服务,感谢您的使用!客服 11698801",
phone,"BZTD");
} else if (key.equals("QX1")) {
notify(
"您已成功取消趣占1+1的订阅!欢迎您下次使用吉芙德的短信服务,感谢您的使用!客服 11698801",
phone,"BZTD");
} else if (key.equals("00000"))
notify(
"您已成功取消吉芙德的所有订阅服务!欢迎您下次使用我们的的短信服务,感谢您的使用!客服11698801",
phone,"BZTD");
else
notify(
"您已成功取消趣占1+1的订阅!欢迎您下次使用吉芙德的短信服务,感谢您的使用!客服 11698801",
phone,"BZTD");
} else {
notify("系统出现错误,或者输入的参数不正确,请咨询11698801", phone);
}
return;
}
//点播业务
//取得计费代码
String serviceId = null;
System.out.println("user.feeType():"+user.feeType());
switch (user.feeType()) {
case 0 :
{
serviceId = cfg.getFreeFeeServiceId();
break;
}
case 1 :
{
serviceId = cfg.getCheapFeeServiceId();
break;
}
case 2 :
{
serviceId = cfg.getExpensiveFeeServiceId();
break;
}
default :
{
serviceId = cfg.getExpensiveFeeServiceId();
break;
}
}
Response response = ResponseFactory.create(key);
if (response == null) {
notify("趣占1+1提示: 没有提供该服务,请咨询11698801 或 网站 5igift.com.cn", phone);
return;
}
response.setContent(smsContent);
response.setUser(user);
/*以下代码考虑了会话*/
//use dest as session id,if session dose not exist,sf will create it
Session session = sf.getSession(dest);
RabitMessage rm = (RabitMessage) session.getValue(key);
if (rm == null) {
String reply = response.getResponse();
logger.info("whole content:" + reply);
if (reply.length() <= 58) {
send(reply, "", phone, serviceId);
return;
}
rm = new RabitMessage(reply, key);
session.setValue(key, rm);
String respContent = null;
if (rm.hasRabbit()) {
respContent = rm.nextRabbit();
} else {
respContent = "趣占1+1提示:相关信息已经点播完!";
;
session.setValue(key, null);
}
send(respContent, "", phone, serviceId);
return;
} else {
String respContent = null;
if (rm.hasRabbit()) {
respContent = rm.nextRabbit();
} else {
respContent = "趣占1+1提示:相关信息已经点播完!";
;
session.setValue(key, null);
}
send(respContent, "", phone, serviceId);
return;
}
/*以上代码考虑了会话*/
}
private void send(
String respContent,
String src,
String dest,
String serviceId) {
SubmitMessage sm =
new SubmitMessage(
Config.instance().getSpId(),
serviceId,
respContent,
dest,
dest,
src);
try {
if (logger.isDebugEnabled())
logger.debug(
"add response content "
+ respContent
+ " src:"
+ src
+ " dest:"
+ dest);
api.addMessage(sm);
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void notify(String content, String dest) {
this.send(content, "", dest, Config.instance().getFreeFeeServiceId());
}
private void notify(String content, String dest,String serviceid) {
this.send(content, "", dest, serviceid);
}
public static void main(String[] args) {
String str = "9600288123344";
String serviceNo = "9600288";
System.out.println(str.substring(serviceNo.length()));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -