有没有办法从cloudhopper的哪个会话中收到短信?

问题描述

我已经将 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 (将#修改为@)