Search in sources :

Example 6 with DeliverSm

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

the class SMPPSessionConnectedHandler method createTestReq.

@Override
protected BaseMessage createTestReq(String str) {
    final EndpointEntity finalentity = getEndpointEntity();
    // String content = "£$¥èéùì@";
    if (finalentity instanceof ServerEndpoint) {
        DeliverSm pdu = new DeliverSm();
        pdu.setSourceAddress(new Address((byte) 0, (byte) 0, "13800138000"));
        pdu.setDestAddress(new Address((byte) 0, (byte) 0, "10086"));
        // pdu.setSmsMsg(new SmsTextMessage(content,SmsDcs.getGeneralDataCodingDcs(SmsAlphabet.GSM,SmsMsgClass.CLASS_UNKNOWN)));
        pdu.setSmsMsg(str);
        return pdu;
    } else {
        SubmitSm pdu = new SubmitSm();
        pdu.setRegisteredDelivery((byte) 0);
        pdu.setSourceAddress(new Address((byte) 0, (byte) 0, "10086"));
        pdu.setDestAddress(new Address((byte) 0, (byte) 0, "13800138000"));
        // pdu.setSmsMsg(new SmsTextMessage(content,SmsDcs.getGeneralDataCodingDcs(SmsAlphabet.GSM,SmsMsgClass.CLASS_UNKNOWN)));
        pdu.setSmsMsg(str);
        return pdu;
    }
}
Also used : Address(com.zx.sms.codec.smpp.Address) SubmitSm(com.zx.sms.codec.smpp.msg.SubmitSm) ServerEndpoint(com.zx.sms.connect.manager.ServerEndpoint) EndpointEntity(com.zx.sms.connect.manager.EndpointEntity) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Example 7 with DeliverSm

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

the class DefaultPduTranscoder method doDecode.

