Search in sources :

Example 6 with SmscProcessingException

use of org.mobicents.smsc.library.SmscProcessingException in project smscgateway by RestComm.

the class MtSbb method sendMtSms.

private void sendMtSms(MAPApplicationContext mapApplicationContext, MessageProcessingState messageProcessingState, MAPDialogSms mapDialogSms, int networkId) throws SmscProcessingException {
    SmsSet smsSet = getSmsSet();
    if (smsSet == null) {
        throw new SmscProcessingException("CMP smsSet is missed", -1, -1, SmscProcessingException.HTTP_ERROR_CODE_NOT_SET, null);
    }
    Sms sms = this.getMessageInSendingPool(0);
    if (sms == null) {
        throw new SmscProcessingException("sms is missed in CMP", -1, -1, SmscProcessingException.HTTP_ERROR_CODE_NOT_SET, null);
    }
    boolean moreMessagesToSend = false;
    try {
        if (this.getTotalUnsentMessageCount() > 1) {
            moreMessagesToSend = true;
        }
    } catch (Throwable e) {
    }
    try {
        boolean newDialog = false;
        if (mapDialogSms == null) {
            newDialog = true;
            String mtLocalSccpGt = sms.getMtLocalSccpGt();
            SccpAddress originSccpAddress;
            if (mtLocalSccpGt != null) {
                originSccpAddress = this.getServiceCenterSccpAddress(mtLocalSccpGt, networkId);
            } else {
                originSccpAddress = this.getServiceCenterSccpAddress(networkId);
            }
            mapDialogSms = this.mapProvider.getMAPServiceSms().createNewDialog(mapApplicationContext, originSccpAddress, null, this.getNetworkNode(), null);
            mapDialogSms.setNetworkId(networkId);
            ActivityContextInterface mtFOSmsDialogACI = this.mapAcif.getActivityContextInterface(mapDialogSms);
            mtFOSmsDialogACI.attach(this.sbbContext.getSbbLocalObject());
        }
        // setting TON / NPI to unknown for unsupported source TON / NPI
        int sourceAddrTon = sms.getSourceAddrTon();
        if (sourceAddrTon < 0 || sourceAddrTon > 6)
            sourceAddrTon = 0;
        int sourceAddrNpi = sms.getSourceAddrNpi();
        if (sourceAddrTon == SmppConstants.TON_ALPHANUMERIC) {
            sourceAddrNpi = SmppConstants.NPI_UNKNOWN;
        } else {
            if (sourceAddrNpi >= 0 && sourceAddrNpi <= 1 || sourceAddrNpi >= 3 && sourceAddrNpi <= 9 || sourceAddrNpi >= 10 && sourceAddrNpi <= 1 || sourceAddrNpi == 18) {
            } else {
                sourceAddrNpi = SmppConstants.NPI_UNKNOWN;
            }
        }
        SM_RP_DA sm_RP_DA = this.getSmRpDa();
        SM_RP_OA sm_RP_OA = this.getSmRpOa();
        SmsSignalInfo smsSignalInfo;
        if (messageProcessingState == MessageProcessingState.firstMessageSending) {
            int dcs = sms.getDataCoding();
            Tlv dest_addr_subunit = sms.getTlvSet().getOptionalParameter(SmppConstants.TAG_DEST_ADDR_SUBUNIT);
            if (dest_addr_subunit != null) {
                try {
                    int mclass = dest_addr_subunit.getValueAsByte();
                    if (mclass >= 1 && mclass <= 4) {
                        dcs |= (0x10 + (mclass - 1));
                    }
                } catch (TlvConvertException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            DataCodingScheme dataCodingScheme = this.mapSmsTpduParameterFactory.createDataCodingScheme(dcs);
            Tlv sarMsgRefNum = sms.getTlvSet().getOptionalParameter(SmppConstants.TAG_SAR_MSG_REF_NUM);
            Tlv sarTotalSegments = sms.getTlvSet().getOptionalParameter(SmppConstants.TAG_SAR_TOTAL_SEGMENTS);
            Tlv sarSegmentSeqnum = sms.getTlvSet().getOptionalParameter(SmppConstants.TAG_SAR_SEGMENT_SEQNUM);
            SmsSignalInfo[] segments;
            SmsDeliveryReportData smsDeliveryReportData = SmsDeliveryReportData.decodeFromString(sms.getShortMessageText());
            if (smsDeliveryReportData != null) {
                // this is SMS-STATUS-REPORT
                segments = new SmsSignalInfo[1];
                segments[0] = this.createSignalInfoStatusReport(sms, moreMessagesToSend, smsDeliveryReportData);
            } else if ((sms.getEsmClass() & SmppConstants.ESM_CLASS_UDHI_MASK) != 0) {
                // message already contains UDH - we can not slice it
                segments = new SmsSignalInfo[1];
                segments[0] = this.createSignalInfo(sms, sms.getShortMessageText(), sms.getShortMessageBin(), moreMessagesToSend, 0, 1, 1, dataCodingScheme, 0, 0, sourceAddrTon, sourceAddrNpi);
            } else if (sarMsgRefNum != null && sarTotalSegments != null && sarSegmentSeqnum != null) {
                // we have tlv's that define message count/number/reference
                int messageSegmentCount = sarTotalSegments.getValueAsUnsignedByte();
                int messageSegmentNumber = sarSegmentSeqnum.getValueAsUnsignedByte();
                int messageReferenceNumber = sarMsgRefNum.getValueAsUnsignedShort();
                segments = new SmsSignalInfo[1];
                segments[0] = this.createSignalInfo(sms, sms.getShortMessageText(), null, moreMessagesToSend, messageReferenceNumber, messageSegmentCount, messageSegmentNumber, dataCodingScheme, sms.getNationalLanguageLockingShift(), sms.getNationalLanguageSingleShift(), sourceAddrTon, sourceAddrNpi);
            } else {
                // possible a big message and segmentation
                String[] segmentsByte;
                segmentsByte = MessageUtil.sliceMessage(sms.getShortMessageText(), dataCodingScheme, sms.getNationalLanguageLockingShift(), sms.getNationalLanguageSingleShift());
                segments = new SmsSignalInfo[segmentsByte.length];
                // TODO messageReferenceNumber should be generated
                // int messageReferenceNumber = (int) (this.getCurrentMsgNumValue() + 1);
                int messageReferenceNumber = (int) (this.getCurrentMsgNumValue());
                for (int i1 = 0; i1 < segmentsByte.length; i1++) {
                    segments[i1] = this.createSignalInfo(sms, segmentsByte[i1], null, (i1 < segmentsByte.length - 1 ? true : moreMessagesToSend), messageReferenceNumber, segmentsByte.length, i1 + 1, dataCodingScheme, sms.getNationalLanguageLockingShift(), sms.getNationalLanguageSingleShift(), sourceAddrTon, sourceAddrNpi);
                }
            }
            this.setSegments(segments);
            smsSignalInfo = segments[0];
            this.setMessageSegmentNumber(0);
            if (segments.length > 1)
                moreMessagesToSend = true;
        } else {
            int messageSegmentNumber = this.getMessageSegmentNumber();
            SmsSignalInfo[] segments = this.getSegments();
            smsSignalInfo = segments[messageSegmentNumber];
            if (messageSegmentNumber < segments.length - 1)
                moreMessagesToSend = true;
        }
        long invokeId = 0;
        switch(mapDialogSms.getApplicationContext().getApplicationContextVersion()) {
            case version3:
                invokeId = mapDialogSms.addMtForwardShortMessageRequest(sm_RP_DA, sm_RP_OA, smsSignalInfo, moreMessagesToSend, null);
                if (this.logger.isInfoEnabled()) {
                    this.logger.info("Sending: MtForwardShortMessageRequest: sm_RP_DA=" + sm_RP_DA + ", sm_RP_OA=" + sm_RP_OA + ", si=" + smsSignalInfo + ", moreMessagesToSend=" + moreMessagesToSend);
                }
                break;
            case version2:
            case version1:
                invokeId = mapDialogSms.addForwardShortMessageRequest(sm_RP_DA, sm_RP_OA, smsSignalInfo, moreMessagesToSend);
                if (this.logger.isInfoEnabled()) {
                    this.logger.info("Sending: ForwardShortMessageRequest: sm_RP_DA=" + sm_RP_DA + ", sm_RP_OA=" + sm_RP_OA + ", si=" + smsSignalInfo + ", moreMessagesToSend=" + moreMessagesToSend);
                }
                break;
            default:
                break;
        }
        int messageUserDataLengthOnSend = mapDialogSms.getMessageUserDataLengthOnSend();
        int maxUserDataLength = mapDialogSms.getMaxUserDataLength();
        if (mapDialogSms.getApplicationContext().getApplicationContextVersion() != MAPApplicationContextVersion.version1 && newDialog && messageUserDataLengthOnSend >= maxUserDataLength - SmscPropertiesManagement.getInstance().getMaxMessageLengthReducer()) {
            mapDialogSms.cancelInvocation(invokeId);
            this.setTcEmptySent(1);
        } else {
            this.setTcEmptySent(0);
        }
        mapDialogSms.send();
        sms.putMsgPartDeliveryTime(getMessageSegmentNumber(), System.currentTimeMillis());
    } catch (MAPException e) {
        if (mapDialogSms != null)
            mapDialogSms.release();
        throw new SmscProcessingException("MAPException when sending MtForwardSM. Sms=" + sms, -1, -1, SmscProcessingException.HTTP_ERROR_CODE_NOT_SET, null, e);
    } catch (TlvConvertException e) {
        if (mapDialogSms != null)
            mapDialogSms.release();
        throw new SmscProcessingException("TlvConvertException when sending MtForwardSM", -1, -1, SmscProcessingException.HTTP_ERROR_CODE_NOT_SET, null, e);
    }
}
Also used : SccpAddress(org.restcomm.protocols.ss7.sccp.parameter.SccpAddress) TlvConvertException(com.cloudhopper.smpp.tlv.TlvConvertException) ActivityContextInterface(javax.slee.ActivityContextInterface) MAPException(org.restcomm.protocols.ss7.map.api.MAPException) SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) SM_RP_OA(org.restcomm.protocols.ss7.map.api.service.sms.SM_RP_OA) ISDNAddressString(org.restcomm.protocols.ss7.map.api.primitives.ISDNAddressString) AddressString(org.restcomm.protocols.ss7.map.api.primitives.AddressString) SmsDeliveryReportData(org.mobicents.smsc.library.SmsDeliveryReportData) SmsSignalInfo(org.restcomm.protocols.ss7.map.api.service.sms.SmsSignalInfo) MAPDialogSms(org.restcomm.protocols.ss7.map.api.service.sms.MAPDialogSms) MAPErrorMessageSubscriberBusyForMtSms(org.restcomm.protocols.ss7.map.api.errors.MAPErrorMessageSubscriberBusyForMtSms) Sms(org.mobicents.smsc.library.Sms) SmsSet(org.mobicents.smsc.library.SmsSet) SM_RP_DA(org.restcomm.protocols.ss7.map.api.service.sms.SM_RP_DA) Tlv(com.cloudhopper.smpp.tlv.Tlv)

Example 7 with SmscProcessingException

use of org.mobicents.smsc.library.SmscProcessingException in project smscgateway by RestComm.

the class MtSbb method handleSmsResponse.

private void handleSmsResponse(MAPDialogSms mapDialogSms, boolean continueDialog) {
    SmsSet smsSet = getSmsSet();
    if (smsSet == null) {
        logger.severe("MtSbb.handleSmsResponse(): CMP smsSet is missed");
        markDeliveringIsEnded(true);
        return;
    }
    smscStatAggregator.updateMsgOutSentAll();
    smscStatAggregator.updateMsgOutSentSs7();
    Sms sms = this.getMessageInSendingPool(0);
    // checking if there are yet message segments
    int messageSegmentNumber = this.getMessageSegmentNumber();
    SmsSignalInfo[] segments = this.getSegments();
    if (segments != null && messageSegmentNumber < segments.length - 1) {
        this.generateCDR(sms, CdrGenerator.CDR_PARTIAL, CdrGenerator.CDR_SUCCESS_NO_REASON, true, false, messageSegmentNumber);
        // we have more message parts to be sent yet
        messageSegmentNumber++;
        this.setMessageSegmentNumber(messageSegmentNumber);
        try {
            smscStatAggregator.updateMsgOutTryAll();
            smscStatAggregator.updateMsgOutTrySs7();
            this.sendMtSms(mapDialogSms.getApplicationContext(), MessageProcessingState.nextSegmentSending, continueDialog ? mapDialogSms : null, smsSet.getNetworkId());
            return;
        } catch (SmscProcessingException e) {
            this.logger.severe("SmscPocessingException when invoking sendMtSms() from handleSmsResponse()-nextSegmentSending: " + e.toString(), e);
            this.onDeliveryError(smsSet, ErrorAction.temporaryFailure, ErrorCode.SYSTEM_FAILURE, "Error sendMtSms in handleSmsResponse(): ", true, null, false, ProcessingType.SS7_MT);
            return;
        }
    }
    // current message is sent
    // firstly sending of a positive response for transactional mode
    this.sendTransactionalResponseSuccess(sms);
    // mproc rules applying for delivery phase
    this.applyMprocRulesOnSuccess(sms, ProcessingType.SS7_MT);
    // Processing succeeded
    sms.getSmsSet().setStatus(ErrorCode.SUCCESS);
    this.postProcessSucceeded(sms, null, null);
    // success CDR generating
    boolean isPartial = MessageUtil.isSmsNotLastSegment(sms);
    this.generateCDR(sms, isPartial ? CdrGenerator.CDR_PARTIAL : CdrGenerator.CDR_SUCCESS, CdrGenerator.CDR_SUCCESS_NO_REASON, segments != null, true, messageSegmentNumber);
    // adding a success receipt if it is needed
    this.generateSuccessReceipt(smsSet, sms);
    TargetAddress lock = persistence.obtainSynchroObject(new TargetAddress(smsSet));
    try {
        synchronized (lock) {
            // marking the message in cache as delivered
            this.commitSendingPoolMsgCount();
            // now we are trying to sent other messages
            sms = obtainNextMessage(ProcessingType.SS7_MT);
            if (sms != null) {
                // dropaftersri pmproc rules
                ArrayList<Sms> lstPermFailured = new ArrayList<Sms>();
                ArrayList<Sms> lstRerouted = new ArrayList<Sms>();
                ArrayList<Integer> lstNewNetworkId = new ArrayList<Integer>();
                SM_RP_DA da = this.getSmRpDa();
                ISDNAddressString networkNodeNumber = this.getNnn();
                this.applyMprocRulesOnImsiResponse(smsSet, lstPermFailured, lstRerouted, lstNewNetworkId, networkNodeNumber, da.getIMSI().getData());
                this.onImsiDrop(smsSet, lstPermFailured, lstRerouted, lstNewNetworkId, networkNodeNumber, da.getIMSI().getData());
            }
            sms = this.getMessageInSendingPool(0);
            if (sms != null) {
                try {
                    // sms.setDeliveryCount(sms.getDeliveryCount() + 1);
                    smscStatAggregator.updateMsgOutTryAll();
                    smscStatAggregator.updateMsgOutTrySs7();
                    this.sendMtSms(mapDialogSms.getApplicationContext(), MessageProcessingState.firstMessageSending, continueDialog ? mapDialogSms : null, smsSet.getNetworkId());
                    return;
                } catch (SmscProcessingException e) {
                    this.logger.severe("SmscPocessingException when invoking sendMtSms() from handleSmsResponse(): " + e.toString(), e);
                }
            }
            // more messages in a database
            if (continueDialog) {
                try {
                    mapDialogSms.close(false);
                } catch (MAPException e) {
                    this.logger.severe("MAPException when closing MAP dialog from handleSmsResponse(): " + e.toString(), e);
                }
            }
            // no more messages to send - remove smsSet
            setupReportSMDeliveryStatusRequestSuccess(smsSet, mapDialogSms.getApplicationContext().getApplicationContextVersion() != MAPApplicationContextVersion.version1);
            smsSet.setStatus(ErrorCode.SUCCESS);
            this.markDeliveringIsEnded(true);
        // this.freeSmsSetSucceded(smsSet, pers);
        }
    } finally {
        persistence.releaseSynchroObject(lock);
    }
}
Also used : MAPException(org.restcomm.protocols.ss7.map.api.MAPException) SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) ArrayList(java.util.ArrayList) TargetAddress(org.mobicents.smsc.library.TargetAddress) ISDNAddressString(org.restcomm.protocols.ss7.map.api.primitives.ISDNAddressString) SmsSignalInfo(org.restcomm.protocols.ss7.map.api.service.sms.SmsSignalInfo) MAPDialogSms(org.restcomm.protocols.ss7.map.api.service.sms.MAPDialogSms) MAPErrorMessageSubscriberBusyForMtSms(org.restcomm.protocols.ss7.map.api.errors.MAPErrorMessageSubscriberBusyForMtSms) Sms(org.mobicents.smsc.library.Sms) SmsSet(org.mobicents.smsc.library.SmsSet) SM_RP_DA(org.restcomm.protocols.ss7.map.api.service.sms.SM_RP_DA)

