Search in sources :

Example 1 with SubmitSmResp

use of com.cloudhopper.smpp.pdu.SubmitSmResp in project smscgateway by RestComm.

the class MessageDeliveryResultResponseSmpp method responseDeliverySuccess.

@Override
public void responseDeliverySuccess() {
    PduResponse response = null;
    BaseSm event = null;
    if (eventSubmit != null) {
        event = eventSubmit;
        SubmitSmResp responseSubmit = eventSubmit.createResponse();
        response = responseSubmit;
        responseSubmit.setMessageId(((Long) messageId).toString());
    }
    if (eventData != null) {
        event = eventData;
        DataSmResp responseData = eventData.createResponse();
        response = responseData;
        responseData.setMessageId(((Long) messageId).toString());
    }
    // Lets send the Response with success here
    try {
        if (response != null) {
            this.smppSessions.sendResponsePdu(esme, event, response);
        }
    } catch (Throwable e) {
        this.logger.severe("Error while trying to send SubmitSmResponse=" + response, e);
    }
}
Also used : PduResponse(com.cloudhopper.smpp.pdu.PduResponse) SubmitSmResp(com.cloudhopper.smpp.pdu.SubmitSmResp) BaseSm(com.cloudhopper.smpp.pdu.BaseSm) DataSmResp(com.cloudhopper.smpp.pdu.DataSmResp)

Example 2 with SubmitSmResp

use of com.cloudhopper.smpp.pdu.SubmitSmResp in project smscgateway by RestComm.

the class MessageDeliveryResultResponseSmpp method responseDeliveryFailure.

@Override
public void responseDeliveryFailure(DeliveryFailureReason reason, MAPErrorMessage errMessage) {
    PduResponse response = null;
    BaseSm event = null;
    if (eventSubmit != null) {
        event = eventSubmit;
        SubmitSmResp responseSubmit = eventSubmit.createResponse();
        response = responseSubmit;
        responseSubmit.setMessageId(((Long) messageId).toString());
    }
    if (eventData != null) {
        event = eventData;
        DataSmResp responseData = eventData.createResponse();
        response = responseData;
        responseData.setMessageId(((Long) messageId).toString());
    }
    response.setCommandStatus(SmppConstants.STATUS_DELIVERYFAILURE);
    if (reason != null) {
        byte[] value = new byte[1];
        value[0] = (byte) reason.getCode();
        Tlv tlv = new Tlv(SmppConstants.TAG_DELIVERY_FAILURE_REASON, value);
        response.addOptionalParameter(tlv);
    }
    // Lets send the Response with success here
    try {
        if (response != null) {
            this.smppSessions.sendResponsePdu(esme, event, response);
        }
    } catch (Throwable e) {
        this.logger.severe("Error while trying to send SubmitSmResponse=" + response, e);
    }
}
Also used : PduResponse(com.cloudhopper.smpp.pdu.PduResponse) SubmitSmResp(com.cloudhopper.smpp.pdu.SubmitSmResp) BaseSm(com.cloudhopper.smpp.pdu.BaseSm) DataSmResp(com.cloudhopper.smpp.pdu.DataSmResp) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Example 3 with SubmitSmResp

use of com.cloudhopper.smpp.pdu.SubmitSmResp in project smscgateway by RestComm.

the class TxSmppServerSbb method onSubmitSmLocal.

