Server Library

SMSCserverSMPP

Overview

TypeSMSCserverSMPP
Namespacesmscs.SMPP
ParentComponent
InterfacesISMSCserverSMPP

SMSCserverSMPP class implements SMPP protocol messaging.

Methods

smppFinalizeServer Stop listening to the incoming connections.
smppInitializeServer Start listening to the incoming connections.
smppSendDeliverMessage Deliver message to the client.
smppSendDeliverStatusReport Deliver status report to the client.
smppSendLoginResponse Send response to the login message.
smppSendLogoutResponse Send response to the logout message.
smppSendRAW Send raw SMPP message.
smppSendSubmitMessageResponse Send response to a submitted message.
smppSendSubmitMultiMessageResponse Send response to a message submitted to Multiple Destination.
tcpAcceptConnection Accept incomming connection.
tcpCloseAllConnections Closes all active connections maintained by the component.
tcpCloseConnection Close either incomming or existing connection.

Events

OnTcpConnected Event triggered on client connection on network protocol (TCP/IP) level.
OnTcpDisconnected Event triggered on client disconnection on network protocol (TCP/IP) level.
OnSmppRAWReceived Event triggered on non interpreted (RAW) message receive.
OnSmppLoginReceived Event triggered on receive of login message.
OnSmppLogoutReceived Event triggered on receive of logout message.
OnSmppDeliverResponseReceived Event triggered on receive of a response to message delivered to the client.
OnSmppSubmitMessageReceived Event triggered on receive of a message submitted by client.
OnSmppTraceProtocol Event triggered on every SMPP protocol message exchanged between component and the SMSC.

Properties

KeepAliveInterval Connection keep-alive timing.
ThrottleRate Message throttling limit parameter.

Public instance methods

smppFinalizeServer

Stop listening to the incoming connections.

int smppFinalizeServer();

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppInitializeServer

Start listening to the incoming connections.

int smppInitializeServer(string LocalHost, int LocalPort, string ExtendedParameters);

Parameters

LocalHost

Either numeric or symbolic address of local interface that the component should listen on. In most cases should be set to the address of the local host e.g. "127.0.0.1" or left empty to listen on all interfaces.

LocalPort

Port number on which the component should listen to the incoming connections.

ExtendedParameters

Allows passing additional parameters to the function call. For the description and syntax of parameters that can be passed this way see Extended Parameters.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendDeliverMessage

Deliver message to the client.

int smppSendDeliverMessage(int ClientID, int SequenceNumber, string Destination, int DTON, int DNPI, string Originator, int OTON, int ONPI, string Text, EncodingEnum Encoding, string UserDataHeader, int Options, string ServiceType, string ExtendedParameters);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

Destination

Message recipient identifier. Usually this is mobile phone number in fully qualified format.

DTON

Type Of Number (TON) for Destination parameter.

DNPI

Numbering Plan Identifier (NPI) for Destination parameter.

Originator

Message sender identifier. Usually this is is number of the SMSC's account (a short GSM number). This parameter can also be an alphanumeric string or general phone number where permitted.

OTON

Type Of Number (TON) for Originator parameter.

ONPI

Numbering Plan Identifier (NPI) for Originator parameter.

Text

The text or content of the message to be sent. The conversion of the characters transferred by parameter to the mobile infrastructure alphabet is done according to the value passed via Encoding parameter.

Encoding

Decides on the which conversion is applied to the Content parameter to convert it to the character set supported by message. Possible values as per EncodingEnum type definition.

UserDataHeader

User Data Header (UDH) for the message. The header must be passed as a byte string in hexadecimal format. For example: "06050415831583" is 7 bytes large header.

Options

Options that can be set to submitted message as per SubmitOptionEnum type definition. It is possible to set more than one option by using the OR operator on the chosen option values.

ServiceType

Allows to set the SMPP submit_sm parameter service_type. Parameter is required by some service providers. For more information see [SMPP] (5.2.11).

ExtendedParameters

Allows passing additional parameters to the function call. For the description and syntax of parameters that can be passed this way see Extended Parameters.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendDeliverStatusReport

Deliver status report to the client.

int smppSendDeliverStatusReport(int ClientID, int SequenceNumber, string Destination, int DTON, int DNPI, string Originator, int OTON, int ONPI, smppReportTypeEnum ReportType, string ServiceType, string MessageID, int SubmittedCount, int DeliveredCount, DateTime SubmitDate, DateTime DoneDate, smppMessageStateEnum MessageState, int NetworkErrorCode, string Text, string ExtendedParameters);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

Destination

Message recipient identifier. Usually this is mobile phone number in fully qualified format.

DTON

Type Of Number (TON) for Destination parameter.

DNPI

Numbering Plan Identifier (NPI) for Destination parameter.

Originator

Message sender identifier. Usually this is is number of the SMSC's account (a short GSM number). This parameter can also be an alphanumeric string or general phone number where permitted.

OTON

Type Of Number (TON) for Originator parameter.

ONPI

Numbering Plan Identifier (NPI) for Originator parameter.

ReportType

Defines type of the report according to smppReportTypeEnum type definition.

ServiceType

Allows to set the SMPP submit_sm parameter service_type. Parameter is required by some service providers. For more information see [SMPP] (5.2.11).

MessageID

Message identifier. It has to be identical to the identifier allocated to the message when originally submitted.

SubmittedCount

Number of short messages originally submitted. This is only relevant when the original message was submitted to a distribution list. For more information see [SMPP] (Appendix B).

DeliveredCount

Number of short messages delivered. This is only relevant where the original message was submitted to a distribution list. For more information see [SMPP] (Appendix B).

SubmitDate

The time and date at which the short message was submitted. In the case of a message which has been replaced, this is the date that the original message was replaced. For details see [SMPP] (Appendix B).

