Я использую OpenSmpp lib для привязки в качестве приемопередатчика к SMS C для получения сообщений, как я могу проанализировать полученный PDU, чтобы извлечь текст сообщения и прочитать его на арабском c. Я получаю следующий PDU:
(доставьте: (pdu: 192 5 0 2) (addr: 5 0 Test) (addr: 1 1 2010xxxxxxxx) (sm: msg:
15J / -3 '(C AI AH /' AHF C '4' D-'DJ 1,86, FJG DH 9'J2 * -HD ADH3 D # J) (опция:))
Также вот мой код:
public void receive(long receiveTimeout) {
try {
PDU pdu = null;
System.out.print(LocalDateTime.now() + " -- " + Thread.currentThread().getStackTrace()[1].getMethodName()
+ " -- Going to receive a PDU. \n");
if (asynchronous) {
pduListener = new SMPPPDUEventListener(session);
ServerPDUEvent pduEvent = pduListener.getRequestEvent(receiveTimeout);
if (pduEvent != null) {
pdu = pduEvent.getPDU();
}
} else {
pdu = session.receive(receiveTimeout);
}
if (pdu != null) {
System.out.println(LocalDateTime.now() + " -- " + Thread.currentThread().getStackTrace()[1].getMethodName()
+ " -- Received PDU: " + pdu.debugString());
if (pdu.isRequest()) {
Response response = ((Request) pdu).getResponse();
// respond with default response
System.out.println(
LocalDateTime.now() + " -- " + Thread.currentThread().getStackTrace()[1].getMethodName()
+ " -- Going to send default response to request " + response.debugString());
session.respond(response);
}
} else {
System.out.println(LocalDateTime.now() + " -- "
+ Thread.currentThread().getStackTrace()[1].getMethodName() + " -- No PDU received this time.");
}
} catch (Exception e) {
System.out.println(
LocalDateTime.now() + " -- " + Thread.currentThread().getStackTrace()[1].getMethodName() + " -- " + e);
}
}
}