Page 1 of 1

UserData Length Error sending DeliveryReceipt UCS2

Posted: Wed Jul 19, 2023 10:29 am
by didimo
Hi,
I've found the following error when sending DeliveryReceipt using DataCoding UCS2 from original SMS.
"System.InvalidOperationException: UserData cannot be longer than 255 bytes. Current length is 296."
When I don't set DataCoding con SMS builder it works. When I set DataCoding Default it works. But it fails when DataCoding is UCS2.
--
Exception:
System.InvalidOperationException: UserData cannot be longer than 255 bytes. Current length is 296.
en Inetlab.SMPP.Common.SmppWriter.WriteUserData(BufferWriter writer, UserData data)
en Inetlab.SMPP.Common.SmppWriter.Write(DeliverSm pdu, BufferWriter writer)
en Inetlab.SMPP.SmppSession.SerializePDU(SmppPDU pdu)
...
SMPP Lib version 2.9.27.3075
.Net Framework 4.6.1
--
Code:
...Build Receipt
Receipt receipt = new Receipt();
receipt.Delivered = 1;
receipt.DoneDate = <some_date>;
receipt.State = <some_state>;
receipt.MessageId = <sms_id>;
receipt.ErrorCode = <some_stateReasonId>;
receipt.SubmitDate = <some_date>;
receipt.Text = <sms_text>;
... Build SMS
var sms = SMS.ForDeliver()
.From(new SmeAddress(from, (AddressTON)fromTON, (AddressNPI)fromNPI))
.To(new SmeAddress(to, (AddressTON)toTON, (AddressNPI)toNPI))
.Coding((DataCodings)Enum.Parse(typeof(DataCodings), dataCoding)) // SMS DataCoding
.Receipt(receipt);
...Send DeliveryReceipt (fails when SMS DataCoding is UCS2)
DeliverSmResp[] results = await client.DeliverAsync(sms);

Re: UserData Length Error sending DeliveryReceipt UCS2

Posted: Mon Jul 24, 2023 10:03 am
by alt
Hi didimo,

Why do you need to send Delivery Receipt in UCS2 data coding?
Library sends DLR as single PDU. The Receipt you created is to long. Maybe you have to remove receipt.Text or make it shorter.