Documente Academic
Documente Profesional
Documente Cultură
i
Restrictions and Copyright Declaration
The information in this document is subject to change without notice and describes only the product defined in the introduction of this
documentation. This document is intended for the use of prospective Comviva customers for the sole purpose of the agreement under which the
document is submitted. No part of it may be reproduced or transmitted in any form or means without the prior written permission of Comviva. The
intended audience for this document is professional personnel, who assume full responsibility for using the document appropriately. Comviva
welcomes customer comments as part of the process of continuous development and improvement of its documentation. The information or
statements given in this document concerning the suitability, capacity, or performance of the mentioned hardware or software products cannot be
considered binding, but shall be defined in contextual specific eventual agreement made between Comviva and the customer.
However, Comviva has made all reasonable efforts to ensure that the instructions contained in the document are adequate, sufficient and free of
material errors and omissions. Comviva will, if necessary, explain issues, which may not be covered by the document. Comviva’s liability for any
errors in the document is limited to the documentary correction of errors. Comviva will not be responsible, in any event, for errors in this document
or for any damages, incidental or consequential, including monetary losses, that might arise from the use of this document or the information in it.
This document and the product it describes are considered protected by Patent, Copyright and Trademark laws in accordance with relevant
Indian laws.
The only warranties for Comviva products and services are set forth in the express warranty statements accompanying its products and services.
Nothing herein should be construed as constituting an additional warranty. Comviva shall not be liable for technical or editorial errors or omissions
contained herein.
The Comviva logo is a registered trademark of Comviva Technologies Ltd. Other product names mentioned in this document may be trademarks
of their respective companies and they are mentioned for identification purposes only.
Copyright © 2009 Comviva Technologies Ltd. All rights reserved.
iii
Contents
1 MM7 Interface ........................................................................................................................................... 1-1
Contact Us ......................................................................................................................................................III
v
Tables
Table 1: Document Change History .................................................................................................... I
vii
1 MM7 Interface
The Interface between a Value Added Service (VAS) and the MMS Relay/Server, over the
MM7 reference point is realized using SOAP 1.1. The MM7 SOAP message consists of a
SOAP Envelope, SOAP Header and SOAP Body Element. The SOAP message binds to the
HTTP request/response model by providing SOAP request parameters in the body of the
HTTP Post Data.
The MM7 SOAP interface uses a message oriented SOAP service approach in order to
provide full control over request and response SOAP Envelopes. Thus it is the responsibility
of the message oriented SOAP service implementation, to process the SOAP Envelope
contents and generate appropriate response SOAP Envelope.
The “Message Oriented SOAP Services” is hosted by a Servlet container (Jakarta Tomcat).
Hence all the HTTP requests for SOAP service must be delivered to the SOAP Servlet
(Messagerouter and rpcrouter). SOAP Servlet performs following operations:
Register/deploy the SOAP service
Un-register/Un-deploy the SOAP service
Invoke the service methods
Send the response generated by the service method to the requesting client.
1.1 Dependencies
Java Vesion1.3 or higher, and a Servlet engine supporting version 2.1 or above of
the Java Servlet API (Tomcat V 3.3 used)
A JAXP compatible, namespace aware XML parser (Jxerces-1.2.3 used)
JavaMail (mail.jar) and the JavaBeans Activation Framework (activation.jar)
Apache SOAP V 2.2
It requires jxreces-1.2.3 namespace aware xml parser so xerces.jar file must be
set as the first jar files in the CLASSPATH.
W3C SOAP Schema 1.1 as published by 3GPP
(http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/schema/REL-5-MM7-1-
0)
For Example:
http://127.0.0.1:8080/soap/servlet/messagerouter|mm7interface|DeliverReq
6. Add type of message rule.
All these service methods are grouped under SOAP service, mm7interface. The SOAP
service is deployed during installation of the MM7 Interface.
A VAS provider can deploy its own customized service by registering the deployment
descriptor. Refer to Appendix A – Deploy SOAP Service for details on creating deployment
descriptor and registering.
1.3 S OA P Se rv e r
The target URL used by the VAS Provider MM7 application is the apache SOAP’s
messagerouter servlet. The messagerouter Servlet is deployed in the application server. Thus
the Apache SOAP Servlet and the application server together provide the ability to receive
and process the SOAP request. The Servlet invokes the Java service methods.
The VAS submits a multimedia message as payload to MMSC and waits for SOAP
Response.
MM7_Submit.REQ
MM7_Submit.RES
Sample MM7_Submit.REQ
POST /soap/servlet/messagerouter HTTP/1.0
Host: 192.10.2.195
Content-Type: multipart/related; boundary="----
=_Part_1_6085183.1050660704628"; type="text/xml";
start="5285337.1050660705250.apache-soap.node2.jataayu.co.in"
Content-Length: 3004
SOAPAction: ""
------=_Part_1_6085183.1050660704628
Content-Type: text/xml; charset=utf-8
Content-Transfer-Encoding: 8bit
Content-ID: <5285337.1050660705250.apache-soap.node2.jataayu.co.in>
Content-Length: 1425
<mm7:SubmitReq xmlns:mm7="urn:mm7interface">
<mm7:MM7Version>1.0</mm7:MM7Version>
<mm7:SenderIdentification>
<mm7:VASPID>TNN</mm7:VASPID>
<mm7:VASID>1234</mm7:VASID>
<mm7:SenderAddress>JataayuVAS_SAMPLE</mm7:SenderAddress>
</mm7:SenderIdentification>
<mm7:Recipients>
<mm7:To>
<mm7:Number>9845331850</mm7:Number>
<mm7:rfc822>sandips@jataayusoft.com</mm7:rfc822>
</mm7:To>
</mm7:Recipients>
<mm7:ServiceCode>gold-sp33-im42</mm7:ServiceCode>
<mm7:LinkedID>mms00016666</mm7:LinkedID>
<mm7:MessageClass> Informational </mm7:MessageClass>
<mm7:TimeStamp>2005-09-21T19:05:58</mm7:TimeStamp>
<mm7:EarliestDeliveryTime>2005-09-21T19:05:58-
05:30</mm7:EarliestDeliveryTime>
<mm7:ExpiryDate>2005-09-23T19:05:58</mm7:ExpiryDate>
<mm7:ReplyCharging replyChargingSize="2048" replyDeadline="10d"/>
<mm7:DeliveryReport>True</mm7:DeliveryReport>
<mm7:Priority>Normal</mm7:Priority>
<mm7:ChargedParty>Sender</mm7:ChargedParty>
<mm7:DistributionIndicator>True</mm7:DistributionIndicator>
<mm7:Subject>News for today</mm7:Subject>
<mm7:Content allowAdaptations="True" href="cid:foo.smil"/>
</mm7:SubmitReq>
</env:Body>
</env:Envelope>
------=_Part_1_6085183.1050660704628
Content-Type: application/smil
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=foo.smil
Content-ID: foo.smil
Content-Location: foo.smil
<smil>
<head>
<layout>
<root-layout background-color="black" width="352" height="144"
/>
<region id="image" width="176" height="144" left="0" top="0" />
<region id="text" width="176" heigøÿ¿°Ùht="144" left="176"
top="0" />
</layout>
</head>
<body>
<par dur="8s">
------=_Part_1_6085183.1050660704628
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=foo.txt
Content-ID: foo.txt
Content-Location: foo.txt
GIF89a~L^@^O^@~@ÿ^@ÿÿÿÀÀÀ!ù^D^A^@^@^A^@,^@^@^@^@~L^@^O^@^@^BÏ~L^_|\~J
í^O£~\´Ú~KÏÚ,û^O~F"Å~UcÕ~]ê~JN~@c~Jéº~A3vCo¹$ðkÈá~@4"qh;êv<f#^Eíi¤ÁZÂ
yEX^?Ë(~USõ~J~M_ì4«%W×O`çÍèÁÙíÇ^\^]=ãÝj}úÊ~C6µu^xwÈÇ&´~X¸ç~GH7~S^S§DY
'æ¨iÈ×X8^FÚ7ø×d¦HªÇɪÄõÊ)8Ù(ø§Q~[å~Z'~[Ú»Ië^Zé^[J:êg^[ÔY£{^D~GY&^U»õù
Ü÷^\fÝì^\|#Äò^M^^.q*^n~>è~M¾ÎNQ^@^@;
------=_Part_1_6085183.1050660704628--
Sample MM7_Submit.RES
<? xml version='1.0' ?>
<soap-env:Envelope xmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<3gpp-mm7:TransactionID xmlns:3gpp-
mm7="http://localhost/soap/REL-5-MM7-1-0" 3gpp-
mm7:mustUnderstand="1"> 123
</3gpp-mm7:TransactionID>
</soap-env:Header>
<soap-env:Body>
<mm7:SubmitRes>
<mm7:MM7Version> 1.0</mm7:MM7Version>
<mm7:Status>
<mm7:StatusCode> 4000</mm7:StatusCode>
<mm7:StatusText> gerneral service error</mm7:StatusText>
<mm7:Detail></mm7:Detail>
</mm7:Status>
<mm7:MessageID></mm7:MessageID>
</mm7:SubmitRes>
</soap-env:Body>
</soap-env:Envelope>
VAS Providers can add its own service methods, instead of using MM7Deliver() for handling
MM7_deliver.REQ.
MM7_deliver.REQ
Sample MM7_deliver.REQ
POST /soap/servlet/messagerouter HTTP/1.1
Host: 192.10.2.195
Content-Type: multipart/related; boundary="----
=_NextPart_000_0017_01C2A8E7.84B40FE0"; type="text/xml; charset=utf-
8"; start="startid"
Content-Length: 2750
SOAPAction: ""
------=_NextPart_000_0017_01C2A8E7.84B40FE0
Content-Type: text/xml; charset= utf-8
Content-ID: <startid>
Content-Transfer-Encoding: 7bit
xmlns:mm7="http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/sch
ema/REL-5-MM7-1-0" env:mustUnderstand="1">
vas00001-sub
</mm7:TransactionID>
</env:Header>
<env:Body>
<mm7:DeliverReq xmlns:mm7="urn:mm7interface">
<mm7:MM7Version>1.0</mm7:MM7Version>
<mm7:Sender>+9845326569/TYPE=PLMN</mm7:Sender>
<mm7:Recipients>
<mm7:To>+8888/TYPE=PLMN</mm7:To>
</mm7:Recipients>
<mm7:ServiceCode>gold-sp33-im42</mm7:ServiceCode>
<mm7:LinkedID>mms00016666</mm7:LinkedID>
<mm7:MessageClass>Informational</mm7:MessageClass>
<mm7:TimeStamp>123456</mm7:TimeStamp>
<mm7:EarliestDeliveryTime>20020</mm7:EarliestDeliveryTime>
<mm7:ExpiryDate>1234</mm7:ExpiryDate>
<mm7:ReplyCharging replyDeadline="10d" replyChargingSize="2048"/>
<mm7:DeliveryReport>True</mm7:DeliveryReport>
<mm7:Priority>Normal</mm7:Priority>
<mm7:ChargedParty>Sender</mm7:ChargedParty>
<mm7:DistributionIndicator>True</mm7:DistributionIndicator>
<mm7:Subject>News for today</mm7:Subject>
<mm7:Content href="cid:alarm.jpg" allowAdaptations="True"/>
</mm7:DeliverReq>
</env:Body>
</env:Envelope>
------=_NextPart_000_0017_01C2A8E7.84B40FE0
Content-Type: image/jpeg
Content-ID: <cid:alarm.jpg>
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="alarm.jpg"
/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UH
RofHh0a.....
NextPart_000_0017_01C2A8E7.84B40FE0--
Sample MM7_Deliver.RES
<? xml version='1.0' ?>
<soap-env:Envelopexmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<3gpp-mm7:TransactionIDxmlns:3gpp-
mm7="http://localhost/soap/REL-5-MM7-1-0"3gpp-
mm7:mustUnderstand="1"> vas00001-sub
</3gpp-mm7:TransactionID>
</soap-env:Header>
<soap-env:Body>
<mm7:DeliverRes>
<mm7:MM7Version>1.0</mm7:MM7Version>
<mm7:Status>
<mm7:StatusCode>1000</mm7:StatusCode>
<mm7:StatusText>Success</mm7:StatusText>
<mm7:Detail>Content stored in [/var/tmp/saved-
data/9845115059/1049954669005]</mm7:Detail>
</mm7:Status>
<mm7:MessageID></mm7:MessageID>
</mm7:DeliverRes>
</soap-env:Body>
</soap-env:Envelope>
MM7_replace.REQ
MM7_replace.RES
Information SOAP Element Location Type Presence
Element Name
MM7_cancel.REQ
MM7_cancel.RES
Sample MM7_cancel.REQ
POST /soap/servlet/messagerouter HTTP/1.0
Host: 192.10.2.195
Content-Type: text/xml; charset=utf-8
Content-Length: 719
SOAPAction: ""
</env:Header>
<env:Body>
<mm7:CancelReq xmlns:mm7="urn:mm7interface">
<mm7:MM7Version>1.0</mm7:MM7Version>
<mm7:SenderIdentification>
<mm7:VASPID>TNN</mm7:VASPID>
<mm7:VASID>8888</mm7:VASID>
<mm7:SenderAddress>JataayuVAS_SAMPLE</mm7:SenderAddress>
</mm7:SenderIdentification>
<mm7:MessageID>4GaU4nzr4WRVW400004VRyW.kWRqV4kc38Qc0Wg</mm7:MessageID
>
</mm7:CancelReq>
</env:Body>
</env:Envelope>
Sample MM7_cancel.RES
POST /soap/servlet/messagerouter HTTP/1.0
Host: 192.10.2.195
Content-Type: text/xml; charset=utf-8
Content-Length: 719
SOAPAction: ""
import javax.xml.parsers.*;
// SOAP Envelope.
xmlmsg += "<env:Envelope
xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\"> \n" ;
// SOAP Header
xmlmsg += "<env:Header> \n" ;
// Transaction ID
xmlmsg += " <mm7:TransactionID
xmlns:mm7=\"http://www.3gpp.org/ftp/Specs/archive/23_series/23.140/s
chema/REL-5-MM7-1-0\" env:mustUnderstand=\"1\">vas00001-
sub</mm7:TransactionID> \n" ;
xmlmsg += "</env:Header> \n" ;
// SOAP Body
xmlmsg += "<env:Body> \n" ;
xmlmsg += "
<mm7:MessageClass>Informational</mm7:MessageClass> \n" ;
xmlmsg += " <mm7:TimeStamp>2005-09-
27T11:48:25</mm7:TimeStamp> \n" ;
xmlmsg += " <mm7:Priority>Normal</mm7:Priority> \n" ;
xmlmsg += " <mm7:Subject>News for today</mm7:Subject>
\n" ;
// Invoke. Step 4
msg.send (url, "", msgEnv);
export $CLASSPATH
/* Compiling the client */
Javac –classpath $CLASSPATH MM7Clinet.java
1000 Success This code indicates that the request was executed
completely
1100 Partial success This code indicates that the request was executed
partially but some parts of the request could not be
completed. Lower order digits and the optional Details
element may indicate what parts of the request were
not completed.
2000 Client error Client made an invalid request
2001 Operation restricted The request was refused due to lack of permission to
execute the command.
2002 Address Error The address supplied in the request was not in a
recognized format or the MMS Relay/Server
ascertained that the address was not valid for the
network because it was determined not to be serviced
by this MMS Relay/Server. When used in response-
result, and multiple recipients were specified in the
corresponding push submission, this status code
indicates that at least one address is incorrect.
2003 Address Not Found The address supplied in the request could not be
located by the MMS Relay/Server. This code is
returned when an operation is requested on a
previously submitted message and the MMS
Relay/Server cannot find the message for the address
specified.
2004 Multimedia content The server could not parse the MIME content that was
refused attached to the SOAP message and indicated by the
Content element or the content size or media type was
unacceptable.
2005 Message ID Not found This code is returned when an operation is requested
on a previously submitted message and the MMS
Relay/Server cannot find the message for the
message ID specified or when the VASP receives a
report concerning a previously submitted message
and the message ID is not recognized.
2006 LinkedID not found This code is returned when a LinkedID was supplied
and the MMS Relay/Server could not find the related
message.
2007 Message format corrupt An element value format is inappropriate or incorrect.
3000 Server Error The server failed to fulfill an apparently valid request.
3001 Not Possible The request could not be carried out because it is not
possible. This code is normally used as a result of a
cancel or status query on a message that is no longer
available for cancel or status query. The MMS
Relay/Server has recognized the message in
question, but it cannot fulfill the request because the
message is already complete or status is no longer
available.
3002 Message rejected Server could not complete the service requested.
3003 Multiple addresses not The MMS Relay/Server does not support this
<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:fault
Listener>
</isd:service>
id="urn:QuotationService" : This is where you specify the URN of the service. You
can choose any URN - but it will need to be made known to the client.
scope="Application" : The scope refers to the lifetime of the service object (in our
case the QuotationDB object) and it can take one of three values. In this way you
can specify to the SOAP servlet how long the service object should stay alive.
Specifying Request means that the object will only live for the duration of the
service invocation. Specifying Session means that the object will remain alive as
long as the http session that created it (the object is available only to that http
session). We have specified Application to indicate that we want the service object
to be instantiated once and that everyone should share this object from then on.
This makes sense as our service class represents a shared database of
quotations where by "shared" we mean shared across all invocations and http
sessions.
methods="getAllQuotations getQuotationsByAuthor submitQuotation" : This is
simply where you specify your service method names.
class="com.soapuser.soap.server.quotation.QuotationDB" : The fully qualified
classname of the implementing class (note that following this, you can specify
static as true if the service methods are defined static in the implementing class).
When the message is received on the server, it will be routed to the proper service by
looking at the XML Namespace associated with the first child element in the body, and then to the
correct method/function within that service via the name of the element itself.
3. Create an org.apache.soap.messaging.Message object. If you need to add
MIME attachments to your message, then you can use addBodyPart(...)
method to do so. If you need to send your message over a transport other
than HTTP, then you will need to invoke the setSOAPTransport(...) method.
4. Invoke the send(...) method on the Message object, providing the URL of the
endpoint which is providing the service (i.e.
http://localhost/soap/servlet/messagerouter), the actionURI, and your
envelope.
5. If your service is returning data, and assuming that the transport supports
two-way interaction, then you need to retrieve the SOAPTransport object
from the Message object (assuming that you don't already have a handle to
it) by using the getSOAPTransport() method. You can then invoke the
receive() method on the SOAPTransport object to retrieve the returned data.
If the service is returning a SOAP Envelope, then you can parse the XML
and pass the root element to org.apache.soap.Envelope's unmarshall (..)
method to allow it to reconstruct a SOAP Envelope object for you. If an error
has occurred on the server during the processing of the request, the server
will automatically send back a SOAP Envelope with a SOAP Fault in the
body describing what went wrong.
Source: Comviva
Bangalore Office
4, 12th Km
Bellary Road, Jakkur
Bangalore 560064
India
T: +91-80-43401600
F: +91-80-28565854
Mumbai Office
Unit 1-4, 1st Floor, Paradigm Tower
Tower B, Mindspace
Malad(W), Mumbai 400064, India
T: +91-22-40774300
F: +91-22-40774333
E-mail: techwriters@comviva.com
Contact Us III