監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉

協(xié)同OA辦公系統(tǒng)的短信接口實現(xiàn)過程

申請免費試用、咨詢電話:400-8352-114

協(xié)同OA辦公系統(tǒng)的短信接口
OA目前使用短信貓作為內(nèi)置的短信發(fā)送設備,但往往客戶本身已經(jīng)采購了其他的短信服務商的產(chǎn)品,比如中國電信的企信通等等,如果要改用其他供應商的短信發(fā)送裝置的話可以通過OA短信接口實現(xiàn)。廈門OA短信接口包含了sendSMS (msg)方法,客戶開發(fā)人員只要用自己的業(yè)務邏輯實現(xiàn)這個方法,廈門泛普OA系統(tǒng)在需要發(fā)送短信的時候就會調用客戶自己開發(fā)的發(fā)送方式。
另外,泛普OA提供了基于中間表的接口實現(xiàn),客戶可以直接使用。這個接口實現(xiàn)的原理是把要發(fā)送的短信數(shù)據(jù)按照和短信設備供應商約定的格式寫道中間表中,由短信設備供應商定時去獲取數(shù)據(jù)并發(fā)送(大多數(shù)短信設備供應商已經(jīng)提供了通過中間表方式發(fā)送短信的功能。)
在理解了上面的原理之后,接下來講解一下配置使用接口的方法。
1.       找到ecoloyg安裝目錄/WEB-INF/service/sms.xml,打開這個文件,里面的內(nèi)容如下:
<module id="sms" version="1.0.0">
    <service-point id="smssender" interface="think.sms.SmsService">
        <invoke-factory>
            <construct class="think.sms.JdbcSmsService">
                <set property="type" value="sqlserver"/>
                <set property="host" value="192.168.0.204"/>
                <set property="port" value="1433"/>
                <set property="dbname" value="OA3802"/>
                <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>
需要關注的是紅色部分的內(nèi)容。這里逐一說明.
<set property="type" value="sqlserver"/>: 指定中間表所在數(shù)據(jù)庫的類型,如果是oracle的話就改為value="oracle"
<set property="host" value="192.168.0.204"/>:  指定中間表所在數(shù)據(jù)庫服務器的ip
<set property="port" value="1433"/>: 指定中間表所在數(shù)據(jù)庫的端口,如果是oracle的話應改為1521
<set property="dbname" value="OA3802"/>: 指定中間表所在數(shù)據(jù)庫名
<set property="username" value="sa"/>: 指定中間表所在數(shù)據(jù)庫帳號
<set property="password" value="123"/>:指定中間表所在數(shù)據(jù)庫密碼
以上的配置和think.properties中的參數(shù)差不多,應該不難理解。
<set property="sql" value="insert into OutBox(ReceiverMobileNo,Msg,SendTime,IsChinese,ExpressLevel,Sender) values(?,?,getDate(),1,1,1)"/>: 指定往中間表插入數(shù)據(jù)使用的sql語句。例子中的這條sql是根據(jù)一個客戶的需求寫的,客戶提供的中間表結構是:
表名:OutBox
字段:ReceiverMobileNo,   ----------------接受人
    Msg,               ----------------短信內(nèi)容
    SendTime,          -----------------發(fā)送時間
    IsChinese,          -----------------是否中文
    ExpressLevel,       -----------------緊急程度
    Sender             ----------------發(fā)送人

實際上廈門泛普OA短信接口只需要用到接受人和短信內(nèi)容兩個字段,這兩個字段的值不是固定的,由短信接口負責把數(shù)據(jù)傳過來,因此用?號表示他們的值。其他字段的值不用關心,可以隨便寫死一些數(shù)據(jù),這個例子里全部寫的是1,發(fā)送時間是用sql server自帶的函數(shù)getDate()獲取的。

不妨這樣理解,最簡單的中間表可以是這樣子的:
表名:someTable
字段:MobileNo,
      messageBody
2.       修改OA/WEB-INF/prop/think_rtx.properties中的內(nèi)容為:
IsInitRTXOrg=true
IsDownLineNotify=true
#CurSmsServer=rtx
CurSmsServerIsValid=true
RTXServerPort=8036
RTXServerIP=
RTXServerOutIP=
也就是說只要把CurSmsServer=rtx用#號注釋掉就可以了。
下面是兩個建中間表的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
 )
3.       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="think.sms.SmsService">
        <invoke-factory>
            <construct class="think.sms.JdbcSmsService">
                <set property="type" value="oracle"/>
                <set property="host" value="192.168.0.204"/>
                <set property="port" value="1521"/>
                <set property="dbname" value="think1"/>
                <set property="username" value="OA40002"/>
                <set property="password" value="OA"/>
                <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>
 


客戶開發(fā)人員可以自己實現(xiàn)接口:
public class TestService implements SmsService{
   public boolean sendSMS(String smsId,String number,String msg){
   System.out.println("接受人:"+number);
   System.out.println("測試短信:"+msg);
   。。。
   return true;
   }
}
那么OA系統(tǒng)在發(fā)送短信時將會調用TestService中的sendSMS方法。
把這個實現(xiàn)部署到OA中,只需修改sms.xml就可以了,:
<module id="sms" version="1.0.0">
    <service-point id="smssender" interface="think.sms.SmsService">
        <invoke-factory>
            <construct class="TestService">
            </construct>
        </invoke-factory>
    </service-point>  
</module>

紅色部分表示OA在發(fā)送短信是將調用TestService實現(xiàn)。

發(fā)布:2006-04-30 16:18    編輯:泛普軟件 · admin    [打印此頁]    [關閉]
廈門OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢

泛普廈門OA軟件其他應用

廈門OA軟件 廈門OA新聞動態(tài) 廈門OA信息化 廈門OA快博 廈門OA行業(yè)資訊 廈門軟件開發(fā)公司 廈門門禁系統(tǒng) 廈門物業(yè)管理軟件 廈門倉庫管理軟件 廈門餐飲管理軟件 廈門網(wǎng)站建設公司