Search in sources :

Example 1 with DeliverSm

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);
}
Also used : DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Example 2 with DeliverSm

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);
    }
}
Also used : Pdu(com.zx.sms.codec.smpp.msg.Pdu) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Example 3 with DeliverSm

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);
}
Also used : ByteBuf(io.netty.buffer.ByteBuf) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm) Test(org.junit.Test)

Example 4 with DeliverSm

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());
}
Also used : ByteBuf(io.netty.buffer.ByteBuf) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm) Test(org.junit.Test)

Example 5 with DeliverSm

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;
}
Also used : ChannelFuture(io.netty.channel.ChannelFuture) DeliverSmReceipt(com.zx.sms.codec.smpp.msg.DeliverSmReceipt) SubmitSmResp(com.zx.sms.codec.smpp.msg.SubmitSmResp) SubmitSm(com.zx.sms.codec.smpp.msg.SubmitSm) Date(java.util.Date) UnsupportedEncodingException(java.io.UnsupportedEncodingException) DeliverSmResp(com.zx.sms.codec.smpp.msg.DeliverSmResp) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Aggregations

DeliverSm (com.zx.sms.codec.smpp.msg.DeliverSm)10 ByteBuf (io.netty.buffer.ByteBuf)4 Test (org.junit.Test)4 Pdu (com.zx.sms.codec.smpp.msg.Pdu)3 SubmitSm (com.zx.sms.codec.smpp.msg.SubmitSm)3 DeliverSmReceipt (com.zx.sms.codec.smpp.msg.DeliverSmReceipt)2 DeliverSmResp (com.zx.sms.codec.smpp.msg.DeliverSmResp)2 SubmitSmResp (com.zx.sms.codec.smpp.msg.SubmitSmResp)2 Address (com.zx.sms.codec.smpp.Address)1 AlertNotification (com.zx.sms.codec.smpp.msg.AlertNotification)1 BindReceiver (com.zx.sms.codec.smpp.msg.BindReceiver)1 BindReceiverResp (com.zx.sms.codec.smpp.msg.BindReceiverResp)1 BindTransceiver (com.zx.sms.codec.smpp.msg.BindTransceiver)1 BindTransceiverResp (com.zx.sms.codec.smpp.msg.BindTransceiverResp)1 BindTransmitter (com.zx.sms.codec.smpp.msg.BindTransmitter)1 BindTransmitterResp (com.zx.sms.codec.smpp.msg.BindTransmitterResp)1 CancelSm (com.zx.sms.codec.smpp.msg.CancelSm)1 CancelSmResp (com.zx.sms.codec.smpp.msg.CancelSmResp)1 DataSm (com.zx.sms.codec.smpp.msg.DataSm)1 DataSmResp (com.zx.sms.codec.smpp.msg.DataSmResp)1