申請免費試用、咨詢電話:400-8352-114
    
	第五部分 泛普免費OA短信API接口
	一. 泛普OA免費版接口說明
	該接口用來實現(xiàn)調(diào)用各短信廠商提供的短信發(fā)送網(wǎng)關(guān)或者信息機實現(xiàn)泛普OA系統(tǒng)短信發(fā)送的功能。
	二. 泛普OA軟件實現(xiàn)方法&步驟
	 
	實現(xiàn)方法分為兩類:一類是使用中間表方式實現(xiàn),另外一類是可自行編寫接口代碼方式來調(diào)用方法;
	 
	中間表實現(xiàn)方法:接口的原理很簡單,就是泛普OA系統(tǒng)只負責把需要發(fā)送的短信數(shù)據(jù)放到中間表里,由短信設(shè)備供應商或客戶自己把中間表里的數(shù)據(jù)發(fā)送出去。實際上大多數(shù)短信設(shè)備供應商已經(jīng)實現(xiàn)了通過中間表方式發(fā)送短信。
	接口對中間表的存放的位置、中間表名及字段名沒有要求,因為往中間表插入數(shù)據(jù)的sql是在配置文件中指定的,但是有兩點要注意
	1.       必須使用sql server、oracle、mysql、db2數(shù)據(jù)庫,其他的數(shù)據(jù)庫暫時不支持。
	2.       必須有用于存放短信內(nèi)容、短信接受人的字段。
	使用說明:
	在理解了上面的原理之后,我們可以繼續(xù)了解配置使用接口的方法。
	1. xml文件配置
	文件位于泛普OA系統(tǒng)/WEB-INF/service/sms.xml,打開這個文件,里面的內(nèi)容如下:
	<module id="sms" version="1.0.0">
	    <service-point id="smssender" interface="泛普OA系統(tǒng).sms.SmsService">
	        <invoke-factory>
	            <construct class="泛普OA系統(tǒng).sms.JdbcSmsService">
	                <set property="type" value="sqlserver2000"/>
	                <set property="host" value="192.168.0.204"/>
	                <set property="port" value="1433"/>
	                <set property="dbname" value="泛普OA系統(tǒng)3802"/>
	                <set property="username" value="sa"/>
	                <set property="password" value="123"/>
	                <set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>
	            </construct>
	        </invoke-factory>
	    </service-point>   
	</module>
	 
	 
	我們需要關(guān)注的是紅色部分的內(nèi)容。我逐一講解一下.
	 <set property="type" value="sqlserver2000"/>: 指定中間表所在數(shù)據(jù)庫的類型,如果是oracle的話就改為value="oracle"
	 <set property="host" value="192.168.0.204"/>:  指定中間表所在數(shù)據(jù)庫服務(wù)器的ip
	 <set property="port" value="1433"/>: 指定中間表所在數(shù)據(jù)庫的端口,如果是oracle的話應改為1521
	 <set property="dbname" value="泛普OA系統(tǒng)3802"/>: 指定中間表所在數(shù)據(jù)庫名
	 <set property="username" value="sa"/>: 指定中間表所在數(shù)據(jù)庫帳號
	 <set property="password" value="123"/>:指定中間表所在數(shù)據(jù)庫密碼
	 以上的配置和泛普OA系統(tǒng).properties中的參數(shù)差不多,應該不難理解。
	 <set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>: 指定往中間表插入數(shù)據(jù)使用的sql語句。
	表名:OutBox
	字段:ReceiverMobileNo,   ----------------接受人
	Msg,               ----------------短信內(nèi)容
	SendTime,          -----------------發(fā)送時間
	IsChinese,          -----------------是否中文
	ExpressLevel,       -----------------緊急程度
	Sender             ----------------發(fā)送人
	 
	實際上我們只需要用到接受人和短信內(nèi)容兩個字段,這兩個字段的值不是固定的,由我們的接口負責把數(shù)據(jù)傳過來,因此用?號表示他們的值。其他字段的值我們不關(guān)心,可以隨便寫死一些數(shù)據(jù),這個例子里全部寫的1,發(fā)送時間是用sql server自帶的函數(shù)getDate()獲取的。
	 
	我們可以這樣理解,最簡單的中間表可以是這樣子的:
	表名:someTable
	字段:MobileNo,
	      messageBody
	2. 泛普免費oa辦公系統(tǒng)短信設(shè)備配置文件修改
	修改泛普OA系統(tǒng)/WEB-INF/prop/泛普OA系統(tǒng)_rtx.properties中的內(nèi)容為:
	#config file
	#Fri Aug 13 11:30:56 CST 2004
	IsInitRTXOrg=true
	IsDownLineNotify=true
	CurSmsServer=cus
	CurSmsServerIsValid=true
	RTXServerPort=8036
	RTXServerIP=
	RTXServerOutIP=
	 
	 
	也就是說只要把CurSmsServer的值修改為cus,代表使用第三方中間件發(fā)短信。
	中間表之sql腳本樣例
	下面提供兩個建中間表的sql腳本供參考:
	1. for sqlserver
	CREATE TABLE outbox (
	ID  int IDENTITY (1, 1) ,
	ExpressLevel int ,
	Sender varchar (50) ,
	ReceiverMobileNo varchar (50),
	Msg varchar (500) ,
	SendTime datetime,
	IsChinese bit
	) 
	 
	 
	2. for oracle
	create table OUTBOX
	(
	  ID               NUMBER not null,
	  EXPRESSLEVEL     NUMBER,
	  SENDER           VARCHAR2(50),
	  RECEIVERMOBILENO VARCHAR2(50) not null,
	  MSG              VARCHAR2(500),
	  SENDTIME         DATE not null,
	  ISCHINESE        NUMBER not null
	);
	create sequence OUTBOX_ID_SEQ
	minvalue 1
	maxvalue 999999999
	start with 141
	increment by 1
	cache 20;
	CREATE OR REPLACE TRIGGER "SET_OUTBOX_ID" BEFORE
	    INSERT  ON "OUTBOX"
	FOR EACH ROW
	 
	DECLARE
	  NEXT_OUTBOX_ID NUMBER;
	BEGIN
	  SELECT OUTBOX_ID_SEQ.NEXTVAL INTO NEXT_OUTBOX_ID FROM DUAL;
	  :NEW.ID := NEXT_OUTBOX_ID;
	END;
	 
	 
	 
	 oracle下對應的sms.xml文件內(nèi)容為:
	<module id="sms" version="1.0.0">
	    <service-point id="smssender" interface="泛普OA系統(tǒng).sms.SmsService">
	        <invoke-factory>
	            <construct class="泛普OA系統(tǒng).sms.JdbcSmsService">
	                <set property="type" value="oracle"/>
	                <set property="host" value="192.168.0.204"/>
	                <set property="port" value="1521"/>
	                <set property="dbname" value="泛普OA系統(tǒng)1"/>
	                <set property="username" value="泛普OA系統(tǒng)40002"/>
	                <set property="password" value="泛普OA系統(tǒng)"/>
	                <set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,(select sysdate from dual),1,1,'1')"/>
	            </construct>
	        </invoke-factory>
	    </service-point>   
	</module>
	 
	 
	 
	注意:每次配置后需要重啟OA服務(wù)方可生效;
	 
	3.  oa辦公系統(tǒng)破解版自定義代碼開發(fā)實現(xiàn)方式
	實際上使用中間表來和短信供應商集成只是我們通用接口的一部分,這種實現(xiàn)方式的缺點是短信供應商通常以定時掃描中間表的方式來把短信數(shù)據(jù)發(fā)送出去,短信發(fā)送的時間取決于掃描的頻度,實時性稍差。
	泛普OA系統(tǒng)的短信接口除了提供了寫中間表的方式發(fā)送短信外,還提供了通過程序?qū)崿F(xiàn)短信接口的方式發(fā)送短信。這種方式需要實現(xiàn)系統(tǒng)中的泛普OA系統(tǒng).sms.SMSService接口
	示例代碼:
	public class SendSMS  implements SmsService{
	public boolean sendSMS(String smsId,String number,String msg){
	System.out.println("接受人:"+number);
	System.out.println("測試短信:"+msg);
	return true;
	}
	}
	 
	 
	那么泛普OA系統(tǒng)系統(tǒng)在發(fā)送短信時將會調(diào)用SendSMS中的sendSMS方法。在sendSMS方法中可以根據(jù)實際情況去實現(xiàn)短信網(wǎng)關(guān),或者信息機供應商提供的發(fā)送短信的具體方法。
	通過該種方式發(fā)送短信,還需要修改sms.xml 
	 
	<module id="sms" version="1.0.0">
	    <service-point id="smssender" interface="泛普OA系統(tǒng).sms.SmsService">
	        <invoke-factory>
	            <construct class=" SendSMS ">
	            </construct>
	        </invoke-factory>
	    </service-point>   
	</module>
	 
	 
	 
	黑體部分表示泛普OA系統(tǒng)在發(fā)送短信是將調(diào)用SendSMS這個類來實現(xiàn)。
	注意:每次配置后需要重啟OA服務(wù)方可生效;
	 
	4. 在5.0及以上版本可以直接在進行可視化的配置
	通過頂部菜單【設(shè)置中心】【外部接口設(shè)置】【配置短信接口】即可進入配置界面,通過選擇方式可以確定采用哪個方式來實現(xiàn)
	第一類既是【通用接口】:通過中間表實現(xiàn)
	 
	 
	第一類既是【自定義接口】:通過實現(xiàn)短信接口來實現(xiàn)
	 
	配置好之后還需在頂部菜單【設(shè)置中心】【參數(shù)設(shè)置】【系統(tǒng)設(shè)置】通過開關(guān)來控制到底采用哪種方式發(fā)送短信:RTX短信貓還是接口,配置界面如下:
	 
	 
	注意:該配置,不需要重啟OA服務(wù)即可生效