SMS#

Request to Send SMS#

To send a message, the Partner needs to establish a connection with the server and transmit the submit_sm packet to the Service Provider. This packet must contain all required message parameters and may also include optional TLV parameters.

Note

If additional functionality is required, specify the values for the corresponding TLV parameters. These parameters are described in the following sections of the website:

  • Cascade Message Sending
  • Link Shortening Service
  • Main Request Parameters#

    Parameter

    Type

    Description

    source_addr

    string

    Service name from which the message is sent.

    More details

    If this parameter is absent, the message is sent from the default name configured on the Service Provider's platform (as per the Partner's request).

    The encoding for the source_addr parameter value is ASCII (according to the SMPP protocol).

    destination_addr

    string

    Subscriber’s phone number, up to 25 characters.

    More details

    Examples: 79036550550, +79036550550, 8-903-655-05-50.

    short_message

    string

    Message to be sent to the subscriber.

    More details

    Maximum SMS message length is 2000 characters.

    Maximum user data length for the short_message field: 254 octets.

    Long text messages (longer than 254 octets, multi-segment from an SMPP perspective) are recommended to be sent in a single PDU by placing the text in the message_payload TLV parameter , id = 0x0424. Message data should be inserted in the short_message field or in the message_payload field.

    Important

    Simultaneous use of both fields is not allowed. When using the message_payload field, the short_message field must remain empty.

    The Service Provider's SMPP server supports message concatenation (reassembly of segmented messages) using one of the following methods:

    • UDH-8;
    • UDH-16;
    • using TLV parameters.

    data_coding

    integer

    Encoding scheme/type of the message text.

    More details

    It is set in accordance with the GSM 03.38 standard.

    Valid values:

    • 0 — DEFAULT, default encoding;
    • 1 — ASCII;
    • 3 — LATIN1;
    • 6 — LATIN_CYR;
    • 8 — UCS2.

    If the text encoding differs from those listed above, the platform will treat the message as binary.

    It is recommended to use the UCS2 encoding (data_coding = 8) to send the text of the message.

    To send messages in Latin, it is possible to use data_coding = 0, which corresponds to the GSM DEFAULT ALPHABET or ASCII, as chosen by the Partner (a unified setting for receiving and sending messages).

    esm_class

    integer

    Set of values for this parameter is specified by the SMPP protocol version 3.4, section 5.2.12.

    registered_delivery

    integer

    Parameter specifies whether the Partner requires delivery status notifications.

    More details

    Possible values:

    • 0 — the Partner does not require delivery status notification;
    • 1 — the Partner requires delivery status notification;
    • 2 — the Partner requires notification only if the message is not delivered to the subscriber.

    This option can be configured by default on the Service Provider's side (upon the Partner's request).

    schedule_delivery_time

    string

    Scheduled message delivery date and time.

    More details

    The schedule_delivery_time field can be set in either relative or absolute format.

    Furthermore, a special format is available to specify a delivery interval based on the subscriber's local time zone, derived automatically from their phone number.

    Value format for the YYMMDDhhmmsstnnp parameter, where:

    • YYMMDDhhmmss — year, month, day, hours, minutes, seconds;
    • t — tenths of seconds;
    • nn — quarters of an hour (15-minute intervals), e.g., for 8 hours the value will be 32;
    • p — shift. Possible values:
      • + and specify the time shift in quarter hours relative to GMT, for example, 08+ corresponds to GMT+2, and 04– corresponds to GMT-1;
      • R — values t and nn are ignored, the rest is added to the current local time;
      • А — the date and time are considered to be in the subscriber's local time and specify the start of a possible sending interval, while the quarters specify the length of this interval. Sending occurs within the specified time, even if the date is in the past. For example, if the current time is 10:00 am and the window is set for "yesterday" from 3:00 pm to 6:00 pm, the message will not be sent before 3:00 pm. If the interval has already ended on the current day, its start is moved to the next day.

    The Service Provider's platform has a restriction, namely, the scheduled date and time cannot be later than a specified period from the current moment.

    The exact limits of this restriction should be clarified with the Service Provider's support team.

    validity_period

    string

    Message lifetime.

    More details

    Acceptable range in minutes: from 1 to 2880 (up to 2 days).

    Value format for the YYMMDDhhmmsstnnp parameter, where:

    • YYMMDDhhmmss — year, month, day, hours, minutes, seconds;
    • t — tenths of seconds;
    • nn — quarters of an hour (15-minute intervals), e.g., for 8 hours the value will be 32;
    • p — shift. Possible values:
      • + and specify the time shift in quarter hours relative to GMT, for example, 08+ corresponds to GMT+2, and 04– corresponds to GMT-1;
      • R — values t and nn are ignored, the rest is added to the current local time.

    priority

    integer

    Parameter indicates the message priority.

    More details

    Messages with higher priority are sent to the operator first.

    Possible values are from 0 to 2, where:

    • 0 — lowest priority;
    • 1 — normal priority;
    • 2 — high priority.

    Note

    This parameter is disabled by default. Enabling this functionality should be agreed with your supervising manager.

    TLV Parameters#

    TLV parameters for sending messages from the Partner to the Service Provider.

    TLV Parameter

    Field

    Octets size

    Type

    Description

    message_payload

    Tag

    2

    Integer

    id = 0x0424

    Length

    2

    Integer

    Length of the parameter in octets.

    Value

    up to 2048

    Octet String

    Contains the extended short message user data, longer than 254 octets.

    More details

    The short message data should be inserted in either the short_message or message_payload fields.

    Both fields should not be used simultaneously.

    The short_message field should be set to zero if using the message_payload parameter.

    ptag

    Tag

    2

    Integer

    id = 0x1411

    Length

    2

    Integer

    Length of the parameter in octets.

    Value

    up to 1000

    Octet String

    Message identifier in the Partner’s system.

    More details

    May contain from 1 to 50 characters.

    Allowed characters: 0...9a...zA...Z-.

    It can be any identifier in the Partner's system.

    For example, a unique message identifier or an identifier of the department initiating sending a request.

    The Service Provider does not control the values passed in the ptag parameter (only format compliance is checked). The Service Provider optionally returns this identifier to the Partner when sending the message delivery status (see Delivery Status Service).

    Response to Request#

    In response to the submit_sm packet, the Service Provider’s server replies with the submit_sm_resp packet containing the command_status field.

    If the packet is accepted and processed successfully, the body of the submit_sm_resp packet will contain a message_id unique identifier (a positive integer) assigned to this PDU by the Service Provider’s server.

    Subsequently, the message_id value is used by the Partner to receive and analyze message delivery statuses.

    Possible values for the command_status field are provided in the tables below.

    Successful Send Response#

    In case of successful sending, the 0x00 response code (HEX) is returned.

    Code (HEX)

    Description

    Partner Action

    0x00

    The packet received successfully.

    No errors, common service’s operation. No Partner’s action needed.

    Send Errors#

    For invalid results, the response code (HEX) will be different from 0x00.

    Code (HEX)

    Description

    Partner Action

    0x01

    Message text length exceeded.

    Troubleshooting

    The Partner can shorten the text to the allowed values and retry sending the message.

    0x03

    The Partner sent a PDU of an unsupported type (query_sm, submit_multi, data_sm, etc.).

    Troubleshooting

    The Partner fixes the errors on their side.

    0x08

    System error on the server.

    Troubleshooting

    The Partner can retry sending the message.

    If the error persists, stop trying to send the message and contact the Technical Support Service, providing the most comprehensive information about the conditions for the occurrence of this error.

    0x0A

    Invalid sender name.

    More details

    The Partner sent in the source_addr parameter a value from which sending messages to subscribers is not allowed.

    Troubleshooting

    The Partner must fix the errors on their side and can resend the message with the correct source_addr parameter value.

    0x0B

    Invalid recipient number.

    More details

    An attempt was made to send a message to a number that is not allowed to send messages.

    Troubleshooting

    The Partner should not resend messages.

    The Partner should contact the Service Provider's manager to find out whether it is possible to send messages to this number.

    0x0C

    Invalid ptag TLV parameter value passed (id = 0x1411).

    Troubleshooting

    The Partner corrects the parameter value and can retry to send the message.

    0x14

    The queue for sending messages from the Partner has reached the maximum allowed value.

    More details

    Example: The maximum number of messages in the queue for sending to subscribers is set to 100 messages for the Partner's service.

    If more than 100 messages accumulate, the Service Provider will respond with this error code until the queue is reduced.

    Troubleshooting

    The Partner pauses the SMS sending process (submit_sm) for 5 seconds, then resumes sending. The Partner can retry sending the messages that failed.

    If the error repeats more than five times in a row, stop sending messages and contact the Technical Support Service, providing the most comprehensive information about the conditions for the occurrence of this error.

    0x45

    An attempt to send messages after the end of the trial period or when the number of messages allowed for the trial period is exceeded.

    Troubleshooting

    The Partner must not retry sending the message.

    0x55

    The threshold for the maximum number of response messages for the “request-response” or “mixed” mode has been exceeded.

    Troubleshooting

    The Partner needs to wait for the next incoming message from the subscriber.

    0x58

    The bandwidth set for the Partner has been exceeded.

    More details

    Example. The Partner service has a rate limit of 10 messages per second. The Partner sent 12 messages per second. The first 10 messages will be successfully processed: the Service Provider will send messages to subscribers.

    In response to the last 2 messages, the Service Provider will return the 0x58 error code to the Partner and will not send these 2 messages to subscribers.

    Troubleshooting

    The Partner stops the sending process (submit_sm) for 5 seconds, then resumes sending without exceeding the allowed speed.

    The Partner can retry sending the messages that failed.

    0x61

    Incorrect value of the schedule_delivery_time parameter specified.

    Troubleshooting

    The Partner must fix the errors on their side and can then retry with the the correct schedule_delivery_time.

    0x62

    Transaction duration limit exceeded.

    More details

    The error occurs if the value passed in the schedule_delivery_time parameter is out of range.

    Troubleshooting

    The Partner can retry sending with the correct schedule_delivery_time value.

    0xAB

    An attempt to send a duplicate message was made.

    More details

    Example. The duplicate blocking feature is enabled for the Partner's service. The Partner sent 3 requests to send a message to the same subscriber number with the same text within 24 hours. The first request will be successfully processed and the message will be sent to the subscriber.

    In response to the last 2 requests, the Service Provider will return the 0xAB error code to the Partner and will not send these 2 messages to the subscriber.

    The feature of blocking duplicates is disabled by default for the Partner. The feature can be enabled at the request of the Partner.

    Troubleshooting

    The Partner must not retry sending the message.

    0xC4

    The partner sent an incorrect value in one of the TLV parameters.

    Troubleshooting

    The Partner must fix the errors on their side and can then retry sending the message with the correct set of parameters.

    0x500

    The error will occur if in the settings of the integrated SMPP client under the protocol parameters (“Protocol Parameters”), a specific concatenation method (“Concatenate via UDH” or “Concatenate via TLV”) is selected, and the SMPP client sends a packet that does not conform to this type of processing.

    More details

    The error will not occur if the “Detect automatically” option (set by default) is selected. In this case, upon receiving data from the SMPP client, the packet type is automatically determined, and the message concatenation is performed according to the specified method.

    Troubleshooting

    When this error occurs, the Partner stops the process of sending messages, changes the method of sending these messages on their side (TLV or UDH), repeats sending these messages.

    If the error occurs again after the changes made, please contact the Technical Support Service providing the most comprehensive information about the conditions for the occurrence of this error.

    Note

    If the Partner's service does not respond to the Service Provider's requests, Message Reprocessing is performed.

    SMS Delivery Statuses#

    To receive SMS message statuses, you need to configure the Delivery Status Service.

    Delivery Error Codes#

    Delivery error codes for each message type are provided in the corresponding tab of the Error Code Descriptions (err field) section.

    SMS Sessions#

    The SMS session functionality allows a subscriber to use the service without limiting messages to keywords.

    A session is opened when a subscriber sends a message containing a session-opening keyword to the service name.

    All messages with a code word or messages from the session are transmitted to the Partner.

    In return, the subscriber receives the text provided by the Partner.

    The active session time interval is defined in the service configuration. During this time interval, all messages sent by the subscriber to this service name will be processed by the session service. The session time is extended when the subscriber sends a message, if the session on the service name is active at the time of sending the message. This message can contain any text except a session-ending command. The session is extended for the session activity time set in the service configuration.

    The active session time expires if the subscriber has not sent a single message to the service name during this time period. After the active session time has expired, the subscriber receives a message (optionally) notifying that the session time has expired and the session is closed.

    A subscriber can close the session manually by sending the session-ending keyword. A confirmation message will be sent to the subscriber, and the session will be terminated.

    Connection#

    To enable the SMS session functionality, the Partner must additionally provide the Service Provider’s manager with the following information:

    1. The desired keyword with synonyms (regular expression) for opening a session.

    2. Whether the Service Provider should reply to the subscriber’s keyword upon opening the session. If “yes”, it is necessary to provide the text of the message sent to the subscriber when the session is opened.

    3. The desired keyword with synonyms (regular expression) for closing a session. The closing keyword may be absent or be the same for all of the Partner’s services.

    4. Whether the Service Provider should reply to the subscriber’s keyword upon closing the session. If “yes”, it is necessary to provide the text of the message sent to the subscriber when the session is closed.

    5. The time interval during which the session will be active.

    6. The text of the message sent to the subscriber if the Partner’s server is unavailable.