Table of Contents

SMPP Client FAQ

Can library split text into multiple concatenated SMS-parts?

Text will be split automatically when you use SMS builders. Following example covers most usage scenarios


string longText = new string('A', 300);

var resp = await client.SubmitAsync(
    SMS.ForSubmit()
        .From("short_code")
        .To("436641234567")
        .Coding(DataCodings.UCS2)
        .Text(longText)
);

How can I send Flash SMS?

In order to send Flash SMS you need to specify one of the following data coding in the SubmitSm class: UnicodeFlashSMS, DefaultFlashSMS

How can I set sequence number before sending PDU

SMS Builder has Create method that returns SubmitSm list with sequence numbers set to 0. You can assign next number from the SequenceGenerator and pass this PDU list to Submit(params SubmitSm[]) method.


IList<SubmitSm> pduList = SMS.ForSubmit()
    .From("5555")
    .To("436641234567")
    .Text("test text")
    .Create(client);

foreach (SubmitSm pdu in pduList)
{
    pdu.Header.Sequence = client.SequenceGenerator.NextSequenceNumber();
}

var resp = await client.SubmitAsync(pduList);

Example: Read messages from database and send them as fast as possible

// 
public class SMSMessage
{
    public string PhoneNumber { get; set; }
    public string Text { get; set; }
}

public static async Task SendMessageBatchAsFastAsPossible(SmppClient client)
{

    var messageList = GetNext100UnsentMessages();

    List<SubmitSm> pduList = new List<SubmitSm>();
    foreach (var message in messageList)
    {
        var pduBuilder = SMS.ForSubmit()
            .From("5555")
            .To(message.PhoneNumber)
            .Text(message.Text);
                
        pduList.AddRange(pduBuilder.Create(client));
    }

    SubmitSmResp[] resp = await client.SubmitAsync(pduList.ToArray());

    
}

private static IEnumerable<SMSMessage> GetNext100UnsentMessages()
{
    for (int i = 0; i < 100; i++)
    {
        yield return new SMSMessage
        {
            PhoneNumber = (436641234567+i).ToString(),
            Text = $"Test {i}"
        };
    }
}

How to create SubmitMulti PDUs for multiply recipients


var pduBuilder = SMS.ForSubmitMulti()
    .ServiceType("test")
    .Text("Test Test")
    .From("MyService");

foreach (string phoneNumber in phoneNumbers)
{
    pduBuilder.To(phoneNumber);
}