第九課 用NMS通信公司產(chǎn)品實現(xiàn)SCF和SRF功能
NMS通信公司提供的SS7產(chǎn)品已經(jīng)實現(xiàn)了MTP1、MTP2、MTP3、SCCP、TCAP、ISUP、TUP等各層的功能,開發(fā)人員只要在此基礎(chǔ)上開發(fā)一些INAP函數(shù)就可以實現(xiàn)相應(yīng)的智能網(wǎng)業(yè)務(wù)。下面以實現(xiàn)SCF和SRF功能為例,說明軟硬件環(huán)境、實現(xiàn)業(yè)務(wù)的功能框圖、INAP函數(shù)的描述。
硬件需求:
軟件需求:
功能框圖:
圖中所示的智能業(yè)務(wù)流程:
SSF中一個帶有業(yè)務(wù)號或撥號前綴的呼入觸發(fā)了智能業(yè)務(wù)的開始,SSF向SCF發(fā)出觸發(fā)消息(InitialDP),SCF內(nèi)有業(yè)務(wù)的控制流程(GSL),根據(jù)業(yè)務(wù)的控制流程SCF向SSF發(fā)出命令ConnectToResource,該命令要求SSF把呼入接通到SRF,由SRF向終端用戶播放錄音提示。
SSF收到從SCF發(fā)來的ConnectToResource命令,用ISUP協(xié)議和SRF通信,把呼叫接通到SRF的提示音播放設(shè)備。(粉紅色虛線)
SCF同時向SRF發(fā)出PromptAndCollectUserInformation指令(紅色虛線)讓SRF播放錄音提示并收集終端用戶的輸入信息(個人標(biāo)識和被叫號碼)。
SRF收集終端用戶的輸入信息后把信息返回SCF(綠色虛線),SCF向SSF發(fā)出DisconnectForwardConnection指令,要求SSF拆除到SRF的連接。
以上是SCF對SSF控制的一個完整循環(huán),之后的呼叫過程圖中沒有畫出,應(yīng)該是:SCF向SSF發(fā)出指示要求SSF把呼叫接通至被叫,然后SCF向SSF發(fā)出RequestReportBCSMEvent ,要求SSF報告呼叫狀態(tài);當(dāng)被叫掛機(jī)后,SCF會再向SSF發(fā)出ConnectToResource命令,重復(fù)上面SCF對SSF的控制循環(huán),直到主叫用戶掛機(jī)。
給出用ASN.1語言描述的業(yè)務(wù)流程中各操作:
initialDP {PARAMETERS-BOUND : bound} OPERATION ::= {
ARGUMENT InitialDPArg {bound}
RETURN RESULT FALSE
ERRORS {missingCustomerRecord |
missingParameter |
parameterOutOfRange |
systemFailure |
taskRefused |
unexpectedComponentSequence |
unexpectedDataValue |
unexpectedParameter}
CODE opcode-initialDP
}
--方向:SSF -> SCF, 定時器:T idp
--這一操作發(fā)生在TDP觸發(fā)之后,用于指示業(yè)務(wù)請求。
InitialDPArg {PARAMETERS-BOUND : bound} ::= SEQUENCE {
serviceKey [0] ServiceKey ,
calledPartyNumber [2] CalledPartyNumber {bound} OPTIONAL,
callingPartyNumber [3] CallingPartyNumber {bound} OPTIONAL,
callingPartyBusinessGroupID [4] CallingPartyBusinessGroupID OPTIONAL,
callingPartysCategory [5] CallingPartysCategory OPTIONAL,
cGEncountered [7] CGEncountered OPTIONAL,
iPSSPCapabilities [8] IPSSPCapabilities {bound} OPTIONAL,
iPAvailable [9] IPAvailable {bound} OPTIONAL,
locationNumber [10] LocationNumber {bound} OPTIONAL,
originalCalledPartyID [12] OriginalCalledPartyID {bound} OPTIONAL,
terminalType [14] TerminalType OPTIONAL,
extensions [15] SEQUENCE SIZE(1..bound.&numOfExtensions) OF
ExtensionField {bound} OPTIONAL,
highLayerCompatibility [23] HighLayerCompatibility OPTIONAL,
serviceInteractionIndicators [24] ServiceInteractionIndicators {bound} OPTIONAL,
additionalCallingPartyNumber [25] AdditionalCallingPartyNumber {bound} OPTIONAL,
forwardCallIndicators [26] ForwardCallIndicators OPTIONAL,
bearerCapability [27] BearerCapability {bound} OPTIONAL,
eventTypeBCSM [28] EventTypeBCSM OPTIONAL,
redirectingPartyID [29] RedirectingPartyID {bound} OPTIONAL,
redirectionInformation [30] RedirectionInformation OPTIONAL,
cause [17] Cause {bound} OPTIONAL,
iSDNAccessRelatedInformation [21] ISDNAccessRelatedInformation OPTIONAL,
iNServiceCompatibilityIndication [22] INServiceCompatibilityIndication {bound} OPTIONAL,
genericNumbers [31] GenericNumbers {bound} OPTIONAL,
serviceInteractionIndicatorsTwo [32] ServiceInteractionIndicatorsTwo OPTIONAL,
forwardGVNS [33] ForwardGVNS {bound} OPTIONAL,
createdCallSegmentAssociation [34] CSAID {bound} OPTIONAL,
uSIServiceIndicator [35] USIServiceIndicator {bound} OPTIONAL,
uSIInformation [36] USIInformation {bound} OPTIONAL,
carrier [37] Carrier OPTIONAL,
iMSI [50] IMSI OPTIONAL,
subscriberState [51] SubscriberState OPTIONAL,
locationInformation [52] LocationInformation OPTIONAL,
ext-basicServiceCode [53] Ext-BasicServiceCode OPTIONAL,
callReferenceNumber [54] CallReferenceNumber OPTIONAL,
mscAddress [55] ISDN-AddressString OPTIONAL,
calledPartyBCDNumber [56] CalledPartyBCDNumber OPTIONAL,
...
}
-- OPTIONAL for iPSSPCapabilities, iPAvailable, cGEncountered, and miscCallInfo denotes network
-- operator specific use.
-- OPTIONAL for callingPartyNumber, and callingPartysCategory refer to clause 18 for the trigger
-- detection point processing rules to specify when these parameters are included in the message.
connectToResource {PARAMETERS-BOUND : bound} OPERATION ::= {
ARGUMENT ConnectToResourceArg {bound}
RETURN RESULT FALSE
ERRORS {missingParameter |
systemFailure |
taskRefused |
unexpectedComponentSequence |
unexpectedDataValue |
unexpectedParameter|
unknownLegID}
CODE opcode-connectToResource
}
-- Direction: SCF Æ SSF, Timer: T ctr
-- This operation is used to connect a call from the SSP to the physical entity containing the SRF.
-- Refer to clause 18 for a description of the procedures associated with this operation.
ConnectToResourceArg {PARAMETERS-BOUND : bound} ::= SEQUENCE {
resourceAddress CHOICE {
ipRoutingAddress [0] IPRoutingAddress {bound},
legID [1] LegID,
ipAddressAndLegID [2] SEQUENCE {
ipRoutingAddress [0] IPRoutingAddress {bound},
legID [1] LegID,
...
},
none [3] NULL,
callSegmentID [5] CallSegmentID {bound},
ipAddressAndCallSegment [6] SEQUENCE {
ipRoutingAddress [0] IPRoutingAddress {bound},
callSegmentID [1] CallSegmentID {bound},
...
}
},
extensions [4] SEQUENCE SIZE(1..bound.&numOfExtensions) OF
ExtensionField {bound} OPTIONAL,
serviceInteractionIndicators [30] ServiceInteractionIndicators {bound} OPTIONAL,
serviceInteractionIndicatorsTwo [7] ServiceInteractionIndicatorsTwo OPTIONAL,
...
}
disconnectForwardConnection OPERATION ::= {
RETURN RESULT FALSE
ERRORS {systemFailure |
taskRefused |
unexpectedComponentSequence}
CODE opcode-disconnectForwardConnection
}
-- Direction: SCF Æ SSF, Timer: T dfc
-- This operation is used to disconnect a forward temporary connection or a
-- connection to a resource. Refer to clause 18 for a description of the procedures
-- associated with this operation.
-- This operation is not valid for a multi call segment CSA.
connect {PARAMETERS-BOUND : bound} OPERATION ::= {
ARGUMENT ConnectArg {bound}
RETURN RESULT FALSE
ERRORS {missingParameter |
parameterOutOfRange |
systemFailure |
taskRefused |
unexpectedComponentSequence |
unexpectedDataValue |
unexpectedParameter}
CODE opcode-connect
}
-- Direction: SCF ? SSF, Timer: T con
-- This operation is used to request the SSF to perform the call processing actions to route or
-- forward a call to a specified destination. To do so, the SSF may or may not use destination
-- information from the calling party (e.g. dialed digits) and existing call setup information
-- (e.g. route index to a list of trunk groups), depending on the information provided by the SCF.
-- - When address information is only included in the Connect operation, call processing resumes at
-- the Analyzed_Information PIC in the O-BCSM.
-- - When address information and routing information is included, call processing resumes at the
-- Select_Route PIC.
ConnectArg {PARAMETERS-BOUND : bound} ::= SEQUENCE {
destinationRoutingAddress [0] DestinationRoutingAddress {bound},
alertingPattern [1] AlertingPattern OPTIONAL,
correlationID [2] CorrelationID {bound} OPTIONAL,
cutAndPaste [3] CutAndPaste OPTIONAL,
iSDNAccessRelatedInformation [5] ISDNAccessRelatedInformation{bound} OPTIONAL,
originalCalledPartyID [6] OriginalCalledPartyID {bound} OPTIONAL,
routeList [7] RouteList {bound} OPTIONAL,
scfID [8] ScfID {bound} OPTIONAL,
extensions [10] SEQUENCE SIZE(1..bound.&numOfExtensions) OF
ExtensionField {bound} OPTIONAL,
carrier [11] Carrier{bound} OPTIONAL,
serviceInteractionIndicators [26] ServiceInteractionIndicators {bound} OPTIONAL,
callingPartyNumber [27] CallingPartyNumber {bound} OPTIONAL,
callingPartysCategory [28] CallingPartysCategory OPTIONAL,
redirectingPartyID [29] RedirectingPartyID {bound} OPTIONAL,
redirectionInformation [30] RedirectionInformation OPTIONAL,
displayInformation [12] DisplayInformation {bound} OPTIONAL,
forwardCallIndicators [13] ForwardCallIndicators OPTIONAL,
genericNumbers [14] GenericNumbers {bound} OPTIONAL,
serviceInteractionIndicatorsTwo [15] ServiceInteractionIndicatorsTwo OPTIONAL
iNServiceCompatibilityResponse [16] INServiceCompatibilityResponse OPTIONAL,
forwardGVNS [17] ForwardGVNS {bound} OPTIONAL,
backwardGVNS [18] BackwardGVNS {bound} OPTIONAL,
callSegmentID [20] CallSegmentID {bound} OPTIONAL,
legToBeCreated [21] LegID OPTIONAL,
locationNumber [50] LocationNumber {bound} OPTIONAL,
bearerCapability [51] BearerCapability {bound} OPTIONAL,
suppressionOfAnnouncement [55] SuppressionOfAnnouncement OPTIONAL,
oCSIApplicable [56] OCSIApplicable OPTIONAL,
...
}
releaseCall {PARAMETERS-BOUND : bound} OPERATION ::= {
ARGUMENT ReleaseCallArg {bound}
RETURN RESULT FALSE
ALWAYS RESPONDS FALSE
CODE opcode-releaseCall
}
-- Direction: SCF Æ SSF, Timer: T rc
-- This operation is used to tear down an existing call at any phase of the call
-- for all parties involved in the call.