Example 8 with SmscProcessingException

use of org.mobicents.smsc.library.SmscProcessingException in project smscgateway by RestComm.

the class RxSipServerSbb method onSUCCESS.

public void onSUCCESS(javax.sip.ResponseEvent event, ActivityContextInterface aci) {
    if (this.logger.isFineEnabled()) {
        this.logger.fine("onSUCCESS " + event);
    }
    SmsSet smsSet = getSmsSet();
    if (smsSet == null) {
        logger.severe("RxSipServerSbb.onSUCCESS(): CMP smsSet is missed");
        markDeliveringIsEnded(true);
        return;
    }
    try {
        smscStatAggregator.updateMsgOutSentAll();
        smscStatAggregator.updateMsgOutSentSip();
        // current message is sent pushing current message into an archive
        Sms sms = this.getMessageInSendingPool(0);
        if (sms == null) {
            logger.severe("RxSipServerSbb.onSUCCESS(): CMP sms is missed. smsSet=" + smsSet);
            markDeliveringIsEnded(true);
            return;
        }
        // firstly sending of a positive response for transactional mode
        sendTransactionalResponseSuccess(sms);
        // mproc rules applying for delivery phase
        this.applyMprocRulesOnSuccess(sms, ProcessingType.SIP);
        // Processing succeeded
        sms.getSmsSet().setStatus(ErrorCode.SUCCESS);
        this.postProcessSucceeded(sms, null, null);
        // success CDR generating
        boolean isPartial = MessageUtil.isSmsNotLastSegment(sms);
        this.generateCDR(sms, isPartial ? CdrGenerator.CDR_PARTIAL_SIP : CdrGenerator.CDR_SUCCESS_SIP, CdrGenerator.CDR_SUCCESS_NO_REASON, false, true, -1);
        // adding a success receipt if it is needed
        this.generateSuccessReceipt(smsSet, sms);
        TargetAddress lock = persistence.obtainSynchroObject(new TargetAddress(smsSet));
        try {
            synchronized (lock) {
                // marking the message in cache as delivered
                this.commitSendingPoolMsgCount();
                // now we are trying to sent other messages
                if (this.getTotalUnsentMessageCount() > 0) {
                    try {
                        this.sendMessage(smsSet);
                        return;
                    } catch (SmscProcessingException e) {
                        String s = "SmscProcessingException when sending sendMessage()=" + e.getMessage() + ", Message=" + sms;
                        logger.severe(s, e);
                        markDeliveringIsEnded(true);
                    }
                }
                // no more messages to send - remove smsSet
                smsSet.setStatus(ErrorCode.SUCCESS);
                this.markDeliveringIsEnded(true);
            }
        } finally {
            persistence.releaseSynchroObject(lock);
        }
    } catch (Throwable e1) {
        String s = "Exception in RxSipServerSbb.onSUCCESS() when fetching records and issuing events: " + e1.getMessage();
        logger.severe(s, e1);
        this.onDeliveryError(smsSet, ErrorAction.temporaryFailure, ErrorCode.SC_SYSTEM_ERROR, s);
    }
}
Also used : SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) Sms(org.mobicents.smsc.library.Sms) TargetAddress(org.mobicents.smsc.library.TargetAddress) SmsSet(org.mobicents.smsc.library.SmsSet)

