Search in sources :

Example 1 with DeliverSmReceipt

use of com.zx.sms.codec.smpp.msg.DeliverSmReceipt in project SMSGate by Lihuanghe.

the class DeliverSmReceiptCodec method decode.

@Override
protected void decode(ChannelHandlerContext ctx, DeliverSm msg, List<Object> out) throws Exception {
    /*

x x 0 0 0 0 x x Default message Type (i.e. normal message)
x x 0 0 0 1 x x Short Message contains SMSC Delivery Receipt
x x 0 0 1 0 x x Short Message contains SME Delivery Acknowledgement
x x 0 0 1 1 x x reserved
x x 0 1 0 0 x x Short Message contains SME Manual/User Acknowledgment
x x 0 1 0 1 x x reserved
x x 0 1 1 0 x x Short Message contains Conversation Abort (Korean CDMA)
x x 0 1 1 1 x x reserved
x x 1 0 0 0 x x Short Message contains Intermediate Delivery Notification 
		 * */
    if ((msg.getEsmClass() & 0x3c) == 0x04) {
        // 状态报告解析
        DeliverSmReceipt pdu = new DeliverSmReceipt();
        pdu.setCommandLength(msg.getCommandLength());
        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());
        if (msg.getOptionalParameters() != null)
            for (Tlv tlv : msg.getOptionalParameters()) {
                pdu.addOptionalParameter(tlv);
            }
        out.add(pdu);
    } else {
        out.add(msg);
    }
}
Also used : DeliverSmReceipt(com.zx.sms.codec.smpp.msg.DeliverSmReceipt)

Example 2 with DeliverSmReceipt

use of com.zx.sms.codec.smpp.msg.DeliverSmReceipt 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)

Example 3 with DeliverSmReceipt

use of com.zx.sms.codec.smpp.msg.DeliverSmReceipt in project SMSGate by Lihuanghe.

the class SMPPSessionConnectedHandler method channelRead.

public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {
    if (msg instanceof DeliverSmReceipt) {
        DeliverSmReceipt e = (DeliverSmReceipt) msg;
        DeliverSmResp res = e.createResponse();
        res.setMessageId(String.valueOf(System.currentTimeMillis()));
        ctx.writeAndFlush(res);
    } else {
        ctx.fireChannelRead(msg);
    }
}
Also used : DeliverSmReceipt(com.zx.sms.codec.smpp.msg.DeliverSmReceipt) DeliverSmResp(com.zx.sms.codec.smpp.msg.DeliverSmResp)

Example 4 with DeliverSmReceipt

use of com.zx.sms.codec.smpp.msg.DeliverSmReceipt in project SMSGate by Lihuanghe.

the class SMPPMessageCodec method encode.

@Override
protected void encode(ChannelHandlerContext ctx, Pdu msg, List<Object> out) throws Exception {
    try {
        if (msg instanceof DeliverSmReceipt) {
            List<Object> deliout = new ArrayList(1);
            reportcodec.encode(ctx, (DeliverSmReceipt) msg, deliout);
            Pdu deli = (DeliverSm) deliout.get(0);
            ByteBuf buf = transcoder.encode(deli, ctx.alloc());
            out.add(buf);
        } else {
            ByteBuf buf = transcoder.encode(msg, ctx.alloc());
            out.add(buf);
        }
    } catch (Exception e) {
        logger.error("", e);
    }
}
Also used : Pdu(com.zx.sms.codec.smpp.msg.Pdu) DeliverSmReceipt(com.zx.sms.codec.smpp.msg.DeliverSmReceipt) ArrayList(java.util.ArrayList) ByteBuf(io.netty.buffer.ByteBuf) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Example 5 with DeliverSmReceipt

use of com.zx.sms.codec.smpp.msg.DeliverSmReceipt in project SMSGate by Lihuanghe.

the class TestBaseSmCodec method testdeliverSmReceipt.

@Test
public void testdeliverSmReceipt() throws SmppInvalidArgumentException {
    DeliverSmReceipt report = new DeliverSmReceipt();
    String reportString = "  id:94251430923 submit date:0911040124 done date:0911040124 stat:ACCEPTD err:107   ";
    report.setShortMessage(reportString.getBytes());
    System.out.println(report.toString());
}
Also used : DeliverSmReceipt(com.zx.sms.codec.smpp.msg.DeliverSmReceipt) Test(org.junit.Test)

Aggregations

DeliverSmReceipt (com.zx.sms.codec.smpp.msg.DeliverSmReceipt)5 DeliverSm (com.zx.sms.codec.smpp.msg.DeliverSm)2 DeliverSmResp (com.zx.sms.codec.smpp.msg.DeliverSmResp)2 Pdu (com.zx.sms.codec.smpp.msg.Pdu)1 SubmitSm (com.zx.sms.codec.smpp.msg.SubmitSm)1 SubmitSmResp (com.zx.sms.codec.smpp.msg.SubmitSmResp)1 ByteBuf (io.netty.buffer.ByteBuf)1 ChannelFuture (io.netty.channel.ChannelFuture)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 Test (org.junit.Test)1