收藏 分享(赏)

中国联通数字蜂窝移动通信网MMS业务CPSP业务开发规范V1.docx

上传人:拉拉链 文档编号:16551110 上传时间:2023-01-29 格式:DOCX 页数:54 大小:499.97KB
下载 相关 举报
中国联通数字蜂窝移动通信网MMS业务CPSP业务开发规范V1.docx_第1页
第1页 / 共54页
中国联通数字蜂窝移动通信网MMS业务CPSP业务开发规范V1.docx_第2页
第2页 / 共54页
中国联通数字蜂窝移动通信网MMS业务CPSP业务开发规范V1.docx_第3页
第3页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、2006-04-20实施2006-04-20发布中国联通公司发布中国联通数字蜂窝移动通信网多媒体消息业务(MMS)CP/SP业务开发规范China Unicom Digital Cellular Mobile Communication NetworkCP/SP Service Development Specification for Multimedia Message Service(V1.0)QB/CU 0222006中国联通公司企业标准目 次前 言IV1 范围12 规范性引用文件13 术语与缩略语14 CP/SP业务开发方法14.1 开发方法14.1.1 发送多媒体消息的过程(下行业

2、务)14.1.1.1 初始化配置参数14.1.1.2 创建发送线程24.1.1.3 构造待发送消息24.1.1.4 发送消息34.1.2 接收多媒体消息的过程(上行业务)34.1.2.1 方式1:普通应用程序中的用法34.1.2.2 方式2:WEB应用程序中的用法44.1.3 流程图44.1.4 代码样例54.2 细节点击94.2.1 递送报告94.2.2 上行业务类型的区分94.2.3 发送消息时返回状态码的含义94.2.3.1 HTTP层返回状态码104.2.3.2 SOAP接口的错误状态码及状态文本104.2.4 对CP/SP的计费方式124.2.5 如何实现群发134.2.6 消息内容

3、体中的ID134.2.7 标题的编码方式134.2.8 文本内容的编码方式134.2.9 目前主要使用的消息内容体格式134.2.10 填充消息内容体时的注意事项144.2.11 使用SMIL格式传输消息时的注意事项144.2.12 上行业务处理方式的比较164.2.13 日志164.2.14 配置文件165 CP/SP业务测试方法185.1 测试环境185.2 接口测试185.2.1 下行接口测试185.2.1.1 主送地址的填写185.2.1.2 中文标题字符集测试195.2.1.3 英文标题字符集测试195.2.1.4 中英文及数字混合标题字符集测试205.2.1.5 中文消息内容字符集

4、测试205.2.1.6 英文消息内容字符集测试215.2.1.7 中英文混合消息内容字符集测试215.2.1.8 混合内容MM标题及MM内容测试项目225.2.1.9 GIF87a图片内容测试225.2.1.10 GIF89a图片内容测试235.2.1.11 JPG图片内容测试235.2.1.12 AMR声音内容测试245.2.1.13 IME声音内容测试245.2.1.14 MID声音内容测试255.2.1.15 各种媒体混合测试255.2.1.16 MMS消息内容体smil文件测试265.2.1.17 接收方号码的长度合法性判断265.2.1.18 接收方号码的字符合法性判断275.2.1

5、.19 接收方号码的归属判断275.2.1.20 发送MM消息的大小判断285.2.1.21 发送MM消息时对不可达终端的判断295.2.1.22 对HTTP长连接的测试295.2.1.23 多个主送地址的填写(可选)305.2.1.24 主送、抄送地址同时填写(可选)305.2.1.25 主送、密送地址的填写(可选)315.2.1.26 抄送地址的填写(可选)315.2.1.27 密送地址的填写(可选)325.2.1.28 多个主送、抄送地址的填写(可选)325.2.1.29 多个主送、密送地址的填写(可选)335.2.1.30 多个主送、抄送地址、密送地址的填写(可选)345.2.1.31

6、 WBMP图片内容测试(可选)345.2.2 上行接口测试355.2.2.1 接收消息处理功能测试(英文标题)355.2.2.2 接收消息处理功能测试(中文标题)355.2.2.3 接收消息处理功能测试(中文字符、英文字符、数字混合标题)365.2.2.4 接收消息处理功能测试(文本内容)365.2.2.5 接收消息处理功能测试(混合内容MM标题及MM内容测试项目)375.2.2.6 接收消息处理功能测试(图片内容)385.2.2.7 接收消息处理功能测试(声音内容)385.2.2.8 接收消息处理功能测试(各种格式混合内容)395.2.2.9 接收递送请求处理测试395.2.2.10 接收递