Example 9 with SmscProcessingException

use of org.mobicents.smsc.library.SmscProcessingException in project smscgateway by RestComm.

the class RxSipServerSbb method sendMessage.

// *********
// Main service methods
/**
 * Sending of a SIP message after initial message or when all sent messages was sent
 *
 * @param smsSet
 * @throws SmscProcessingException
 */
private void sendMessage(SmsSet smsSet) throws SmscProcessingException {
    smscStatAggregator.updateMsgOutTryAll();
    smscStatAggregator.updateMsgOutTrySip();
    Sms sms = this.obtainNextMessage(ProcessingType.SIP);
    if (sms == null) {
        this.markDeliveringIsEnded(true);
        return;
    }
    try {
        // TODO: let make here a special check if SIP is in a good state
        // if not - skip sending and set temporary error
        String fromAddressStr = sms.getSourceAddr();
        String toAddressStr = smsSet.getDestAddr();
        Sip sip = sipManagement.getSipByName(SipManagement.SIP_NAME);
        ListeningPoint listeningPoint = sipRA.getListeningPoints()[0];
        SipURI fromAddressUri = addressFactory.createSipURI(fromAddressStr, listeningPoint.getIPAddress() + ":" + listeningPoint.getPort());
        javax.sip.address.Address fromAddress = addressFactory.createAddress(fromAddressUri);
        FromHeader fromHeader = headerFactory.createFromHeader(fromAddress, null);
        SipURI toAddressUri = addressFactory.createSipURI(toAddressStr, sip.getSipAddress());
        javax.sip.address.Address toAddress = addressFactory.createAddress(toAddressUri);
        ToHeader toHeader = headerFactory.createToHeader(toAddress, null);
        List<ViaHeader> viaHeaders = new ArrayList<ViaHeader>(1);
        ViaHeader viaHeader = headerFactory.createViaHeader(listeningPoint.getIPAddress(), listeningPoint.getPort(), listeningPoint.getTransport(), null);
        viaHeaders.add(viaHeader);
        ContentTypeHeader contentTypeHeader = headerFactory.createContentTypeHeader("text", "plain");
        CSeqHeader cSeqHeader = headerFactory.createCSeqHeader(2L, Request.MESSAGE);
        MaxForwardsHeader maxForwardsHeader = headerFactory.createMaxForwardsHeader(70);
        CallIdHeader callId = this.sipRA.getNewCallId();
        String msgStr = sms.getShortMessageText();
        byte[] msgUdh = sms.getShortMessageBin();
        byte[] msg;
        msg = recodeShortMessage(sms.getDataCoding(), msgStr, msgUdh);
        // create request
        Request request = messageFactory.createRequest(toAddressUri, Request.MESSAGE, callId, cSeqHeader, fromHeader, toHeader, viaHeaders, maxForwardsHeader, contentTypeHeader, msg);
        // Custom X Headers
        // SMSC-ID
        String originEsmeName = sms.getOrigEsmeName();
        if (originEsmeName != null) {
            Header smsIdHeader = headerFactory.createHeader(SipXHeaders.XSmscId, originEsmeName);
            request.addHeader(smsIdHeader);
        }
        // data-coding
        DataCodingScheme dataCodingScheme = new DataCodingSchemeImpl(sms.getDataCoding());
        Header smsIdHeader = headerFactory.createHeader(SipXHeaders.XSmsCoding, Integer.toString(dataCodingScheme.getCharacterSet().getCode()));
        request.addHeader(smsIdHeader);
        // TODO X header message class
        // X header delivery time, use SUBMIT_DATE
        Date submitDate = sms.getSubmitDate();
        if (submitDate != null) {
            String submitDateStr = MessageUtil.formatDate(submitDate);
            Header submitDateHeader = headerFactory.createHeader(SipXHeaders.XDeliveryTime, submitDateStr);
            request.addHeader(submitDateHeader);
        }
        // Validity Period
        Date validityPeriod = sms.getValidityPeriod();
        if (validityPeriod != null) {
            String validityPeriodStr = MessageUtil.formatDate(validityPeriod);
            Header validityHeader = headerFactory.createHeader(SipXHeaders.XSmsValidty, validityPeriodStr);
            request.addHeader(validityHeader);
        }
        // X header UDH
        if (msgUdh != null) {
            String udhString = hexStringToByteArray(msgUdh);
            Header udhHeader = headerFactory.createHeader(SipXHeaders.XSmsUdh, udhString);
            request.addHeader(udhHeader);
        }
        // create client transaction and send request
        ClientTransaction clientTransaction = sipRA.getNewClientTransaction(request);
        ActivityContextInterface sipClientTxaci = this.sipACIFactory.getActivityContextInterface(clientTransaction);
        sipClientTxaci.attach(this.sbbContext.getSbbLocalObject());
        clientTransaction.sendRequest();
    } catch (Exception e) {
        throw new SmscProcessingException("RxSipServerSbb.sendMessage(): Exception while trying to send SIP Message =" + e.getMessage() + "Message: " + sms, 0, 0, SmscProcessingException.HTTP_ERROR_CODE_NOT_SET, null, e);
    }
}
Also used : MaxForwardsHeader(javax.sip.header.MaxForwardsHeader) DataCodingScheme(org.restcomm.protocols.ss7.map.api.smstpdu.DataCodingScheme) SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) ArrayList(java.util.ArrayList) SipURI(javax.sip.address.SipURI) DataCodingSchemeImpl(org.restcomm.protocols.ss7.map.smstpdu.DataCodingSchemeImpl) ToHeader(javax.sip.header.ToHeader) CallIdHeader(javax.sip.header.CallIdHeader) ActivityContextInterface(javax.slee.ActivityContextInterface) FromHeader(javax.sip.header.FromHeader) ContentTypeHeader(javax.sip.header.ContentTypeHeader) ClientTransaction(javax.sip.ClientTransaction) Request(javax.sip.message.Request) Date(java.util.Date) SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) CharacterCodingException(java.nio.charset.CharacterCodingException) CSeqHeader(javax.sip.header.CSeqHeader) ViaHeader(javax.sip.header.ViaHeader) CallIdHeader(javax.sip.header.CallIdHeader) Header(javax.sip.header.Header) CSeqHeader(javax.sip.header.CSeqHeader) ContentTypeHeader(javax.sip.header.ContentTypeHeader) MaxForwardsHeader(javax.sip.header.MaxForwardsHeader) ToHeader(javax.sip.header.ToHeader) FromHeader(javax.sip.header.FromHeader) ViaHeader(javax.sip.header.ViaHeader) Sms(org.mobicents.smsc.library.Sms) ListeningPoint(javax.sip.ListeningPoint) Sip(org.mobicents.smsc.domain.Sip)

