Intelecom SMS Gateway - Technical specification for integration
←
→
Page content transcription
If your browser does not render page correctly, please read the page content below
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Intelecom SMS Gateway – Technical specification for integration C Version 2.1.0 Last Revised March 2014 Revised By Sven Ståle Osa Contact Information: Technical: Sven Ståle Osa sven.stale.osa@intele.com Pricing and other requests: Jostein Lund jostein.lund@intele.com
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 1 Contents 1 Contents ......................................................................................................... 2 1.1 Revision history ....................................................................................... 3 2 Introduction .................................................................................................... 4 2.1 Overview................................................................................................. 4 2.2 Abbreviations .............................................................................................. 5 3 Sending messages using the SMS Gateway ......................................................... 6 3.1 Pricing - Non-premium and premium messages (CPA / GAS) ......................... 6 3.2 Originator ............................................................................................... 7 3.3 Validity Period.......................................................................................... 8 3.4 Message Content ...................................................................................... 8 3.5 Sessions ................................................................................................. 9 3.6 Send Window..........................................................................................11 3.7 Message Parameters ................................................................................13 3.8 Message Response ..................................................................................16 3.9 Interfaces for sending SMS messages ........................................................17 4 Receiving messages using the SMS Gateway ......................................................23 4.1 Request parameters for incoming (MO - Mobile Originating) messages ...........23 4.2 Value-added services for MO messages ......................................................26 4.3 HTTP response for MO messages ...............................................................27 4.4 SMTP MO - Receiving email (from SMS) .....................................................27 5 Receiving Delivery Report messages..................................................................28 5.2 Response for DR messages .......................................................................32 6 Contact info ...................................................................................................33 7 Appendix A : Gateway Management API ............................................................34 7.1 Interfaces for using the management API ...................................................34 7.2 Message batch management.....................................................................34 8 Appendix B: SMPP Gateway..............................................................................38 8.1 Supported PDUs ......................................................................................38 8.2 Data coding scheme ................................................................................38 8.3 Validity period ........................................................................................38 8.4 Current limitations ..................................................................................38
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 1.1 Revision history Revision Date Revised by Change description 2.0.1 20.12.2013 Sven Ståle Osa Updated platform 2.1.0 03.03.2014 Andreas Häber Added Revision history (chapter 1.1) Morten Trydal Added Gateway Management API description (Appendix Kjetil Johannesen A). Sven Ståle Osa Added information about PID (Protocol Identifier). Added SMPP Gateway information (Appendix B). Added information about GAS messages to Telenor prepaid, and GAS/ CPA messages without delivery success (chapter 3.1) New HTTP GET interface that obsoletes the old HTTP GET interface. Added information about the new interfaces for incoming messages (MO) (see chapter 4). New value added services for incoming messages. New request parameters added (see chapter 4.2). Updated chapter and table references
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 2 Introduction 2.1 Overview This document describes the functionality of, and explains how to integrate with, the Intelecom SMS Gateway (SMSGW). The SMSGW is an API that enables your solution(s) to both send and receive SMS messages. Contrary to earlier versions of SMSGW this version of the API enables you to send both single messages and bigger batches of messages using the same API. To be able to connect to SMSGW you will need a service configured by Intelecom with sensible defaults and settings for your use case. The service identifiers are serviceid, as well as a username and password. If you have an active agreement, but have not received information about these three identifiers, please contact Intelecom Support (support@intele.com) or your customer representative. The SMSGW has three main functionalities with corresponding APIs: Sending one or many SMS messages from your system to end-users (MT) Receiving SMS messages from end-users to your system (MO) Receiving delivery reports to your system for SMS messages sent to end-users (DR) To send SMS messages to end-users you need to integrate with one of the API via REST (XML or JSON over HTTP POST), Web Service (with corresponding WSDL), email (SMTP), SMPP, or via HTTP GET (with query parameters). Due to the flexibility of the REST / SOAP interfaces, we generally recommend that you choose to integrate with one of these endpoints if possible. To receive SMS messages (MO) or delivery reports you need to provide a service endpoint that can receive HTTP GET or POST requests. As an alternative, you can also receive MO messages as email messages (SMTP) or using the SMPP protocol. Figure 1: High-level sequence diagram for basic SMSGW operations
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Additionally, the Gateway provides a Management API to manage messages. A description of this API is given in Appendix A : Gateway Management API. 2.2 Abbreviations MCC Mobile Country Code MNC Mobile Network Code SNO Short Number (e.g. 1960) TTL Time To Live UDH User Data Header DCS Data Coding Scheme MO Mobile Originated (incoming messages sent from end users) MT Mobile Terminated (outgoing messages sent to end users). CP Content Providers (Customers of Intelecom and Intelecom itself) DR Delivery Reports (Confirmations from operators that messages have been / not have been received by end-user) MSISDN Mobile Station International ISDN Number SMSGW Intelecom SMS Gateway REST Representational State Transfer (https://en.wikipedia.org/wiki/Representational_state_transfer) MNO Mobile Network Operation (e.g. Telenor, Telia) CPA Content Provider Access – An agreement between (in this case) Intelecom and the MNO’s to be able to use four digit shortnumbers with billing possibilities. GAS Goods And Services – Like CPA only with the possibility to sell physical goods and services.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3 Sending messages using the SMS Gateway To send SMS messages you will need to integrate with one of the APIs described below and further in chapter 3.9. The parameters are common for the SOAP, HTTP GET and REST APIs and divided into three groups: common parameters, basic message parameters and message settings parameters. The message settings parameters are optional, if you do not have any special need for custom settings you can ignore these. In the current version of SMSGW, not all parameters are available for SMTP (email) and SMPP methods. The available APIs for sending SMS messages are: SOAP Webservices REST services – XML or JSON using HTTP POST HTTP GET (with limited functionality) SMTP (email – with limited functionality) SMPP Using the SOAP and REST interfaces it is possible to send several messages in one batch, this can be messages with different recipients and different content. All interfaces except SMTP will synchronously return a status code and message identifier, which is a unique identifier for each message in the Intelecom platform. The status code will give information about whether the messages was added to the internal queue in the Intelecom system or not. The status code will not give information about whether the message was received at the end user handset or not. In order to check for this you need to utilize the delivery report mechanism as described later in this document. 3.1 Pricing - Non-premium and premium messages (CPA / GAS) When sending messages there are some alternatives concerning pricing of the messages. The messages may be sent to the end user free of charge, meaning that the end user will not have to pay to receive your message. Your company typically pays for this message. The other alternative is that the end user pays a price for receiving the message; paid for on the end user’s phone bill. Often called premium messages, you may use these for billing purposes such as paying for digital content or services. Premium messages are not available in all countries; please contact your customer representative for more information. In some countries, there are different payment models as well. In Norway, you will have to use the CPA model for paying for digital services whilst the GAS model is for billing physical goods and services. The difference between CPA and GAS is that GAS offers a better profit for you as a customer, but each service that is to use GAS needs to be approved by the mobile network operators. GAS and CPA requires different short numbers, meaning that you cannot alternate between GAS and CPA messages using the same short number/ service. Using GAS you also need to specify a service code and category as defined by the mobile network operators for each message. You can find the listing of the Mobile Network Operator service codes in a separate document as an attachment to this document.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 In Norway, the supported premium rates are from 1,- to 200,- in steps of 1 NOK. Additionally it is possible to use 1,50NOK and 6,50NOK. For GAS messages the rates are from 1,- to 500,- in steps of 1 NOK. The price parameter uses the lowest monetary unit available, for example to send to Norwegian recipients Norwegian “øre” is used. Example: To send a billing message with a price of 2kr NOK to a Norwegian recipient set the price parameter to the value 200. Most operators use this flow when billing messages (CPA and GAS): 1) The specified amount is debited from subscriber when the operator accepts the message (SMSC ACK) regardless of the delivery status of the message. 2) If the message could not be delivered (negative delivery status), the operator credits the amount to the subscriber. However Telenor by default does not credit the billing amount if the message is not successfullly delivered to the subscriber. It is possible for Intelecom to enable automatic credit towards Telenor subscribers for specific services. Please also note that by default Telenor rejects GAS messages sent to Telenor prepaid customers. It is possible for Intelecom to enable this functionality for specific services, but be aware that the operator’s cut is higher on these messages. Please contact your customer representative for more information about CPA and GAS, and enabling Telenor crediting / GAS for prepaid. 3.2 Originator When sending SMS messages the originator of the messages shows at the end users handset upon receiving the message. Three different types of originator settings exist: International Number – if the originator is to be an international phone number, in E164 format e.g. +4799999999 Alphanumeric Text – if the originator is to be alphanumeric text, for example “Intelecom”. The max length of an alphanumeric originator is 11 characters and only a-z, 0-9 and the chars ‘ ‘ (space), '%', '&', '-', '+', '.' , ',' may be used as content. Network specific – if the originator is to be shortnumber, e.g. 1960. You must set the correct originator and originatortype parameter values according to the table in chapter 3.7.3.1 if you want to override the default originator for your service. For example, if you want the originator to be ‘Intelecom’, you need to set the originator parameter to “Intelecom” and the originatortype parameter to “ALPHANUMERIC”. Note that is not possible for an end user to reply to a message sent with alphanumeric originator. Some phones may be able to reply to alphanumeric originators if you set alphanumeric originator with only numbers in the content parameter. As not all phones will accept this, we recommend that
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 you use the types for international or national numbers if you are to send a numeric string as originator. Also note that it is only possible to specify originator for messages that are received by the end user free of charge (price = 0). The reason for this is that it needs to be easy to identify who sent specific billing messages to the end user. 3.3 Validity Period It is possible to define the validity period of each message when sending SMS messages. The validity period is the period of time that delivery attempts occurs for a SMS message. Meaning that if you specify a validity time of 5 minutes, the Intelecom platform and the Mobile Network Operations will try to deliver the message for 5 minutes using the respective retry schemes. If the message cannot be delivered to the handset in this timeframe (handset turned off etc.), the message is discarded, resulting in a delivery report with a timeout status. This feature is handy if you have messages that only are valid in a certain period, such as one-time passwords or special offers with a time limitation. When specifying the validity parameter please refer to the table below: Value Validity period 0 to 143 (Value + 1) x 5 minutes 144 to 167 12h + (Value-143) x 30 minutes 168 to 173 (Value-166) x 1 day Table 1 - Valid TTL (time validity of SMS) 3.4 Message Content You can specify the content of the SMS message using the “content” parameter. For text messages, the max length of a single message is 160 characters. If you provide text that is longer than 160 characters the SMSGW will automatically split the message into concatenated text messages. When SMS messages are concatenated, some of the SMS payload is needed for the UDH, resulting in the max message length for each concatenated message being 153 characters. The Intelecom platform allows a maximum of six concatenated messages, meaning that the maximum character length of the content field is 918 characters (153*6). The GSM specification allows for a much higher number of concatenated messages but because of restrictions in the MNO SMSCs, the max limit of six concatenated messages had to be included. SMS default encoding uses 7 bits to handle a character. The GSM 03.38 specification defines the valid character sets, this being the “Basic Character Set” and the corresponding extension table as depicted below:
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Figure 2: Valid 7-bit GSM characters If you use characters from the extension table, for example the EUR character (€), an escape character is needed in addition to the character from the extension table. This means that the EUR character counts as two characters and you will have less space available in the message. 3.5 Sessions The Intelecom SMS platform has introduced a session mechanism that allows for two-way dialog between a system and end-user without the need for keywords. Keywords in SMS are short text identifiers for services on a shared short number. Example: To order weather information on the short code 1881 you can send “WEATHER OSLO”. In this example “WEATHER” is the keyword identifying the service, whilst “OSLO” is a parameter. Using keywords to have a SMS dialog with an end user is often not a very user-friendly solution session. For each message, the end user will have to provide the keyword before entering the text. Example not using sessions: Your service desk needs to update email information for your customers. You want to send them a SMS message requiring them to reply to the SMS with their correct email address. The following is an illustration of the interaction without and with the use of session.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Without use of sessions With use of sessions Using session, you can also continue a conversation by providing the unique sessionid as a parameter when sending a message, for example like this: Currently use of sessions is only available for Norwegian subscribers, meaning that you can only send messages with session to end users with Norwegian subscriptions. For the implementation of the session logic in Norway, we have utilized a feature from the Mobile Network Operators named subnumbering, also sometimes named recipient range routing. With this feature, a string of numbers uniquely identifying the session is added to the last part of the short number resulting in a fourteen-digit originator. As the identifier will be generated when sending the message, it is only possible to start a session with a message sent to the end user. As mentioned earlier, there are two ways to access the session for MT messages, request a new session or reuse a previous used session. When using a session the originatortype must be set to the value 3 (Network specific / short number). It is not possible to use alphanumeric or international number types as originator when using sessions.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 The synchronous response from the gateway will contain a session identifier, which must be stored in your system if you want to be able to identify the response from the end user when replying to the message. Figure 3: SMS Gateway high level overview 3.5.1 Start a new session Add the parameter newSession=true. This flag will tell the Gateway to start a session and you will receive a sessionid in the response. 3.5.2 Continue a session To continue an existing session the use the sessionid parameter in the request, using the sessionid previously returned in the response. Note: If you want to continue the session do not set the new session flag, if you set both the new session flag and the sessionid a new session will be generated. 3.6 Send Window If you want to schedule one or more message to be sent at some point in the future or you are about to send a very large number of messages and want to control when messages are sent to end users then you can specify the send window. The send window composite objects consists of four parameters, where the start date is the only mandatory field in the object.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 The start date defines when the message sending will start and the stop date defines when to stop. If there are remaining messages in the queue after the stop date / time they are discarded. The start and stop time can be used to create a window of time during the day where messages will be sent. For example, if you are to send a large batch of messages that you need to send out between 2nd of August and 4th of August 2013 and you want the end user to only receive messages in the day time, between 09:00 and 15:00. For this example the values need to be populated as follows: Startdate: 2013-08-02 Stopdate: 2013-08-04 Starttime: 09:00:00 Stoptime: 15:00:00 If the batch is so large that it is not possible to send all messages in one day, then the message sending will stop at 15:00 and continue the next day at 09:00. This will continue until reaching the stop date. The next chapter will explain the different parameters that are available when sending messages, chapter 3.9 will describe in more detail the different interfaces with examples.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.7 Message Parameters 3.7.1 Common parameters Serviceid Integer. Required Identifies the service. Provided by Intelecom service desk. username String. required For authentication. Provided by Intelecom service desk. password String. required For authentication. Provided by Intelecom service desk. batchReference String. optional Reference ID that will be returned in the response. message List with composite objects. required At least one message. 3.7.2 Basic message parameters recipient String. required The MSISDN of the recipient. The format should follow the ITU- T E.164 standard with a + prefix. Example: +4792000001. Note: This must be a valid MSISDN, that is Mobile phone number. E.g. for Norway these numbers start with 4, 9, 58 or 59. content String. The message payload to send, typically the message text. required See chapter 3.4 for more details price Integer. optional The cost for the recipient to receive the message. In lowest monetary unit. See chapter 3.1 for details Example: 200 (2,- NOK) clientReference String. optional Arbitrary client reference ID that will be returned in the message response. settings Composite object. optional For advanced message settings, see chapter 3.7.3. 3.7.3 Message settings parameters priority Integer. Uses service value unless specified. optional Used to prioritize between messages sent from the same service. 1: low (slower) 2: medium 3: high (faster) Example: 2 validity Integer. Uses service value unless specified. optional Specifies the TTL (time to live) for the message, i.e. how long before the message times out in cases where it cannot be
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 delivered to a handset. See chapter 3.3 for valid values. Example: 173 differentiator String. optional Arbitrary string set by the client to enable grouping messages in certain statistic reports. Example: pincode_messages age Integer. Only relevant for CPA/GAS messages. optional Defines an age limit for message content. The mobile network operators enforces this. IMPORTANT: If the service is a subscription service all CPA/GAS messages must have age set to 18. 0 16 18 Example: 18 newSession Boolean. optional Used to start a new session. See chapter 3.5 for details. Example: true sessionId String. optional Used to continue an existing session. See chapter 3.5 for details. Example: 01bxmt7f8b8h3zkwe2vg invoiceNode String. optional Arbitrary string set by the client to enable grouping messages on the service invoice. Example: market_department autoDetectEncoding Boolean. Default value is false. optional Currently not in use. Example: true safeRemoveNonGsmCharacters Boolean. Default value is false. optional If set to true the SMSGW will remove or safely substitute invalid characters in the message content instead of rejecting the message. See chapter 3.4 for details. Example: true originatorSettings Composite object. Uses service value unless specified. optional Used to specify the originator. See chapter 3.7.3.1. gasSettings Composite object. Uses service value unless specified. optional Used if the message is a CPA Good and Services transaction. See chapter 3.7.3.2. sendWindow Composite object. optional Used if the message should be queued and sent in the future instead of immediately. See chapter 3.7.3.3. parameter Composite object. optional Used to specify special settings including settings for binary message.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.7.3.1 Originator settings originatorType String. required Specifies the type of originator. See chapter 3.2 INTERNATIONAL ALPHANUMERIC NETWORK Originator String. Required Depends on the originatorType. Example: +4799999999, Intelecom, 1960 3.7.3.2 GAS settings serviceCode String. required Identifier for the category of Goods and services. See chapter 3.1 for more information. See separate attachment to this document for valid parameter values for service codes. Example: 05008 Description String. Optional Further details of the Goods and services. The description may occur on the end-user invoice (together with category) for certain Mobile Network Operators. Example: Aftenposten 3.7.3.3 Send window startDate Date. required The date to send the message. See chapter 3.6 for more info. Example: 2013-12-24 startTime Time. optional The time of day to start sending the messages. See chapter 3.6 for more info. Example: 13:00:00 stopDate Date. The date to stop sending the message if the message is still in enqueued. See chapter 3.6 for more info. Example: 2013-12-25 stopTime Time. optional The time to stop sending the message if the message is still enqueued. See chapter 3.6 for more info. Example:12:00:00 3.7.3.4 Parameter key String. required Example: dcs value String. required Example: F5 Valid parameters
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 businessModel DataCodingScheme Used to specify the message encoding to be used. This property is searched for if {@link GwMessage#isAutoDetectEncodingEnabled()} returns false. Dcs Data coding scheme for message Specify what data coding scheme is used for this message. Defined in 3GPP TS 23.038 ch. 4. Should be one octet (2 hex digits). For example '15' or 'F5'. Udh User Data Header If non-empty will set the TP-User Data Header Indicator (UDHI) for the message. Defined in 3GPP TS 23.040 ch. 9.2.3.24 TP-User Data (TP-UD). Pid Protocol Identifier – replace short message feature A message containing a PID will replace an existing message having the same PID. Valid values are 65 – 71. Note: It will only be replaced if the service center address and originating address match the previous message. 3.8 Message Response All interfaces except SMTP will return a synchronous response with at least the fields for status code, status message and message identifier populated per message. All available fields in the response are described in table 4 below. 3.8.1 Message Response Parameter Description batchReference Reference ID for the request. Either the value provided by the client in the request or an automatically generated ID if no such value is set. messageStatus List of composite objects. At least one element. Table 2 – Message Response 3.8.2 Message status Parameter Description Statuscode See table 4 below
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 statusmessage Textual information about status, e.g. which parameter failed clientReference The client reference ID if specified in the request Recipient The recipient. NOTE: The SMSGW runs all numbers through a number parser and so the recipient in the response may be in same format than in the request, i.e. “+47 41 00 00 00” will be “+4741000000” in the response. Use the clientReference if you need to match messages in the request and response. messageId Message ID (used as reference for delivery reports). sessionId Sessionid for a session, see chapter 3.5. Only returned if newSession parameter is set to true, or if you are specifying a sessionid. sequenceIndex The messages in the response will always be in the same order as in the request. The sequence index is a convenience counter starting at 1. Table 3 – Message Status 3.8.3 Status codes Statuscode Value Description MESSAGE_DELIVERED_OK 1 OK. ACCESS_ERROR 2 No access. Authentication failed. ILLEGAL_ACTION 3 An illegal operation was tried. ILLEGAL_SERVICE 4 An illegal service was tried. SYNTAX_ERROR 5 The request contained syntax errors. INTERNAL_ERROR 6 An internal error occurred in the gateway. Table 4 – Status codes 3.9 Interfaces for sending SMS messages 3.9.1 Web service (SOAP) 3.9.1.1 How to connect The web service interface is defined by the WSDL and can be retrieved from: https://smsgw.intele.com/gw/ws/SMSGatewayV10?wsdl
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.9.1.2 Request Example 1000 intelecom xdyf3bf2 +4741000000 This is a message from Intelecom. 0 Intelecom Alphanumeric 3.9.1.3 Response Example 1 Message enqueued for sending +4741000000 7a0081hfe800 1 3.9.2 REST 3.9.2.1 How to connect The REST interface supports both XML and JSON over HTTP POST on the following URL: https://smsgw.intele.com/gw/rs/sendMessages
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.9.2.2 Regarding content types The REST endpoint for sending messages supports both JSON and XML. To specify the content type of the request you must specify the “Content-Type” header and to specify the content type of the response you must specify the “Accept” header. Valid values are “application/json” or “application/xml”. 3.9.2.3 Encoding The content encoding should be UTF-8 3.9.2.4 XML Schema definition The XML request and response uses the same schema used in the WSDL definition for the SOAP interface: https://smsgw.intele.com/smsgw/SMSGateway?wsdl 3.9.2.5 XML Request Example 1000 intelecom xdyf3bf2 +4741000000 This is a message from Intelecom. 0 Intelecom Alphanumeric true 3.9.2.6 XML Response Example 1 Message enqueued for sending +4741000000 760081j04w00 1
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.9.2.7 JSON Request Example { "serviceId":1000, "username":"intelecom", "password":"xdyf3bf2", "message":[ { "recipient":"+4741000000", "content":"This is a message from Intelecom.", "price":0, "settings":{ "originatorSettings":{ "originator":"Intelecom", "originatorType":"ALPHANUMERIC" }, } } ] } JSON Response Example { "messageStatus":[ { "statusCode":1, "statusMessage":"Message enqueued for sending", "clientReference":null, "recipient":"+4741000000", "messageId":"760081j1ll00", "sessionId":null, "sequenceIndex":1 } ] } Important note for consuming responses The REST interface supports both XML and JSON so you will need to specify what kind of request you are sending by using the “Content-Type”-header (application/xml or application/json). Most framework handles this correctly without any configuration. More importantly, the SMSGW will not know what format to respond with and it is important that you specify this. This is done by setting the “Accept”-header. Many frameworks handles this correctly, but for some you need to explicitly configure this. 3.9.3 HTTP GET The content provider may invoke the SMS Gateway (Gateway) using HTTP GET queries. Though not as flexible as its SOAP / REST counterparts, it is a very easy protocol to integrate and to send simple test messages from for example your browser. If you need to integrate a third party product to SMS this protocol is often the only option. However, as mentioned earlier we recommend that you integrate using SOAP or REST if you have the possibility to do so.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 3.9.3.1 How to connect The web address for the production system is smsgw.carrot.no and the Gateway servlet is accepting GET requests on the URL: http://smsgw.intele.com/smsgw/rs/sendMessages?type=1&serviceid=... 3.9.3.2 Parameters Parameter names are case sensitive. For example for the Service ID parameter the correct spelling is “serviceId“. Incorrect examples are “serviceid”, “serviceID”, “SERVICEID”, “serViceID”, etc. Common parameters (see section 3.7.1 above) do not need any prefix, e.g., “username” and “serviceId”. A dot (“.”) notation is used to specify nested properties, such as message[0].settings.priority. Similar to the other interfaces the HTTP GET interface supports sending multiple messages. Message parameters must therefore be prefixed with message[n] (n is a zero-based index for the message). The first message is therefore message[0]. For example to set the message content for the first message the query parameter key name would be message[0].content. Similarly, setting the recipient becomes message[0].recipient. 3.9.3.3 Encoding The request URI must be percent encoded, following RFC2396 (“Uniform Resource Identifiers (URI): Generic Syntax”), and use UTF-8. For example, a message with the content “Dette er en melding med ÆØÅ I seg” should be encoded as: Dette%20er%20en%20melding%20med%20%C3%A6%C3%B8%C3%A5%20i%20seg. 3.9.3.4 Request Example Simple message: http://smsgw.intele.com/smsgw/rs/sendMessages?serviceId=99999& message[0].recipient=%2B4799999999&message[0].content=Dette+er+en+ny+test.& username=test&password=test Note that +47 becomes %2B47 when URL encoded. Message with originator setting: http://smsgw.intele.com/smsgw/rs/sendMessages?serviceId=999899&username=test&password=te st&message[0].recipient=+4799999999&message[0].content=Test&message[0].settings.originatorSe ttings.originatorType=ALPHANUMERIC&message[0].settings.originatorSettings.originator=Intelecom
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Message with PID parameter setting: http://smsgw.intele.com/smsgw/rs/sendMessages?serviceId=99999& username=test&password=test&message[0].recipient=%2B4799999999&message[0].content=Dette +er+en+ny+test.&message[0].settings.parameter[0].key=pid&message[0].settings.parameter[0].valu e=68 3.9.3.5 Response Example The response format is the same as for the REST interface described above. 3.9.4 SMTP – Sending SMS using email The SMS gateway also provides email as an alternative channel for sending / receiving sms messages. This channel is limited in what kind of messages it can send. The recipients in the mail message are the receivers of the message in the format: -@smsmail.intele.com The subject field is ignored (however, it may be configured to be appended to the message). The body of the email is used as the sms content. There is a maximum limit of 918 characters of the sms, and sms’ that extend one sms (160 characters) are concatenated and sent as single message to the phone (with many fragments).
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 4 Receiving messages using the SMS Gateway If you want to enable end users to send SMS messages to your solution you will need to set up a service able of receiving HTTP GET requests or HTTP POST requests through a REST API with either JSON or XML formatting. Whilst the HTTP GET API will one request for each message, the REST API will accumulate batches of messages and only send 1 request pr second. The SMSGW will invoke your HTTP service when MO- and DR-messages are slated for delivery to your server. The URL of your service must be provided to Intelecom Service Desk (support@intele.com) for proper configuration of the service. You also need to provide information about which API you prefer for incoming (MO) messages. (HTTP GET, HTTP POST with JSON or HTTP POST with XML). 4.1 Request parameters for incoming (MO - Mobile Originating) messages The input parameters available in the request are: CP parameter name Description Messageid Unique messageid generated by the platform for this message. The messageid is generated by the channel container. Sno The shortnumber associated with this message. Command The pattern that causing the routing to the service. Usually a keyword e.g. “TLF” Content The content of the SMS message. For regular text SMS messages this is a plain text, for binary messages this will be hex content. strippedcontent Same as content, but keyword is stripped from beginning of content. Timestamp This parameter indicates when the message entered the Intelecom SMS platform. Note: Format: yyyyMMdd HH:mm:ss Sctimestamp Service Center time stamp represents the time the operator SMSC received the message. Note: Format: yyyyMMdd HH:mm:ss Serviceid This parameter identifies the service that has been identified for this service. Servicename The name of the service originator The originator of the SMS message (in international format). Mcc The Mobile Country Code for originator MSISDN (e.g. 242 – Norway). See table 6 Mnc The Mobile Network Code for originator MSISDN (e.g. 2 – NetCom). See table 6 Sessionid This contains the session identifier that this message is a reply to, this parameter allows you to bind an outgoing and incoming message together. This field will be empty if the message does not belong to a session Type Always=1 (parameter used to distinguish between MO and DR). Note that this parameter is only available on the HTTP GET interface. Table 5: Input parameters for MO messages
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Operator MCC MNC Telenor 242 1 NetCom 242 2 Teletopia 242 3 Network Norway 242 5 Ventelo 242 7 TDC Norway 242 8 Tele2 Norway 240 7 Table 6: List over MCC / MNC Values 4.1.1 HTTP GET example of a valid MO URL: http://mogw.example.com/incomingaction?messageid=[messageid]&sno=[sno]&comm andtype=[commandtype]&command=[command]&content=[content]×tamp=[timest amp]&sctimestamp=[sctimestamp]&serviceid=[serviceid]&originator=[originator ]&mcc=[mcc]&mnc=[mnc]&sessionid=[sessionId]&type=[type]&servicename=[servic ename] The attributes in the SMS-MO message will substitute the corresponding part of the template. 4.1.2 HTTP POST example with JSON formatted data: { "mo":[ { "messageid":"7a02c0000f00", "serviceid":123, "servicename":"Testtjeneste", "sno":"1960", "originator":"+4799999999", "mcc":242, "mnc":1, "content":"Kodeord Testmelding 1", "command":"Kodeord", "strippedcontent":"Testmelding 1", "type":1, "timestamp":"20140206 11:45:33", "sctimestamp":"20140206 11:45:33", "sessionid":"1234567890" }, { "messageid":"7a02c0000g00", "serviceid":123, "servicename":"Testtjeneste", "sno":"1960", "originator":"+4744444444",
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 "mcc":242, "mnc":1, "content":"Kodeord Testmelding 2", "command":"Kodeord", "strippedcontent":"Testmelding 2", "type":1, "timestamp":"20140206 11:47:33", "sctimestamp":"20140206 11:47:33", "sessionid":"1234567890" } ] } 4.1.3 HTTP POST example with XML formatted data: 7a02c0000f00 123 Testtjeneste 1960 +4799999999 242 1 Kodeord Testmelding 1 Kodeord Testmelding 1 1 20140206 12:41:13 20140206 12:41:13 7a02c0000g00 123 Testtjeneste 1960 +4744444444 242 1 Kodeord Testmelding 2 Kodeord Testmelding 2 1 20140206 12:43:15 20140206 12:43:15 Note that the HTTP POST version of the MO Gateway will trigger every second and send any messages (MO / DR), present in the queue. This means that you can expect that you sometimes will get XML or JSON messages that contain more than one message / delivery report.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 4.2 Value-added services for MO messages For Toolbox customers it is possible to enable automatic retrieval of customer data through Toolbox services. Currently the services offers integration for directory inquiries and network lookup. It is a requirement that the toolbox service is registered in the same service group as the SMS Gateway service. In addition, VAS must be enabled in the SMS gateway service parameters. This integration extends the set of input parameters available in the HTTP GET request given above with the following: VAS type CP parameter name Description Record type. See the table below for mapping the code to types. Code Type Description 0 Unset No result received from the directory inquiry service provider di_recordtype 1 Person Personal record 2 Business Business / company / organizational record 3 Hybrid Mixed result data 4 Unknown Type is unknown di_firstname First name, if person di_middlename Middle name di_lastname Last name, or company name if record type is Business Gender type. See the table below for mapping the code to types. Code Type Description 0 Unset No result received from the directory Directory inquiry service provider Inquiry di_gender 1 Male 2 Female 3 Hybrid 4 Unknown di_birthdate Person - Birth date di_streetname Address - Street name di_house_number Address - House number di_entrance Address - House entrance di_zip Address - Post zip number di_zip_location Address - Post zip location di_municipiality Address - Municipality di_country Address - Country di_orgnr Business – Organization number di_boxtext Postbox – Name on postbox di_boxnumber Postbox – Number di_boxoffice Postbox - Office di_boxzip Postbox – Post zip code di_boxcity Postbox – Post zip location / city
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 VAS type CP parameter name Description di_boxcountry Postbox - Country di_coord_matchtype Coordinate – match type di_coord_xpos Coordinate – X Position di_coord_ypos Coordinate – Y Position msisdn_errorcode Error code msisdn_errortext Error description MSISDN msisdn_mnc Mobile network code Network msisdn_mcc Mobile country code lookup msisdn_spid Service provider ID msisdn_spname Service provider name msisdn_cc Country code Table 7: Extra input parameters for VAS MO messages 4.2.1 HTTP GET example of a valid MO URL with VAS parameters: http://mogw.example.com/incomingaction?messageid=[messageid] &originator=[originator]&streetname=[di_streetname]&date_of_birth=[di_birth date]&mnc=[msisdn_mnc]&mcc=[msisdn_mcc] The attributes in the SMS-MO message will substitute the corresponding part of the template. 4.3 HTTP response for MO messages Your server must respond to the HTTP request with a HTTP 200 header response, any other response code will by default cause a retry of delivery. If the gateway does not receive a HTTP 200 acknowledge it will try resending the message to the CP. The MessageId will be the same as the previous attempt. Normally the mo-request will wait 60 seconds for the HTTP 200 response. If the your server does not respond within the time limit the message is marked as undelivered and the gateway will try to resend the message later. IMPORTANT: Respond as fast as possible on the request before you start doing heavy business logic. It is strongly recommended to use an asynchronous model where you acknowledge the message and add it to an internal queue for example database. Do not use a synchronous model where you do all the business logic and then send a response message. Our experience is that customers that fail to respond within the time limit of the request often experience that their messages are queued. This is because the system will use some of its resources to resubmit messages that your server has received earlier but failed to acknowledge. The higher the traffic peaks, the more significant this problem will be. 4.4 SMTP MO - Receiving email (from SMS) It is also possible to configure the SMSGW to format and send an incoming SMS message as an email message.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 The email address to send incoming SMS messages to will need to be provided to Intelecom service desk. The end user mobile number as well as the incoming serviceid is by default set as the originator of the message (this is highly configurable though), so it is fully supported to reply to a email to respond immediately. The SMS message content will come in the email body, but is also highly configurable. By saying highly configurable, we mean that ANY field in the message (see 4.1) can be substituted in any of the fields in the email. IE: Sender: [originator]-[serviceid]@sms.carrot.no Subject: SMS message from Intelecom: [originator] Message: This is a message from Intelecom SMS platform. User sent: [content] 5 Receiving Delivery Report messages If you need to know whether a specific message is received by the end users handset or not you will need to implement a server side service able of receiving HTTP GET requests or HTTP POST requests through a REST API with either JSON or XML formatted content. This is an asynchronous operation and you will need to implement a mechanism for storing messageid and/ or batchReference and/ or clientReference from sent (MT) messages in order to associate an incoming delivery report to the correct MT message. The input parameters available in the HTTP GET request for delivery reports are: CP parameter name Description Messageid The messageid of the original message this report is for. customerbatchreference The batchReference of the MT message. A system batch reference is generated if you do not specify one when sending the MT message. See also chapter 3.7.1 customermessagereference The clientReference you specified in the MT message. See also chapter 3.7.2 Serviceid This parameter identifies the service that has been identified for this service. servicename The name of the service Mcc The Mobile Country Code for originator MSISDN (e.g. 242 – Norway). See table 6 Mnc The Mobile Network Code for originator MSISDN (e.g. 2 – NetCom). See table 6 Statuscode Internal statuscode. See table 11 statusdescription Brief description of the internal statuscode (primarily used for logging). extstatuscode External statuscode (from mobile network operator) extstatusdescription Brief description of the external statuscode (primarily used for logging). Type Always=6 (parameter used to distinguish between MO and DR). Note that this parameter is only available on the HTTP GET interface. Table 8: Input parameters for DR messages
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Value Description Use 0 Operation successful Operation successful. 350 Invalid network provider Non-existing or invalid network provider 354 Illegal bulk message The account cannot send bulk messages 355 Illegal tariff Undefined or illegal tariff for account 360 Syntax error in message When a message contains a syntax error reported by operator (SMSC) 361 Validity period expired Validity period expired without recipient receiving the message 362 Message timed out The message timed out before recipient received message 363 SMSC operation failed The message contains errors and the SMSC is unable to process the message. 370 Unspecified error 371 Transmit error The message was cancelled due to transmit errors towards the SMSC. 380 Invalid Login Invalid or client identifier Illegal login towards operator. 368 Not connected to SMSC Not connected/not logged in to SMSC. 369 SMSC Specific error Some error condition occurred on the SMSC side. 351 Unknown recipient number Recipient unknown (do not belong to current network operator) or illegal recipient. 356 Customer temporary barred Customer is barred for an unspecified for an unspecified amount of time 357 Customer permanently barred 358 Subscription barred for overcharged The subscriber has explicit chosen to be messages. permanently barred from receiving premium rate messages. The recipient is only allowed to receive messages that are free of charge. 359 Age limit exceeded The subscriber is not old enough to receive the CPA / GAS message. Should only occur when an ageLimit is set for a message.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 364 Subscription temporary not reachable For some reason, the subscription number cannot be reached for the moment. 390 Message sent but not billed The message was sent successfully, but not billed (either it was not supposed to, or billing failed) 385 Illegal function The message is stopped because of trying to use a function that requires a special agreement. 386 Message billed but not sent The recipient did not receive the message, but was billed for the message. 650 Database error Database problems, error connecting to Database or other database related problems 652 Missing system data Crucial system data not found cannot perform task without this data. 651 No route found MT route not found. 653 Unexpected error Unknown unexpected data. Please see error message in the message object 654 Invalid MSISDN MSISDN is not recognized as a valid number 655 Inactive service Mt router barred message, service is inactive. Discontinue routing procedure. Table 9: Internal status codes 5.1.1 HTTP GET example of a valid URL for receiving delivery reports: http://drgw.xx.no/reportaction?messageid=[messageid]&statuscode=[statuscode]&statusdescription =[statusdescription]&extstatuscode=[extstatuscode]&extstatusdescription=[extstatusdescription]&c ustomerMessageReference=[customermessagereference]&customerBatchReference=[customerbatc hreference]&serviceid=[serviceid]&servicename=[servicename]&mcc=[mcc]&mnc=[mnc]&type=[typ e] The attributes in the SMS-MO message will substitute the corresponding part of the template. 5.1.2 HTTP POST example with JSON formatted data: {"dr":[ { "messageid":"6y034000cy00", "customerbatchreference":"MyBatch001", "customermessagereference":"MyRef123", "serviceid":123, "servicename":"Testtjeneste", "mcc":242,
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 "mnc":1, "type":6, "statuscode":0, "statusdescription":"OK. Message processed successfully.", "extstatuscode":"0", "extstatusdescription":"Delivered" }, { "messageid":"6y034000dy00", "customerbatchreference":"MyBatch001", "customermessagereference":"MyRef124", "serviceid":123, "servicename":"Testtjeneste", "mcc":242, "mnc":1, "type":6, "statuscode":0, "statusdescription":"OK. Message processed successfully.", "extstatuscode":"0", "extstatusdescription":"Delivered" } ]} 5.1.3 HTTP POST example with XML formatted data: 6y034000cy00 MyBatch001 MyRef123 123 Testtjeneste 242 1 6 0 OK. Message processed successfully. 0 Delivered 6y034000dy00 MyBatch001 MyRef124 123 Testtjeneste 242 1 6 0 OK. Message processed successfully. 0
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Delivered 5.2 Response for DR messages The CP must respond to the HTTP request with a HTTP 200 header response, or any other header responses to cause a retry of delivery.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 6 Contact info Content providers may contact Intelecom’s Customer Support for access to the test system from Internet and initial service setup for production. Intelecom’s Customer Support will also contact point first line service. Contact info is: Email: support@intele.com Phone: +47 03050, IVR choice 1 Required parameters from Content Provider are: HTTP and WebService access from CP to Intelecom SMS Gateway: IP address of calling CP system HTTP access from Intelecom SMS Gateway to CP: URL with template for SMS-MO messages URL with template for SMS-DR messages TCP/IP Connection Timeout towards CP in seconds (default 10)
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 7 Appendix A : Gateway Management API This API provides functionality to manage messages and receive status from the Gateway. Functionality is divided into functional groups described below. The API is available from web service and REST interfaces, similar to the SMS sending API. It also uses the same triplet of service identifisers (service id, username and password) as explained in chapter 2.1 above. 7.1 Interfaces for using the management API The management API is available as a web service and REST service. 7.1.1 Web service (SOAP over HTTP) The web service interface is defined by the WSDL and can be retrieved from: https://smsgw.intele.com/mgmt/ws/GatewayManagementV10?wsdl 7.1.1.1 Error codes Value Description 1000 No batch found matching the given customer batch reference for this service In addition the status codes for the SMS Gateway API are also used, e.g., for authorization errors. 7.1.2 REST The REST interface supports both XML and JSON over HTTP with the following base URI: https://smsgw.intele.com/mgmt/rs/service/{serviceid} Parameter definition Type Name Mandatory Description Path {serviced} Y Identifies the service to be managed. Example https://smsgw.intele.com/mgmt/rs/service/100 Each API documented below defines the URIs used for the request based on this base URI. Use the HTTP Accept header to specify what Content-Type your client prefers for the response. XML (MIME-type: text/xml) and JSON (MIME-type: application/json) are supported. Note that HTTP Basic authentication (IETF RFC 2617) is used for authentication. 7.2 Message batch management These APIs allow managing batches of messages sent that have been throttled (queued for sending in the Intelecom platform). .
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 Base URI path: /batch/ 7.2.1 Stop batch Stop messages that previously have been sent that are throttled. If sending has started for the batch only those messages still throttled will be stopped. Request URI path: /batch/{batch-reference} Request method: DELETE Request parameters Type Name Mandatory Description Path {batch- Y Identifies the batch to be managed. Set as the reference} batchReference parameter when sending messages (see chapter 3.7.1 above). Example https://smsgw.intele.com/mgmt/rs/service/100/batch/ my-batch A request that references batch “my-batch” of service with id 100. Response parameters Type Name Mandatory Description Entity StopBatchResponse Y Response entity StopBatchResponse Y Service id for the response. #ServiceId Same as provided in the request. StopBatchResponse Y Client batch reference for the #ClientBatchReference response. Same as provided in the request. StopBatchResponse Y List of messages that were #StoppedMessages stopped. Other messages in the batch may have been sent. StopBatchResponse Y Unique messageid generated #StoppedMessages by the platform for this #MessageId message. The messageid is generated by the channel container.
SMS GW – API Description Date: 02.03.2014 Rev: 2.1.0 StopBatchResponse N Customer’s message #StoppedMessages reference for the message, if #CustomerMessageReference given. Status codes Statu Status description Description s code 200 OK Request executed successfully. See response entity for detailed results. 401 Unauthorized The pair of username and password given is not authorized to manage the provided service id. Note that username and password must be provided per the HTTP Basic authentication standard (IETF RFC2617). 404 Not Found The requested batch cannot be found. Ensure that the batch reference is correct for the given service. 500 Internal Server Error An unexpected error has occurred. For example invalid request uri. 7.2.1.1 Examples 7.2.1.1.1 Web service Request 1000 intelecom xdyf3bf2 my-batch-reference Response
You can also read