7、送报告处理测试405.3 业务测试415.3.1 AO-MT415.3.1.1 应用到终端(订购成功)415.3.1.2 应用到终端(订购不成功)425.3.2 MO-AT435.3.3 递送报告445.3.3.1 递送报告(发送方请求,接收方不拒绝)445.3.3.2 递送报告(发送方请求,接收方拒绝)445.4 计费测试445.4.1 计费号码的填充445.5 性能测试455.5.1 接收消息性能(可选)45附录A47附录B48前 言本规范规定了多媒体消息业务的CP/SP业务开发方法和测试方法,为CP/SP开发多媒体消息业务增值应用并将自己的内容与服务接入MMSC提供开发依据和测试依据。本

8、规范包括两部分内容,第一部分为CP/SP业务开发方法,第二部分为CP/SP业务测试方法。本规范附录A为API开发文档,附录B为MMSC产生的话单文件格式。本规范版本为V1.0。本规范主要起草单位:信息产业部电信传输研究所。本标准主要起草人:严砥 梁鹏 董晓宇。本规范的修改和解释权属中国联通公司增值业务部。中国联通数字蜂窝移动通信网多媒体消息业务(MMS)CP/SP业务开发规范1 范围本规范适用于CP/SP开发和测试多媒体消息业务应用并与MMSC进行对接,以保证各CP/SP通过标准的MM7接口将自己的内容与服务接入MMSC。2 规范性引用文件下列文件中的条款通过本标准的引用而成为本标准的条款。凡

9、是注日期的引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本标准,然而,鼓励根据本标准达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本标准。1 中国联通数字蜂窝移动通信网多媒体消息业务(MMS)规范(V1.0)2 中国联通数字蜂窝移动通信网多媒体消息业务(MMS)设备规范(V1.0)3 术语与缩略语企业代码:网络中CP/SP公司地址和身份的标识。服务代码:服务代码是在点播类业务中,提供给用户点播的内容/应用服务提供商代码。业务代码:业务代码表示业务类别,由内容/应用服务提供商自己制定。下行业务:由CP/SP主动发起的业务,例如CP/S

10、P到点业务。上行业务:CP/SP被动接收的业务,例如点到CP/SP业务。递送报告:指接收方(终端)对接收到的消息的处理方式的信息,MMSC在获取这个信息后会把这个信息发送给发送方(CP/SP)。接收方对消息的处理可能是接收或者拒绝等方式。对于企业代码、服务代码和业务代码的详细说明参见中国联通现行规定。4 CP/SP业务开发方法4.1 开发方法在所有的使用SDK开发的应用程序中,都要使用下面的语句把SDK中对应的class引入:import com.cmcc.mm7.vasp.pdu.*;import com.cmcc.mm7.vasp.message.*;import com.cmcc.mm7

11、.vasp.service.*;import com.cmcc.mm7.vasp.conf.*;import mon.*;4.1.1 发送多媒体消息的过程(下行业务)发送多媒体消息的过程就是使用SDK组织消息并通过SDK的自身通讯机制发送给MMSC的过程,主要步骤如下,具体范例见4.4节。4.1.1.1 初始化配置参数使用MM7Config类初始化配置参数,参数为配置文件mm7Config.xml的路径:MM7Config mm7Config = new MM7Config( d:mm7Config.xml);4.1.1.2 创建发送线程创建发送线程使用的是MM7Sender类,其中已经封装了

12、和MMSC连接的通讯机制,创建MM7Sender的一个实例即可。MM7Sender sender = new MM7Sender(mm7Config);4.1.1.3 构造待发送消息创建待发送消息使用的是消息的实体类:MM7SubmitReq、MM7CancelReq和MM7ReplaceReq,主要设置的就是消息的标题、消息类型、是否需要递送报告、添加接收发地址、设置消息体内容等。下面以MM7SubmitReq为例,说明如何构造消息。1、创建消息对象:MM7SubmitReq req = new MM7SubmitReq();2、设置消息各种属性:req.setVASPID(1111); /

13、VASPIDreq.setVASID(2222); /VASIDreq.setSender(2222333); / 消息发送方(VASID + ServiceCode)req.addTo(11111111); /消息接收方,对于多个接收方可多次调用addTo(),addCc(),addBcc()req.setServiceCode(333); /业务代码req.setLinkID(9999); /LinkIDreq.setSubject (“消息标题”); /设置消息的标题req.setDeliveryReport( true/false ); /设置是否需要递送报告req.setReadRe

