---
id: messaging--sms-transmitter
title: "Sms transmitter"
summary: "Sends SMS messages to an SMSC or SMS gateway over SMPP. Long texts are split into concatenated parts automatically; several receivers can be given in one message."
audience: user
keywords: "input, output, continue, bindtype, version, host, localendpointip, port, addressrange, systemid, password, systemtype, enquirelinkinterval, generaltimeout, sourceaddressnpi, sourceaddresston, destinationaddressnpi, destinationaddresston, datacodingtype, maxsmspersec"
---
# Sms transmitter

Sends SMS messages to an SMSC or SMS gateway over SMPP. Long texts are split into concatenated parts automatically; several receivers can be given in one message.

## Pins

| Pin | Kind | Types | Description |
|---|---|---|---|
| Input | input | `Viaducta.Plugins.Smpp.Types.SmppMessage` | The message to send. |
| Output | output | `Viaducta.Plugins.Smpp.Types.SmppMessage` | Intended for messages the SMSC delivers on this session (transceiver bind) - see Notes. |
| Continue | continue | `Viaducta.Plugins.Smpp.Types.SmppMessage` | Called with the input message after it was submitted. |

`SmppMessage` fields used for sending: `MessageText`, `Sender` (source address), `Receivers` (one number, or several separated by `;`), `IsFlashSMS`, `IsRegisteredDelivery` (request a delivery report), `ValidityPeriod` (days, `0` = SMSC default, max 99). After sending, `SMSCMessageId` is set from the SMSC response (single receiver only).

## Configuration

| Field | Type | Default | Description |
|---|---|---|---|
| `BindType` | dropdown: `1` BindTransmitter, `2` BindTransciever | `1` | SMPP bind mode. |
| `Version` | dropdown: `0` V3_3, `1` V3_4 | `1` | SMPP protocol version. |
| `Host` | string (required) | `localhost` | SMSC / gateway host. |
| `LocalEndpointIp` | string | `Any` | Local IP to bind the socket to. |
| `Port` | integer 1-65535 | `10000` | SMSC port. |
| `AddressRange` | string, max 41 chars | empty | Validated, but not sent in the bind. |
| `SystemId` | string, max 32 chars | empty | SMPP `system_id`. |
| `Password` | password | empty | SMPP password. |
| `SystemType` | string | `ESME` | SMPP `system_type`. |
| `EnquireLinkInterval` | integer seconds, max 60 | `5` | Keep-alive interval. |
| `GeneralTimeout` | integer seconds, max 300 | `5` | Response timeout. |
| `SourceAddressNpi` | dropdown: `0` Unknown, `1` ISDN, `3` Data, `4` Telex, `6` LandMobile, `8` National, `9` Private, `10` ERMES, `14` Internet | `8` | Numbering plan of `Sender`. |
| `SourceAddressTon` | dropdown: `0` Unknown, `1` International, `2` National, `3` NetworkSpecific, `4` SubscriberNumber, `5` Alphanumeric, `6` Abbreviated | `3` | Type of number of `Sender` (`5` for alphanumeric sender names). |
| `DestinationAddressNpi` | dropdown, as `SourceAddressNpi` | `1` | Numbering plan of the receivers. |
| `DestinationAddressTon` | dropdown, as `SourceAddressTon` | `1` | Type of number of the receivers. |
| `DataCodingType` | dropdown: `0` SMSCDefault, `1` IA5_ASCII, `2` OctetUnspecifiedB, `3` Latin1, `4` OctetUnspecifiedA, `5` JIS, `6` Cyrillic, `7` Latin_Hebrew, `8` UCS2, `9` Pictogram, `10` MusicCodes, `13` ExtendedKanjiJIS, `14` KS_C | `0` | Text encoding. Use `8` (UCS2) for characters outside GSM 7-bit. |
| `MaxSMSPerSec` | number | `10` | Throttling: maximum submits per second, `0` = unlimited. Each part of a long SMS counts. |

## Behaviour

- The SMPP session is opened when the flow starts; a rejected bind stops the flow ("Failed to connect to host:port due to ...").
- One receiver: `submit_sm`; several (`;`-separated): `submit_multi`.
- Texts longer than one SMS are split into up to 30 parts with a concatenation header; a delivery report is requested only for the last part. More than 30 parts raises "Message too long".
- `IsFlashSMS` = `true` sends a class 0 (flash) message, overriding `DataCodingType`.
- After submitting, the input is passed to `Continue`.

## Notes

- A non-zero SMPP status from the SMSC (e.g. throttled, invalid destination) is **not** reported: `Continue` is still called. Check delivery with `IsRegisteredDelivery` and an Sms receiver.
- `DataCoding`, `MessageFormat` and `TlvData` of the input message are ignored; the configured `DataCodingType` is used.
- Messages delivered by the SMSC on a transceiver session are emitted on `Output` as the raw SMPP PDU, not as `SmppMessage`. Use Sms receiver to receive SMS.
- Ports above 32767 are not handled correctly (converted to a 16-bit signed number).
- Use an expression setting (`=Secrets.SmscPassword`) for `Password`.

## Example

```json
{ "BindType": 1, "Version": 1, "Host": "smsc.example.com", "Port": 2775, "SystemId": "myesme", "Password": "=Secrets.SmscPassword", "SourceAddressTon": 5, "SourceAddressNpi": 0, "DestinationAddressTon": 1, "DestinationAddressNpi": 1, "DataCodingType": 8, "MaxSMSPerSec": 5 }
```

Database reader → Data mapper (`SmppMessage`) → **Sms transmitter** → (Continue) Database writer (store `SMSCMessageId`)