Example 10 with SmscProcessingException

use of org.mobicents.smsc.library.SmscProcessingException in project smscgateway by RestComm.

the class RxSipServerSbb method onSipSm.

// *********
// initial event
public void onSipSm(SmsSetEvent event, ActivityContextInterface aci, EventContext eventContext) {
    try {
        if (this.logger.isFineEnabled()) {
            this.logger.fine("Received SIP SMS. event= " + event + "this=" + this);
        }
        SmsSet smsSet = event.getSmsSet();
        this.addInitialMessageSet(smsSet);
        try {
            this.sendMessage(smsSet);
        } catch (SmscProcessingException e) {
            String s = "SmscProcessingException when sending SIP MESSAGE=" + e.getMessage() + ", smsSet=" + smsSet;
            logger.severe(s, e);
            this.onDeliveryError(smsSet, ErrorAction.temporaryFailure, ErrorCode.SC_SYSTEM_ERROR, s);
        }
    } catch (Throwable e1) {
        logger.severe("Exception in RxSmppServerSbb.onDeliverSm() when fetching records and issuing events: " + e1.getMessage(), e1);
        markDeliveringIsEnded(true);
    }
}
Also used : SmscProcessingException(org.mobicents.smsc.library.SmscProcessingException) SmsSet(org.mobicents.smsc.library.SmsSet)

