API方式:
首选要在jx01移动代理服务器中进行如下配置
系统管理-->接口管理-->短信接口模块增加如下配置信息
接口编码: | |
接口名称: | |
接口类型: | DB接口 API接口 WEB SERVICE接口 SOCKET接口 |
通信能力: | 短信 WAP |
业务类型: | CRM应用 SCM应用 ERP应用 OA应用 EMAIL应用 行业应用 其它应用 |
业务代码: | IMMF |
短信子码: | 22 23 24 |
手机指令: | |
短号支持: | 启用 关闭 |
回执要求: | 支持回执 不支持回执 |
登录用户: | |
登录密码: | |
接口状态: | 运行状态 调试状态 暂停(失效)状态 |
失效日期: | (不设置表示永久生效) |
其中,接口编码,必须唯一系统内部识别码;接口名称:用于开发人员识别项目;短信子码:会加上特服号作为号码发送到用户手机上;登录用户:对于API开发中会用到;登录密码:同上API开发中会用到;接口状态:运行就是正常运行时使用,调试状态用于开发模式.
附:其他模块
系统管理-->话单管理:可以查看所有接收与发送的短信
系统管理-->通讯设置:可以查看到 SP特服号,短信网关IP,登录短信网关帐号等信息
系统管理-->设备配置管理(网管参数,设备信息,业务能力查看-确定是否开启相关的服务在配置中有用.
统计报表-->接口业务统计,可以分析发送短信的总数
源码分析:
private String mobileStr = "13500000000";//手机号可用逗号分开
private String content = "短信发送测试内容 via IM JAVA API ";//测试的短信内容
private long smId = 1; //手机显示来电的尾号
private int smType = 0; //0:默认为短信,1:wap方式等
private String url = "wap.myself.com";//"wap.sohu.com"; wap方式用到的网址
private String host = "127.0.0.1";//嘉信信息机的ip
private String dbName = "mas"; //数据库名称
//正式
private String apiId = "接口编码"; //信息机中定义的API接口,关键字
private String name = "登录用户"; //信息机中API接口的用户名
private String pwd = "登录密码"; //信息机中API接口的密码
private APIClient handler = new APIClient();//客调用嘉信api处理类
//线程是否启用的标识
private boolean flag=true;
// 基本参数设置
private void ProBaseConf() {
System.out.println("初始化连接信息");
log.debug("初始化连接信息/n");
// 连接配置信息
int connectRe = handler.init(host, name, pwd, apiId, dbName);
if (connectRe == APIClient.IMAPI_SUCC)
{
System.out.println("初始化成功");
log.debug("初始化成功/n");
}
else if (connectRe == APIClient.IMAPI_CONN_ERR)
log.debug("连接失败/n");
else if (connectRe == APIClient.IMAPI_API_ERR)
log.debug("apiID不存在/n");
}
//2009-12-24整型值的判断处理
public int getInt(String str) {
int ret = Integer.MIN_VALUE;
try {
ret = Integer.parseInt(str);
} catch (NumberFormatException e) {
ret = Integer.MIN_VALUE;
}
return ret;
}
//短信发送方法
//SmsBean短信类,包括手机号,内容,序号
public int SendMessage(SmsBean sms) {
int resultcol = 0;
// 当短信收发接口为空时重新初始化
if (handler == null) {
System.out.println("handler==null");
ProBaseConf();
System.out.println("handler信息:" + handler.toString());
}
// 发送号码,数组
ArrayList telList = sms.getMobileNoList();
String[] dest_Terminal_Id = new String[telList.size()];
for (int i = 0; i < telList.size(); i++) {
dest_Terminal_Id[i] = telList.get(i).toString();
}
//组装源手机号,即:短信接入号+业务号
String tmpSrcID = null;
if (sms.getSn().length() == 6) {
//组装成6位,1位命令字+5位自动增加的.
tmpSrcID = sms.getSn();//组装原发送号
}
if (tmpSrcID == null || tmpSrcID.trim().length() == 0
|| getInt(tmpSrcID.trim()) == Integer.MIN_VALUE) {
tmpSrcID = "" + smId;
//tmpSrcID = "";
}
//短信内容
String tmpContent = sms.getSmsContent();
//日志提示
System.out.println("短信发送,手机号:"+dest_Terminal_Id.toString()+"短信尾号Long:"+Long.parseLong(tmpSrcID)+"内容:"+tmpContent);
log.debug("短信发送,手机号:"+dest_Terminal_Id.toString()+"短信尾号Long:"+Long.parseLong(tmpSrcID)+"内容:"+tmpContent+"/n");
//发送短信,非push wap方式
int result = handler.sendSM(dest_Terminal_Id, tmpContent, smId, Long
.parseLong(tmpSrcID));
if (result == APIClient.IMAPI_SUCC) {
System.out.println("发送成功");
log.debug("发送成功/n");
resultcol = 1;
} else if (result == APIClient.IMAPI_INIT_ERR)
log.debug("未初始化");
else if (result == APIClient.IMAPI_CONN_ERR)
log.debug("数据库连接失败");
else if (result == APIClient.IMAPI_DATA_ERR)
log.debug("参数错误");
else if (result == APIClient.IMAPI_DATA_TOOLONG)
log.debug("消息内容太长");
else if (result == APIClient.IMAPI_INS_ERR)
log.debug("数据库插入错误");
else
log.debug("出现其他错误");
return resultcol;
}
//短信接收线程
class RecTask extends Thread
{
long interval = 10000L;//时间间隔,每隔10秒钟
public RecTask()
{
}
public void run()
{
while(flag)
{
try
{
//关闭线程
flag=false;
//接收短信
recvSM();
//每隔
Thread.sleep(interval);
//启动线程
flag=true;
}catch(InterruptedException e)
{
System.out.println("线程异常"+e.toString());
}
}
}
}
/**
* 接收短信
*/
public void recvSM() {
// 当短信收发接口为空时重新初始化
if (handler == null) {
System.out.println("handler==null");
ProBaseConf();
System.out.println("handler信息:" + handler.toString());
}
MOItem[] mos = handler.receiveSM();
if (mos == null) {
log.debug("未初始化或接收失败/n");
return;
} else if (mos.length != 0) {
try{
RecPro(mos);//对于接收的短信进行处理
}catch(Exception e)
{
log.debug("处理接收短信异常:"+e.toString());
}
}
}
//构造函数
public ClassName(){
ProBaseConf();
//启动接收短信线程
RecTask rt=new RecTask();
rt.start();
}