14、ply(true/false); /设置是否需要阅读报告req.setMessageClass(MMConstants.MessageClass.PERSONAL); /设置消息类型req.setPriority(MMConstants.Priority.LOW); /设置消息的优先级(其他的消息属性设置可以参见4.4节)3、创建多个消息内容体并添加到多媒体消息对象中:每个消息内容体就是一个MMSContent实例。可以添加多个消息内容体,但是所有消息内容体的大小之和不能超过MMSC允许大小。A)先构造一个媒体容器MMContent mainContent = new MMContent();

15、mainContent.setContentType(MMConstants.ContentType. MULTIPART_MIXED);req.setContent(mainContent); /添加到消息中B)添加具体媒体内容 / 构造一个媒体,此处添加的只是一个文本串 MMContent mmc = new MMContent(); mmc.setData(new String(“just a test”).getBytes(); /添加内容体 mmc.setContentType(MMConstants.ContentType.TEXT); /设置内容体格式 mmc.setConten

16、tID(aaID); /设置内容ID mainContent.addSubContent(mmc); /将创建好的内容添加到消息 / 构造一个媒体,此处添加的是一个图片 mmc = MMContent.createFromFile(new File(D:1b932H.gif); mmc.setContentID(gif); mainContent.addSubContent(mmc); /将创建好的内容添加到消息4.1.1.4 发送消息发送消息只要调用MMSender实例的send()方法即可:MM7Message rsp = sender.send(req); 返回响应消息rsp,使用rsp

17、.getStatus()和rsp.getStatusText()方法获取消息发送的结果状态和状态描述。4.1.2 接收多媒体消息的过程(上行业务)CP/SP接收有可以有两种方式:如果CP/SP的增值应用是一个普通应用程序,可以使用方式1,则接收代理会自动开辟一个监听端口,启动一个监听线程来接收来自MMSC的多媒体消息。如果CP/SP的增值应用是一个Web应用,则可以使用方式2,则接收代理作为一个Servlet运行,并自动处理从HttpRequest中搜集数据解码成多媒体消息。4.1.2.1 方式1:普通应用程序中的用法1、用户实现消息处理接口继承MM7Receiver抽象类,实现doDeliv

18、er、doDeliveryReport、doReadReply方法。该方法在多媒体消息到达时回调。CP/SP要对接收到的MM进行一些特定的操作,并根据请求消息构造相应的响应消息返回给MMSC。例如: public MM7VASPRes doDeliver(MM7DeliverReq request) / 构造响应消息 MM7DeliverRes deliverRes = new MM7DeliverRes(); deliverRes.setServiceCode(service code 000); deliverRes.setStatus(1000); deliverRes.setStatu

19、sText(statustext); / 这个TransactionID保证MMSC能成功处理响应消息 deliverRes.setTransactionId(request.getTransactionId(); return deliverRes;2、创建接收消息的主程序:指为接收从MMSC过来的消息开辟一个接收端口。使用MMReciecer类,运行时是一个独立的线程,专门侦听从MMSC传递过来的MM,该类中封装了同MMSC连接的通讯方法。侦听的IP地址和端口在配置文件中设置即可。MM7Config mm7Config = new MM7Config( D:imm7Config.xml);

20、 /初始化参数NormalRecieverTest receiver = new NormalRecieverTest(mm7Config); /创建实例receiver.setReceiver(receiver); /设置消息接收处理对象receiver.start(); /启动线程3、在实现MM7Receiver的类的构造方法中,设置配置参数对象。super.setConfig(mm7Config);4、停止接收线程receiver.stop();4.1.2.2 方式2:WEB应用程序中的用法Web方式接收消息更简单,用户只要继承MM7ReceiveServlet类并实现其定义的抽象方法d

21、oDelivery、doDeliveryReport、doReadReply和init即可实现消息的接收。此时多媒体消息接收代理以Servlet的方式运行,用户只需要把代码连同Web应用的其他部分一起发布到WebServer上即可。例如:public class MyReceiver extends MM7RecieveServletpublic MM7VASPRes doDeliver(MM7DeliveryReq request) System.out.println(“收到手机”+request.getSender()+“提交的消息,标题为:”+request.getSubject();

22、return(MM7VASPRes)mm7DeliverRes; public void init( ServletConfig servletConfig ) throws ServletException MM7Config mm7Config = new MM7Config(F: mm7Config.xml); 4.1.3 流程图图4-1是典型的CP/SP与MMSC消息处理流程图,请对照4.1小节和4.2小节的说明,代码实例请参见4.4节。图1 消息处理流程图4.1.4 代码样例下面给出的是使用vassdk_soap.jar开发简单的CP/SP端程序的样例:package com.cmc

23、c.mm7.vasp.demo;/ import from mmsimport com.cmcc.mm7.vasp.pdu.*;import com.cmcc.mm7.vasp.message.*;import com.cmcc.mm7.vasp.service.*;import mon.*;import com.cmcc.mm7.vasp.conf.*;/ import from jdkimport java.util.*;import java.io.*;public class MainTest extends MM7Receiver HashMap transIDMap = new H

24、ashMap(); public MainTest(MM7Config config) super.setConfig(config); /* * 处理Deliver消息,由子类实现 * * param request * return MM7VASPRes */ public MM7VASPRes doDeliver(MM7DeliverReq request) / 打印请求消息 System.out.println(NormalReceiverTest DeliverReq:); System.out.println(request.toString(); / 构造响应消息 MM7Deli

25、verRes deliverRes = new MM7DeliverRes(); deliverRes.setServiceCode(service code 000); deliverRes.setStatus(1000); deliverRes.setStatusText(statustext); / 这个TransactionID保证MMSC能成功处理响应消息 deliverRes.setTransactionId(request.getTransactionId(); return deliverRes; /* * 处理DeliveryReport消息,由子类实现 * * param

26、request * return MM7VASPRes */ public MM7VASPRes doDeliveryReport(MM7DeliveryReportReq request) / 打印请求消息 System.out.println(NormalReceiverTest DeliveryReport:); System.out.println(request.toString(); /根据transID判断 if (transIDMap.containsKey(request.getTransactionId() System.out.println(Get Deliver.Re

27、q message, TransactionID: + request.getTransactionId(); / 构造响应消息 MM7DeliveryReportRes deliveryReportRes = new MM7DeliveryReportRes(); deliveryReportRes.setStatus(1000); deliveryReportRes.setStatusText(delivery report text); / 这个TransactionID保证MMSC能成功处理响应消息 deliveryReportRes.setTransactionId(request.

28、getTransactionId(); /将消息从MAP中删除 transIDMap.remove(request.getTransactionId(); return deliveryReportRes; else System.out.println(Get error Deliver.Req message, TransactionID: + request.getTransactionId(); MM7VASPErrorRes errorRes = new MM7VASPErrorRes(3001, Error Deliver.Req message); return errorRes

29、; /* * 处理ReadReply消息,由子类实现 * * param reqeust * return MM7VASPRes */ public MM7VASPRes doReadReply(MM7ReadReplyReq request) / 打印请求消息 System.out.println(NormalReceiverTest ReadReply:); System.out.println(request.toString(); / 构造响应消息 MM7ReadReplyRes readReplyRes = new MM7ReadReplyRes(); readReplyRes.se

30、tStatus(1000); readReplyRes.setStatusText(status text.); / 这个TransactionID保证MMSC能成功处理响应消息 readReplyRes.setTransactionId(request.getTransactionId(); return readReplyRes; public void main(String args) /初始化配置参数 MM7Config mm7Config = new MM7Config( F:V100R00101.CI1.5 Codevasapimm7Config.xml); /启动一个接收线程

31、MainTest receiver = new MainTest(mm7Config); receiver.setReceiver(receiver); receiver.start(); MM7Sender sender = new MM7Sender(mm7Config); /创建MM7Sender对象 / 可以根据需要增加一个循环,自动发送 MM7SubmitReq req = new MM7SubmitReq(); /构造消息 req.setVASPID(111111); req.setVASID(2222); req.setSender(2222333); / VASID + Ser

32、viceCode req.addTo(61234567); req.setServiceCode(333); req.setLinkID(9999); req.setMessageClass(Personal); req.setDate(new Date(); req.setExpiry(10000000); req.setDeliveryReport(true); req.setReadReply(true); req.setPriority( (byte) 0); req.setReplyDeadline(new Date(); req.setSubject(This is submitR

33、eq); req.setAdaptations(true); req.setChargedParty(MMConstants.ChargedParty.SENDER); req.setDistributionIndicator(true); / 先构造一个媒体容器 MMContent mainContent = new MMContent(); mainContent.setContentType(MMConstants.ContentType.MULTIPART_RELATED); mainContent.setContentID(aaaaaa); req.setContent(mainCo

34、ntent); / 构造一个媒体,此处添加的只是一个文本串 MMContent mmc = new MMContent(); mmc.setData(new String(wwwwwwwww).getBytes(); /添加内容体 mmc.setContentType(text/plain); /设置内容体格式 mmc.setContentID(aaID); mainContent.addSubContent(mmc); /将创建好的内容添加到消息 /将消息以TransID为主键保存,接收线程接收到递送报告时,再将该消息从map中删除。 transIDMap.put(req.getTransa

35、ctionId(), req); MM7Message rsp = sender.send(req); if (rsp.getStatus() != MMConstants.RequestStatus.SUCCESS) /发送失败处理 4.2 细节点击4.2.1 递送报告在发送消息时要调用MM7SubmitReq的setDeliveryReport(true)方法设置要求递送报告,MMSC就会在接收方处理MM后返回给CP/SP不同的递送报告。在递送报告中调用MM7DeliveryReportReq的getMessageId()方法会得到该递送报告对应的MM的ID,调用MMessage的getM

36、MStatus()方法会得到该消息被接收方的处理结果,主要结果有:0:表明MM过期,可能是用户接收到MM后没有对MM进行任何操作,或者延时取MM等待时间过长;1:表明接收方已接收MM;2:表明MM被系统拒绝;3:表明MM被用户拒绝;4:表明是未知的状态;5:表明MM被转发;群发时,一个消息会对应多个递送报告,这些递送报告中的消息ID都是一样的,但是接收方地址不一样。4.2.2 上行业务类型的区分目前在上行业务中(终端到CP/SP),CP/SP接收到的消息只有两种:MM7_DELIVERY_REQ(递送请求,可能是终端发送的消息)和MM7_DELIVERY_REPORT_REQ(递送报告,对应一

37、个CP/SP发送的消息)。区分它们的方法是,调用MM7VASPReq的getMessageType()方法可以获取消息类型:0x02 : MM7_ DELIVERY _REQ(递送消息,终端到SP消息)0x08 : MM7_DELIVERY_REPORT_REQ(递送报告)4.2.3 发送消息时返回状态码的含义SOAP协议是承载于HTTP协议基础上的协议,所以只有在HTTP层返回成功状态码2xx时,SOAP层的相应状态码才有意义。当HTTP层返回的状态码不是2xx时,不需要处理SOAP层的相应消息(这时可能也没有对应的SOAP消息体)。4.2.3.1 HTTP层返回状态码此处列出几种常见的可能

38、出现的HTTP层返回状态码,在实际情况中如果出现其他状态码,请参见相关HTTP协议说明。状态码状态文本说明200OK消息提交成功,此时返回的有对应的SOAP消息体,需要处理相应SOAP消息体404Not Found请求的地址不存在,此时不需要处理SOAP消息体4.2.3.2 SOAP接口的错误状态码及状态文本SOAP接口状态码由一个四位数值组成的状态码。状态码的第一位表示代码的类别。共有四个类别: 1xxx:操作成功; 2xxx:客户机错误; 3xxx:服务器错误; 4xxx:业务错误。状态码状态文本说明含义1000Success请求执行成功此代码指示完全执行了请求。1100Partial s

39、uccess部分成功此代码指示部分执行了请求,但部分请求无法完成。可选“详细信息”单元可以指示未完成的请求部分。2000Client error客户端错误客户机发出的请求无效。2001Operation restricted操作受限由于缺少执行命令的权限,请求被拒绝。Operation restricted : Flow refuse流量限制2002Address error地址错误请求中所提供地址的格式无法识别或MMSRelay/ServerRelay/Server确认地址对于网络无效,因为此MMSRelay/ServerRelay/Server不会对其提供服务。如果该地址用于响应结果中,并

40、且在相应的推式(push)提交中指定了多个接收方,则此状态码指示至少有一个地址不正确。Address error : Unreachable Recieption不可到达的终端Address error : Sender Barred发送方号码不合法Address error : Rejected接收方终端是未知类型终端或者非MMS终端并且号段归属本地MMSC2003Address not found找不到地址MMSRelay/ServerRelay/Server找不到请求中提供的地址。如果在以前提交的消息中请求了操作但MMSRelay/ServerRelay/Server找不到指定地址的消息,则将返回此代码。2004Multimedia content refused多媒体内容被拒绝服务器无法解析附加至SOAP消息并通过“内容”单元指示的MIME内容,或无法接受该内容大小或媒体类型。Multimedia content refused : Message is too large消息过大Multim

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报