use of com.zx.sms.codec.smpp.msg.DeliverSm in project SMSGate by Lihuanghe.
the class DeliverSmReceiptCodec method encode.
@Override
protected void encode(ChannelHandlerContext ctx, DeliverSmReceipt msg, List<Object> out) throws Exception {
DeliverSm pdu = new DeliverSm();
pdu.setCommandStatus(msg.getCommandStatus());
pdu.setSequenceNumber(msg.getSequenceNumber());
pdu.setServiceType(msg.getServiceType());
pdu.setSourceAddress(msg.getSourceAddress());
pdu.setDestAddress(msg.getDestAddress());
pdu.setEsmClass(msg.getEsmClass());
pdu.setProtocolId(msg.getProtocolId());
pdu.setPriority(msg.getPriority());
pdu.setScheduleDeliveryTime(msg.getScheduleDeliveryTime());
pdu.setValidityPeriod(msg.getValidityPeriod());
pdu.setRegisteredDelivery(msg.getRegisteredDelivery());
pdu.setReplaceIfPresent(msg.getReplaceIfPresent());
pdu.setDataCoding(msg.getDataCoding());
pdu.setDefaultMsgId(msg.getDefaultMsgId());
pdu.setShortMessage(msg.getShortMessage());
pdu.setMsglength((short) msg.getShortMessage().length);
if (msg.getOptionalParameters() != null)
for (Tlv tlv : msg.getOptionalParameters()) {
pdu.addOptionalParameter(tlv);
}
out.add(pdu);
}
use of com.zx.sms.codec.smpp.msg.DeliverSm in project SMSGate by Lihuanghe.
the class SMPPMessageCodec method decode.
@Override
protected void decode(ChannelHandlerContext ctx, ByteBuf msg, List<Object> out) throws Exception {
try {
Pdu pdu = transcoder.decode(msg);
if (pdu != null) {
if (pdu instanceof DeliverSm) {
DeliverSm deli = (DeliverSm) pdu;
reportcodec.decode(ctx, deli, out);
} else {
out.add(pdu);
}
}
} catch (Exception e) {
logger.error("", e);
}
}
use of com.zx.sms.codec.smpp.msg.DeliverSm in project SMSGate by Lihuanghe.
the class TestBaseSmCodec method decodeLargeSequenceNumber.
@Test
public void decodeLargeSequenceNumber() throws Exception {
ByteBuf buffer = Unpooled.wrappedBuffer(Hex.decodeHex("000000400000000500000000A2859F22313030310001013434393531333631393230000001343034303430343034303430343034300000000000000000080000".toCharArray()));
DeliverSm pdu0 = (DeliverSm) decode(buffer);
Assert.assertEquals(64, pdu0.getCommandLength());
Assert.assertEquals(SmppConstants.CMD_ID_DELIVER_SM, pdu0.getCommandId());
Assert.assertEquals(0, pdu0.getCommandStatus());
Assert.assertEquals(-1568301278, pdu0.getSequenceNumber());
Assert.assertEquals(true, pdu0.isRequest());
Assert.assertEquals("1001", pdu0.getServiceType());
Assert.assertEquals(0x01, pdu0.getSourceAddress().getTon());
Assert.assertEquals(0x01, pdu0.getSourceAddress().getNpi());
Assert.assertEquals("44951361920", pdu0.getSourceAddress().getAddress());
Assert.assertEquals(0x00, pdu0.getDestAddress().getTon());
Assert.assertEquals(0x01, pdu0.getDestAddress().getNpi());
Assert.assertEquals("4040404040404040", pdu0.getDestAddress().getAddress());
Assert.assertEquals(0x00, pdu0.getEsmClass());
Assert.assertEquals(0x00, pdu0.getProtocolId());
Assert.assertEquals(0x00, pdu0.getPriority());
Assert.assertEquals("", pdu0.getScheduleDeliveryTime());
Assert.assertEquals("", pdu0.getValidityPeriod());
Assert.assertEquals(0x00, pdu0.getRegisteredDelivery());
Assert.assertEquals(0x00, pdu0.getReplaceIfPresent());
Assert.assertEquals(0x08, pdu0.getDataCoding());
Assert.assertEquals(0x00, pdu0.getDefaultMsgId());
Assert.assertEquals(0, pdu0.getMsglength());
System.out.println(pdu0);
}
use of com.zx.sms.codec.smpp.msg.DeliverSm in project SMSGate by Lihuanghe.
the class TestBaseSmCodec method decodeDeliverSmWithDeliveryReceiptThatFailedFromEndToEnd.
@Test
public void decodeDeliverSmWithDeliveryReceiptThatFailedFromEndToEnd() throws Exception {
ByteBuf buffer = Unpooled.wrappedBuffer(Hex.decodeHex("000000A2000000050000000000116AD500010134343935313336313932303537000501475442616E6B000400000000010000006E69643A3934323531343330393233207375623A30303120646C7672643A303031207375626D697420646174653A3039313130343031323420646F6E6520646174653A3039313130343031323420737461743A41434345505444206572723A31303720746578743A20323646313032".toCharArray()));
DeliverSm pdu0 = (DeliverSm) decode(buffer);
Assert.assertEquals(162, pdu0.getCommandLength());
Assert.assertEquals(SmppConstants.CMD_ID_DELIVER_SM, pdu0.getCommandId());
Assert.assertEquals(0, pdu0.getCommandStatus());
Assert.assertEquals(1141461, pdu0.getSequenceNumber());
Assert.assertEquals(true, pdu0.isRequest());
Assert.assertEquals("", pdu0.getServiceType());
Assert.assertEquals(0x01, pdu0.getSourceAddress().getTon());
Assert.assertEquals(0x01, pdu0.getSourceAddress().getNpi());
Assert.assertEquals("4495136192057", pdu0.getSourceAddress().getAddress());
Assert.assertEquals(0x05, pdu0.getDestAddress().getTon());
Assert.assertEquals(0x01, pdu0.getDestAddress().getNpi());
Assert.assertEquals("GTBank", pdu0.getDestAddress().getAddress());
Assert.assertEquals(0x04, pdu0.getEsmClass());
Assert.assertEquals(0x00, pdu0.getProtocolId());
Assert.assertEquals(0x00, pdu0.getPriority());
Assert.assertEquals("", pdu0.getScheduleDeliveryTime());
Assert.assertEquals("", pdu0.getValidityPeriod());
Assert.assertEquals(0x01, pdu0.getRegisteredDelivery());
Assert.assertEquals(0x00, pdu0.getReplaceIfPresent());
Assert.assertEquals(0x00, pdu0.getDataCoding());
Assert.assertEquals(0x00, pdu0.getDefaultMsgId());
// Assert.assertArrayEquals(HexUtil.toByteArray("69643a3934323531343330393233207375623a30303120646c7672643a303031207375626d697420646174653a3039313130343031323420646f6e6520646174653a3039313130343031323420737461743a41434345505444206572723a31303720746578743a20323646313032"), pdu0.getShortMessage());
Assert.assertEquals(0, pdu0.getOptionalParameterCount());
// interesting -- this example has optional parameters it happened to skip...
Assert.assertEquals(0, buffer.readableBytes());
}
use of com.zx.sms.codec.smpp.msg.DeliverSm in project SMSGate by Lihuanghe.
the class SMPPMessageReceiveHandler method reponse.
@Override
protected ChannelFuture reponse(final ChannelHandlerContext ctx, Object msg) {
if (msg instanceof DeliverSmReceipt) {
DeliverSmResp res = ((DeliverSm) msg).createResponse();
res.setMessageId(String.valueOf(System.currentTimeMillis()));
return ctx.writeAndFlush(res);
} else if (msg instanceof DeliverSm) {
DeliverSmResp res = ((DeliverSm) msg).createResponse();
String msgcontent = ((DeliverSm) msg).getMsgContent();
res.setMessageId(DigestUtils.md5Hex(msgcontent.getBytes(StandardCharsets.UTF_8)));
return ctx.writeAndFlush(res);
} else if (msg instanceof SubmitSm) {
SubmitSmResp res = ((SubmitSm) msg).createResponse();
String msgcontent = ((SubmitSm) msg).getMsgContent();
byte[] receive = msgcontent.getBytes(StandardCharsets.UTF_8);
res.setMessageId(DigestUtils.md5Hex(receive));
ChannelFuture future = ctx.writeAndFlush(res);
List<SubmitSm> frags = ((SubmitSm) msg).getFragments();
if (frags != null && !frags.isEmpty()) {
for (SubmitSm fragment : frags) {
SubmitSmResp fragres = ((SubmitSm) fragment).createResponse();
res.setMessageId(String.valueOf(System.currentTimeMillis()));
ctx.writeAndFlush(fragres);
if (((SubmitSm) msg).getRegisteredDelivery() == 1) {
DeliverSmReceipt report = new DeliverSmReceipt();
report.setId(String.valueOf(fragment.getSequenceNumber()));
report.setSourceAddress(((SubmitSm) msg).getDestAddress());
report.setDestAddress(((SubmitSm) msg).getSourceAddress());
report.setStat("DELIVRD");
report.setText(fragment.getMsgContent());
report.setSubmit_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
report.setDone_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
ctx.writeAndFlush(report);
}
}
}
if (((SubmitSm) msg).getRegisteredDelivery() == 1) {
DeliverSmReceipt report = new DeliverSmReceipt();
report.setId(String.valueOf(res.getSequenceNumber()));
report.setSourceAddress(((SubmitSm) msg).getDestAddress());
report.setDestAddress(((SubmitSm) msg).getSourceAddress());
report.setStat("DELIVRD");
report.setText(((SubmitSm) msg).getMsgContent());
report.setSubmit_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
report.setDone_date(DateFormatUtils.format(new Date(), "yyMMddHHmm"));
try {
ChannelUtil.syncWriteLongMsgToEntity(getEndpointEntity(), report);
} catch (Exception e) {
e.printStackTrace();
}
}
return future;
}
return null;
}
Aggregations