UserData Length Error sending DeliveryReceipt UCS2
Posted: 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);
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);