UserData Length Error sending DeliveryReceipt UCS2

Post Reply
didimo
Posts: 8
Joined: Thu Jan 23, 2014 9:23 pm

UserData Length Error sending DeliveryReceipt UCS2

Post by didimo » Wed Jul 19, 2023 10:29 am

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);
alt
Site Admin
Posts: 988
Joined: Tue Apr 25, 2006 9:45 am

Re: UserData Length Error sending DeliveryReceipt UCS2

Post by alt » Mon Jul 24, 2023 10:03 am

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.
Post Reply