Aggregations

SmscProcessingException (org.mobicents.smsc.library.SmscProcessingException)18 Sms (org.mobicents.smsc.library.Sms)13 SmsSet (org.mobicents.smsc.library.SmsSet)9 TargetAddress (org.mobicents.smsc.library.TargetAddress)8 Esme (org.restcomm.smpp.Esme)6 EsmeManagement (org.restcomm.smpp.EsmeManagement)6 ArrayList (java.util.ArrayList)4 PersistenceException (org.mobicents.smsc.cassandra.PersistenceException)4 ISDNAddressString (org.restcomm.protocols.ss7.map.api.primitives.ISDNAddressString)4 Date (java.util.Date)3 EventType (org.mobicents.smsc.library.EventType)3 MAPErrorMessageSubscriberBusyForMtSms (org.restcomm.protocols.ss7.map.api.errors.MAPErrorMessageSubscriberBusyForMtSms)3 AddressString (org.restcomm.protocols.ss7.map.api.primitives.AddressString)3 MAPDialogSms (org.restcomm.protocols.ss7.map.api.service.sms.MAPDialogSms)3 SM_RP_DA (org.restcomm.protocols.ss7.map.api.service.sms.SM_RP_DA)3 Tlv (com.cloudhopper.smpp.tlv.Tlv)2 FromHeader (javax.sip.header.FromHeader)2 Header (javax.sip.header.Header)2 ToHeader (javax.sip.header.ToHeader)2 Request (javax.sip.message.Request)2