protected Pdu doDecode(int commandLength, ByteBuf buffer) throws UnrecoverablePduException, RecoverablePduException {
    // skip the length field because we already parsed it
    buffer.skipBytes(SmppConstants.PDU_INT_LENGTH);
    // read the remaining portion of the PDU header
    int commandId = buffer.readInt();
    int commandStatus = buffer.readInt();
    int sequenceNumber = buffer.readInt();
    Pdu pdu = null;
    // any command id with its 31st bit set to true is a response
    if (PduUtil.isRequestCommandId(commandId)) {
        if (commandId == SmppConstants.CMD_ID_ENQUIRE_LINK) {
            pdu = new EnquireLink();
        } else if (commandId == SmppConstants.CMD_ID_DELIVER_SM) {
            pdu = new DeliverSm();
        } else if (commandId == SmppConstants.CMD_ID_SUBMIT_SM) {
            pdu = new SubmitSm();
        } else if (commandId == SmppConstants.CMD_ID_DATA_SM) {
            pdu = new DataSm();
        } else if (commandId == SmppConstants.CMD_ID_CANCEL_SM) {
            pdu = new CancelSm();
        } else if (commandId == SmppConstants.CMD_ID_QUERY_SM) {
            pdu = new QuerySm();
        } else if (commandId == SmppConstants.CMD_ID_REPLACE_SM) {
            pdu = new ReplaceSm();
        } else if (commandId == SmppConstants.CMD_ID_BIND_TRANSCEIVER) {
            pdu = new BindTransceiver();
        } else if (commandId == SmppConstants.CMD_ID_BIND_TRANSMITTER) {
            pdu = new BindTransmitter();
        } else if (commandId == SmppConstants.CMD_ID_BIND_RECEIVER) {
            pdu = new BindReceiver();
        } else if (commandId == SmppConstants.CMD_ID_UNBIND) {
            pdu = new Unbind();
        } else if (commandId == SmppConstants.CMD_ID_ALERT_NOTIFICATION) {
            pdu = new AlertNotification();
        } else {
            pdu = new PartialPdu(commandId);
        }
    } else {
        if (commandId == SmppConstants.CMD_ID_SUBMIT_SM_RESP) {
            pdu = new SubmitSmResp();
        } else if (commandId == SmppConstants.CMD_ID_DELIVER_SM_RESP) {
            pdu = new DeliverSmResp();
        } else if (commandId == SmppConstants.CMD_ID_DATA_SM_RESP) {
            pdu = new DataSmResp();
        } else if (commandId == SmppConstants.CMD_ID_CANCEL_SM_RESP) {
            pdu = new CancelSmResp();
        } else if (commandId == SmppConstants.CMD_ID_QUERY_SM_RESP) {
            pdu = new QuerySmResp();
        } else if (commandId == SmppConstants.CMD_ID_REPLACE_SM_RESP) {
            pdu = new ReplaceSmResp();
        } else if (commandId == SmppConstants.CMD_ID_ENQUIRE_LINK_RESP) {
            pdu = new EnquireLinkResp();
        } else if (commandId == SmppConstants.CMD_ID_BIND_TRANSCEIVER_RESP) {
            pdu = new BindTransceiverResp();
        } else if (commandId == SmppConstants.CMD_ID_BIND_RECEIVER_RESP) {
            pdu = new BindReceiverResp();
        } else if (commandId == SmppConstants.CMD_ID_BIND_TRANSMITTER_RESP) {
            pdu = new BindTransmitterResp();
        } else if (commandId == SmppConstants.CMD_ID_UNBIND_RESP) {
            pdu = new UnbindResp();
        } else if (commandId == SmppConstants.CMD_ID_GENERIC_NACK) {
            pdu = new GenericNack();
        } else {
            pdu = new PartialPduResp(commandId);
        }
    }
    // set pdu header values
    pdu.setCommandLength(commandLength);
    pdu.setCommandStatus(commandStatus);
    pdu.setSequenceNumber(sequenceNumber);
    // check if we need to throw an exception
    if (pdu instanceof PartialPdu) {
        throw new UnknownCommandIdException(pdu, "Unsupported or unknown PDU request commandId [0x" + HexUtil.toHexString(commandId) + "]");
    } else if (pdu instanceof PartialPduResp) {
        throw new UnknownCommandIdException(pdu, "Unsupported or unknown PDU response commandId [0x" + HexUtil.toHexString(commandId) + "]");
    }
    // see if we can map the command status into a message
    if (pdu instanceof PduResponse) {
        PduResponse response = (PduResponse) pdu;
        response.setResultMessage(context.lookupResultMessage(commandStatus));
    }
    try {
        // parse pdu body parameters (may throw exception)
        pdu.readBody(buffer);
        // parse pdu optional parameters (may throw exception)
        pdu.readOptionalParameters(buffer, context);
    } catch (RecoverablePduException e) {
        // check if we should add the partial pdu to the exception
        if (e.getPartialPdu() == null) {
            e.setPartialPdu(pdu);
        }
        // rethrow it
        throw e;
    }
    return pdu;
}
Also used : BindTransceiver(com.zx.sms.codec.smpp.msg.BindTransceiver) BindReceiverResp(com.zx.sms.codec.smpp.msg.BindReceiverResp) GenericNack(com.zx.sms.codec.smpp.msg.GenericNack) PduResponse(com.zx.sms.codec.smpp.msg.PduResponse) ReplaceSm(com.zx.sms.codec.smpp.msg.ReplaceSm) BindTransmitter(com.zx.sms.codec.smpp.msg.BindTransmitter) ReplaceSmResp(com.zx.sms.codec.smpp.msg.ReplaceSmResp) DataSmResp(com.zx.sms.codec.smpp.msg.DataSmResp) PartialPdu(com.zx.sms.codec.smpp.msg.PartialPdu) EnquireLink(com.zx.sms.codec.smpp.msg.EnquireLink) DataSm(com.zx.sms.codec.smpp.msg.DataSm) SubmitSm(com.zx.sms.codec.smpp.msg.SubmitSm) CancelSm(com.zx.sms.codec.smpp.msg.CancelSm) QuerySmResp(com.zx.sms.codec.smpp.msg.QuerySmResp) DeliverSmResp(com.zx.sms.codec.smpp.msg.DeliverSmResp) PartialPdu(com.zx.sms.codec.smpp.msg.PartialPdu) Pdu(com.zx.sms.codec.smpp.msg.Pdu) AlertNotification(com.zx.sms.codec.smpp.msg.AlertNotification) QuerySm(com.zx.sms.codec.smpp.msg.QuerySm) BindReceiver(com.zx.sms.codec.smpp.msg.BindReceiver) EnquireLinkResp(com.zx.sms.codec.smpp.msg.EnquireLinkResp) CancelSmResp(com.zx.sms.codec.smpp.msg.CancelSmResp) BindTransmitterResp(com.zx.sms.codec.smpp.msg.BindTransmitterResp) BindTransceiverResp(com.zx.sms.codec.smpp.msg.BindTransceiverResp) UnbindResp(com.zx.sms.codec.smpp.msg.UnbindResp) SubmitSmResp(com.zx.sms.codec.smpp.msg.SubmitSmResp) PartialPduResp(com.zx.sms.codec.smpp.msg.PartialPduResp) Unbind(com.zx.sms.codec.smpp.msg.Unbind) DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm)

