问题描述
我已经将 2 个会话绑定到我的 SMPPGW 并编写了一个 ClientSmppSessionHandler 类来处理这样的传入消息: `
公共类 ClientSmppSessionHandler 扩展了 DefaultSmppSessionHandler {
private String mapDataCodingToCharset(byte dataCoding) {
switch (dataCoding) {
case SmppConstants.DATA_CODING_LATIN1:
return CharsetUtil.NAME_ISO_8859_1;
case SmppConstants.DATA_CODING_UCS2:
return CharsetUtil.NAME_UCS_2;
case SmppConstants.DATA_CODING_DEFAULT:
return CharsetUtil.NAME_GSM;
default:
return CharsetUtil.NAME_UTF_8;
}
}
@Override
@SuppressWarnings("rawtypes")
public PduResponse firePduRequestReceived(PduRequest request) {
PduResponse response = null;
try {
if (request instanceof DeliverSm) {
String sourceAddress = ((DeliverSm) request).getSourceAddress().getAddress();
String message = CharsetUtil.decode(((DeliverSm) request).getShortMessage(),mapDataCodingToCharset(((DeliverSm) request).getDataCoding()));
System.out.println("SMS Message Received: {"+ message.trim()+"},Source Address: {"+ sourceAddress+"}");
boolean isDeliveryReceipt = false;
isDeliveryReceipt = SmppUtil.isMessageTypeAnyDeliveryReceipt(
((DeliverSm) request).getEsmClass());
if (isDeliveryReceipt) {
DeliveryReceipt dlr = DeliveryReceipt.parseShortMessage(message,DateTimeZone.forTimeZone(TimeZone.getTimeZone("UTC")));
// logging delivery here,but you can do something more useful over here
System.out.println("Received delivery from {} at {} with message-id {} and status {}"+ sourceAddress +
dlr.getDoneDate() + dlr.getMessageId() + DeliveryReceipt.toStateText(dlr.getState()));
}
}
response = request.createResponse();
} catch (Throwable error) {
System.out.println("Error while handling delivery"+ error);
response = request.createResponse();
response.setResultMessage(error.getMessage());
response.setCommandStatus(SmppConstants.STATUS_UNKNOWNERR);
}
return response;
}
}`
我想通过收到消息的会话向 sourceAddress 发送回复消息。像这样:
- session1 收到一个 sms-1 “hello 1”。那么我怎么知道 sms-1 来自 session1 呢?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)