l SP发送消息(通过MMSC)给终端,并且要求递送报告;
l 终端接收到消息后做相应处理(接收或拒绝);
l MMSC把终端对消息的处理信息(递送报告)发送给SP。
这里主要介绍一下如何将MM7 API运用到VASP自己开发的程序中以及在配置文件中需要注意修改的地方。
在VASP用Java开发自己程序时,只要将中国移动集团公司提供的mm7api.jar和lib下的所有的Jar文件加入到classpath中即可。
配置文件mm7Config.xml需要根据SP情况进行修改。
<?xml version="1.0"?>
<vasp:MM7Config xmlns:vasp="http://mms.chinamobile.com/mm7ConfigSchema">
<AuthenticationMode>1</AuthenticationMode>
<UserName>zxme</UserName>
<Password>zxme</Password>
<MaxMessageSize>100000000</MaxMessageSize>
<LogPath>c:\vas_log</LogPath>
<logLevel>1</logLevel>
<LogNum>100</LogNum>
<LogInterval>120</LogInterval>
<LogSize>200</LogSize>
<Charset>UTF-8</Charset>
<MmscID>1</MmscID>
<mmscURL> /mm7</mmscURL>
<mmscIP>192.120.231.180</mmscIP>
<UseSSL>true</UseSSL>
<ListenIP>192.120.231.228</ListenIP>
<ListenPort>80</ListenPort>
<BackLog>50</BackLog>
<TimeOut>10000</TimeOut>
<ReSendCount>5</ReSendCount>
</vasp:MM7Config>
一些地方需要进行修改,下面一一说明:
<AuthenticationMode>1</AuthenticationMode>
表示VASP作为服务端接收消息时是否进行鉴权或进行什么样的鉴权,0表示不鉴权,1表示进行基本鉴权,2表示进行摘要鉴权。
<UserName>zxme</UserName>
<Password>zxme</Password>
表示彩信中心对VASP进行鉴权时的用户名和密码,同时也是VASP对接入的彩信中心进行鉴权时用户名和密码,是双向的,要VASP和MMSC双方进行约定。
<LogPath>c:\vas_log</LogPath>
表示日志存放的路径,在Windows操作系统下和Linux下是不一样的,要注意进行修改。
<MmscID>1</MmscID>
表示MMSC网关的序号,需要从MMSC处得到。
<mmscURL> /mm7</mmscURL>
<mmscIP>192.120.231.180</mmscIP>
分别表示MMSC网关的URL地址和IP(或主机名),也需要MMSC处得到。这里也可以填成ip:port。例如:192.120.231.180:8080,不填端口号使用默认端口号80。
<ListenIP>192.120.231.228</ListenIP>
<ListenPort>80</ListenPort>
表示当VASP用应用程序方式进行接收消息时的监听地址和端口号。
以上为这个配置文件中主要需要注意修改的地方,当然其他的内容也可以进行修改,如<logLevel>1</logLevel>可以根据需要进行修改,0表示不产生日志;1表示产生错误日志;3表示产生信息日志;6表示产生完整信息日志。
<TimeOut>10000</TimeOut>
表示设置发送的超时时间,到发送超过这个时间,则自动进行重新发送。
<ReSendCount>5</ReSendCount>
表示设置重发的次数,建议在10次以下,一般用3-5次即可。
这里主要介绍从SP接收MMSC发过来的DeliverReq开始,到SP发送SubmitReq到MMSC的整个流程,SP所需要做的工作。
VASP接收可以有两种方式:
l 如果SP的增值应用是一个普通应用程序,可以使用方式1,即接收代理会自动打开一个监听端口,启动一个监听线程来接收来自MMSC的多媒体消息;
l 如果SP的增值应用是一个Web应用,则可以使用方式2,即接收代理作为一个Servlet运行,并自动处理从HttpRequest中搜索数据,并解码成多媒体消息。
public class MyReceiver extends MM7Receiver
{
//定义一个MM7DeliverReq,以便得到MMSC发过来的Deliver消息。(必备)
public static MM7DeliverReq deliverReq = new MM7DeliverReq();
//Main方法
public static void main(String[] args)
{
//初始化VASP
MM7Config mm7Config = new MM7Config(“./config/mm7Config.xml”);
//设置ConnConfig.xml文件的路径
mm7Config.setConnConfigName(“./config/ConnConfig.xml”); //必备
//构造MyReceiver
MyReciever receiver = new MyReceiver();
myReceiver.setConfig(mm7Config); //必备
//创建MM7消息发送接口
MM7Sender mm7Sender = new MM7Sender(mm7Config);
//启动接收器
receiver.start();
}
public MM7VASPRes doDeliver(MM7DeliverReq request)
{
/*接收从MMSC发过来的传送消息,以便取出其中的部分值构造提交消息或得到一些有用
信息,如MMSC的标识符等*/
deliverReq = request;
System.out.println(“收到手机”+request.getSender()
+“提交的消息,标题为:”+request.getSubject());
System.out.println("MMSC的标识符为:"+request. GetMMSRelayServerID()) ;
//SP需要进行一些处理,例如构建MM7DeliverRes消息,设置ServiceCode或StatusCode
MM7DeliverRes mm7DeliverRes = new MM7DeliverRes();
mm7DeliverRes.setServiceCode("服务代码"); //设置ServiceCode,可选
mm7DeliverRes.setStatusCode(MMConstants.RequestStatus.SUCCESS) ;/*设置请求完成状
态,必备,以便表明SP已经接收到传送消息。一般设1000。*/
mm7DeliverRes.setStatusText("所用状态文本说明"); /*设置所用状态的文本说明,
应限定请求状态,可选*/
//返回给MM7 API,以便API将MM7DeliverRes返回给MMSC。
return(MM7VASPRes)mm7DeliverRes;
}
}