gpt4 book ai didi

java - 寻找一种从 cloudhopper smpp 服务器返回 DeliverSmResp 和错误代码的方法

转载 作者:行者123 更新时间:2023-12-02 06:25:33 35 4
gpt4 key购买 nike

我正在寻找一种将 SMPP 错误代码从服务器发送到连接的客户端的方法。我的流程是:1.客户端发送短信到我的服务器2.我将其发送到另一个系统3.当我收到消息状态时(最多可能需要 72 小时)我想将结果发送回作为接收器连接的客户端。我还注意到,当我将其发送给客户时,我看到:

Default handling is to discard unexpected response PDU: (submit_sm_resp:

public void sendResponsePdu(String dlrId, String status) throws RecoverablePduException, SmppChannelException, UnrecoverablePduException, InterruptedException {
PduResponse pdu = dlrs.remove(dlrId);
if (pdu != null) {
pdu.setResultMessage("0xa");
sendResponsePdu(pdu);
}
}

我寻找一种在发生错误时在方法 sendResponsePdu 上返回 SMPP 错误代码的方法

我希望在客户端中看到错误代码 0xa这意味着“源地址无效”但像往常一样 ESME_ROK我从 C# 项目中获取了图像,我可以在其中看到响应的样子当从 SMSC 发送时 enter image description here

更新我使用下一个代码返回 DLR,但我找不到设置“err”、“stat”和 messageid 的方法 enter link description here

最佳答案

这是设置所有 DLR 字段并将其发送回客户端的解决方案

 byte[] textBytes = "-".getBytes();

DeliverSm deliver = new DeliverSm();

deliver.setSourceAddress(new Address((byte) 0x03, (byte) 0x00, pduResponseWrapper.getFromNumber()));
deliver.setDestAddress(new Address((byte) 0x01, (byte) 0x01, pduResponseWrapper.getToNumber()));
deliver.setShortMessage(textBytes);
deliver.setDataCoding(pduResponseWrapper.getDataCoding());
deliver.setSequenceNumber(pduResponseWrapper.getDeliverSm().getSequenceNumber());
deliver.setEsmClass((byte) 0x04);
deliver.setProtocolId((byte) 0x00);
deliver.setPriority((byte) 0x00);
deliver.setScheduleDeliveryTime(null);
deliver.setValidityPeriod(null);
deliver.setRegisteredDelivery((byte) 0x00);
deliver.setReplaceIfPresent((byte) 0x00);
deliver.setDefaultMsgId((byte) 0x00);

DateTime submitDate = new DateTime();
DateTime doneDate = new DateTime();
byte state=SmppConstants.STATE_DELIVERED;
String errorCode="000";
DeliveryReceipt deliveryReceipt = new DeliveryReceipt(dlrId, 1,
1, submitDate, doneDate,
state, errorCode, "");



String shortMessage = deliveryReceipt.toShortMessage();
deliver.setShortMessage(CharsetUtil.encode(shortMessage, CharsetUtil.CHARSET_GSM)); deliver.calculateAndSetCommandLength();



DataSmResp dd=new DataSmResp();
DeliveryReceipt deliveryReceipt=new DeliveryReceipt();
DeliverSmResp deliverSmResp = new DeliverSmResp();*/


WindowFuture<Integer, PduRequest, PduResponse> future = session.sendRequestPdu(deliver, 10000, false);
if (!future.await()) {
logger.error("Failed to receive deliver_sm_resp within specified time");
} else if (future.isSuccess()) {
DeliverSmResp deliverSmResp = (DeliverSmResp) future.getResponse();
logger.info("deliver_sm_resp: commandStatus [" + deliverSmResp.getCommandStatus() + "=" + deliverSmResp.getResultMessage() + "]");
} else {
logger.error("Failed to properly receive deliver_sm_resp: " + future.getCause());
}
} catch (Exception e) {
}

关于java - 寻找一种从 cloudhopper smpp 服务器返回 DeliverSmResp 和错误代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790198/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com