Example 8 with DeliverSm

use of com.zx.sms.codec.smpp.msg.DeliverSm 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 9 with DeliverSm

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

the class TestBaseSmCodec method decodeDeliveryReceipt0.

@Test
public void decodeDeliveryReceipt0() throws Exception {
    ByteBuf buffer = Unpooled.wrappedBuffer(Hex.decodeHex("000000EB00000005000000000000000100010134343935313336313932300000013430343034000400000000000003009069643A3132366538356136656465616331613032303230303939333132343739353634207375623A30303120646C7672643A303031207375626D697420646174653A3130303231393136333020646F6E6520646174653A3130303231393136333020737461743A44454C49565244206572723A30303020546578743A48656C6C6F2020202020202020202020202020200427000102001E0021313236653835613665646561633161303230323030393933313234373935363400".toCharArray()));
    DeliverSm pdu0 = (DeliverSm) decode(buffer);
    Assert.assertEquals(235, pdu0.getCommandLength());
    Assert.assertEquals(SmppConstants.CMD_ID_DELIVER_SM, pdu0.getCommandId());
    Assert.assertEquals(0, pdu0.getCommandStatus());
    Assert.assertEquals(1, 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("44951361920", pdu0.getSourceAddress().getAddress());
    Assert.assertEquals(0x00, pdu0.getDestAddress().getTon());
    Assert.assertEquals(0x01, pdu0.getDestAddress().getNpi());
    Assert.assertEquals("40404", 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(0x00, pdu0.getRegisteredDelivery());
    Assert.assertEquals(0x00, pdu0.getReplaceIfPresent());
    Assert.assertEquals(0x03, pdu0.getDataCoding());
    Assert.assertEquals(0x00, pdu0.getDefaultMsgId());
    // Assert.assertArrayEquals(HexUtil.toByteArray("69643a3934323531343330393233207375623a30303120646c7672643a303031207375626d697420646174653a3039313130343031323420646f6e6520646174653a3039313130343031323420737461743a41434345505444206572723a31303720746578743a20323646313032"), pdu0.getShortMessage());
    Assert.assertEquals(2, pdu0.getOptionalParameterCount());
    System.out.println(pdu0);
    for (Tlv tlv : pdu0.getOptionalParameters()) {
        System.out.println(tlv.getTagName() + ":" + HexUtil.toHexString(tlv.getValue()));
    }
    // 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 10 with DeliverSm

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

the class TestBaseSmCodec method testLongmDeliverSm.

@Test
public void testLongmDeliverSm() {
    DeliverSm pdu = new DeliverSm();
    pdu.setDestAddress(new Address((byte) 0, (byte) 0, "1111"));
    pdu.setSourceAddress(new Address((byte) 0, (byte) 0, "2222"));
    pdu.setSmsMsg("尊敬的客户,您好!您于2016-03-23 14:51:36通过中国移动10085销售专线订购的【一加手机高清防刮保护膜】,请点击支付http://www.10085.cn/web85/page/zyzxpay/wap_order.html?orderId=76DEF9AE1808F506FD4E6CB782E3B8E7EE875E766D3D335C 完成下单。请在60分钟内完成支付,如有疑问,请致电10085咨询,谢谢!中国移动10085");
    testlongCodec(pdu);
}
Also used : DeliverSm(com.zx.sms.codec.smpp.msg.DeliverSm) Test(org.junit.Test)

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