中國聯通彩信業務管理平臺SP開發規范v2.0-修訂稿2.doc
下載文檔
上傳人:職z****i
編號:1326897
2025-03-04
38頁
860KB
1、中國聯通公司企業標準QB/CU 0192006中國聯通數字蜂窩移動通信網多媒體消息業務(MMS)CP/SP業務開發規范China Unicom Digital Cellular Mobile Communication Network CP/SP Service Development Specification for Multimedia MessageService(V2.0)中國聯通公司發布目次 前言. II 1 范圍 (1) 2 規范性引用文件 (1) 3 縮略語 (1) 4 CP/SP業務開發方法 (2) 4.1 彩信業務下行接口 (2) 4.2 彩信狀態報告上行接口 (8) 4.2、3 定制關系實時同步接口 (11) 4.4 定制關系FTP同步接口 (14) 4.5 點播上行接口 (18) 附錄A (21) 附錄B (22) 前言 本規范規定了中國聯通多媒體消息業務的CP/SP業務開發方法,為CP/SP開發多媒體消息業務增值應用并將自己的內容與服務接入MMSMP提供開發依據。 本規范附錄A為API開發文檔,附錄B為中國聯通彩信業務管理平臺介紹文檔。 本規范版本為V2.0。 本規范主要起草單位: 本標準主要起草人: 本規范的修改和解釋權屬中國聯通公司產品創新部。 中國聯通多媒體消息業務(MMS)CP/SP業務開發規范 1 范圍 本規范適用于CP/SP開發多媒體消息業務應用并3、與彩信業務管理平臺進行對接,以保證各CP/SP通過標準的MM7等協議接口將自己的內容與服務接入彩信業務管理平臺。 2 規范性引用文件 下列文件中的條款通過本標準的引用而成為本標準的條款。凡是注日期的引用文件,其隨后所有的修改單(不包括勘誤的內容)或修訂版均不適用于本標準,然而,鼓勵根據本標準達成協議的各方研究是否可使用這些文件的最新版本。凡是不注日期的引用文件,其最新版本適用于本標準。 1中國聯通數字蜂窩移動通信網多媒體消息業務(MMS)規范(V1.0) 2中國聯通數字蜂窩移動通信網多媒體消息業務(MMS)設備規范(V1.0) 3中國聯通數字蜂窩移動通信網多媒體消息業務(MMS)規范(V1.04、) 3 縮略語 4 CP/SP業務開發方法 4.1 彩信業務下行接口 4.1.1 接口描述 增值服務提供商(SP)下行彩信必須按照中國聯通多媒體消息業務相關規范來實現彩信業務下發和返回消息的處理。 增值服務提供商(SP)通過發送MM7_submit.REQ消息,將一個多媒體消息(MM)提交給MMSMP。可以將消息發往一個或多個用戶或發往一個分發表。如果MMSMP接受提交,則MMSMP必須發送帶一個“成功”狀態的MM7_submit.RES給SP。這并不意味著該多媒體消息(MM)已真正傳送至目的地,它只是表明請求已接受。 4.1.2 流程圖 4.1.3 接口規范 溫馨推薦您可前往百度文庫小程序享5、受更優閱讀體驗 不去了立即體驗表4.1.3.1:MM7_submit.REQ中的信息單元 表4.1.3.2:MM7_submit.RES中的信息單元 4.1.4 代碼樣例 下面給出的是使用vassdk_soap.jar開發簡單的CP/SP端程序的樣例:package com.cmcc.mm7.SP.demo; / import from mms import com.cmcc.mm7.SP.pdu.*; import com.cmcc.mm7.SP.message.*; import com.cmcc.mm7.SP.service.*; import com.cmcc.mm7.SP.commo6、n.*; import com.cmcc.mm7.SP.conf.*; / import from jdk import java.util.*; import java.io.*; public class MainTest extends MM7Receiver HashMap transIDMap = new HashMap(); public MainTest(MM7Config config) super.setConfig(config); /* * 處理Deliver消息,由子類實現 * * param request * return MM7SPRes */ public MM7、7SPRes doDeliver(MM7DeliverReq request) / 打印請求消息 System.out.println(NormalReceiverTest DeliverReq:); System.out.println(request.toString(); / 構造響應消息 MM7DeliverRes deliverRes = new MM7DeliverRes(); deliverRes.setServiceCode(service code 000); deliverRes.setStatus(1000); deliverRes.setStatusText(statu8、stext); / 這個TransactionID保證MMSC能成功處理響應消息 deliverRes.setTransactionId(request.getTransactionId(); return deliverRes; /* * 處理DeliveryReport消息,由子類實現 * * param request * return MM7SPRes */ public MM7SPRes doDeliveryReport(MM7DeliveryReportReq request) / 打印請求消息 System.out.println(NormalReceiverTest Deliv9、eryReport:); System.out.println(request.toString(); /根據transID判斷 if (transIDMap.containsKey(request.getTransactionId() System.out.println(Get Deliver.Req message, TransactionID: + request.getTransactionId(); / 構造響應消息 MM7DeliveryReportRes deliveryReportRes = new MM7DeliveryReportRes(); deliveryReport10、Res.setStatus(1000); deliveryReportRes.setStatusText(delivery report text); / 這個TransactionID保證MMSC能成功處理響應消息 deliveryReportRes.setTransactionId(request.getTransactionId(); /將消息從MAP中刪除 transIDMap.remove(request.getTransactionId(); return deliveryReportRes; else System.out.println(Get error Deliver.Re11、q message, TransactionID: + request.getTransactionId(); MM7SPErrorRes errorRes = new MM7SPErrorRes(3001, Error Deliver.Req message); return errorRes; /* * 處理ReadReply消息,由子類實現 * * param reqeust * return MM7SPRes */ public MM7SPRes doReadReply(MM7ReadReplyReq request) / 打印請求消息 System.out.println(Norma12、lReceiverTest ReadReply:); System.out.println(request.toString(); / 構造響應消息 MM7ReadReplyRes readReplyRes = new MM7ReadReplyRes(); readReplyRes.setStatus(1000); readReplyRes.setStatusText(status text.); / 這個TransactionID保證MMSC能成功處理響應消息 readReplyRes.setTransactionId(request.getTransactionId(); return r13、eadReplyRes; public void main(String args) /初始化配置參數 MM7Config mm7Config = new MM7Config( F:V100R00101.CI1.5 Codevasapimm7Config.xml); /啟動一個接收線程 MainTest receiver = new MainTest(mm7Config); receiver.setReceiver(receiver); receiver.start(); MM7Sender sender = new MM7Sender(mm7Config); /創建MM7Sender對象 /14、 可以根據需要增加一個循環,自動發送 MM7SubmitReq req = new MM7SubmitReq(); /構造消息 req.setSPID(111111); req.setVASID(2222); req.setSender(2222333); / VASID + ServiceCode req.addTo(61234567); req.setServiceCode(333); req.setLinkID(9999); req.setMessageClass(Personal); req.setDate(new Date(); req.setExpiry(10000000); re15、q.setDeliveryReport(true); req.setReadReply(true); req.setPriority( (byte) 0); req.setReplyDeadline(new Date(); req.setSubject(This is submitReq); req.setAdaptations(true); req.setChargedParty(MMConstants.ChargedParty.SENDER); req.setDistributionIndicator(true); / 先構造一個媒體容器 MMContent mainContent = n16、ew MMContent(); mainContent.setContentType(MMConstants.ContentType.MULTIPART_RELATED); mainContent.setContentID(aaaaaa); req.setContent(mainContent); / 構造一個媒體,此處添加的只是一個文本串 MMContent mmc = new MMContent(); mmc.setData(new String(wwwwwwwww).getBytes(); /添加內容體 mmc.setContentType(text/plain); /設置內容體格式 m17、mc.setContentID(aaID); mainContent.addSubContent(mmc); /將創建好的內容添加到消息 /將消息以TransID為主鍵保存,接收線程接收到遞送報告時,再將該消息從map中刪除。 transIDMap.put(req.getTransactionId(), req); MM7Message rsp = sender.send(req); if (rsp.getStatus() != MMConstants.RequestStatus.SUCCESS) /發送失敗處理 4.2 彩信狀態報告上行接口 4.2.1 接口描述 本接口實現了MMSMP將消息18、傳送給SP進行處理的情況。MMSMP通過將MM作為 MM7_deliver.REQ的有效負荷,將消息傳送給SP。這些消息可能發自MMS用戶代理、外部應用程序或外部MMSE。傳送的東西可能包括一個SP用于關聯消息響應的請求標識。SP應響應MM7_deliver.RES 消息,表明已成功接收并將處理該消息。 4.2.2 流程圖 4.2.3 接口規范 表4.2.3.1:MM7_delivery_report.REQ中的信息單元 表4.2.3.2:MM7_delivery_report.RES中的信息單元 4.2.4 代碼示例 public MM7SPRes doDeliveryReport(MM7D19、eliveryReportReq request) logger.info(request.getRecipient()=+request.getRecipient(); String phone = request.getRecipient(); String str_phone = phone; if (phone.startsWith(+86) str_phone = phone.substring(3); else if (phone.startsWith(86) str_phone = phone.substring(2); MO_ReportMessage mtReport = n20、ew MO_ReportMessage(); mtReport.setCorrelator(request.getMessageID()+str_phone); mtReport.setStatus(+request.getMMStatus(); mtReport.setSourceType(SourceValue.ISAG); logger.info(request); MM7DeliveryReportRes mm7DeliveryReportRes = new MM7DeliveryReportRes(); mm7DeliveryReportRes.setStatusCode(MMCon21、stants.RequestStatus.SUCCESS); mm7DeliveryReportRes.setTransactionID(request.getTransactionID(); return (MM7SPRes) mm7DeliveryReportRes; 4.3 定制關系實時同步接口 4.3.1 接口描述 用戶訂購關系發生變化時以及用戶點播SP業務時,MMSMP通過此接口實時通知SP。 批開、批退時不采用此接口通知SP,通過FTP訂購關系同步接口通知SP。 通知失敗時,根據配置,MMSMP可進行重試,重試失敗則記錄日志,之后通過FTP訂購關系同步接口進行補償。 目前MMSMP22、采用webservice方式實時通知SP 4.3.2 流程圖 4.3.3 接口規范 4.3.3.1 訂購關系通知SP請求(OrderRelationUpdateNotifyReq) 4.3.3.2 訂購關系通知SP 響應(OrderRelationUpdateNotifyRsp ) 4.3.4 參考WSDL 目前與MMSMP 接口規范為VAC0214版 VAC 0214版 4.4 定制關系FTP 同步接口 4.4.1 接口描述 該接口用于MMSMP 與SP 每天稽核增量訂購關系。包括批量定購和退訂。 MMSMP 將每天增量文件放到MMSMP 為SP 提供的文件服務器的目錄下。雙方通過文件傳輸實23、現接口。文件服務器上設定具有對相應目錄存取權限的用戶。MMSMP 為SP 分配具有讀寫文件權限的用戶和密碼。 系統于每天凌晨1:00進行稽核文件資料同步。資料同步周期應具有根據最新規定進行可調的能力。 文件采用GBK 編碼格式, 文件體不定長,文件體各屬性間使用t 分隔,在生成記錄時若相應的屬性值為空,直接用分隔符隔開,分隔符之間無其他符號。 文件體中一行作為一條記錄,各條記錄之間用換行符n作為分隔并在文件中連續書寫。 文件頭定長,各屬性間無分隔符。 文件的維護由MMSMP負責。 4.4.2 文件規范 文件目錄 /VAC/SubscribeInfo/ 文件命名: SubscribeInfo+S24、PID+yyyyMMddHHmm+xxx+nnnn.txt SPID 八位,不足八位,左補零 文件產生的時間(12位yyyyMMddHHmm精確到年月日時分) xxx為省分代碼。 nnnn 是4位序列號,每天從“0001”開始,到達”9999”后又從“0001”開始。 4.4.3 接口規范 4.4.3.1 請求文件頭(定長) 4.4.3.2 文件體 4.4.4 代碼示例 OrderRelation or = new OrderRelation(); / or 定制關系保存的對象 or.recordSequenceId = strs0.trim(); or.userIdType= Integer25、.parseInt(.equals(strs1.trim() ? 0 : strs1.trim(); or.userId= strs2.trim(); or.serviceType= strs3.trim(); or.spId= strs4.trim(); or.productId= strs5.trim(); or.updateType= Integer.parseInt(.equals(strs6.trim() ? 0 : strs6.trim(); or.updateTime= strs7.trim(); or.updateDesc= strs8.trim(); or.linkId= s26、trs9.trim(); or.content= strs10.trim(); or.effectiveDate= strs11.trim(); or.expireDate= strs12.trim(); or.time_stamp= strs13.trim(); or.encodeStr= strs14.trim(); 4.5 點播上行接口 4.5.1 接口描述 此接口MMSMP向SP發送點播的通知,協議遵循短消息業務聯網SGIP協議1.2版,并基于專用SGIP的消息定義進行傳輸。MMSMP會在消息體將Linkid,用戶點播字,上行的接入號碼和用戶號碼等信息發送給SP,SP通過產品的點播指令27、字的模糊規則,查詢出產品ID,并執行下行點播操作。 4.5.2 流程圖 4.5.3 協議方式 采用專用SGIP方式承載時,通信雙方互為客戶端和服務器端。當客戶端要發送命令時,主動向服務器端建立連接,然后向服務器端發送命令,并接收應答;服務器端從客戶端接收命令,返回應答。連接建立以后,客戶端可以連續發送多條命令。命令發送完并接收到所有應答后,客戶端應該主動斷開連接。但是,命令及其應答之間的時間間隔最大不能超過30秒(默認,可配置)(如果命令應答時間超過最大等待時間,則要求客戶端重發該條命令,重發機制參見業務聯網規范有關內容),且待應答的命令不得超過32條(可以根據線路的質量和服務器的處理能力配置28、)。而且,如果服務器端檢測出一條連接長時間空閑(默認60秒,可配置),可以主動斷開該連接。如果需要,客戶端可以同時向一個服務器端建立多個連接(SMG與單個其他SMG最多不能建立超過15個連接,對與之相連的單個SP的最大連接數視具體情況而定)。采用專用SGIP承載方式時,SMG和SMG、SP和SMG之間使用的端口號是8801,GNS監聽SMG的端口號為8802,SMG監聽GNS的端口號為8803,主GNS和備用GNS之間的端口號為8804,SMG之間的測試用端口號為8810。 4.5.4 接口規范 4.5.4.1 Deliver命令的請求內容 4.5.4.2 Deliver命令的應答內容 4.529、.5 示例代碼 public class SmsSender extends SGIPSMSProxy public SGIP_Command onDeliver(final SGIP_Deliver msg) logger.info(receive Message: +msg); logger.info(receive Message seq: +msg.getSeqno_1()+/+msg.getSeqno_2()+/+msg.getSeqno_3(); try new Thread(new Runnable() public void run() ProcessRecvDeliverMsg(msg); /處理接受信息 ).start(); catch(Exception e) logger.info(onDeliver error.); return super.onDeliver(msg); /return null; 附錄 A MM7API開發文檔 API開發文檔.zip 彩信業務管理平臺介紹文檔
CAD圖紙
上傳時間:2023-12-21
28份