Switch controller application programmer interface6587890Abstract Switch controller application programmer interfaces (SCAPIs) are described herein. The SCAPIs allow for communication with routines of an application program that resides in memory of a switch controller. The switch controller is a component within a telecommunications network that provides an interface between a public switched telephone network via programmable switches and intelligent service network components. Intelligent service network components may provide an interface to other networks and/or perform enhanced service call processing. Functions performed using SCAPI procedures include interface with the programmable switches, health monitoring, requesting processes to perform tasks, interface with intelligent service network components, and enhanced service call processing. SCAPIs are procedures that reside in memory of the switch controller and, when performed by processing computer program commands, cause SCAPI messages to be sent that provide communication with routines within the switch controller application program. Claims What is claimed is: Description BACKGROUND OF THE INVENTION
TABLE 1
ISUP Messages Sent Between the Programmable Switch
and the Switch Controller
Abbreviation Message Name Description
IAM Initial Address The Initial Address Message includes the
digits
Message identifying the called and calling
parties, the type
of network connection required, the
characteristics of the calling party
(payphone,
etc.), and the characteristics of the call
type
(voice, data, fax, etc.). For inbound
calls, the
switch controller is mainly concerned with
the
called and calling party numbers which
identify
the product and operator group required to
support the call.
ACM Address Complete The Address Complete Message includes the
Message backwards acknowledgment through the
network
that the requested facilities in the IAM
have been
provided and where compromises were made
(satellite hops, etc.). Additionally, the
ACM
indicates to the intermediate nodes that
voice
should be provided in the backwards
direction of
the call.
ANM Answer Message The Answer Message indicates that the call
has
been answered by the called party and
indicates
to the intermediate nodes that two way
voice path
should be provided.
REL Release Message The Release message indicates that one
party in
the call has requested to release the
connection.
Additionally, the REL message may contain
various cause codes which indicate the
reason for
the termination of the call (normal and
many
possible abnormal conditions).
RLC Release Complete The Release Complete message indicates
that a
request for REL is granted from the
previous
nodes in the call and that the resources
assigned
to the call shall be released.
SUS Suspend Message The suspend message indicates temporary
suspension of an active call.
RES Resume Message Follows a suspend message to indicate that
suspended call is resumed.
Note, however, that the present invention can also be implemented using ISDN messaging. Reference, for example, can be made to "Digital Subscribers Signaling System No. 1--ISDN User-Network Interface Layer 3 Specification For Basic Call Control," ITU_T Recommendation Q.931. In fact, any known or future developed messaging protocol can be used to implement the present invention. The switch controller 112 communicates with each ISN component 116 via NSPP/UDP/IP over the ISN Ethernet LAN 214. The NSPP messaging is used to implement an API referred to as transmission control (TC) messaging. The TC messages include messages needed for communication between the switch controller 112 and the various ISN components 116 to handle a call. For example, for a switch controller 112 to route a call to a particular ARU 204 port, the switch controller 112 sends a "Call Offered" TC message to that ARU 204. The messages that are part of the TC API are included in Table 2 below.
TABLE 2
TC Messages
Message initiating component .fwdarw.
TC Message message reviewing component Description
TC_Call Switch Controller .fwdarw. MTOC/ACP New Call offered to
the platform
Offered
TC_Release MTOC/ACP .fwdarw. Switch Controller To release a call leg
TC_Conference MTOC/ACP .fwdarw. Switch Controller Conference in a
terminating
party
TC_Call Park MTOC/ACP .fwdarw. Switch Controller Park an active call
and start call
park time
TC_Count MTOC/ACP .fwdarw. Switch Controller Connect an originator
and
terminator and drop off
operator
TC_Logon MTOC/ACP .fwdarw. Switch Controller Logon an Operator
TC_Layoff MTOC/ACP .fwdarw. Switch Controller Logoff an operator
TC_Update MTOC/ACP .fwdarw. Switch Controller Update status of
Operator
(Ready/Not Ready)
TC_On_Hold MTOC .fwdarw. Switch Controller Hold the specified leg
(on and
off hold)
TC_Off_Hold MTOC .fwdarw. Switch Controller Take a leg off hold
TC_Answer Switch/Controller .fwdarw. ACP/MTOC Answer indication
from the
terminating party
TC_Observe Supervisor Console .fwdarw. Switch To observe a specific
operator
Controller
4.0 SCAPIs within the Switch Controller FIG. 2 is a block diagram 202 of the switch controller application program within the switch controller according to one embodiment of the present invention. Stored within memory of the switch controller 112 is the switch controller application program 204 which is the computer program that performs the functionality associated with switch controller 112. The architecture of the switch controller 112 will be described in further detail with respect to FIG. 3. The processing of SCAPI messages within the switch controller 112 will be described in further detail with respect to FIG. 4. The SCAPIs provide communication between the routines within the switch controller application program 204. SCAPIs provide this communication by sending SCAPI messages. The SCAPIs are stored in the main memory and processed by the processor of the switch controller 112. In order to process a SCAPI, a processor within the switch controller 112 calls the SCAPI procedure from main memory. The SCAPI procedure sends a SCAPI message comprising data from one routine to another and receives a response. The SCAPI message includes input data, which is data that will be used to perform an action. An example of input data is a call identifier that can be used to retrieve statistics about a particular call. The SCAPI message causes the recipient routine to perform an action using the input data and provide a response SCAPI message. The response SCAPI message includes return data which is data requested and/or data indicating whether the transaction was successful. In addition, the SCAPI message may provide output data which is data requested by the initiating routine. The SCAPI response messages are not required but are useful in ensuring that a transaction is completed successfully. The SCAPI communication between the routines within the switch controller application program 204 allows the switch controller 112 to perform call processing functions, interface with the programmable switch 110, and interface with ISN components 116. The routines within the switch controller application program 204 include the programmable switch support function 210, the call control function 212, the service control function 214, the resource control function 208, and the management interface function 216. The programmable switch support function 210 provides an interface between the switch controller 112 and the programmable switch 110. The programmable switch support function 210 translates messages between generic SCAPI message format and programmable switch API message format, manages message header/trailer requirements, and controls connectivity to the programmable switch. The call control function 212 provides service independent call processing. The call control function 212 performs call processing by analyzing call processing information with respect to the current state as defined by the basic call state machine model. Each call has two states represented in the state machine for the originating and terminating call segments. The basic call state machine model is described further in the International Telecommunications Union (ITU) specifications Q.1224. The call control function 212 performs various functions including but not limited to: detecting an incoming call, creating an originating call model, collecting originating dialed digits, requesting analysis of the digits, selecting trunk groups, creating a terminating call model, composing and sending messages to the terminating agent or party, detecting ISDN messages, detecting disconnect signals, and triggering enhanced services. The call control function 212 communicates with SCAPI messages to trigger features and services from the service control function 214. The service control function 214 includes the switch service process which interfaces with the ISN components 116. The call control function 212 sends a SCAPI message to the service control function 214 to access data and processing from the service control function 214. The service control function 214 responds with a SCAPI response message to call control function 212 to provide the necessary information. For example, if a caller desires to use a service that requires human operator intervention, call control function 212 will use the group select process and queue process to queue the call to an operator group with manual telephone operator consoles. A manual telephone operator console is a type of ISN component 116. The call is queued to the group of manual telephone operator consoles until a manual telephone operator console becomes available. The call is then connected through to the manual telephone operator console and processed. The manual telephone operator console processes the call by interfacing with other ISN components 116 and via LANs, WANs and routers (and other connectivity) 114. When processing by the manual telephone operator console is complete, if the caller desires connection with a receiving party, the switch controller connects the call through to the receiving party by sending commands to the switch controller 112 that are processed by the service control function 214, the call control function 212 to set up a terminating leg, and the programmable switch support function 210 to translate to programmable switch commands and acquire a terminating channel on programmable switch 110. If the caller does not desire connection with a receiving party, the caller is disconnected. The resource control function 208 includes two processes. The first is the system control process, which is in charge of monitoring the states of a call and service-related resources. This system control process is centrally aware of the resource state and general health of the switch controller 112. The second is the resource management process. Exemplary switch controller resource management functionality includes management of both system-related resources such as message queues and a call data block table, as well as network resources such as the programmable switch matrices and agent resources. The resource management process is described in further detail in copending U.S. patent application, Ser. No. 09/096,939 entitled, "A System and Method for Resource Management" referenced above. The service control function 214 provides an interface to the ISN 108 and one or more service logic programs that provide enhanced service call processing. The service control function 214 is made up of the switch service process, the group select process, call queuing process, and the other service logic processes that allow for network interface and enhanced service processing. In order to provide an interface to the ISN 108, the switch service process converts between SCAPI message format used by the switch controller 112 and NSPP used by ISN 108. The use of service-specific service logic programs within the service control function enables service-specific features for each call. The call control function 212 performs service independent processing. The call control function communicates by sending SCAPI messages to service logic programs within the service control function 214 to trigger processing of the service logic program that provides features and/or services. The group select service logic program routes calls to intelligent peripherals. Programmable switch 110 ports are grouped by the type and application of intelligent peripheral to which the port terminates. When a call requires a certain intelligent peripheral, the switch controller 112 selects the port group of that intelligent peripheral type, and send a command to the programmable switch 110 which routes the call to the first available port in that group. The group select service logic program selects a programmable switch 110 port group, to which to route a call, based on a dialed number translation and other business specific criteria such as the service selected by the caller. The call queue service logic program queues calls on the programmable switch 110. The call queue service logic program determines the port group to which the call should be routed. If the call queue service logic program does not have ports available in a group, the call queue service logic program sends commands to the programmable switch 110 via the programmable switch support function 210 to queue the call which is to hold the call and perhaps apply treatment (i.e., play music). The call queue service logic program generates the commands needed to hold the call in queue on the programmable switch 110, apply call treatment, drop a call that has been held too long, and transfer a call. Other service logic programs provide feature and/or service specific processing. In addition, service logic programs may perform processing for interface to other networks. The management interface function 216 includes two functional areas of monitoring control. The system monitoring functionality encompasses the generation of system alarms which allows a system management console to monitor the status and run-time operation of the switch controller software. The management interface function 216 also includes a process manager, which is responsible for initial startup and health of individual processes that make up the switch controller 112. The switch controller application program 204 of the present invention is preferably implemented using a computer system 302 as shown in block diagram form in FIG. 3. The computer system 302 includes one or more processors such as processor 304 connected to bus 308. Also connected to bus 308 is main memory 310 preferably random access memory (RAM) and secondary storage devices 314, secondary storage devices 314 include for example a hard drive 316 and a removable storage medium 320 such as a disk drive. The switch controller application program 204 is preferably a computer program that resides in main memory 310 while executing. When executing, this computer program enables the computer system 302 to perform the features of the present invention as discussed here. Thus, the switch controller application program 204 represents the controller of the computer system 302 (and of the processor 304). Alternately, the switch controller application program 204 is predominantly or entirely a hardware device such as a hardware state machine. In one exemplary embodiment, the present invention is a computer program product such as removable storage medium 320 representing a computer storage disk, compact disk etc., comprising a computer readable media having control logic recorded thereon. The control logic when loaded into main memory 310 and executed by processor 304 enables the processor 304 to perform operations herein. The switch controller application program 204 includes SCAPI message processing procedures 312 which are processed by the processor performing SCAPI message processing 306. The SCAPI message processing procedures 312 are procedures that are stored in main memory 310. 5.0 SCAPI Messages FIG. 4 illustrates the SCAPI message process flow 402. The SCAPI message process flow 402 is the flow of a SCAPI message transferring from one computer program routine to another computer program routine. The SCAPI message process flow 402 is given for an exemplary flow of a SCAPI message being sent from a first routine to a second routine within the switch controller application program 204. With reference to FIG. 2, if the programmable switch support function 210 needs to send a SCAPI message to call control function 212, the programmable switch support function 210 is the first routine and the call control function 212 is the second routine or receiving routine. However, if the call control function 212 needs to send a SCAPI message to the service control function 214, the call control function 212 is the first routine and the service control function 214 is the second routine. The SCAPI message process flow 402 begins with step 406. In step 406, the first routine within the switch controller application program 204 is processed. The software routines of the switch controller application program 204 including the programmable switch support function 210, the call control function 212, the resource control function 208, the service control function 214 and the management interface function 216, reside in main memory 310 and are processed by processor 304. One or more of these processes may be processed by processor 304 at any given time. In step 408, the first routine needs to notify the second routine within the switch controller application program 204 that processing is needed. An example of processing needed by a routine is the call control function 212 needing processing performed by a service logic program within the service control function 214. The call control function 212 and service control function 214 operate together to perform call processing. The call control function 212 performs service independent call processing and the service control function 214 performs service specific processing. The call control function 212 receives a request for processing for a call and sends SCAPI messages to request processing by the service control function 214. One possible request for processing is a switch type SCAPI message received from the programmable switch support function 210 that was initiated by a programmable switch API message received from a programmable switch 110. An example of a call requiring processing of a service logic program is a call requiring a human operator. If a caller requests a service that requires a human operator, during processing of call control function 212, processing performed by the group select service logic program within the service control function 214 will be needed in order to connect the call through to a manual telephone operator console. In step 410, the first routine retrieves the SCAPI message format and data needed for the SCAPI message from memory. In the previous hypothetical, if call control function 212 requires processing by service control function 214, the processor 304 executing the call control function 212 executes commands within the call control function 212 that retrieve the SCAPI message format and data needed for the SCAPI message residing in main memory 310. Alternately, the SCAPI message format and/or data needed for the SCAPI message may be in a secondary storage device 314 such as hard disk 316 or removable storage medium 320 or any other medium of storing data that can be used by a computer. In step 412, the first routine creates the SCAPI message. The processor 304 executing SCAPI message processing procedures 312, either within call control function 212 or accessible by call control function 212, creates a SCAPI message. The format of the SCAPI message varies depending on the routine that sends the message and the purpose of the message. The formats of SCAPI messages will be described in further detail with respect to FIGS. 5 and 6. In the exemplary hypothetical, in order to initiate processing of a service logic program, the call control function 212 sends a service type SCAPI message. Service SCAPI messages will be described in further detail with respect to FIGS. 5 and 6. As shown in Table 7 which is discussed with respect to FIG. 6D, service SCAPI messages have various fields including a service type field. One possible value of the service type field is SRV_TYPE_TRIGGER. The call control function 212 creates a service SCAPI message with the service type field having a value of SRV_TYPE_TRIGGER to initiate processing of a service logic program. In step 414, the first routine sends a SCAPI message to the queue of the second routine. In the exemplary call above, the call control function 212 sends the SCAPI message to the service control function 214. Well-known UNIX interprocess communication (IPC) capabilities are used in transporting SCAPI messages. The call control function 212 writes a message to an IPC message queue corresponding to the service control function 214. The queued message contains a reference pointer to shared memory. The shared memory is dynamically allocated for use in storing actual message data. The call control function 212 writes the SCAPI message data to a shared memory segment that is allocated for the actual message data. The shared memory segment allocated for the actual message data is referenced by a pointer which is stored in the SCAPI message. In step 416, the second routine retrieves the request from its IPC message queue. In order to retrieve the actual message data of the SCAPI message, the second routine retrieves the reference pointer from the IPC message queue which points to the shared memory segment that includes the actual message data. The actual message data is then retrieved from the shared memory segment. In the previous hypothetical, in step 414, the service control function 214 received the SCAPI message from the call control function 212 comprising the reference pointer to the shared memory segment storing the actual SCAPI message data. The service control function 214 retrieves the SCAPI message from the IPC message queue. The service control function 214 uses the reference pointer to locate the shared memory segment comprising the actual message data and reads the actual message data from the shared memory segment. In step 418, the second routine interprets the SCAPI message. In the exemplary hypothetical, the service control function 214 interprets the service SCAPI message using the values of the fields. The SRV_TYPE_TRIGGER value in the service type field indicates that the SCAPI message was sent to trigger processing of a service logic program. In the exemplary hypothetical of processing a service that requires a human operator, the group select service logic program will be processed. In step 420, the second routine retrieves from memory the SCAPI message format and data needed to send a response SCAPI message. In the exemplary hypothetical, the service control function 214 retrieves the SCAPI message format needed to send the response SCAPI message. The data needed for the response SCAPI message is either data needed to identify the response SCAPI message, such as a call identifier, or data that resulted from processing of the SCAPI message, such as a group identifier identifying a group of manual operator ports. Data needed to identify the message is stored in the shared memory segment referenced by the pointer stored in the SCAPI message. Memory used for storage of data that results from the processing of the SCAPI message depends the processing performed by the SCAPI message. Processing a SCAPI message may result in no data for the response SCAPI message. Alternately, processing of SCAPI message may result in the processing of additional SCAPI messages, additional other messages, such as programmable switch API messages, and/or computer program code. Data resulting from SCAPI message processing may be stored in shared memory referenced by a pointer in additional SCAPI messages or other messages that were processed or in other memory accessible by processing computer program code. In step 422, the second routine creates the response SCAPI message. In the example, the processing of commands within the service control function 214 creates the response SCAPI message. In step 424, the second routine sends the response SCAPI message to the first routine. In the example, service control function 214 sends a response SCAPI message to call control function 212. FIGS. 5A and 5B illustrate high-level SCAPI message formats. FIG. 5A is a diagram of the SCAPI message format 502. The SCAPI message format 502 includes the SCAPI message descriptor 504 and SCAPI message data 506. The SCAPI message descriptor 504 precedes SCAPI message data 506. The SCAPI message descriptor 504 will be described in further detail with respect to FIG. 5B. The SCAPI message data 506 will be described in further detail with respect to FIGS. 6A, 6B, 6C, and 6D. FIG. 5B illustrates the SCAPI message descriptor 504. The SCAPI message descriptor 504 has information such as the message type and other information describing characteristics of the SCAPI message. The message descriptor 504 allows SCAPIs to process in a consistent manner for all SCAPI data types. In one exemplary embodiment, the SCAPI message descriptor 504 comprises 10 fields. These fields include the message type 508, the message version 510, the report field 512, report reason field 514, reply to queue identifier 516, sender queue identifier 518, message identifier 520, correlation identifier 522, data format 524, and data size 526. Table 3 provides information about each of the fields of the message descriptor of the SCAPI message. Each row of Table 3 provides information about a particular message descriptor field. The first column in Table 3 indicates the size of the field using well-known C syntax terminology. The next column in Table 3 is the field name which indicates which field is described by the information in the row. The field name corresponds to each of the field names shown in FIG. 5B. For example, the first row of Table 3 indicates the first field name is message type which corresponds to the message type 508 field of FIG. 5B. The third column of Table 3 provides a description of each of the fields. For example, referring to the third column of the first entry of Table 3, the function of the message type 508 field is to provide the type of the message. The fourth column provides the possible values for the field (which are possible message types). For the message type field 508, four possible values are given in Table 3: MT_REQUEST, MT_REPLY, MT_DATAGRAM, and MT_REPORT. The fifth column provides a description of the field values. Like the description of the field, the description of the field values describes a particular value. For example, for the MT_REQUEST value, the description is: "a message requiring a reply." Therefore, if the message descriptor field has the value MT_REQUEST in the message type field 508, then the SCAPI message requires a reply. The purpose of the message descriptor is to allow each of the switch controller message types to be described in a consistent manner for all switch message types. The message type field 508 identifies what type of message is being sent to ensure that any specialized handling that is needed for the type of message is performed. Message type is also a field in the SCAPI message data portion 506. The message type of the SCAPI message descriptor 504 is the same as the message type in the SCAPI message data portion 506. The message version field 510 indicates the version of the message. Although version is also a field in the SCAPI message data segment 506, the value of the version field in the SCAPI message descriptor 504 differs from the value in the SCAPI message data 506. The report field 512 indicates report options. This field indicates what type of report messaging is being requested by the sender of the message. The report option field indicates whether or not exception reports are required, and if so, which queue a report message should be sent to. The report reason field 514 is populated with a reason code which indicates the nature of the report, which is particularly useful for MT_REPORT type messages. Reason codes can be either system or application related. The reply to queue identifier field provides the message queue that should receive MT_REPLY and MT_REPORT messages. The sender queue identifier 518 field is the queue identifier of the process which sent the message. This identifier may be used by the receiving process to identify processes with problems and to log other information. The message identifier field 520 provides message context information for the sender of the message and is returned in the correlation identifier field of any reply or report messages. The correlation identifier field 522 is the correlation identifier of reply and report messages. The correlation identifier is used to match request messages with corresponding reply or report messages. The data format field 524 indicates to the receiver what format the data part of the message is in. For example, it indicates whether the message has a data format of a registration message, heartbeat messages, switch message, or that no format is provided. The data size field 526 is the size of the data buffer that follows the SCAPI message descriptor.
TABLE 3
Structure of the Message Descriptor of a SCAPI Message
Short/ Field Values
Long Field Name Field Description Possible Description Field
Values
Short sMsg Type Message type of this MT_Request This request message
requires
message a reply.
MT_Reply This message is a
reply to an
earlier request
message. This
message should be sent
to the
queue indicated by the
sReplyToQid field of
the
original request
message. The
CorrelId field of the
reply
message should be set
to the
message identifier
field of the
original request
message.
MT_ This message does not
require
Datagram a reply.
MT_Report This message is a
report
message. This message
reports an unexpected
occurrence such as a
request
message that was
received
which contained data
that was
invalid. The report
message
should be sent to the
queue
indicated by the
sReplyToQid
field of the message
descriptor
of the message that
caused the
error. The
usReportReason
field should be set to
indicate
the nature of the
report. In
addition, the CorrelId
field of
the report message
should be
set to the message
identifier
field of the message
that
caused the error. It
is possibie
for a datagram message
to
initiate a report
message.
Short usVersion Version of this MD_Version.sub.-- Version 1 of the
Message
Message Descriptor 1 Descriptor structure
header format
UShort usReport This is the report MDRO.sub.-- This value indicates
that
options field. This Exception exception reports are
required.
field indicates what This type of report
can be sent
type of report by a process to
indicate that a
messaging is being message that it has
received
requested by the cannot be processed
(for
sender of the example, the process
could not
message. parse the request
message
format or fields
within the
request message were
corrupt
or incorrect). Any
report
message will be sent
to the
queue specified in the
sReplyToQid field.
MDRO.sub.-- This value also
indicates that
Exception.sub.-- exception reports
are required.
SenderQid This type of report is
the same
as the MDRO_Exception
with
the exception that any
report
messaging should be
sent to
the queue specified in
the
sSenderQid field.
MDRO_None This value indicates
that no
reports required. If a
report
message is requested,
the
queue to which the
report
should be sent must be
specified in either
the
sReplyToQid or
sSenderQid
fields depending on
the report
type. When a report
message
is received, the
nature of the
report can be
determined by
examining the
usReportReason field
in the
message descriptor.
UShort usReport This field indicates RC_None
Reason the nature of the RC_Invalid.sub.--
report and is only MSG_Format
meaningful for
MT_REPORT type
messages. Reason
codes can be either
system or application
related.
Short sReplyToQi This is the identifier For MT_DATAGRAM messages, the
sReport
d of the message queue option field must be set
appropriately in order
to which MT_REPLY to have a MT_REPORT message sent to
the
and MT_REPORT originator of a MT_DATAGRAM message.
If
messages should be a reply-to-queue is not required, it
is
sent to by the receiver recommended that the
sReplyToQid field be
of a request message. set to a negative value.
This field is required
if a MT_REQUEST
type message is
specified in the
message descriptor, or
if any reports are
requested with the
sReport option in the
message descriptor.
Short sSenderQid Queue identifier of
process which sent
the message. This is
an identifier which
can be used by
receiving processes to
identify misbehaving
processes in error log
information.
UShort ulMsgId This message
identifier provides
message context
information for the
sender of the message
and should be
returned in the
Correction ID field of
any corresponding
reply or report
message.
Ushort ulCorrelID The correlation
identifier is set to the
value of ulMsgID
contained in the
request message
descriptor for reply or
report messages. This
allows a process to
matchup an
outstanding request
message with a reply
or report message.
Short usData This field indicates to
Format the receiver what
format the data part of
the message is in.
(Registration,
HeartBeat, Switch,
None, etc.)
Short sData Size This field indicates
the size of the data
buffer to follow.
FIG. 6A illustrates the SCAPI switch message data portion. A switch type SCAPI message allows for communication between the programmable switch 110 and the switch controller 112. Switch SCAPIs are capable of initiating switch SCAPI messages that can initiate programmable switch APIs to send programmable switch APIs to the programmable switch 110. In addition, switch SCAPIs are capable of producing switch SCAPI messages in response to messages received by programmable switch APIs. The SCAPI switch message data portion comprises ten fields. These fields include the message-type field 602, a version field 604, switch type 606, switch identifier 608, message option 610, context 612, status 614, data encoding 616, data format 618, and data size 620. Each of these fields is illustrated in more detail in Table 4. The left-most column of Table 4 indicates the field name. The next column indicates the length of the field. Like Table 3, Table 4 provides the size of the field using well known C programming language terminology. The third column provides the function of the field. The fourth column includes possible field values. The information provided in Table 4 is described with reference to an exemplary field. The name of the field is in the first column of Table 4. The message type field 602 is the first entry of Table 4. The second column provides the size of the message type field 602 which is USHORT. The third column provides the function of the message type field 602. The message type 602 field indicates the type of message. The fourth column provides possible values of the message type field 602. The value of the message type field is MT_SWITCH_01, which is the same as the message type field 508 in the SCAPI message descriptor 504. The information provided in Table 4 is further described with reference to a second exemplary field. The fifth entry of Table 4 provides information about the message options field 610 as indicated by the first column. The second column again provides the size of the field which for the message options field 610 is SHORT. The third column indicates the function of the message options field 610 which is to indicate the switch message subtype. The message options field 610 indicates the function to be performed by the SCAPI message. Switch SCAPI messages allow for communication between the switch controller 112 and the programmable switch 110. Much of the communication between the switch controller 112 and the programmable switch 110 is to perform functions that affect connecting and disconnecting calls. The message options field 610 indicates functions such as whether the SCAPI message is sending data to connect channels, connect or release a conference call, indicate a call is being offered, park a call, or perform another function. A channel is the allocation of bandwidth in a data stream carried on a transmission facility for a particular call. A conference call is more than two parties connected on a call. A call is parked if the originating channel of the call is held without attempting to connect a terminating leg. Typically a call is parked to await additional signaling or the expiration of a timer. The fourth column provides the possible values for the field. The possible values include message option connect outbound conference, message option connect outbound conference response, message option outbound release, message option outbound release response, message option call offered, message option call offered response, message option release, message option connect, message option conference, message option call park, message option observe, message option XL action, and message option XL protocol.
TABLE 4
Switch Message Parameters
Field Name Short/Long Function Possible Values
Message USHORT This field indicates MT_SWITCH_01
Type the type of message
that this header
represents. The
value should be the
same value that is
contained in the
data format field of
this message
descriptor.
Version USHORT This is the version SW_VER_1
of the switch
message header
format.
Switch Type SHORT This field indicates SW_TYPE_EXCEL_LNX
which type of switch SW_TYPE_EXCEL_CSN
matrix this message SW_TYPE_SUMA
is intended for.
Switch SHORT This field indicates For Excel switches, this value
should be
Identifier which switch matrix in the range of 0 to 255.
or node should
receive this
message. This field
can sensor the same
purpose as the
logical node field in
the excel message
header when
communicating with
Excel switches.
Message SHORT This field indicates MSG_OPT_CONNECT_OB_CONF
Options which switch MSG_OPT_CONNECT_OB_CONF_RS
message subtype is P
being used. MSG_OPT_OB_RELEASE
MSG_OPT_OB_RELEASE_RSP
MSG_OPT_CALLOFFERED
MSG_OPT_CALLOFFERED_RSP
MSG_OPT_RELEASE
MSG_OPT_CONNECT
MSG_OPT_CONFERENCE
MSG_OPT_CALL_PARK
MSG_OPT_OBSERVE
MSG_OPT_XL_ACTION
MSG_OPT_XL_PROTOCOL
Context LONG This field contains
Information context information
used between
applications. If this
switch message is
coming in from or
going out to the
Network
Information
Distribution System
(NIDS) service logic
layer, then this field
contains the client
handle of the NSPP
(NIDS Sequenced
Packet Protocol)
client which
originated or which
will be receiving
this message.
Status SHORT This field is used to
Indicator indicate status. This
field can be use in
both
MT_REQUEST and
MT_REPLY type
SCAPI messages but
is usually used in
MT_REPLY type
messages.
Data SHORT This field specified SW_ENC_NATIVE
Encoding the encoding of the SW_ENC_ASNI
data part of the SW_ENC_BIG_ENDIAN
message. SW_ENC_LITTLE_ENDIAN
Data Format USHORT This field indicates DF_SW_XL_ACTION
Identifier to the receiver what DF_SW_XL_PROTOCOL
format the data part
of the message is in.
For switch messages
this field can be
equal to all the
ISNTC switch
format types and all
of the Excel switch
message format
types.
Data Size SHORT This field indicates
the size of the data
buffer to follow.
FIG. 6B illustrates the SCAPI registration message data portion. The registration SCAPI message is used by various processes to register themselves and provide health monitoring information. The routines within the switch controller application program 204, including the programmable switch support function 210, resource control function 208, call control function 210, management interface function 216, and service control function 214, send registration SCAPI messages to a process manager within the management interface function 214 so the process manager can monitor their health. Rather than sending heartbeats, as is traditionally done, the routines within the switch controller application program send registration SCAPI messages and the data within the registration SCAPI message is stored in a shared memory library that includes heartbeat data for the particular routine. The data is populated in the library is stored in shared memory, which is in main memory 310 or secondary storage device 316. The SCAPI registration message data portion includes seven fields. These fields are: the message type field 622, the version field 624, the registration options field 626, the context field 628, the status field 630, the data format field 632, and the data size field 634. Table 5, below, provides additional information about these fields. In the left-most column of Table 5, the message name of the field is given. The second column includes the size of the field using well-known C programming language terminology. The third column provides the function of the field. The fourth column provides possible field values. The information in Table 5 is explained with reference to an exemplary field. The message type field 622 is the first entry of Table 5 as indicated in the first column. The second column indicates the size of the message type field 622. The size of the message type field 622 is USHORT. The third column provides the function of the message type field 622. The function of the message type field 622 is to provide the type of message. The fifth column indicates the possible values of the message type field 622. The value of the message type field 622 is MT_REGISTRATION_01, which is the same as the message type field 508 of the SCAPI message descriptor 504 of the registration message. The information provided in Table 5 is explained with reference to a second exemplary field. The third row of Table 5 provides information about the registration options field 626 of the SCAPI registration message data portion. The second column indicates the size of the registration options field 626. The size of the registration options field 626 is SHORT. The third column indicates the function of the registration options field 626. The function of the registration options field 626 is to indicate which registration option or options are being requested. The registration options field 626 provides the function to be performed by the registration SCAPI message. The registration SCAPI message is used by the processes within the switch controller application program 204 to provide health monitoring information to the process manager with the management interface function 214. The fourth column indicates possible values of the registration options field 626. Possible values include REGOPT_HB_SHMEM (shared memory heartbeat indication) and REGOPT_HB_MSGQUE (IPC message-based heartbeat indication). Both of these values are used in registration SCAPI messages that are used to provide heartbeat information which indicates the health of a process.
TABLE 5
Switch Controller API Registration Message Parameters
Message Name Short/Long Function Possible Values
Message Type USHORT This field indicates MT_REGISTRATION_01
the type of message
that this header
represents. The
value should be the
same as that
contained in the
data format field of
the message
descriptor that
encapsulates this
message.
Version USHORT This field indicates REG_VERSION_1
the version of tbe
registration message
header format.
Registration USHORT This field is a bit REGOPT_HB_SHMEM (Shared
Option mask which is used memory heart beat
indication)
to indicate which
registration option REGOPT_HB_MSGQUE (IPC
or options are being message based heart beat
indication)
requested.
Content SHORT This field contains
Information context information
used between
applications. This
field can contain
any type of
information as long
as the sending and
receiving
applications know
the meaning.
Status Indicator USHORT This field is used to
indicate status
information. This
field can be used in
both
MT_REQUEST and
MT_REPLY type
SCAPI messages but
is usually used in
MT_REPLY type
messages.
Data Format USHORT This field indicates
Identifier to the receiver what
format the data part
of the message is in.
Data Size SHORT This field indicates
the size of the data
buffer to follow.
FIG. 6C illustrates the SCAPI control message data portion. The control SCAPI message is used by processes to request another process to perform a task. For example, requests by a switch controller process to manage, obtain data from, or save data to a Simple Network Management Protocol (SNMP) agent are control messages. A SNMP agent is within the switch controller 112 and communicates with a System Management Console. The System Management Console can control the switch controller, using SNMP. The SCAPI control message data portion includes seven fields: the message type field 636, the version field 638, operation code 640, context 642, status 644, data format 646, and data size 648. Each of these fields is illustrated in more detail in Table 6 below. The left-most column of Table 6 is the field name. The second column of Table 6 indicates the size of the field using well-known C programming language terminology. The third column of Table 6 provides the function of the field. The fourth column of Table 6 has possible field values and a description of the values. The information provided in Table 6 is explained with reference to an exemplary field. The message type field 636 is the first entry of Table 6 as indicated in the first column. The size of the message type field 636 is USHORT as is shown in the second column. The third column indicates that the function of the message type field 636 is to provide the type of message. The fourth column provides the value of the message type field 636 is MT_CONTROL_01 which should be the same as the message type field 508 in the SCAPI message descriptor 504. The information provided in Table 6 is explained with reference to a second exemplary field. The third row of Table 6 provides information about the operation code field 640 as is indicated in the first column. The second column provides the size of the operation code field 640 which is USHORT. The third column provides the function of the operation code field 640. The function of the operation code field 640 as given in the third column is to indicate the type of control operation being requested. The operation code field 640 includes a value that determines the function performed by the control SCAPI message. Control SCAPI messages are used by processes to request other processes to perform tasks. Exemplary requests include requests to manage, obtain data from, or save data to the SNMP agent within the switch controller 112 that communicates with the System Management Console. The fourth column provides the possible values of the operation code field 640. The possible values of the operation code field 640 are OC_SNMP_GET, OC_SNMP_SET, OC_SNMP_TEST, and OC_SHUTDOWN. The descriptions of the possible values are provided in the sixth column. For example, the OC_SNMP_GET value indicates an SNMP GET operation is being requested and, if successful, will result in the retrieving of the requested managed object value. Switch Controller API Control Message Parameters
TABLE 6
Parameter
Name Short/Long Function Possible Values and
Description
Message Type USHORT This field MT_CONTROL_01
indicates the type
of message that
this header
represents. The
value should be
the same that is
contained in the
data format field
of the message
descriptor.
Version USHORT This field CTRL_VERSION_1
indicates the
version of this
control message
header format.
Operation Code USHORT This field is used OC_SNMP_GET This is on
to indicate what SNMP GET
type of control operation
and if
operation is being successful
will
requested. result in
the
retrieving
of the
requested
managed
object
value. This
causes data
to be
read.
OC_SNMP_SET This is an
SNMP SET
operation
and if
successful
will
result in
the
setting of
the
managed
object's
value.
This causes
data
to be saved.
OC_SNMP_TEST This is an
SNMP TEST
operation
and if
successful
will
result test
whether a
managed
object
is
acceptable for
a SNMP SET
operation.
OC_SHUTDOWN This is a
SHUTDOWN
operation
and is
used to
request
an
application to
terminate.
If
successful
the
termination
application
process will
send back a
control
message
to the
requesting
process with
the
status field
set to
success.
Context SHORT This field
contains context
information used
between
applications.
This field can
contain any type
of information as
long as the
sending and
receiving
application know
the information to
be sent and its
meaning.
Status SHORT This field is used
to indicate status
information. This
field can be used
in both MT.sub.--
REQUEST and
MT_REPLY type
SCAPI messages
but is typically
used in MT.sub.--
REPLY type
messages.
Data Format USHORT This field DF_CTRL_SNMP_GET
indicates to the DF_CTRL_SNMP_SET
receiver what DF_CTRL_SNMP_TEST
format the data
part of the
message is.
Data Size SHORT This field
indicates the size
of the data buffer
to follow.
FIG. 6D illustrates the SCAPI service message data portion. The service SCAPI message requests call processing related services. In the hypothetical given with reference to FIG. 4, the SCAPI message sent from the call control function 212 to the service control function 214 to connect a caller to an available human operator is a service type SCAPI message because connecting a caller to a human operator is a call processing function. Service SCAPI messages perform tasks such as establishing and disconnecting channel connections, triggering a process to perform call processing functions, providing billing data, and providing network component availability data. The SCAPI service message data portion includes 11 fields: the message type field 650, the version field 652, the service type field 654, the call identifier field 656, the agent terminal identifier field 658, the leg identifier field 660, the context field 662, the status field 664, the status qualifier field 666, the data format field 668, and the data size field 670. These fields are illustrated in further detail in Table 7. The left-most column indicates the field name. The second column indicates the size of the field using well-known C programming language terminology. The third column provides the function of the field. The fourth column provides possible field values and a description of the possible field values. The information in Table 7 is explained with reference to an exemplary field. The message type field 650 is the first entry of Table 7. The second column indicates that the size of the message type field 650 is USHORT. The third column indicates that the function of the message type field 650 is to provide the type of message. The fourth column indicates that the message type field 650 value is MT_SERVICE_01 which should be the same as the message type field 508 in the SCAPI message descriptor 504 of the particular service message. The information provided in Table 7 is explained with reference to a second exemplary field. The third row of Table 7 provides information about the service type field 654. The size of the service type field 654 as indicated in the second column is SHORT. The function of the service type field 654 as indicated in the third column is to provide the type of service that is being requested. The value of the service type field 654 determines the function to be performed by the service SCAPI message. The service SCAPI message requests call processing related services. Service SCAPI messages perform tasks such as establishing and disconnecting channel connections, triggering a process to perform call processing functions, providing billing data, and providing network component availability data. The fourth column provides the possible values of the service type field 654. The possible values of the service type field 654 are: SRV_TYPE_REL_CHANNEL, SRV_TYPE_REL_CHANNEL_RSP, SRV_TYPE_PARK_CHANNEL , SRV_TYPE_PARK_CHANNEL_RSP, SRV_TYPE_CREATE_LEG, SRV_TYPE_CREATE_LEG_RSP, SRV_TYPE_MERGE, SRV_TYPE_MERGE_RSP, SRV_TYPE_CONFERENCE_BRIDGE, SRV_TYPE_TRIGGER, SRV_TYPE_GROUP_SELECT, SRV_TYPE_NETWORK_ROUTE, SRV_TYPE_QUEUE, and SRV_TYPE_CONGESTION. The fifth column provides a description of the field values. For example, as shown in the fifth column, the SRV_TYPE_REL_CHANNEL and SRV_TYPE_REL_CHANNEL_RSP values indicate a service type used to release a channel. The SCAPI service message data portion provides call identification information that identifies the call and elements of the call, such as the call legs. This data is provided in the call identifier field 656 and the leg identifier field 660 respectively. The thirteenth column provides information about the call identifier field 656. The fifteenth column provides information about the leg identifier field 660. The SCAPI service message data portion also provides telecommunications network component availability information. For example, the agent terminal identifier field 658 provides an identifier of an available agent, which is a manual telephone operator console or an ARU. The fourteenth column provides information about the agent terminal identifier field 658.
TABLE 7
Switch Controller API Service Message Parameters
Field Name Short/Long Function Possible Values and
Description
Message Type USHORT This field MT_SERVICE_01
indicates the type
of message that
this header
represents. The
value should be
the same value
that is contained
in the data format
field of the
message
descriptor.
Version USHORT This field SRV_VERSION_1
indicates the
version of this
service message
header format.
Service Type SHORT This field is used SRV_TYPE_REL.sub.-- This
service type
to indicate what CHANNEL is used to
release
type of service is a voice
channel.
being requested. SRV_TYPE_REL_
CHANNEL_RSP
SRV_TYPE_PARK_ This
service type
CHANNEL is used to
park a
voice
channel.
SRV_TYPE_PARK_
CHANNEL_RSP
SRV_TYPE_CREATE This
service type
_LEG is used to
create
an
outbound
SRV_TYPE_CREATE voice
channel.
_LEG_RSP
SRV_TYPE_MERGE This
service
request is
used
SRV_TYPE_MERGE to merge
two
_RSP calls.
SRV_TYPE_ This
service type
CONFERENCE_ is used to
BRIDGE conference
multiple
calls.
SRV_TYPE_ This
service type
TRIGGER indicates
a
BCSM
trigger
notification.
SRV_TYPE_GROUP.sub.-- This
service type
SELECT is used to
request
digit
translation to an
operator
group
number.
SRV_TYPE_ This
service type
NETWORK_ROUTE is used to
request
digit
translation to an
outbound
trunk
group
routing
list.
SRV_TYPE_QUEUE.sub.-- This
service type
CALL is used to
queue
a call
that is
destined
for an
operator
position.
SRV_TYPE_ This
service type
CONGESTION is used to
indicate
that a
network
congestion
condition
has
been
detected
and needs
attention.
Call Identifier LONG This field
contains the call
identifier for a
particular call
(which is also the
call data block
index). The call
identifier
identifies a
particular call
among the
multiple calls
handled by the
switch controller
112.
Agent LONG This field
Terminal contains the agent
Identifier terminal identifier
and is used to
reference a
particular agent.
BCSM Leg SHORT This field is used LEG_ID_1
Identifier to reference one LEG_ID_2
of two legs of a
particular BCSM
(basic call state
machine). Each
call has two legs.
The first leg is the
connection
between the caller
and the switch
controller 112
which is the
originating leg.
The second leg is
the connection
between the
switch controller
112 and the
receiving party.
Each of the legs
has an identifier
to distinguish the
particular leg
from other call
legs being
processed by
switch controller
112.
Context SHORT This field
Information contains context
information used
between
applications.
This field can
contain any type
of information as
long as the
sending and
receiving
applications know
its meaning.
Status Indicator SHORT This field is used
to indicate status
information. This
field can be used
in both
MT_REQUEST
and MT_REPLY
type SCAPI
messages but is
usually used in
MT_REPLY type
messages.
Completion SHORT This field can be
Code used as a qualifier
for the status
field.
Data Format USHORT This field DF_SRV_PARK_CHANNEL
Identifier indicates to the DF_SRV_MERGE
receiver what DF_SRV_REL_CHANNEL
format the data DF_SRV_CONF BRIDGE
part of the
message is in.
Data Size SHORT This field
indicates the size
of the data buffer
to follow.
While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, not limitation. Thus, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments. It should be defined only in accordance with the following claims and their equivalents.
|
| ||||||||||
