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;
}
}
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;
}
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);
}
}
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());
}
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);
}
Aggregations