private void onSubmitSmLocal(final TxSmppServerSbbUsage anSbbUsage, final com.cloudhopper.smpp.pdu.SubmitSm event, final ActivityContextInterface aci) {
    // TODO remove it ...........................
    // long l2 = Date.parse(event.getServiceType());
    // Date dt0 = new Date(l2);
    Date dt0 = new Date();
    Date dt1 = new Date();
    // TODO remove it ...........................
    SmppTransaction smppServerTransaction = (SmppTransaction) aci.getActivity();
    Esme esme = smppServerTransaction.getEsme();
    String esmeName = esme.getName();
    long timestampB = 0;
    if (this.logger.isFineEnabled()) {
        this.logger.fine("\nReceived SUBMIT_SM = " + event + " from Esme name=" + esmeName);
    }
    CheckMessageLimitResult cres = esme.onMessageReceived(1);
    if (cres.getResult() != CheckMessageLimitResult.Result.ok) {
        if (cres.getResult() == CheckMessageLimitResult.Result.firstFault) {
            this.updateOverrateCounters(cres);
            this.logger.info(cres.getMessage());
        }
        if (smscPropertiesManagement.isGenerateRejectionCdr()) {
            generateCDR(parseShortMessageText(event), esme.getNetworkId(), esme.getSystemId(), event.getSourceAddress().getAddress(), event.getSourceAddress().getTon(), event.getSourceAddress().getNpi(), event.getDestAddress().getAddress(), event.getDestAddress().getTon(), event.getDestAddress().getNpi(), CdrGenerator.CDR_SUBMIT_FAILED_ESME, cres.getMessage(), true);
        }
        SubmitSmResp response = event.createResponse();
        response.setCommandStatus(SmppConstants.STATUS_THROTTLED);
        String s = cres.getMessage();
        if (s.length() > 255)
            s = s.substring(0, 255);
        Tlv tlv;
        try {
            tlv = TlvUtil.createNullTerminatedStringTlv(SmppConstants.TAG_ADD_STATUS_INFO, s);
            response.addOptionalParameter(tlv);
        } catch (TlvConvertException e) {
            anSbbUsage.incrementCounterErrorSubmitSm(ONE);
            this.logger.severe("TlvConvertException while storing TAG_ADD_STATUS_INFO Tlv parameter", e);
        }
        // Lets send the Response with error here
        try {
            this.smppServerSessions.sendResponsePdu(esme, event, response);
            timestampB = System.currentTimeMillis();
        } catch (Exception e) {
            anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
            this.logger.severe("Error while trying to send SubmitSmResponse. Message: " + e.getMessage() + ".\nResponse: " + response + ".", e);
        }
        try {
            TargetAddress ta = createDestTargetAddress(event.getDestAddress(), esme.getNetworkId());
            Sms sms = this.createSmsEvent(event, esme, ta, persistence);
            sms.setTimestampB(timestampB);
            generateFailureDetailedCdr(sms, EventType.IN_SMPP_REJECT_CONG, ErrorCode.REJECT_INCOMING, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, SmppConstants.STATUS_THROTTLED, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
        } catch (SmscProcessingException e1) {
        }
        return;
    }
    Sms sms = null;
    try {
        TargetAddress ta = createDestTargetAddress(event.getDestAddress(), esme.getNetworkId());
        sms = this.createSmsEvent(event, esme, ta, persistence);
        this.processSms(sms, persistence, esme, event, null, null, IncomingMessageType.submit_sm, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, event.getSequenceNumber());
    } catch (SmscProcessingException e1) {
        anSbbUsage.incrementCounterErrorSubmitSm(ONE);
        SbbStatsUtils.handleProcessingException(e1, anSbbUsage);
        if (!e1.isSkipErrorLogging()) {
            if (e1.isIsWarning()) {
                this.logger.warning(e1.getMessage());
            } else {
                this.logger.severe(e1.getMessage(), e1);
            }
            smscStatAggregator.updateMsgInFailedAll();
        }
        if (smscPropertiesManagement.isGenerateRejectionCdr() && !e1.isMessageRejectCdrCreated()) {
            if (sms != null) {
                generateCDR(sms, CdrGenerator.CDR_SUBMIT_FAILED_ESME, e1.getMessage(), false, true);
            } else {
                generateCDR(parseShortMessageText(event), esme.getNetworkId(), esme.getSystemId(), event.getSourceAddress().getAddress(), event.getSourceAddress().getTon(), event.getSourceAddress().getNpi(), event.getDestAddress().getAddress(), event.getDestAddress().getTon(), event.getDestAddress().getNpi(), CdrGenerator.CDR_SUBMIT_FAILED_ESME, e1.getMessage(), true);
            }
        }
        SubmitSmResp response = event.createResponse();
        response.setCommandStatus(e1.getSmppErrorCode());
        String s = e1.getMessage();
        if (s != null) {
            if (s.length() > 255)
                s = s.substring(0, 255);
            Tlv tlv;
            try {
                tlv = TlvUtil.createNullTerminatedStringTlv(SmppConstants.TAG_ADD_STATUS_INFO, s);
                response.addOptionalParameter(tlv);
            } catch (TlvConvertException e) {
                this.logger.severe("TlvConvertException while storing TAG_ADD_STATUS_INFO Tlv parameter", e);
            }
        }
        // Lets send the Response with error here
        try {
            this.smppServerSessions.sendResponsePdu(esme, event, response);
            timestampB = System.currentTimeMillis();
        } catch (Exception e) {
            anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
            this.logger.severe("Error while trying to send SubmitSmResponse. Message: " + e.getMessage() + ".\nResponse: " + response + ".", e);
        }
        EventType eventType = null;
        if (e1.getInternalErrorCode() == SmscProcessingException.INTERNAL_ERROR_STATE_OVERLOADED) {
            eventType = EventType.IN_SMPP_REJECT_CONG;
        } else {
            eventType = EventType.IN_SMPP_REJECT_FORBIDDEN;
        }
        if (sms != null) {
            sms.setTimestampB(timestampB);
            generateRejectDetailedCdr(e1.getInternalErrorCode(), sms, eventType, ErrorCode.REJECT_INCOMING, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), esme.getRemoteAddressAndPort(), event.getSequenceNumber());
        } else {
            generateRejectDetailedCdr(e1.getInternalErrorCode(), event, esme, eventType, ErrorCode.REJECT_INCOMING, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, e1.getSmppErrorCode(), parseShortMessageText(event), timestampB);
        }
        return;
    } catch (Throwable e1) {
        anSbbUsage.incrementCounterErrorSubmitSm(ONE);
        String s = "Exception when processing SubmitSm message: " + e1.getMessage();
        this.logger.severe(s, e1);
        smscStatAggregator.updateMsgInFailedAll();
        if (smscPropertiesManagement.isGenerateRejectionCdr()) {
            generateCDR(parseShortMessageText(event), esme.getNetworkId(), esme.getSystemId(), event.getSourceAddress().getAddress(), event.getSourceAddress().getTon(), event.getSourceAddress().getNpi(), event.getDestAddress().getAddress(), event.getDestAddress().getTon(), event.getDestAddress().getNpi(), CdrGenerator.CDR_SUBMIT_FAILED_ESME, e1.getMessage(), true);
        }
        SubmitSmResp response = event.createResponse();
        response.setCommandStatus(SmppConstants.STATUS_SYSERR);
        if (s.length() > 255)
            s = s.substring(0, 255);
        Tlv tlv;
        try {
            tlv = TlvUtil.createNullTerminatedStringTlv(SmppConstants.TAG_ADD_STATUS_INFO, s);
            response.addOptionalParameter(tlv);
        } catch (TlvConvertException e) {
            this.logger.severe("TlvConvertException while storing TAG_ADD_STATUS_INFO Tlv parameter", e);
        }
        // Lets send the Response with error here
        try {
            this.smppServerSessions.sendResponsePdu(esme, event, response);
            if (sms != null) {
                sms.setTimestampB(System.currentTimeMillis());
                generateFailureDetailedCdr(sms, EventType.IN_SMPP_ERROR, ErrorCode.REJECT_INCOMING, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, SmppConstants.STATUS_SYSERR, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
            }
        } catch (Exception e) {
            anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
            this.logger.severe("Error while trying to send SubmitSmResponse. Message: " + e.getMessage() + ".\nResponse: " + response + ".", e);
        }
        return;
    }
    SubmitSmResp response = event.createResponse();
    response.setMessageId(sms.getMessageIdText());
    // Lets send the Response with success here
    try {
        if (sms.getMessageDeliveryResultResponse() == null) {
            this.smppServerSessions.sendResponsePdu(esme, event, response);
            sms.setTimestampB(System.currentTimeMillis());
            generateDetailedCDR(sms, EventType.IN_SMPP_RECEIVED, CdrDetailedGenerator.CDR_MSG_TYPE_SUBMITSM, SmppConstants.STATUS_OK, esme.getRemoteAddressAndPort(), event.getSequenceNumber());
        }
    } catch (Throwable e) {
        anSbbUsage.incrementCounterErrorSubmitSmResponding(ONE);
        this.logger.severe("Error while trying to send SubmitSmResponse. Message: " + e.getMessage() + ".\nResponse: " + response + ".", e);
    }
    // TODO remove it ...........................
    Date dt3 = new Date();
    SmscStatProvider.getInstance().setParam1((int) (dt3.getTime() - dt0.getTime()));
    SmscStatProvider.getInstance().setParam2((int) (dt3.getTime() - dt1.getTime()));
// TODO remove it ...........................
}
Also used : TlvConvertException(com.cloudhopper.smpp.tlv.TlvConvertException) SmppTransaction(org.restcomm.slee.resource.smpp.SmppTransaction) Esme(org.restcomm.smpp.Esme) CheckMessageLimitResult(org.restcomm.smpp.CheckMessageLimitResult) Date(java.util.Date) ParseException(java.text.ParseException) TlvConvertException(com.cloudhopper.smpp.tlv.TlvConvertException) RecoverablePduException(com.cloudhopper.smpp.type.RecoverablePduException) CharacterCodingException(java.nio.charset.CharacterCodingException) SmppInvalidArgumentException(com.cloudhopper.smpp.type.SmppInvalidArgumentException) PersistenceException(org.mobicents.smsc.cassandra.PersistenceException) SubmitSmResp(com.cloudhopper.smpp.pdu.SubmitSmResp) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Example 4 with SubmitSmResp

use of com.cloudhopper.smpp.pdu.SubmitSmResp in project traccar by traccar.

the class SmppClient method sendMessageSync.

public synchronized void sendMessageSync(String destAddress, String message, boolean command) throws RecoverablePduException, UnrecoverablePduException, SmppTimeoutException, SmppChannelException, InterruptedException, IllegalStateException {
    if (getSession() != null && getSession().isBound()) {
        SubmitSm submit = new SubmitSm();
        byte[] textBytes;
        textBytes = CharsetUtil.encode(message, command ? commandsCharsetName : notificationsCharsetName);
        submit.setDataCoding(command ? commandsDataCoding : notificationsDataCoding);
        if (requestDlr) {
            submit.setRegisteredDelivery(SmppConstants.REGISTERED_DELIVERY_SMSC_RECEIPT_REQUESTED);
        }
        if (textBytes != null && textBytes.length > 255) {
            submit.addOptionalParameter(new Tlv(SmppConstants.TAG_MESSAGE_PAYLOAD, textBytes, "message_payload"));
        } else {
            submit.setShortMessage(textBytes);
        }
        submit.setSourceAddress(command ? new Address(commandSourceTon, commandSourceNpi, commandSourceAddress) : new Address(sourceTon, sourceNpi, sourceAddress));
        submit.setDestAddress(new Address(destTon, destNpi, destAddress));
        SubmitSmResp submitResponce = getSession().submit(submit, submitTimeout);
        if (submitResponce.getCommandStatus() == SmppConstants.STATUS_OK) {
            Log.debug("SMS submitted, message id: " + submitResponce.getMessageId());
        } else {
            throw new IllegalStateException(submitResponce.getResultMessage());
        }
    } else {
        throw new SmppChannelException("SMPP session is not connected");
    }
}
Also used : Address(com.cloudhopper.smpp.type.Address) SubmitSmResp(com.cloudhopper.smpp.pdu.SubmitSmResp) SubmitSm(com.cloudhopper.smpp.pdu.SubmitSm) SmppChannelException(com.cloudhopper.smpp.type.SmppChannelException) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Example 5 with SubmitSmResp

use of com.cloudhopper.smpp.pdu.SubmitSmResp in project traccar by tananaev.

the class SmppClient method sendMessageSync.

public synchronized void sendMessageSync(String destAddress, String message, boolean command) throws RecoverablePduException, UnrecoverablePduException, SmppTimeoutException, SmppChannelException, InterruptedException, IllegalStateException {
    if (getSession() != null && getSession().isBound()) {
        SubmitSm submit = new SubmitSm();
        byte[] textBytes;
        textBytes = CharsetUtil.encode(message, command ? commandsCharsetName : notificationsCharsetName);
        submit.setDataCoding(command ? commandsDataCoding : notificationsDataCoding);
        if (requestDlr) {
            submit.setRegisteredDelivery(SmppConstants.REGISTERED_DELIVERY_SMSC_RECEIPT_REQUESTED);
        }
        if (textBytes != null && textBytes.length > 255) {
            submit.addOptionalParameter(new Tlv(SmppConstants.TAG_MESSAGE_PAYLOAD, textBytes, "message_payload"));
        } else {
            submit.setShortMessage(textBytes);
        }
        submit.setSourceAddress(command ? new Address(commandSourceTon, commandSourceNpi, commandSourceAddress) : new Address(sourceTon, sourceNpi, sourceAddress));
        submit.setDestAddress(new Address(destTon, destNpi, destAddress));
        SubmitSmResp submitResponce = getSession().submit(submit, submitTimeout);
        if (submitResponce.getCommandStatus() == SmppConstants.STATUS_OK) {
            Log.debug("SMS submitted, message id: " + submitResponce.getMessageId());
        } else {
            throw new IllegalStateException(submitResponce.getResultMessage());
        }
    } else {
        throw new SmppChannelException("SMPP session is not connected");
    }
}
Also used : Address(com.cloudhopper.smpp.type.Address) SubmitSmResp(com.cloudhopper.smpp.pdu.SubmitSmResp) SubmitSm(com.cloudhopper.smpp.pdu.SubmitSm) SmppChannelException(com.cloudhopper.smpp.type.SmppChannelException) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Aggregations

SubmitSmResp (com.cloudhopper.smpp.pdu.SubmitSmResp)5 Tlv (com.cloudhopper.smpp.tlv.Tlv)4 BaseSm (com.cloudhopper.smpp.pdu.BaseSm)2 DataSmResp (com.cloudhopper.smpp.pdu.DataSmResp)2 PduResponse (com.cloudhopper.smpp.pdu.PduResponse)2 SubmitSm (com.cloudhopper.smpp.pdu.SubmitSm)2 Address (com.cloudhopper.smpp.type.Address)2 SmppChannelException (com.cloudhopper.smpp.type.SmppChannelException)2 TlvConvertException (com.cloudhopper.smpp.tlv.TlvConvertException)1 RecoverablePduException (com.cloudhopper.smpp.type.RecoverablePduException)1 SmppInvalidArgumentException (com.cloudhopper.smpp.type.SmppInvalidArgumentException)1 CharacterCodingException (java.nio.charset.CharacterCodingException)1 ParseException (java.text.ParseException)1 Date (java.util.Date)1 PersistenceException (org.mobicents.smsc.cassandra.PersistenceException)1 SmppTransaction (org.restcomm.slee.resource.smpp.SmppTransaction)1 CheckMessageLimitResult (org.restcomm.smpp.CheckMessageLimitResult)1 Esme (org.restcomm.smpp.Esme)1