Não é possível enviar caracteres especiais usando a biblioteca Open-Smpp em vários sms
Estou usando a biblioteca open-smpp para se comunicar com o SMSC. Sou capaz de enviar SMS singe e multi SMS, no entanto, estou tendo problemas com caracteres especiais (šđžć) que, no caso de envio de várias mensagens (sendMultiSMS), aparecem como '?'.
Eu li emhttps://en.wikipedia.org/wiki/Short_Message_Peer-to-Peer, esse texto no campo short_message deve corresponder a data_coding.
PSB, codifique partes de dois métodos. Conforme o recurso wiki acima, eu defini a variávelDATA_CODING que representa data_coding e tentei codificar o texto em short_message como este:submitSM.setShortMessage (message.getMessage (), Data.ENC_UTF16); - mensagem únicaed.appendString (messageAux, Data.ENC_UTF16); - multi mensagem
Portanto, para uma única mensagem, a combinação abaixo é boa (DATA_CODING = (byte) 0x08 e Data.ENC_UTF16), os caracteres estão indo bem, mas para multi-sms os caracteres especiais estão vindo como '?'.
Eu tentei todas as combinações como:
DATA_CODING = (byte) 0x01 e Data.ENC_UTF16
DATA_CODING = (byte) 0x08 e Data.ENC_UTF16
DATA_CODING = (byte) 0x01 e Data.ENC_UTF8
DATA_CODING = (byte) 0x08 e Data.ENC_UTF8
etc., mas sem sucesso.
**private static final byte DATA_CODING = (byte) 0x08;**
public void sendSMS(XMessage message) throws SmppException
{
.
.
.
SubmitSM submitSM = new SubmitSM();
setScheduleDate(message, submitSM);
submitSM.setProtocolId(PROTOCOL_ID);
**submitSM.setDataCoding(DATA_CODING);**
submitSM.setSourceAddr(mSrcAddress);
submitSM.setDestAddr(mDestAddress);
submitSM.setSequenceNumber(message.getSequence());
**submitSM.setShortMessage(message.getMessage(), Data.ENC_UTF16);**
SubmitSMResp submitSMResp = mSession.submit(submitSM);
}
public void sendMultiSMS(XMessage message) throws SmppException
{
.
.
.
submitSMMulti = new SubmitSM();
submitSMMulti.setProtocolId(PROTOCOL_ID);
**submitSMMulti.setDataCoding(DATA_CODING);**
setScheduleDate(message, submitSMMulti);
submitSMMulti.setSourceAddr(mSrcAddress);
submitSMMulti.setDestAddr(mDestAddress);
submitSMMulti.setEsmClass((byte)0x40);
messageArray = XSMSProcessUtil.getMultiMessages(message.getMessage(), numSegments);
SubmitSMResp submitSMResp = null;
for(int count = 0; count < messageArray.length; count++)
{
submitSMMulti.setSequenceNumber(message.getSequence() + count);
messageAux = messageArray[count];
ByteBuffer ed = new ByteBuffer();
ed.appendByte((byte)5);
ed.appendByte((byte)0x00);
ed.appendByte((byte)3);
ed.appendByte((byte)message.getSequence());
ed.appendByte((byte)numSegments);
ed.appendByte((byte)(count +1));
**ed.appendString(messageAux, Data.ENC_UTF16);**
submitSMMulti.setShortMessageData(ed);
submitSMResp = mSession.submit(submitSMMulti);
}
}