DoneDate

The time and date at which the short message reached it’s final state. For details see [SMPP] (Appendix B).

MessageState

The final status of the message. Set according to SMPP Error Codes chapter Message State section.

NetworkErrorCode

Where appropriate this may hold a Network specific error code or an SMSC error code for the attempted delivery of the message. These errors are Network or SMSC specific and are not included here. For details see SMPP Error Codes chapter Network Error Code section. If not used set to zero.

Text

The first 20 characters of the short message. For details see [SMPP] (Appendix B).

ExtendedParameters

Allows passing additional parameters to the function call. For the description and syntax of parameters that can be passed this way see Extended Parameters.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendLoginResponse

Send response to the login message.

int smppSendLoginResponse(int ClientID, int SequenceNumber, smppBindModeEnum BindMode, int CommandStatus, string MCIdentifier, string ExtendedParameters);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

BindMode

Type of bind operation for the component. Works according to the definition of the smppBindModeEnum type.

CommandStatus

Command Status as defined in SMPP Error Codes chapter Command status section.

MCIdentifier

SMSC identifier.

ExtendedParameters

Allows passing additional parameters to the function call. For the description and syntax of parameters that can be passed this way see Extended Parameters.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendLogoutResponse

Send response to the logout message.

int smppSendLogoutResponse(int ClientID, int SequenceNumber, int CommandStatus);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

CommandStatus

Command Status as defined in SMPP Error Codes chapter Command status section.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendRAW

Send raw SMPP message.

int smppSendRAW(int ClientID, int SequenceNumber, int CommandID, int CommandStatus, string Payload);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

CommandID

SMPP command identifier.

CommandStatus

Command Status as defined in SMPP Error Codes chapter Command status section.

Payload

Message binary data (except header) in hexadecimal form.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendSubmitMessageResponse

Send response to a submitted message.

int smppSendSubmitMessageResponse(int ClientID, int SequenceNumber, int CommandStatus, string MessageID);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

CommandStatus

Command Status as defined in SMPP Error Codes chapter Command status section.

MessageID

Message identifier.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

smppSendSubmitMultiMessageResponse

Send response to a message submitted to Multiple Destination.

int smppSendSubmitMultiMessageResponse(int ClientID, int SequenceNumber, int CommandStatus, string MessageID);

Parameters

ClientID

Client connection identifier.

SequenceNumber

Transaction identifier.

CommandStatus

Command Status as defined in SMPP Error Codes chapter Command status section.

MessageID

Message identifier.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

tcpAcceptConnection

Accept incomming connection.

int tcpAcceptConnection(int ClientID);

Parameters

ClientID

Client connection identifier.

Remarks

Function should be used inside OnTcpConnected event handling code.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

tcpCloseAllConnections

Closes all active connections maintained by the component.

void tcpCloseAllConnections();

tcpCloseConnection

Close either incomming or existing connection.

int tcpCloseConnection(int ClientID);

Parameters

ClientID

Client connection identifier.

Remarks

Function should be used inside OnTcpConnected event handling code.

Returns

If the function succeeds, the return value is zero. Negative return value means Internal Error Code. Positive value means Network Error Code.

See Also

Events

OnTcpConnected

The event informs that a clietn has connected to the server. It is then up to the server logic to decide whether to accept or reject such connection. In response to the event either tcpAcceptConnection or tcpCloseConnection should be called inside the event code.

See Also

OnTcpDisconnected

The event informs about the tear down of connection between the component and the SMSC on the network layer level (TCP). Such situation may be due to disconnection by SMSC (as per the rules of protocol after the timeout of inactivity of the component, in the case when connection is not kept alive) and in the case of disconnection for other reasons concerning functioning of the network layer.

See Also

OnSmppRAWReceived

Event triggered on receive of a SMPP message that has not been decoded by any of the functionality serviced by the component.

See Also

OnSmppLoginReceived

The event informs that the client has issued login (bind) message. User can analyze login message credentials and other parameters and decide whether to accept or reject client's communication. In event handler smppSendLoginResponse should be called to pass response to the client.

See Also

OnSmppLogoutReceived

The event informs that the client has issued logout (unbind) message. In event handler smppSendLogoutResponse should be called to pass response to the client.

See Also

OnSmppDeliverResponseReceived

The event informs that the client has confirmed a message delivered. The same event is fired for both a message and status report. To which message is this confirmation can be determined by SequenceNumber parameter.

See Also

OnSmppSubmitMessageReceived

The event informs that the client has submitted a message to the server. Either smppSendSubmitMessageResponse or smppSendSubmitMultiMessageResponse should be called to pass response to the client.

See Also

OnSmppTraceProtocol

This event allows to log all messages exchanged on the SMPP protocol level between the component and the SMSC. Protocol messages are passed as hexadecimally encoded Protocol Data Units (PDU) which is exact binary representation of protocol message.

See Also

Public properties

KeepAliveInterval

Connection keep-alive timing.

int KeepAliveInterval get; set;

Remarks

Value in seconds denoting time interval between packages keeping the connection alive in case no other packages are exchanged with the SMSC. It should be set according to the SMSC operator's instructions and the speed of Internet connection between the component and the SMSC. Typically, this value amounts to one third of the time after which the SMSC breaks the connection in case of lack of activity. When set to zero keep alive packets are never sent to the SMSC.

ThrottleRate

Message throttling limit parameter.

int ThrottleRate get; set;

Remarks

Determines maximum rate of messages send to client per second. If set to any value above 0 component counts number of messages submitted and limits the rate by waiting appropriate time inside smppSendDeliverMessage, smppSendDeliverStatusReport functions. If the value is set to zero component does not limit the rate of messages delivered.