J'ai un problème où je ne peux pas envoyer de SMS de plus de 255 mots. J'ai fait quelques recherches sur la façon de concaténer les messages, mais je n'arrive toujours pas à le faire fonctionner. Quelqu'un peut-il me conseiller à ce sujet? Voici mon code:Concaténer SMS via SMPP
private int SMSMt(String pstrLoginName, String pstrServiceID, String
pstrCPID, String pstrMSISDN, String pstrKeyword, String pstrPriceCode,
String pstrChargeMSISDN, String pstrSubID, String pstrDstTrxID, String
pstrShortCode, String pstrSMS, String pstrLanguage, SubmitResult pobjRst)
{
int intResult = 0;
try
{
if (!this.mobjSMPP.mblnBound)
{
intResult = 9910;
}
else
{
SubmitSM objReq = new SubmitSM();
Address objSrcAddress = new Address();
Address objDstAddress = new Address();
objSrcAddress.setNpi((byte)1);
objSrcAddress.setTon((byte)0);
objSrcAddress.setAddress(pstrShortCode);
objDstAddress.setNpi((byte)1);
objDstAddress.setTon((byte)0);
objDstAddress.setAddress(pstrMSISDN);
objReq.setServiceType("");
objReq.setSourceAddr(objSrcAddress);
objReq.setDestAddr(objDstAddress);
objReq.setReplaceIfPresentFlag((byte)0);
objReq.setScheduleDeliveryTime("");
objReq.setValidityPeriod("");
objReq.setPriorityFlag((byte)1);
objReq.setRegisteredDelivery((byte)1);
objReq.setUserMessageReference((short)25);
WriteLog("pstrLanguage=" + pstrLanguage);
if (pstrLanguage.equals("1")) {
objReq.setDataCoding((byte)8);
WriteLog("Ori pstrSMS=" + pstrSMS);
objReq.setShortMessage(pstrSMS,"UTF_16BE");
//String HexStr = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "\u0eaa" + "C");
//WriteLog("HexStr=" + HexStr);
//pstrSMS = stringToHex(pstrSMS);
//StringConverter TestRun = new StringConverter(pstrSMS);
/*pstrSMS = HexStr;*/
//pstrSMS = new String("\u0eaa");
//pstrSMS = new String("0x0eaa");
/*pstrSMS = "世界您好";
WriteLog("Ori pstrSMS=" + pstrSMS);
//byte[] messageData = new ASCIIEncoding().encode(pstrSMS);
byte[] b = s.getBytes(StandardCharsets.US_ASCII);*/
WriteLog("Ori pstrSMS [unicode]=" + pstrSMS);
//byte[] textByte = pstrSMS.getBytes("UTF-16BE");
//WriteLog("HexCode [encoded with UTF-16BE]= " + textByte);
//pstrSMS = textByte.toString(); //cannot convert byte[] to string
}
else {
objReq.setDataCoding((byte)0);
objReq.setShortMessage(pstrSMS);
}
Avez-vous trouvé ma réponse utile, ou avez-vous besoin d'aide? – Marvin
vous pouvez utiliser message_payload tlv pour gérer plus de 255 bytes sms (si supporté par votre smsc). OU utiliser l'ancien User Data Header (UDH) + fragement de la méthode de message – rajesh6115