浙江联通行业应用短信平台二次开发接口使用手册学生上课内容.docx
- 文档编号:29436966
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:30
- 大小:318.97KB
浙江联通行业应用短信平台二次开发接口使用手册学生上课内容.docx
《浙江联通行业应用短信平台二次开发接口使用手册学生上课内容.docx》由会员分享,可在线阅读,更多相关《浙江联通行业应用短信平台二次开发接口使用手册学生上课内容.docx(30页珍藏版)》请在冰豆网上搜索。
浙江联通行业应用短信平台二次开发接口使用手册学生上课内容
文件版本:
V1.0.070201
发布时间:
2007.02.01
浙江联通行业应用短信平台
二次开发接口使用手册
(V1.0)
中国联通浙江分公司增值业务部
2007.02
1.简介
1.1系统的结构和特点
浙江联通行业应用短信平台具备二次开发接口(后面简称接口或接口软件),接口软件在整个方案中的位置如下图中蓝色部分所示,在安装了接口软件以后,企业内部所有的短信应用系统只要对接口数据库进行数据存储,就能完成收发短信的工作,并且可以查询到所发送短信当前的状态,避免了企业内部软件开发人员在CMPP、SMPP等短信通讯协议上浪费大量的人力和物力。
和使用API接口在CMPP或SMPP协议层次上开发短信应用程序相比,企业直接使用本系统提供的数据库接口开发短信应用程序,可以至少节省一个开发小组几个月的工作量,在时间就是金钱的现代社会,本系统为企业带来的时间效益是惊人的。
互联网专线
图例:
绿色箭头——采用SGIP或SMPP协议传输短信的链路
红色箭头——采用加密数据包传输短信的链路
本系统采用了各种方法保证企业短信收发的安全性和稳定性:
●信息加密:
和浙江联通行业短信平台接口服务器之间的通讯不采用CMPP、SMPP等非加密的协议,而是在短消息传送的过程中进行加密传输,保证了信息的安全性。
●断线重连:
软件具备断线自动重连的功能,当因为网络异常等各种原因造成链路中断时,软件能够自动重复尝试连接,以保证短信收发的及时性和可靠性。
●免维护:
接口服务软件采用系统服务的方式在后台运行,无须用户干预,即使遇到服务器断电等异常情况,只要按动电源按钮重新将计算机开机,软件即可自动运行。
接口软件和企业内部的短信应用系统之间采用容易编程的数据库接口,使开发人员能够以最简便的方式实现最强大的功能:
●发送简单方便:
软件自动对接口数据库进行扫描,企业内部的短信应用系统只要将短信发送号码和内容保存到接口数据库里面,就可以将短信发送到用户的手机上。
●状态可查询:
软件自动接收短信网关返回的短信状态报告,并将状态保存到接口数据库中,企业内部的短信应用程序只要查询数据库,就可以得知短信的当前状态。
●信息双向交流:
当用户向企业发送短信时,软件自动从服务器端接收短信并保存到接口数据库中,其他应用程序只要查询接口数据库,就可以获取该短信。
●号码扩展:
企业可以对短信号码进行多达8位的扩展,便于多个内部应用系统同时通过该接口收发短信,真正实现一点接入,多点使用。
●支持广泛:
现在最新版本的短信接口服务软件已经支持最常用的Oracle、SQLServer和Sybase数据库。
1.2运行环境
接口软件的运行环境为:
●硬件要求:
CPUPIII700以上,内存128M
●软件要求:
Windows2000/XP,如果接口数据库使用Oracle,则需安装Oracle客户端软件。
和软件配套使用的接口数据库可以使用Oracle、SQLServer或Sybase三种类型,接口数据库和接口服务软件既可以安装在不同的计算机上,也可以安装在同一台计算机上,如果两者安装在同一台服务器上,那么服务器的硬件配置应该相应提高。
建议采用下列配置的专用服务器:
※双P41600CPU,1G内存,36.4Gx2热插拔硬盘(Raid1)
2.数据库的安装和配置
在安装接口服务软件之前,需要首先安装数据库并初始化接口表,下面的内容将分Oracle、SQLServer和Sybase数据库三种类型分别说明如何创建接口表。
2.1使用Oracle数据库
在使用Oracle数据库的情况下,最好为短信接口表单独设置一个表空间,并为其单独分配一个用户,以便和其他短信应用系统使用的数据表隔离。
2.1.1数据字典
下面是短信接口表的初始化脚本,各字段的取值和含义已经包含在字段的注释中:
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--系统范围内唯一的ID,容量:
10位整数
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
dropsequencesms_seq;
createsequencesms_seq
incrementby1
startwith1
maxvalue9999999999
nocache;
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--数据库版本表
--!
!
!
请不要增加、删除或者修改本表的记录!
!
!
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
droptablesms_vercascadeconstraints;
createtablesms_ver(
vernumber
(2)--数据库结构版本号
);
insertintosms_vervalues
(1);
commit;
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--短信接收表
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
droptablesms_receivecascadeconstraints;
createtablesms_receive(
idnumber(10)primarykey,--唯一id,取自sms_seq序列
resultchar
(1)default'0',--供用户程序使用,表示记录是否被处理,缺省为'0'
mobilevarchar2(21)notnull,--发送方的手机号码
recv_timevarchar2(20),--短信接收时间
sms_numbervarchar2(10),--扩展短号(用户发送的号码去除公司短号后的扩展部分)
contentvarchar2(160)--接收的短信内容
);
createindexidx_sms_receive_resultonsms_receive(result);
createindexidx_sms_receive_mobileonsms_receive(mobile);
createindexidx_sms_receive_sms_numberonsms_receive(sms_number);
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--短信发送表
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
droptablesms_sendcascadeconstraints;
createtablesms_send(
mobilevarchar2(21)notnull,--要发送的手机号码
contentvarchar2(160),--要发送的短信内容
sms_numbervarchar2(10),--要发送的扩展短号(自动添加在公司短信号码后面)
idnumber(10)primarykey,--唯一id,取自sms_seq序列
prioritynumber
(1)default9,--发送优先级,0最高
plan_timevarchar2(19),
--短信定时发送时间,格式为yyyy-mm-ddhh24:
mi:
ss
--如果不填写,表示马上发送
--********************************************
--上面的字段由发送者填写
--下面的字段由接口回填
--********************************************
resultchar
(1)default'0',--状态
--'0'—等待提交,表示短信尚未提交到短信群发平台的服务器
--'1'—已提交,表示短信已经提交到短信群发服务器,但是尚未发送到网关
--'2'—已发送,表示短信已经发送到网关,等待用户接收
--'3'—已接收,表示用户的手机已经收到短信
--'a'—提交错误,短信被短信群发服务器拒绝
--'b'—发送错误,短信被网关拒绝
--'c'—接收错误,因为用户关机等原因,短信最终未被用户收到
--!
!
!
!
!
注意!
!
!
!
!
:
--接口服务程序扫描result='0'的记录并发送,然后根据结果更新result字段
--如果在sms_send表上面建触发器,请严格测试,保证result从0更新到其他
--状态的语句不会执行失败,否则该条记录会被接口服务程序重复扫描到并
--一直重复发送!
!
!
!
!
seq_idvarchar2(10),--短信编号
submit_timevarchar2(20),--提交时间
send_timevarchar2(20),--网关发送时间
recv_timevarchar2(20),--用户接收时间
send_typechar
(1)--保留
);
createindexidx_sms_send_priorityonsms_send(priority);
createindexidx_sms_send_timeonsms_send(plan_time);
createindexidx_sms_send_resultonsms_send(result);
createindexidx_sms_send_seq_idonsms_send(seq_id);
createindexidx_sms_send_mobileonsms_send(mobile);
2.1.2示范SQL语句
下面是短信应用程序收发短信以及查询短信状态的SQL语句示范:
※发送短信:
假设浙江联通分配给用户的企业短信号码是7016571xxx,那么用户可以在此号码的基础上以7016571xxxyyyyy号码为主叫号码向手机发送短信,其中yyyyy为0位到8位的扩展号码。
下面的第1条SQL语句以7016571xxx号码向133********发送短信“您好!
”;第2条SQL语句以7016571xxx1234号码向133********发送短信“Hello!
”;第3条SQL语句以7016571xxx6789号码向133********发送短信“您好”,发送时间定在2004年2月2日18点0分。
●insertintosms_send(id,mobile,content)values(sms_seq.nextval,'13305710000','您好!
')
●insertintosms_send(id,sms_number,mobile,content)values(sms_seq.nextval,'1234','13305710000','您好!
')
●insertintosms_send(id,sms_number,mobile,content,plan_time)values(sms_seq.nextval,'6789','13305710000','您好!
','2004-02-0218:
00:
00')
注意:
定时发送以数据库接口服务器的时间作为基准,请务必将数据库服务器的系统时间调整为正确的时间!
※查询已发送的短信状态:
当短信被发送以后,接口服务程序将根据短信的当前状态实时更新sms_send表中相应记录的result字段,所以只要对该表进行查询,即可得知短信当前的状态。
submit_time、send_time、recv_time三个字段配合result字段使用,表示短信到达各步骤的时间:
●result字段的初始状态为'0',当短信被递交到浙江联通行业短信平台接口服务器,并且递交成功的时候,该字段将被设置为'1',这时submit_time字段被更新为短信递交到服务器的时间。
●如果短信被接口服务器拒绝(一般原因为发送的号码不合法、或者公司帐号欠费),那么result字段将被设置为'a'。
●当短信从浙江联通行业短信平台接口服务器递交到短信网关,并且已经递交成功的时候,那么result字段将被设置为'2',这时send_time字段被更新为短信递交到网关的时间。
●如果短信被网关拒绝(一般原因为发送号码不合法,或者扣费号码中已经没有余额等),那么result字段将被设置为'b'。
●当用户手机收到短信后,result字段将被更新为'3',这时recv_time字段将被更新为用户手机收到短信的时间。
●如果由于用户手机关机或者不在服务区,短信中心经过多次重试仍无法找到用户,那么result字段将被更新为'c'。
※查询接收到的短信:
系统从用户手机接收的短信将被保存在sms_receive表中,假设133********号码向7016571xxx12345号码发送了一条短信,那么sms_receive表中将增加一条记录,其中的mobile字段的内容为“133********”,sms_number字段的内容为扩展号码“12345”,content字段的内容为短信内容。
2.2使用SQLServer数据库
在使用SQLServer数据库的情况下,最好为短信接口表单独创建一个数据库,并为其单独分配一个用户,以便和其他短信应用系统使用的数据表隔离。
2.2.1数据字典
下面是短信接口表的初始化脚本,各字段的取值和含义已经包含在字段的注释中:
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--数据库版本表
--!
!
!
请不要增加、删除或者修改本表的记录!
!
!
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--droptablesms_ver
--go
createtablesms_ver(
verint
)
go
insertintosms_vervalues
(1)
go
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--短信接收表
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
createtablesms_receive(
idnumeric(18,0)identity(1,1)
notforreplicationnotnull,--唯一id
resultchar
(1)notnulldefault('0'),----供用户程序使用,表示记录是否被处理,缺省为'0'
mobilevarchar(21)notnull,----发送方的手机号码
recv_timevarchar(20),----短信接收时间
sms_numbervarchar(10),----扩展短号(用户发送的号码去除公司短号后的扩展部分)
contentvarchar(160)----接收的短信内容
)
go
altertablesms_receiveaddconstraintpk_sms_receiveprimarykeyclustered(id)
go
createindexix_sms_receive_resultonsms_receive(result)
go
createindexix_sms_receive_mobileonsms_receive(mobile)
go
createindexix_sms_receive_sms_numberonsms_receive(sms_number)
go
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--短信发送表
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
createtablesms_send(
mobilevarchar(21)notnull,--要发送的手机号码
contentvarchar(160)notnull,--要发送的短信内容
sms_numbervarchar(10),--要发送的扩展短号(自动添加在公司短信号码后面)
idnumeric(18,0)identity(1,1)
notforreplicationnotnull,--唯一id(自动递增)
priorityintdefault9,--发送优先级,0最高
plan_timevarchar(19),
--短信定时发送时间,格式为yyyy-mm-ddhh:
mm:
ss
--如果不填写,表示马上发送
--********************************************
--上面的字段由发送者填写
--下面的字段由接口回填
--********************************************
resultchar
(1)default('0'),--状态
--'0'—等待提交,表示短信尚未提交到短信群发平台的服务器
--'1'—已提交,表示短信已经提交到短信群发服务器,但是尚未发送到网关
--'2'—已发送,表示短信已经发送到网关,等待用户接收
--'3'—已接收,表示用户的手机已经收到短信
--'a'—提交错误,短信被短信群发服务器拒绝
--'b'—发送错误,短信被网关拒绝
--'c'—接收错误,因为用户关机等原因,短信最终未被用户收到
--!
!
!
!
!
注意!
!
!
!
!
:
--接口服务程序扫描result='0'的记录并发送,然后根据结果更新result字段
--如果在sms_send表上面建触发器,请严格测试,保证result从0更新到其他
--状态的语句不会执行失败,否则该条记录会被接口服务程序重复扫描到并
--一直重复发送!
!
!
!
!
seq_idvarchar(10),--短信编号
submit_timevarchar(20),--提交时间
send_timevarchar(20),--网关发送时间
recv_timevarchar(20),--用户接收时间
send_typechar
(1)default('0')--保留
)
go
altertablesms_sendaddconstraintpk_sms_sendprimarykeyclustered(id)
go
createindexix_sms_send_priorityonsms_send(priority)
go
createindexix_sms_send_timeonsms_send(plan_time)
go
createindexix_sms_send_resultonsms_send(result)
go
createindexix_sms_send_mobileonsms_send(mobile)
go
createindexix_sms_send_seq_idonsms_send(seq_id)
go
2.2.2示范SQL语句
下面是短信应用程序收发短信以及查询短信状态的SQL语句示范:
※发送短信:
假设浙江联通分配给用户的企业短信号码是7016571xxx,那么用户可以在此号码的基础上以7016571xxxyyyyy号码为主叫号码向手机发送短信,其中yyyyy为0位到8位的扩展号码。
下面的第1条SQL语句以7016571xxx号码向133********发送短信“您好!
”;第2条SQL语句以7016571xxx12345号码向133********发送短信“Hello!
”;第3条SQL语句以7016571xxx6789号码向133********发送短信“您好”,发送时间定在2004年2月2日18点0分。
●insertintosms_send(mobile,content)values('13305710000','您好!
')
●insertintosms_send(sms_number,mobile,content)values('12345','13305710000','您好!
')
●insertintosms_send(sms_number,mobile,content,plan_time)values('6789','13305710000','您好!
','2004-02-0218:
00:
00')
注意:
定时发送以接口数据库服务器的时间作为基准,请务必将数据库服务器的系统时间调整为正确的时间!
※查询已发送的短信状态:
请参考2.1.2节中的相应内容。
※查询接收到的短信:
请参考2.1.2节中的相应内容。
2.3使用Sybase数据库
在使用Sybase数据库的情况下,最好为短信接口表单独创建一个数据库,并为其单独分配一个用户,以便和其他短信应用系统使用的数据表隔离。
2.3.1数据字典
下面是短信接口表的初始化脚本,各字段的取值和含义已经包含在字段的注释中:
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--数据库版本表
--!
!
!
请不要增加、删除或者修改本表的记录!
!
!
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--droptablesms_ver
--go
createtablesms_ver(
verint
)
go
insertintosms_vervalues
(1)
go
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--短信接收表
-->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
--droptablesms_receive
--go
createtablesms_receive(
idnumeric(18,0)identitynotnull,--唯一id
resultchar
(1)default('0'),----供
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江 联通 行业 应用 短信 平台 二次开发 接口 使用手册 学生 上课 内容