您的位置:首页 > 其它

采用API方式发送,接收短信(嘉信)

2009-12-31 20:35 260 查看
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();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: