WO2001076205A1 - Telecommunications system and methods - Google Patents

Telecommunications system and methods Download PDF

Info

Publication number
WO2001076205A1
WO2001076205A1 PCT/US2001/010402 US0110402W WO0176205A1 WO 2001076205 A1 WO2001076205 A1 WO 2001076205A1 US 0110402 W US0110402 W US 0110402W WO 0176205 A1 WO0176205 A1 WO 0176205A1
Authority
WO
WIPO (PCT)
Prior art keywords
call
feature
event
service
textual description
Prior art date
Application number
PCT/US2001/010402
Other languages
French (fr)
Inventor
Robert Martin
Jared Dubin
Jeff Williamson
Tim Mcclure
Darren Goos
Cathy Tio
Original Assignee
Coppercom, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Coppercom, Inc. filed Critical Coppercom, Inc.
Priority to AU2001253043A priority Critical patent/AU2001253043A1/en
Publication of WO2001076205A1 publication Critical patent/WO2001076205A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42127Systems providing several special services or facilities from groups H04M3/42008 - H04M3/58
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/4228Systems providing special services or facilities to subscribers in networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/0016Arrangements providing connection between exchanges
    • H04Q3/0029Provisions for intelligent networking
    • H04Q3/0041Provisions for intelligent networking involving techniques for avoiding interaction of call service features
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/0016Arrangements providing connection between exchanges
    • H04Q3/0029Provisions for intelligent networking
    • H04Q3/0045Provisions for intelligent networking involving hybrid, i.e. a mixture of public and private, or multi-vendor systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/0016Arrangements providing connection between exchanges
    • H04Q3/0029Provisions for intelligent networking
    • H04Q3/0054Service creation techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5614User Network Interface
    • H04L2012/5618Bridges, gateways [GW] or interworking units [IWU]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5629Admission control
    • H04L2012/563Signalling, e.g. protocols, reference model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2201/00Electronic components, circuits, software, systems or apparatus used in telephone systems
    • H04M2201/54Object oriented software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2207/00Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place
    • H04M2207/20Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems
    • H04M2207/203Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems composed of PSTN and data network, e.g. the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42136Administration or customisation of services
    • H04M3/42153Administration or customisation of services by subscriber
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42136Administration or customisation of services
    • H04M3/4217Managing service interactions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/428Arrangements for placing incoming calls on hold
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/48Arrangements for recalling a calling subscriber when the wanted subscriber ceases to be busy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/56Arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/006Networks other than PSTN/ISDN providing telephone service, e.g. Voice over Internet Protocol (VoIP), including next generation networks with a packet-switched transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/12Arrangements for interconnection between switching centres for working between exchanges having different types of switching equipment, e.g. power-driven and step by step or decimal and non-decimal
    • H04M7/1205Arrangements for interconnection between switching centres for working between exchanges having different types of switching equipment, e.g. power-driven and step by step or decimal and non-decimal where the types of switching equipement comprises PSTN/ISDN equipment and switching equipment of networks other than PSTN/ISDN, e.g. Internet Protocol networks
    • H04M7/126Interworking of session control protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M7/00Arrangements for interconnection between switching centres
    • H04M7/12Arrangements for interconnection between switching centres for working between exchanges having different types of switching equipment, e.g. power-driven and step by step or decimal and non-decimal
    • H04M7/1205Arrangements for interconnection between switching centres for working between exchanges having different types of switching equipment, e.g. power-driven and step by step or decimal and non-decimal where the types of switching equipement comprises PSTN/ISDN equipment and switching equipment of networks other than PSTN/ISDN, e.g. Internet Protocol networks
    • H04M7/129Details of providing call progress tones or announcements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13003Constructional details of switching devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1305Software aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13091CLI, identification of calling line
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13097Numbering, addressing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13102Common translator
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13103Memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13106Microprocessor, CPU
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1313Metering, billing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1315Call waiting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13156Automatic digit redialling, automatic call retry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13175Graphical user interface [GUI], WWW interface, visual indication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13176Common channel signaling, CCS7
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13204Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1324Conference call
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1329Asynchronous transfer mode, ATM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13298Local loop systems, access network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13345Intelligent networks, SCP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13389LAN, internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13405Dual frequency signaling, DTMF
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13512800 - freefone

Definitions

  • the invention pertains to telephony and, more particularly, to systems and processes for call and call feature setup, administration and processing on public switched telephone networks (PSTN) and other telecommunications networks.
  • PSTN public switched telephone networks
  • Voice telephony (and data communication via telephone modem) today is conducted primarily by "copper loops" or wireless transmission (via base station) from the user or subscriber to a central office (Class 4/5) switch that initiates the process of connecting the call to its ultimate destination, whether in the same local exchange handled by the central office, or to a remote central office.
  • the call set-up process involves a series of "trigger points" wherein the service options available to the caller are checked against a database that periodically downloaded to the switch from the local carrier's database (typically relational, i.e., table-based).
  • a similar sequence is followed to check such service options as call waiting and call forwarding.
  • Updates of the databases are cumbersome, and adding new services require additional programming and trigger points in an already complex code.
  • the process of call set up outside the local service area further requires an "out of band” communication over the SS7 ("Signaling System 7") network and protocols distinct from the network over which voice traffic flows. It is this system that allows the proper switching of traffic for roaming cellular subscribers and for 800- and 900- numbers. It also provides caller identification. The system, however, is limited in its bandwidth and by the small number of knowledgeable programmers.
  • the prior art has made advances in the middle or "control" layer of a three- layer network model for voice telephony as part of a trend towards "Advanced Intelligent Networks" ("AIN"). These advances have involved call agents using the SS7 network to control new functionality in call set up and upgrading ofthe International Telecommunications Union H.323 Internet protocol for coordination of voice, data, and video traffic on the Public Switched Telephone Network (PSTN).
  • PSTN Public Switched Telephone Network
  • SGCP Simple Gateway Control Protocol
  • IPDC Internet Protocol Device Control
  • the Media Gateway Control Protocol (MGCP) is a merger of SGCP and IPDC sponsored by the Internet Engineering Task Force to migrate SS7 functions into Internet Protocol (IP).
  • Another object is to provide such methods and apparatus as reduce the overhead required for implementation or modification of call feature processing.
  • a related object is to provide such methods and apparatus as facilitate implemenation of call features, whether defined by system designers, service providers or end users.
  • Still another object ofthe invention is to provide such methods and apparatus as are facilitate implementation of both complex and routine call feature processing.
  • Yet another object ofthe invention is to provide such methods and apparatus as can be implemented on a variety of telecommunications platforms.
  • Yet still another object ofthe invention is to provide such methods and apparatus as can be implemented at reduced cost and in less time.
  • the invention meets the foregoing objects by providing, in one aspect, methods in which state machines that model telecommunications services are compiled from a textual description in a mark-up language.
  • Objects (referred to below to as "context objects") track the states of such service, e.g., with respect to on- going telephone calls.
  • Those objects access the compiled representation in response to events occurring with respect to the services in order to effect transitions in the states identified by the context object and/or to perform action with respect to the underlying services.
  • the textual description can embody the logic ofthe state machines and can be provided, e.g., by a service provider or subscriber, in a mark up language such as HTML, XML, or an extension thereof.
  • a state machine may describe a call feature, specifying the action or actions to be taken in response to signaling at the caller's site.
  • the description for a call waiting state machine may include an idle state, which alerts a subscriber to an incoming call
  • the compiled representation is preferably stored in a repository, e.g., an object database.
  • the context object can invoke an engine to access the repository and discern from the compiled representation an action to be performed and/or a state transition to be effected.
  • a virtual function, returned as a result ofthe repository access, can be utilized to invoke the specific core functions required to carry out the service.
  • This type-resolution methodology is particularly advantageous when the engine and/or the compiled representation ofthe state machine are implemented in a C++ programming environment.
  • the invention provides methods as described above in which the compiled representation ofthe state machine logic is maintained in the objects (referred to below as "call feature objects") associated with the context objects.
  • the call feature objects are invoked as necessary and, particularly, in response to events, to support features required for an on- going call or administrative process.
  • an object hereinafter referred to as a call control object, is instantiated to control a call processing context.
  • the call control object can invoke a call feature object with a signal that is indicative of an event, e.g., a call progress event.
  • the call feature object effects a transition of a present state ofthe instantiated state machine to a new state and further effects the performance of one or more actions, if any, associated with the present state.
  • Utilizing a mark up language to provide a textual description ofthe logic specifications of a state machine provides a number of advantages. For example, it places the relatively complex task of defining actions to be performed in response to a myriad of different signals in a graphically depictable format, which can be more easily validated. Further, new state machines can be designed and validated more conveniently. This allows expeditious implementation of new call features at lower cost.
  • providing a compiled representation of the state machine, and storing the compiled representation in a repository facilitate executing an instance ofthe state machine in response to an event, for example, providing a call feature, such as call waiting, to a subscriber.
  • the method ofthe invention can be implemented, for example, by a telecommunications system that includes a call control module that controls a call processing context associated with a subscriber, and a call feature module that is in communication with the call control module.
  • the call feature module can access a compiled representation of a state machine representative of a call feature provided to a subscriber in response to an event received from the call control module to cause execution of at least one action for providing the call feature.
  • the telecommunication system can also include a repository, e.g., an object database, for storing the compiled representation ofthe state machine.
  • the call control module can instantiate a call context object that maintains information regarding the state of a telecommunications service, e.g., a telephone call. Further, the call feature module can utilize an engine, for example, in response to a request from the call context object, to communicate with the repository in order to access the compiled representation ofthe state machine.
  • the state machine is represented as a textual description in a mark-up language, such as, HTML, XML, and the system includes a parser that receives this textual description and generates a document object model therefrom.
  • the system can further include a pre-processor that receives the document object model and generates the compiled representation of the state machine therefrom.
  • the foregoing objects are among those attained by the process which provides, in one aspect, methods for modeling a process (e.g., for telecommunications call or call feature processing) based on an object graph generated from a mark-up language description.
  • the markup language constitutes a structured textual description, e.g., in HTML, XML, extensions of XML, and so forth, that identifies states ofthe process, operations to be executed in each state, and events that effect transitions between the states.
  • the object graph provides a node- (or object-) based representation ofthe state machine represented in that textual description.
  • the object graph can be stored in an object repository or database, e.g., for real time implementation (or simulation) of the process.
  • an object graph is generated from an XML or XML language- like description ofthe states and state transitions and operations necessary to implement, e.g., call forwarding.
  • a description identifies call states such as "alert,” and “local release,” events such as “hook flash” and “busy,” and operations such as "set first call leg active” and “set second call leg active.”
  • the object graph generated from that description represents those states, events and actions in a way that permits their rapid access in real time for highly efficient processing.
  • the invention provides methods as described above in which the object graph is generated from a first (or "logic") document object model — itself created from the aforementioned textual description — that represents the process from a first perspective.
  • this object model can represent call processing logic from a user (or other high-level) perspective.
  • Generation ofthe object graph can, according to related aspects ofthe invention, additionally be based on a second (or "reference") document object model which identifies operations or actions that can be permissibly used in the first document object model - and, thereby, in the textual description itself.
  • the second document object model can, itself, be generated from a mark-up language description.
  • these document object models are used as part of a two-stage validation process.
  • a lexical structure e.g., syntax
  • a parser for example, and can result in generation ofthe first or logical document object model.
  • that object model is validated against a reference object model. This can be effected by a pre-processor which produces the object graph as its output.
  • the object graph includes a plurality of nodes representing the states ofthe process and edges connecting the nodes representing transitions between the states.
  • the nodes can be represented by objects generated in a suitable object-oriented environment, e.g., a C++ programming environment.
  • the object graph representation is preferably context free, according to further aspects of the invention, insofar as it represents a generic state machine modeling the underlying telecommunications (or other) process being implemented.
  • the object graph does not store information regarding the state of any particular instantiation ofthe process. Rather, it stores state, operation and transition information from which such an instantiation can be driven - given the particulars of its states and the events which occur with respect to it.
  • Further aspects ofthe invention provide methods of implementing a process (e.g., for telecommunications call or call feature processing) using an object graph of the type described above that is persistently stored, for example, in an object repository or other database.
  • a process e.g., for telecommunications call or call feature processing
  • Such a method includes instantiating objects that capture and maintain the state of actual sub -processes and/or equipment used to implement the process.
  • these "context" objects can, for example, represent the application services necessary to conduct a telephone call and provide all underlying subscriber services.
  • context objects are aggregated in order to represent the state of a complex application service.
  • Still further aspects ofthe invention provide methods as described above in which the object repository is accessed in response to events occurring with respect to the sub-process, equipment and/or application services that the context objects represent. Such access can be made by an "engine” that discerns from the object graph operations to be executed and states to enter in light of those events and the current state ofthe respective context object.
  • the processing module can include a message handling object that receives message fragments from the device, discerns an event and forms a message associated with the event from selected ones ofthe received message fragments.
  • the processing module can include a dispatcher that can communicate with the message handling object. The dispatcher identifies and invokes a selected process for processing a communication service that is activated by the event that the message handling object forms.
  • Yet still further aspects ofthe invention provide systems that execute in accord with the foregoing methods to model and/or implement a process.
  • the present invention meets the foregoing and other objects by providing, in one aspect, methods in which a compiled representation of a textual description in a mark-up language of operations describing a telecommunication service is generated.
  • Objects hereinafter referred to as context objects, access this compiled representation, in response to events occurring with respect to a telecommunication service in order to effect the execution ofthe operations.
  • aspects ofthe invention provide methods as described above in which the context object is instantiated in response to a boundary event ofthe underlying telecommunications service or feature.
  • such methods can result in instantiation of context objects in response to call origination or call termination events.
  • notification of selected events is passed to an existing context object for processing.
  • the object can respond to such notification by accessing the compiled representation in order to discern one or more operations for execution to further processing ofthe call feature or service.
  • Notifications which do not result in such further processing can, according to further aspects ofthe invention, be interpreted as boundary events that result in instantiation of additional context objects.
  • a system operating in accord with a method ofthe invention can notify an existing context object of a "hookflash" event. If that event is expected in the normal course of processing of a feature currently being handled by the object, notification results in access ofthe compiled representation and execution of further operations for the feature. If not, the hookflash is treated as an boundary event and results in creation of a new context object to handle it.
  • the textual description that embodies the operations can be provided, e.g., by a service provider or subscriber, in a mark-up language such as HTML, XML, or an extension thereof.
  • the operations define a set of rules and actions to be performed in order to provide a telecommunications service.
  • a telecommunication service can include, but is not limited to, a call, a call feature, and subscriber or feature administration.
  • the compiled representation is implemented in an object-oriented environment, e.g., a C++ object environment.
  • a virtual function returned as a result ofthe context object accessing the compiled representation ofthe operations, can be utilized to invoke one or more core functions required to carry out the telecommunications service.
  • the textual description embodying the operations is parsed to generate the compiled representation.
  • the context object that accesses this compiled representation can also maintain information regarding present state of an on-going communication service, and be responsive to events occurring with respect thereto.
  • the invention provides the methods described above in which objects, herein referred to as feature object, associated with the context objects embody the compiled representations ofthe operations and effect the execution ofthe telecommunication service.
  • the feature objects can receive signals indicative of events occurring with respect to a communication service from the context objects, and effect performance of one or more actions.
  • a mark-up language to provide a textual description ofthe logic specifications indicative of a telecommunication service provides a number of advantages. For example, it places the relatively complex task of defining actions to be performed in response to a myriad of different signals in a graphically depictable format, which can be easily validated. Further, new telecommunications services, e.g., call features, can be designed and validated more conveniently.
  • the method ofthe invention can be implemented, for example, by a telecommunications system that includes a call control module that controls a call processing context associated with a subscriber, and a call feature module that is in communication with the call control module. In response to a call progress event, the call feature module accesses a compiled representation of a textual description in a mark-up language of logic defining a telecommunication service provided to a subscriber to effect the execution ofthe service.
  • the telecommunication system can include a parser that receives the textual description and generates a compiled representation therefrom.
  • the call feature module can instantiate an object that accesses this compiled representation to determine at least one action to be effected in order to provide the telecommunication service.
  • the present invention meets the above and other objects ofthe invention by providing, in a telecommunication system, a processing module that can communicate with an external communication device, e.g., a switch, to receive message fragments and assemble one or more events therefrom.
  • the processing module can include a message handling object that receives the message fragments from the external device and discerns an event, such as a call control event, from selected ones ofthe message fragments.
  • a dispatcher that communicates with the message handling object identifies and invokes a selected process for processing the event. The process effects the execution of at least one task, e.g., operation, to provide a communication service identified by the message.
  • the dispatcher can identify at least one processor within which the process invoked by the event discerned from the message fragments resides.
  • the events can be classified in accord with an event hierarchy such that events within a particular event class in the hierarchy are dispatched to a single processing context.
  • the message handling object can determine whether a newly received message fragment is the first fragment for forming a new message, or it is associated with one or more previously received message fragments. Thus, the message handling object can properly assemble the received message fragments into one or more events, and the dispatcher can transmit these events to designated processing contexts.
  • the events formed from the message fragments can cause the instantiation of one or more object, e.g., context objects, that can effect the execution of one or more operations for providing a communication service.
  • the instantiated objects can access a compiled representation of logic defining a telecommunication service to determine one or more operations that need to be executed for providing that service.
  • the compiled representation is preferably generated from a textual description in a markup language, e.g., HTML, XML, or an extension thereof.
  • the message handling object is generated as an application program that exchanges messages with the external device.
  • the message handling program forms a message associated with an event communicated thereto by a processing context within the system, and transmits the message to the communication device.
  • the message handling program can discern an event from selected ones of message fragments received from the communication device and transmit the event to a processing context within the system.
  • a dispatcher can exchange events and their associated messages between selected processing contexts and the message handling program to effect activation of one or more communication services identified or requested by the message.
  • the invention provides methods for supplying a telecommunication service, e.g., to a subscriber. Such methods can mclude receiving a plurality of message fragments from one or more external communication devices, such as telecommunication switches, and assembling the message fragments to discern one or more events therefrom. A process is invoked in response to the event which dynamically binds to a processing context that identifies an action, e.g., operation, to be executed to provide a selected communication service.
  • an action e.g., operation
  • FIG. 1 schematically illustrates a telecommunications system according to the teachings of the invention
  • Figure 2 schematically depicts exemplary network and external interfaces associated with a telecommunications system according to the invention
  • FIG. 3 schematically illustrates the interaction of a TSP node of a system of the invention with some exemplary external networks
  • FIG. 4 illustrates that a TSP node of a system ofthe invention can include a call processing module and a feature processing module in communication with a CSX switch according to the teachings ofthe invention
  • FIG. 5 illustrates that the call processing subsystem ofthe TSP node of Figure 4 includes a call control module, a feature control module, and a primitive module,
  • FIG. 6A schematically depicts a call processing model that the call processing subsystem of Figure 5 can implement
  • Figure 6B schematically depicts a second call processing model that the call processing subsystem of Figure 5 can implement
  • FIG. 6C schematically depicts a third call processing model that the processing subsystem of Figure 5 can implement
  • Figure 7 A illustrates that a call processed by the call processing subsystem of Figure 5 can be originated from an end-user served by a TSP of a system ofthe invention and be terminated by an end- user served by the same TSP
  • Figure 7B illustrates that a call processed by the call processing subsystem of Figure 5 can be originated by an end- user served by a TSP ofthe system ofthe invention and be terminated outside the TSP
  • FIG. 7C schematically illustrates that a call request can be extended to a TSP ofthe system ofthe invention over a PSTN trunk group or IP route, and be terminated on an endpoint on the TSP,
  • Figure 7D schematically illustrates that an incoming call request can be extended to a TSP of a system ofthe invention over a PSTN trunk group or IP route, and can be extended to the next office or TSP over a PSTN trunk or IP route,
  • Figure 8 is a feature assignment table providing a map of call features to feature logic objects
  • Figure 9 schematically illustrates that a feature control module ofthe call processing subsystem of a system of the invention can contain multiple feature logic objects
  • Figure 10A illustrates a feature logic object co ⁇ esponding to a call forwarding busy line call feature assigned to an endpoint
  • Figure 10B illustrates another feature logic object corresponding to a second call forwarding line busy call feature assigned to the endpoint of Figure 10A as a result ofthe membership ofthe endpoint in a group having the second call forwarding feature
  • Figure IOC illustrates a call feature object assigned to an endpoint that subscribes to call name delivery and call forwarding variable
  • Figure 10D illustrates a call feature object assigned to an endpoint that subscribes to call name delivery, call forwarding variable, and denied termination features
  • Figure 11A illustrates a few examples of Type I feature logic objects that map triggering events to primitives defined in a primitive module ofthe call processing subsystem ofthe invention
  • Figure 1 IB illustrates a few examples of Type II feature logic objects that perform one or more transactions, and return the results of the transactions to the event triggering parties,
  • Figure 1 IC illustrates a few examples of Type III feature logic objects that maintain feature states
  • Figure 1 ID illustrates an example of Type IV feature logic object that can create and/or start another feature logic object
  • Figure 12 illustrates that dependent feature logics have life spans equal or less than the life span ofthe associated call context
  • Figure 13 is a diagram depicting a logical view of selected aspects of a subscriber's associations with features
  • Figure 14 is a diagram providing a detailed representation of selected portions of a core object model representing subscriber associations with features and the resolution of feature interactions
  • Figure 15 is a diagram illustrating a model that depicts the correlation between instances of a core object model utilized in a system ofthe invention and the elements of the call and feature definition language ofthe invention
  • Figure 16 is a diagram depicting some fundamental elements of a call and feature definition environment of an embodiment ofthe system ofthe invention.
  • Figure 17 is a diagram depicting an exemplary technique by which a compiled C++ object can export its attributes and behaviors to the logic definition environment of the invention
  • Figure 18 is a diagram illustrating an example ofthe class hierarchy derived from an Action abstract class defined in a C++ environment in accord with the teachings ofthe invention
  • Figure 19 illustrates an exemplary state machine that can determine the parity of a string of 0's and 1 's.
  • Figure 20 is a diagram depicting an approximate schema for logics associated with the state machine of Figure 19,
  • Figure 21 illustrates an object model for a finite state machine
  • FIG. 22 schematically illustrates exemplary TSP/CSX class 4 and class 5 switches according to the teachings ofthe invention
  • Figure 23 illustrates exemplary communications paths within an embodiment of a consolidated TSP/CSX system of the invention
  • Figure 24 illustrates a message distribution and transport (software) layer according to the invention interposed between the TSP/CSX application software and underlying network interfaces of a system ofthe invention
  • Figure 25 schematically illustrates a redundant N+l configuration of a system ofthe invention having four TSP nodes and three CSX switch elements
  • Figure 26 schematically depicts another configuration of a system according to the teachings of the invention in which the traffic load for each CSX switch has been partitioned into thirds and distributed equally among three primary TSP nodes,
  • FIG 27 is an overview of an exemplary installation of a TSP/CSX consolidated system ofthe invention
  • Figures 28A — 28B depict a basic application framework for routing and dispatching events in a system according to the teachings ofthe invention
  • Figure 29 is an object model illustrating an interface for exchanging messages between a TSP node and another system
  • Figure 30A depicts an event trace outlining a process for receiving a message, converting the message into an event, and dispatching the event to an appropriate processing context in a system of the invention
  • Figure 3 OB is a diagram illustrating an event trace that outlines a process of routing an event to an external processor via an external interface
  • Figure 31 is a diagram illustrating an event hierarchy
  • Figure 32A is a table listing exemplary call/feature policy data for a system according to the teachings of the invention.
  • Figure 32B is a table listing exemplary route policy data for a system according to the teachings ofthe invention.
  • Figure 32C is a table listing exemplary endpoint/subscriber data set for a system ofthe invention.
  • Figure 32D is a table listing exemplary call and feature state data for a system of the invention.
  • Figure 32E is a table listing exemplary equipment/facility data for a system according to the teachings ofthe invention.
  • Figure 32F is table listing exemplary equipment/facility state data for a system according to the invention
  • Figure 32G is a table listing exemplary equipment facility statistics for a system according to the invention
  • Figure 33 is a diagram depicting the co ⁇ elation between call/feature states in the volatile store and in the persistent store
  • Figures 34 and 35 depict a state machine for a call waiting feature provided a system according to the teachings ofthe invention
  • FIGURE 36 is a diagram schematically depicting one embodiment of a system of the invention that converts a textual description of a state machine into an object graph
  • FIGURE 36A schematically illustrates an object graph created in accord with one embodiment ofthe invention
  • FIGURE 36B depicts a methodology for exporting actions from an object repository according to one embodiment ofthe invention
  • FIGURE 37 is a diagram illustrating that an object graph created according to the teachings of the invention can be accessed by an object instantiated to execute a state machine represented by object graph to determine transition from a present state to a new state and any action, if any, to be performed,
  • FIGURE 38 is a sample XML document containing the description of a state machine for providing a call feature (call forwarding) to a subscriber of a telecommunications service,
  • FIGURES 39 - 46 depict request handlers and feature handlers in accord with one embodiment ofthe invention.
  • FIGURE 47 depicts interaction of originating feature classifications in a system according to the invention
  • FIGURE 48 depicts interaction of terminating feature classifications in a system according to the invention
  • FIGURE 49 A depicts objects representing a subscriber in an idle state in a system according to the invention
  • FIGURE 49B depicts an object model for a system according to the invention
  • FIGURE 50 depicts processing of an originating call in a system according to the invention
  • FIGURE 51 depicts further processing sequences in a system according to the invention.
  • FIGURE 52 depicts processing of a termination request in a system according to the invention
  • FIGURE 53 depicts a stable two-party call in a system according to the invention
  • FIGURE 54 depicts processing of an event, e.g., a flashhook, in a system according to the invention
  • FIGURE 55 depicts invocation of a mid-call origination feature in a system according to the invention
  • FIGURE 56 depicts three-way calling in a system according to the invention
  • FIGURE 57 depicts object configuration upon establishment of a three-way call in a system according to the invention.
  • FIGURE 58 schematically illustrates selected processes and their interactions in a system ofthe invention. Detailed Description of the Illustrated Embodiment
  • FIGURE 1 illustrates an exemplary telecommunications system 10 according to the invention having two Telecommunications Service Portal (TSP) nodes 12a and 12b in communication with each other and with a CSX switch 14 to provide a convergent multimedia services environment.
  • TSP Telecommunications Service Portal
  • the TSP 12a/12b offers class 5 and class 4 voice band services. These services can satisfy, for example, the needs of Competitive Local Exchange Carriers (CLEC) and Internet Service Providers (ISP).
  • CLEC Competitive Local Exchange Carriers
  • ISP Internet Service Providers
  • the TSP offers a solution to the demand for convergent multimedia services environments.
  • the TSP/CSX system 10 ofthe invention offers a variety of network and external system interfaces, as depicted in FIGURE 2.
  • the TSP/CSX system includes a Call and Feature Processing subsystem that provides class 4 and class 5 call services and features via the interfaces ofthe CSX switch with a Public Switched Telephone Network (PSTN) 16.
  • PSTN Public Switched Telephone Network
  • the system 10 also offers certain feature configuration capabilities through PSTN voice band circuits.
  • the TSP/CSX system includes a Call and Feature Creation and Maintenance Subsystem that keeps the run-time data stores in sync with externally defined calling models and call features. This subsystem also participates in the maintenance of subscriber specific data attributes that may be configured through voice band network interfaces.
  • a Network Management Subsystem supports common network element operations, administration, maintenance, and provisioning functions covering endpoints, routes, system configuration tables, and provides surveillance of system status and performance metrics.
  • a Billing Subsystem interfaces with external entities in support of billing and usage accounting processes.
  • the TSP/CSX system 10 is situated on a PSTN network 16 and an IP network 18.
  • the TSP and CSX provide traditional circuit switch based voice band services.
  • the TSP independently provides call control and feature processing capabilities for IP Telephony Networks (IPTN) assuming multiple roles such as call agent over a MGCP network, proxy server over a SIP network, and so forth.
  • IPTN IP Telephony Networks
  • TSP 12a/ 12b is on the IP network and the CSX is situated on both PSTN 16 and IP network 18.
  • the TSP and CSX jointly provide telephony switching functionality on the PSTN network.
  • TSP provides call control capability on the IP Telephony Network.
  • TSP can assume multiple roles in various IP telephony networks, such as call agent over MGCP network, and proxy server over SIP network.
  • the TSP can also interface with ATM gateways over an ATM network to provide call control and feature control functions for ATM gateways.
  • DS1 trunks terminating at the CSX provide connections between the TSP/CSX and other network elements. These connections include traditional inter-office facilities as well as GR303 based facilities to support subscriber access.
  • Inter-office facilities connect TSP/CSX switches to other end offices and access tandem offices employing a variety of inter- office protocols such as FGD, ISUP, and ISDN/PRI.
  • Each such physical connection between the CSX and another office or network element is called a 'trunk'.
  • a set of trunks that share common characteristics and traffic load is called a 'trunk group'. Trunks and trunk groups reside on the PSTN and are managed by CSX. The concept of trunks is encapsulated within the CSX.
  • the TSP has no representation of individual trunks.
  • the TSP does maintain a representation of trunk groups to support call routing, network management, etc.
  • the TSP in conjunction with the CSX, serving as an IDT and RDTs supporting subscriber access facilities, can constitute a class 5 switch.
  • the TSP/CSX system treats the endpoints on the RDTs as its endpoints.
  • the DS0 circuits on these trunks, except the TMC and EOC circuits, are mapped to endpomts and are therefore treated as endpoints.
  • the TSP manages the endpoints.
  • connections between the TSP and other call managers, such as call agents and proxy servers are referred to as 'IP route's.
  • PC base phones 20 can constitute endpoints.
  • the TSP manages both the IP routes and IP based endpoints network.
  • the TSP treats an IP based endpoint in the same manner as an endpoint on the PSTN.
  • An endpoint can correspond to a subscriber and can be a representation ofthe subscriber in the TSP.
  • the TSP treats an IP route in the same fashion as a trunk group appearing on the PSTN.
  • the TSP manages bandwidth allocation for IP routes whereas the CSX manages the circuits and trunks that constitute a trunk group.
  • Each trunk group and IP route can serve a number of connections.
  • Each connection to a trunk group or IP route is terminated at a connection point.
  • a connection point inherits the attributes ofthe trunk group or IP route at which the connection terminates.
  • the TSP also includes the concept of hunt groups.
  • a hunt group is a set of trunk groups and/or IP routes that share common characteristics and traffic load.
  • members of a hunt group - trunk groups or IP routes - can, but not necessarily, span between IP networks and the PSTN so that calls can be delivered over either network depending upon the network available and other driving factors.
  • FIGURE 4 illustrates that the TSP system can include a call processing subsystem 22 and a feature processing subsystem 24. It further illustrates exemplary roles that the TSP can play in various voice/data networks, and it also illustrates its external interfaces with other network entities.
  • the call processing subsystem provides call processing and feature control functions. For example, it can provide call control by supporting a suite of industry standard protocols, such as SIP, MGCP, and MEGACO, to interface with external switching entities and/or PC phone clients over PSTN/ ATM/IP networks. It can further provide the basic call processing functions.
  • the feature control function supports existing PSTN class 4/5 features and enhanced Internet services, such as email service over the voice and packet networks.
  • the call processing subsystem is responsible for the call processing and switching functionality in the TSP.
  • the basic call processing can supply basic call processing by providing switched, two-way transmission paths connecting endpoints and inter- switch facilities terminated on the TSP/CSX system.
  • the inter-switch facilities can be, for example, PSTN trunks terminated on CSX and IP routes terminated on TSP.
  • the basic call processing can also include the capability to apply tones, announcements, and alerting mechanisms to end users and inter- switch facilities.
  • the call processing subsystem can also provide resource management. For example, it can manage the call control resources defined in TSP.
  • TSP call control resources defined in TSP.
  • Endpomts are owned by the subsystem, and the subsystem provides busy/idle handling for them.
  • PSTN trunk groups are owned by switching elements, i.e. CSX.
  • the switching element defines logical circuits representing the physical circuits in the trunk groups and the logical circuits are exposed to the TSP.
  • the call processing subsystem maintains the call states for the logical circuits and tracks the number of in-use circuits in the group, though it is not responsible for the busy/idle handling of physical circuits
  • An IP route consists of a group of logical circuits. The number of logical circuits in an IP route is variable and determined by the bandwidth ofthe IP route. This subsystem owns the IP routes and provides bandwidth management for them.
  • the call processing subsystem provides load balancing function for hunt groups.
  • a hunt group consists of a collection of PSTN trunks and IP routes. Multiple load balancing techniques can be applied to maximize the system performance.
  • a circular hunt mechanism can be implemented. A circular hunt mechanism sequences the trunks/routes in a circular list that has a next route pointer pointing to the next trunk/route to use. When a call is extended out of a hunt group, call processing subsystem uses the circular list to determine the next trunk route to use, initiates the call on the selected trunk/route, and advances the next route pointer.
  • the call processing subsystem can support dynamic registration and authentication.
  • a registration or de-registration request is initiated by the authority ofthe endpoint and trunk, which can be the endpoint itself or CSX.
  • An authentication procedure is carried out during the registration and de-registration procedure to assure the system integrity.
  • the call processing subsystem supports multiple multimedia call control protocols, such as MGCP and SIP, and media stream control protocol over heterogeneous networks.
  • the call processing subsystem can also provide support for real-time and postprocessing billing model.
  • Real-time Call Detail Record (CDR) is generated and is stored in a persistent data area during runtime.
  • the call processing subsystem also supports class 4 and class 5 basic and supplementary telephony services on POTS line over GR303 interface.
  • Appendix A provides a list of class 4 and class 5 features that are supported.
  • the subsystem supports TCAP applications. For example, it supports 800 number service, Local Number Portability (LNP), and Calling Name Delivery (CND) applications over TCAP/SS7.
  • LNP Local Number Portability
  • CND Calling Name Delivery
  • the call processing subsystem ofthe invention can employ an Advanced Intelligent Network (AIN) architecture. It can further incorporate new three-tier call processing architecture technology to offer switching calling features and new IP services on one single platform.
  • AIN Advanced Intelligent Network
  • the call model ofthe invention provides a number of advantages. For example, improper feature definitions do not prevent the TSP/CSX system ofthe invention from meeting call processing behavior that is expected from peer level network elements. Further, call processing level response times are subjected to more stringent requirements, governed by specification, than feature level response times which are governed by human perceptions of "quality of service.”
  • the TSP supports portability by operating at the "network” level, e.g., via a SIP level interface, as well as at the "call processing" level, e.g., at the level of Parlay.
  • feature processing and feature interaction are simplified by employing an AIN basic call model, where each call constitutes two half calls, origination and termination. The origination half call deals with the origination features and termination half call deals with the termination features.
  • the system ofthe invention allows separating feature processing from basic call processing.
  • the TSP can provide call control, feature control, and/or a combination of call confrol and feature control.
  • An interface between the call processing entity and feature-processing entity can be asynchronous or synchronous.
  • a number of standards are defined, for example, by VoIP industry, for such an interface.
  • PARLAY and JAIN are two such commonly used standards that define extensive sets of APIs. As the VoIP technology evolves, PARLAY and JAIN continue to change.
  • the system ofthe invention fully supports industry standards on this interface in order to inter-operate with equipment from various vendors.
  • Other API such as private proprietary API, can also be defined for providing communication between the feature processing and call processing subsystems ofthe system of the invention.
  • FIGURE 4 illustrates schematically the various roles that the TSP can play in various voice/data networks and its external interfaces with other network entities.
  • FIGURE 5 illustrates that the call processing subsystem ofthe TSP can include a call control module 26 for managing basic call processing, a feature control module 28 for handling feature processing, and a primitive module 30 that contains a set of call control methods, such as play Tone, utilized by fe ature and call control modules.
  • FIGURE 5 also illustrates the data objects (databases) utilized by these modules and their collaborations.
  • FIGURE 6 schematically depicts Model 1 that offers a complete call and feature control solution.
  • the call confrol module receives external call confrol events. If the event triggers feature control, call control module generates a triggering event and sends it to the feature control module.
  • the feature control module processes the event, and issues a command, by invoking, for example, a primitive in the primitive module.
  • the command is sent down to the call control module, which in turn calls a primitive in the primitive module.
  • all external events from the switching elements are channeled through the call control module.
  • both feature control module and call control module can communicate with external switching elements through the primitive module.
  • FIGURE 6B schematically depicts Model 2 that offers call control capability.
  • FIGURE 6C schematically depicts Model 3 that offers feature control capability and can be utilized to provide calling features/services to foreign switching elements, such as featureless call agents and gatekeepers.
  • the primitive module 30 provides a call confrol library that contains a set of APIs that the feature control and call control modules can invoke to interface with the external world. These APIs can define generic call control functions, such as makeCall, acceptCall, answerCall, releaseCall, mergeCall, etc.
  • a frame work API set provides the supporting capabilities necessary to ensure system security and manageability. Some examples include registration, authentication, and discovery procedures.
  • a call control API set is utilized to control the switching elements. Although this API set is primarily invoked by the control module, it includes a subset that can be called by the feature control module as well. The methods in this API subset can be called either directly by the feature control module or indirectly through the call control module. This API set can run on multiple call control protocols simultaneously. The selection ofthe protocol is done at the initialization phase. Further, a subset of call control API can be exported to CPML+ to be accessed by end users in order to control the call treatments.
  • the primitive module further includes a set of feature control APIs, called by the feature control module, for supplying the utilities for controlling the behavior of a call, with each call having up to 2 legs.
  • This API set provides enough functionality to allow call routing and call leg management for existing circuit and packet telephony networks.
  • Some examples of this API set include, but are not limited to, enableCallNotification, disableCallNotification, getCallState, callEventNotification, createCallLeg, deleteCall eg, attachCallLeg, detac Call eg, routeCall egToAddress, and releaseCall.
  • a subset ofthe feature control APIs can be exported to CPML+ to be accessed by the end users for the creation and modification of calling features.
  • the primitive module also includes a set of service API's for accessing external services, e.g., 800 number service, calling name server, email server, and so forth.
  • This API set encapsulates protocol specifics to relieve the invocation entities from dealing with that level of detail.
  • SMTP and MIME called by feature control module, are examples of members of this API set.
  • a subset ofthe service APIs can be exported to CPML+ and accessed by the end users for the creation and modification of calling features.
  • the call control module provides the basic call processing functionality for TSP.
  • Such call processing functionality can include, for example, called ID analysis and routing, intercept treatment (tone and announcement), overload handling, detection of feature triggering events and reaction to them, generation of CDR, and generation of call related traffic counts.
  • the call control module employs a call model, herein referred to as TSP call model, that is derived from the AIN Basic Call Model (BCM).
  • BCM AIN Basic Call Model
  • a typical call has an Originating Basic Call Model (OBCM) at the switch ofthe caller side, and a Terminating Basic Call Model (TBCM) at the switch of callee side.
  • OBCM Originating Basic Call Model
  • TBCM Terminating Basic Call Model
  • Each basic call model defines a set of points in call (PICs) that correspond to important states in a call.
  • PICs points in call
  • DPs Detection Points
  • a DP is associated with a set of triggers each of which specifies the conditions under which an AIN feature can be invoked.
  • each call consists of one OBCM and one TBCM, where the originating features/services apply to the OBCM and terminating features/services to the TBCM.
  • An interface between OBCM and TBCM can be asynchronous, and can utilize an industry standard call control protocol.
  • a BCM is a state machine driven by the call progress events. Any call progress event with which a feature can be associated is a triggering event. When a triggering event occurs, a notification is sent to the feature confrol module. The feature control module will take appropriate actions in response to the notification. The details of interface between the call control and feature control modules will be discussed in more detail below.
  • the BCM exists in the form of an endpoint or connection point, depending upon the nature of origination/termination point ofthe call.
  • the call processing subsystem processes the calls arriving at the TSP.
  • a call can be 1) originated from an endpomt, and terminated to an endpoint - infra- office call, 2) originated from an endpoint, and terminated to a trunk group or IP route - inter- office call, or 3) originated from a trunk group, and terminated to an endpoint - inter-office call.
  • a class 4 switch a call is originated from a trunk group or IP route and terminated to a trunk group or IP route.
  • a call is originated from an end user served by the TSP and is terminated to an end user served by the same TSP.
  • an end user, served by the TSP originates a call and the call is terminated outside ofthe TSP.
  • the call is extended to another PSTN office or TSP through a PSTN trunk group or IP route.
  • a connection point is allocated based on the trunk group or IP route to serve the egress leg ofthe call.
  • an incoming call request is extended to the TSP over a PSTN trunk group or IP route, and the call is terminated on an end point on the TSP.
  • a connection point is allocated to serve the ingress leg, and an end point is allocated to serve the egress leg.
  • an incoming call request is extended to the TSP over a PSTN trunk group or IP route and the call is extended to the next office or TSP over a PSTN trunk group or IP route.
  • the call confrol module maintains a set of run-time data objects to support the basic call processing operation.
  • the call control module can create an endpoint status object when a call is initiated.
  • the endpoint status object can contain all the endpoints statically configured and dynamically registered to be managed by the TSP. Each endpoint that is dynamically registered with the TSP is created with the status set to in service upon the successful registration, and is removed when the de-registration is completed.
  • the call control module accesses the system configuration data object to retrieve the status ofthe endpoints belonging to the TSP, and creates endpoints in the endpoint status object.
  • connection point status object is also created when the call control module is initialized. This object keeps track ofthe in- use connection points in a PSTN trunk, or IP route.
  • a call object is created when a call is initiated and deleted when the call is released.
  • Each call has 2 call objects, one for the origination (ingress leg), and the other for the termination (egress leg).
  • An endpoint or connection point can own a call object.
  • the TSP infrastructure provides a set of mechanisms for the storage ofthe runtime data objects, discussed below, that the call control module can utilize in order to support the system performance and reliability requirements.
  • the call processing subsystem also includes a feature control module that provides supplementary calling features and services to the endpoints and PSTN-trunks/IP-routes served by call managers, for example, the call control module.
  • the call feature module provides PSTN class 5 and call 4 features.
  • new features can be created by the carriers and ISPs.
  • TSP exports a set of functions, such as access 800 number data base on SS7 network, sending emails, callback utility, to CPML+.
  • the carriers/ISPs can utilize these functions to create new services.
  • These features/services are available on system level, and can be assigned to the entire system, individual groups, or end users. Charges may be expected either in usage or subscription basis. If the introduction of the new services and features changes the behaviors of the existing features, the creators ofthe features are responsible to specify the feature interactions.
  • the end users can also create new features for their own use, for example, by utilizing the capabilities of CMPL+. Typically this type of features are offered at no cost to the end users, unless the new features access the information from the system or utilize system resources, such as TCAP services.
  • the first three types of features described above are system- wide features, which are available to all endpoints/connection-points on the system.
  • the last types of features are end user features that are only available to the creators ofthe features.
  • the system- wide features can be assigned to the whole system, to individual groups, and to endpoints/connection-points.
  • a group is defined as a collection of endpoints/connection-points, served by the same TSP, that share the same set of features.
  • a group can be a business group, a residential group, a trunk group, etc.
  • the members of a group have access to the group features.
  • the end user features can only be assigned to the endpoints/connection-points.
  • system- wide features such as a usage sensitive three-way call feature, that are available to all endpoints/connection points on the system.
  • group -level features such as a call pickup feature, that are available to the members in a group
  • endpoint/connection point level features such as a call waiting feature, that can be subscribed by all endpoint/connection points on the system.
  • An endpoint/connection-point can have all levels and types of features assigned to it, thus necessitating management of interactions among various features.
  • the feature control module can handle a number of different feature interactions. Two features can co-exist without impacting each other's behavior (no interaction). Alternatively, two features may be mutually exclusive. Two mutually exclusive features are not allowed to co- exist. For instance, call waiting and multiline hunt service cannot be assigned to the same endpomt simultaneously.
  • a feature rule table is defined to specify if any two features in the system are mutually exclusive. When a feature is assigned, this table is utilized for validating the feature.
  • a feature may be assigned to an endpoint/connection-point multiple times through different channels. In such cases, one feature would override the others.
  • the system level, group level, and endpoint/connection-point level features have different configurable priorities. At the time of feature assignment, the feature interaction is resolved and a decision is made regarding which feature will take effect based on these priorities.
  • each feature is associated with a feature logic object that defines the feature behavior. More particularly, a feature has one base feature logic object that defines the feature logic when the feature operates alone, and can have multiple modified feature logic objects that define the feature logic when the feature operates with other features.
  • a feature assignment table 30a maps features to feature logic objects.
  • the feature assignment table is referenced to populate feature objects for the endpoints/connection-points when features are created and assigned.
  • the assignment table contains the feature logic objects defined in the system. Further, the assignment table is indexed by a feature mask, which is a bitmap of the features defined in the system. When a feature is present, the bit corresponding to the feature is set to 1.
  • the feature control module handles feature interactions by implementing at least four mechanisms, namely, assigning feature priority to each individual feature, providing a system wide feature rule table, providing a system wide assignment table, and feature logic encapsulation. This allows resolving feature interactions/conflicts when features are created and assigned, thus improving the runtime performance
  • a more preferred embodiment of the invention provides feature classifications and resolves feature interactions in accord with the teachings provided below in connection with the description of an additional embodiment, for example, in a section entitled "Service Provisioning.”
  • a request handler processes features in accord with their pre-defined classifications to ensure that no conflict betweeen various features occur.
  • a feature is defined as a (event, behavior, data) triplet; where event indicates a condition when the feature is invoked, behavior is a sequence of actions to take place when the feature is invoked, and data is the information used by the feature behavior.
  • the triplet constitutes a Feature Logic Object (FLO).
  • FLO Feature Logic Object
  • the features assigned to an endpoint/trunk/IP-route are stored in a feature object. Every endpoint/trunk/IP-route has one feature object.
  • a feature object contains multiple FLOs and one active calling feature stack, as shown in FIGURE 9.
  • An FLO describes the (event, behavior, data) triplet ofthe feature, and defines the administrative data associated with the feature.
  • the association between a FLO and a feature object is the event.
  • An FLO can include an identifier, which is the feature name uniquely identifying the feature within a TSP system. For system wide features, an identifier is a mandatory field that can be updated only by authorized personnel.
  • An event specifies the condition for occurrence of a feature. There are two types of events; base events and extended events. The base events are the typical call progress events in the basic call model and the acknowledgement events.
  • Call progress events can include, for example, origination side: offhook, dialComplete, remoteAlerting, and remoteAnswered; termination side: seizure, alerting, and answered; both: hookflash, localRelease and remoteRelease.
  • Acknowledgement events are returned to the feature object upon completion of a task, initiated by the feature object. For instance, the feature object can instruct a call object to start a 30- second timer. Upon the expiration ofthe timer, the call object returns an acknowledgement event to the feature object.
  • the extended events are a set of conditions associated with the base events.
  • the 800NS extended event is defined as the detection ofthe dialComplete event and the dialed number that starts with 800.
  • some ofthe feature control logic is shifted to the call control objects to reduce the traffic between feature domain and call control domain. The flexibility of this technique provides better system performance, less exchange of messages between the two modules, and the ability to introduce new events.
  • An Event Definition is present when the event is an extended event.
  • the event definition specifies the construction of an extended event.
  • the event definition of 800NS is "dialComplete event + prefix of dialed number equals to 800".
  • a priority attribute is divided into two fields: group level field and feature priority field.
  • the group level field resolves the first feature conflict, namely, the multiple assignment of the same feature. It specifies the feature priority based on the ownership ofthe feature.
  • a feature can be a system level feature, group level feature, or endpoint/connection-point level feature. Each of them can have different priorities and different groups can have different feature priorities.
  • the group level field is configurable and can be controlled by the system operator.
  • the feature priority field settles the second feature conflict, e.g., one feature overriding another when two features co- exist. New feature interactions are controlled and specified by the feature creators.
  • a feature object can include an ownership attribute that identifies the owner of the feature. This field is used to propagate the updates on the features, and to remove the FLOs from feature objects when features are deleted.
  • a method of a feature object refers to a sequence of actions to take place when a feature occurs. It can be a simple command, such as route the call, a complete state machine, or another FLO.
  • Feature specific data is saved only when a feature is subscribed or activated. For example, the last incoming caller number is only saved when an end user subscribes to the Automatic Recall feature.
  • the stack is utilized when more than one feature can be invoked at the occurrence of an event, and/or same feature is assigned to an endpoint/connection- point multiple times.
  • the FLOs ofthe features that should be invoked when an event occurs are put in the stack.
  • the associated FLO is retrieved. If the activated feature stack ofthe retrieved FLO is not empty, the FLOs in the stack will all be executed. The following examples better illustrate this mechanism.
  • Example #1 schematically depicted in FIGURE 10 A, an endpoint A subscribes to Call Forwarding Busy Line feature (CFBL).
  • CFBL Call Forwarding Busy Line feature
  • the feature is activated with the forwarded number set to 1234.
  • the feature object for endpoint A will have an association to the CFBL1 -FLO.
  • the endpoint A may be a member of a group XYZ to which the system administrator may also assign the CFBL feature in order to forward all incoming calls to 6789 when the rung station is busy.
  • a new CFBL FLO, CFBL2-FLO will be associated with the endpoint A.
  • CFBL2_FLO overrides CFBLl-FLO.
  • CFBL2-FLO will be put in the activated feature stack and will be executed when an incoming call terminates on endpoint A, and endpoint A is busy.
  • Example #2 depicted in FIGURE IOC, an endpoint B subscribes to calling name delivery and call forwarding variable (CFV), and call forwarding variable is activated. If the endpoint B also adds the Denied Termination feature to its feature profile, it will have three features that co-exist at the seizure event, as shown in FIGURE 10D. According to LSSGR /01-02-0500/; when CFV and denied termination co-exist, the latter should take precedence.
  • CFV calling name delivery and call forwarding variable
  • the system of the invention provides at least five types of FLOs.
  • the categorization is based on the functions that the FLOs provide.
  • An FLO belonging to type I maps a triggering event to a primitive defined in the primitive object. That is, the method of the FLO is a primitive from the primitive object.
  • the feature data, when present, is the input to the method.
  • FIGURE 11A depicts a few examples of Type 1 FLOs.
  • FLOs Another set of FLOs, herein referred to as type II, are transaction oriented.
  • FIGURE 1 IB illustrates some example of type II features.
  • type III Another type of FLOs, herein referred to as type III, maintain feature states.
  • State machines are utilized to implement the complicated behaviors of these features. That is, sets of dynamic events are typically defined as part of a calling feature that is enabled when the feature is activated. These dynamic events are the driving events of the feature state machine. They are disabled once the feature is de-activated or terminated. For example, when three-way feature is activated, the dynamic events hookflash, remoteRelease, and localRelease are enabled. Once the three-way call feature is terminated, these events are disabled.
  • FIGURE 11C depicts some examples of type III features.
  • An FLO herein refe ⁇ ed to as type IV, can create and/or start another FLO.
  • the activations and deactivations of features are of this type.
  • One sub -type relates to creating an FLO and associating the FLO with the feature object.
  • Call Forwarding Variable CFV
  • the result ofthe feature is the creation ofthe CFV- FLO and its assignment to the end user's feature object with the seizure event.
  • the other sub -type relates to starting the FLO. For instance, when an end user activates the Automatic Recall (AR), the AR- FLO state machine is started.
  • FIGURE 11D illustrates an example of a type IV FLO.
  • FLOs are a combination of above types I- IV FLOs.
  • the FLOs of type I through type IV encapsulate feature behaviors of a single feature, or multiple features behaving as one feature when running together. There are situations that multiple features are defined at the occurrence of one event A determination of which features to invoke can depend on the data accompanied with the event and/or the feature priority and interaction.
  • the user data associated with events can be utilized to determine the feature invocations. This can be implemented, for example, by (1) associating a condition with an event (i.e., defining an extended event) or (2) with an executable script. The script uses the user data to navigate the feature invocation process.
  • the method in a type V FLO can be a reference to an executable script. For example, if there are no extended events defined in the TSP, the FLO of dialComplete event will have to use the dialed digit to determine if 800 services, 900 blocks, or other features should take place.
  • the calling name delivery and distinctive ringing features can be invoked when seizure event occurs. If the features do interact with one another, and one overrides the other, they will be assigned different priorities.
  • FLO of the feature is put in the stack waiting for the occurrence of further events to complete the feature.
  • the FLO is removed from the stack.
  • the call confrol object may need to monitor new sets of events. These new events are herein referred to as dynamic events.
  • the dynamic events are to be enabled only after a feature is invoked, and are disabled once the feature is terminated.
  • a dynamic event is not associated with the endpoint's feature object. It is rather an event in the feature state machine.
  • the present invention employs a mark-up language, such as CPML (a derivative of XML), to define a variety of logic elements, e.g., finite state machines, such as, call processing models, calling features, re-usable calling feature elements, etc.
  • CPML a derivative of XML
  • logic elements e.g., finite state machines, such as, call processing models, calling features, re-usable calling feature elements, etc.
  • a prefe ⁇ ed embodiment ofthe invention employs CPML call and feature definition language and its supporting environment.
  • a call and feature definition language utilized in the system of the invention should provide an effective and efficient means of developing and deploying network based multimedia services, for example, class 5 and class 4 call services in conjunction with a circuit switch.
  • Multimedia features within the scope ofthe language must include the entire spectrum of standard subscriber services 1 , e.g., call waiting, call forward when busy, etc., as well as so-called next generation or convergent services, e.g., packet based voice service with common subscriber voice services.
  • the language should also allow concise and efficient expression of simple services, such as call forwarding, while providing sufficient expressive complexity to define complex services, such as call waiting and three-way calling.
  • the language must facilitate the leveraging of web-based technologies in support of a variety of peripheral applications such as subscriber provisioning and maintenance, "data browsers", feature editors/generators, feature validation and testing tools, etc.
  • the language should also support feature definition and deployment within a matter of days, and should simplify overall application development by reducing dependence upon compiled code.
  • a run- time core consisting of a compiled object model supported by an object-oriented database, provides the fundamental capabilities (primitives) from which media services, e.g., call feature, are defined. These primitive capabilities are exported, i.e., made accessible, to externally defined logics that comprise call models and call features. Each logic element is therefore defined in terms of well-known behaviors and attributes exported by the run-time core.
  • the call and feature definition language is used, in effect, to define finite state machines.
  • the mark-up languages CPML/CPML+, derivatives of XML, are well suited to this approach.
  • the language provides a standardized interface between feature definition applications (GUI desktop applications) and the service delivery systems.
  • the XML-based languages, such as CPML, have the additional advantage that they are human readable as well as machine readable.
  • the simplest call features are stateless. That is, the behavior of such features may be described as a simple reaction to an event because the event is closely bound to a specific state, i.e., that there is a unique set of circumstances that yields the particular event. Tight coupling between an event and a specific state eliminates the need to represent the state explicitly in the feature logic of such call features.
  • certain features are sufficiently complex to require explicit representation ofthe state. This is particularly true when an event may be coupled with several states, i.e., when the circumstances that yield a particular event are non-unique. Under these circumstances, the state must be represented explicitly.
  • the logic elements defined by the call and feature definition language ofthe invention can include embedded parameter values. Such parameter values are accessible directly because they are embedded in line with the logic elements. This alleviates the need to navigate through the run-time object model in order to access the appropriate values. Further, embedding values within logic elements provides a more efficient expression ofthe feature logic. Embedding the values of attributes associated with a carrier within a logic element adds no additional storage overhead to the system because attributes associated with the carrier are in effect global values. However, embedding values within a logic element for attributes associated with a subscriber introduces additional storage overhead since there must be a distinct instance ofthe logic element for each subscriber that utilizes the feature. This affects both persistent store and processor memory resource consumption. Embedding attribute values within logic elements may also lead to data duplication, if two or more logic elements use the same attribute, thus complicating maintenance ofthe runtime data store.
  • the embedded values of attributes constitute default values, assigned by the feature definer, that apply when there is no other specific value available within the processing context.
  • an individual subscriber has the opportunity to define values for these attributes, but is not required to do so.
  • the embedded, i.e., default, values apply. This offers additional flexibility to the subscriber.
  • the call and feature definition language allows defining associations between logic elements. This capability supports higher order capabilities such as defining re- usable logic elements and parameterized meta- features. For instance, conducting a dialog between a feature and a subscriber using voice prompts and DTMF responses is a feature generic capability. That is, the logic for such a dialog can be defined without regard to the specific prompts to be used or the subscriber's responses.
  • the fundamental concept of a "prompt and response" dialog is common to and therefore re-usable by a variety of calling features.
  • the language also allows defining extensions to the core object model.
  • the language along with appropriate run-time support, includes some capability for extending the core object model by introducing new data objects. These extensions are referred to as data object because they hold values required by the associated feature logic. This advantageously alleviates the possibility that the core object model may not completely anticipate the specific needs of all features to be offered.
  • Call models and calling features are essentially event driven.
  • the language provides the ability to associate behavioral responses with events. This includes specifying the source or sources of a particular event and whether or not the event is synchronous or asynchronous.
  • the language can define features based upon the attributes and behaviors that comprise the core object model as well as extensions to the model, based upon available attribute types, defined by the language itself.
  • the feature definition environment preferably includes a representation ofthe core object model in order to provide the most complete expressive capability. Further, the language allows identifying associations between run-time objects. Utilizing associations between core objects allows exploiting the core model efficiently.
  • the language also Identifies means of navigation of associations between runtime objects.
  • the language includes means for specifying navigation from object to object using known associations.
  • a logic element must be able to express interest in a particular event in order to respond to the event.
  • the underlying core objects can propagate events along these lines of interest in order to ensure co ⁇ ect behavior.
  • the language can also identify whether a logic element is dependent or independent of a particular run- time processing context.
  • Each feature or call model logic executes with respect to a processing context.
  • Processing contexts which are part ofthe core object model, are the basis for routing and dispatching events and messages as well as gaining access to processing threads.
  • the call class provides the processing context for call models. Call model logic elements are always subordinate to a specific call context since the life span of a call and a call context are always coincident. However, feature logics may be dependent upon or independent of a call context.
  • dependent feature logics have life spans no greater than the associated call context. Therefore, a dependent feature logic element may be integrated into the associated call context or it may execute independently using a dedicated feature context. Independent feature logics may have life spans that exceed the associated call. Indeed, certain features may span several calls. Independent feature logics must therefore use dedicated contexts in order to facilitate the appropriate life span regardless ofthe life spans ofthe associated call or calls.
  • markup document parsers are typically dependent only upon the structure of a document as specified by the document type definition.
  • parsers are independent of the contents ofthe documents.
  • a validating parser may assist with context validation by insuring that a markup-based document adheres to the specified structure. It may also assist with certain types of data element validation, e.g., it may support validation of enumerated or other constrained data types.
  • markup languages tend to support schema flexibility.
  • a markup - based language can specify a variety of data structures including hierarchical structures that are difficult to implement via traditional line oriented ASCII files.
  • log file formats such as CDRs, system logs, and so forth, so long as the requisite attributes exist in the core object model or in an extension to the core model, or can be derived from existing attributes, and further, accessor methods are available.
  • one logic element can reference and invoke another, using the language to define and produce log files provides substantial flexibility.
  • markup languages provide a standard and flexible way of capturing and representing data entities that are shared among heterogeneous execution environments. Different implementation languages may be used for different applications. While the core run-time system calls for a compiled object model, peripheral and front end applications may be implemented by utilizing a more convenient language such as Java.
  • control and feature definition language and its supporting environment can facilitate and accelerate development of peripheral applications, such as a subscriber provisioning and maintenance application by supporting languages and development tools optimized for this purpose.
  • maintaining data repositories, such as the subscriber database, in markup form may simplify development and maintenance of peripheral "back office” applications, as well as interfaces to external systems.
  • FIGURE 13 is a diagram depicting a logical view of selected aspects of subscriber associations with features.
  • a cloud labeled CPML FLN represents a call feature defined by the language
  • a cloud labeled CPML FDN represents a call feature defined by the language
  • A3 represents a feature data object defined by the language.
  • Ovals represent object instances within the run- time system.
  • Objects labeled FLON represent feature logic objects; objects labeled FDON represent feature data objects.
  • objects labeled SON represent subscriber group objects; and objects labeled SN represent individual subscribers.
  • Lines and arcs represent associations or relationships between the entities connected to the ends.
  • Feature logic objects correspond to feature logic definitions. They are in effect "compiled" representations of the logic constructed from object instances that co ⁇ espond to the logic elements used by the definition language. These objects are used by the run- time system to direct and control the core object model in order to deliver the desired feature behavior.
  • Feature data objects represent instances of the "schema” defined by the feature definition elements. These objects, labeled DEXTN, extend the core object model "schema" (the S and SO ovals represent the core object model).
  • S and SO ovals represent the core object model.
  • This model also depicts the three mechanisms for associating features with subscribers.
  • Each subscriber is associated with the carrier features provided to all subscribers, e.g., FLOl.
  • Two ofthe subscribers, S2 and S3 are members of group SO7 and therefore are associated, indirectly, with features FL02 and FL03. Because these subscribers are associated with a feature (FL03) for which there is a feature data extension to the core object model, these subscribers have been provisioned with instances ofthe appropriate feature data object, namely, DEXT3.
  • Subscriber S3 has an individual level subscription to feature FL04. Accordingly, this subscriber has also been provisioned with an instance of DEXT4.
  • FIGURE 14 provides a detailed representation of selected portions ofthe core object model.
  • This model represents subscriber associations with features and the resolution of feature interactions.
  • a subscriber which uses 0 to many endpoints (media devices), may subscribe individually to 0 or more features.
  • a group consisting of 0 to many subscribers, may subscribe to 0 or more features.
  • a carrier which provides service to 0 to many subscribers and provides service to 0 to many subscriber groups, may offer 0 or more features.
  • a feature may exclude another feature, may override another feature, or may interact with another feature.
  • feature provisioning must resolve this conflict so that one and only one of the two features is available to the subscriber's endpoint (at run-time).
  • the run-time system must ensure that the two features are not executed coincidentally and that the higher priority feature is preferred.
  • a third feature which resolves the interaction, must be defined to substitute for the conflicting individual features. The available features association between a subscriber's endpoint(s) and features represents the resolution of these interactions.
  • FIGURE 15 illustrates a model 32 depicting the correlation between core object model instances and the elements ofthe call and feature definition language.
  • One or more endpoint objects are associated with the subscriber object.
  • a finite state logic instance representing the call model, is associated with each endpoint and is consistent with the endpoint type. This object controls each call-processing context that becomes associated with the endpoint. Further, a set of references to available features is also associated with each endpoint.
  • Each feature is associated with a finite state logic object and may be associated with a feature data object. The finite state logic object controls each feature instance (the feature data instance).
  • a component of the subscriber object when present, contains the necessary subscriber specific attribute values.
  • a call processing context is always associated with an endpoint.
  • a feature- processing context may be associated with a call processing context and/or may be associated directly with an endpoint.
  • a feature-processing context representing a dependent feature may be associated with a call-processing context without being associated with an endpoint.
  • An independent feature must be associated with an endpoint.
  • FIGURE 15 also depicts the co ⁇ elation between objects within the run- time environment and external call and feature definition components.
  • a subscriber page describes a subscriber instance (object).
  • a subscriber page is an instance ofthe subscriber class, i.e., an instance of the subscriber document type.
  • the subscriber class (document type definition) defines the name and type of each attribute as well as the name, type, and parameters of each behavior exported by the subscriber object class.
  • the document type definition is used to capture and validate subscriber attributes and to validate logic instances that reference, i.e., depend upon, subscriber behavior and attributes. Similar relationships exist between other objects and external documents (pages).
  • FIGURE 16 depicts some fundamental elements of a call and feature definition environment of an embodiment ofthe system of the invention.
  • the object meta-class is the document type definition for describing non- provisionable core object classes.
  • a non-provision able class is one whose instances may be instantiated only during run-time call and/or feature processing. Examples of non-provisionable classes include call-processing context, feature processing context, event classes, and so forth. These class definitions specify attributes and behaviors exported by the core object model that may be used to define call processing and feature logics.
  • the provisionable object meta-class is the document type definition for descriptions of provisionable core object classes.
  • a provisionable object class is one whose instances are provisioned, i.e., a class whose instances are defined and maintained by a peripheral application, and then imported into the core object model. Examples of provisionable object classes include, for example, subscriber and endpomt. These class definitions support the provisioning and maintenance applications as well as define the attributes and behaviors exported by the core object model for call and feature processing logic definition.
  • provisioned instances are maintained in markup form to support various peripheral applications such as subscriber maintenance, bill processing, and so forth. Maintaining a repository of markup-based data eliminates the need to extract data from the run-time data store to support these applications.
  • the logic class is the document type definition for descriptions of call and feature processing logic elements. As shown, logic descriptions are described with respect to object meta-classes and provisionable object meta-classes. In other words, class descriptions derived from the object meta-class and provisionable object meta-class are referenced by logic elements derived from the logic class. These relationships support definition, through specification of attributes and behaviors, and validation, by prohibiting the use of non-existent attributes and/or behaviors in the definition of a logic element. This capability also provides a certain degree of flexibility. For example, new attributes and behaviors can be introduced by updating class definitions. That is, there is no need for modifying the "language" used to define call and feature processing logic.
  • the basis for call and feature implementation in the system ofthe invention is a run-time object model that exports access to its attributes and behaviors to an external logic definition environment.
  • the run-time object model can include, for example, compiled C++ objects that export their attributes and behaviors to such an environment.
  • FIGURE 17 is a diagram that depicts an exemplary technique, presented for illustrative purposes, by which a compiled C++ object may export its attributes and behaviors to the logic definition environment. This technique is presented for illustrative purposes.
  • a caller In C++ typing system, a caller must know an object type in order to call a member function of the object. Therefore, a mechanism is needed for resolving type linkages at run- time given a logic structure defined in a text-based document.
  • ActionExporter is a class that exports access to one or more of its member functions.
  • An Action is the mechanism for exporting access in a type specific and type safe manner.
  • ActionExporter defines a single, pure virtual member function doAction ( Action & ) . The sole parameter to this function is a reference to an Action instance. Since the method is pure virtual, each derived class must provide its own implementation of doAction.
  • Action defines two, pure virtual member functions doAction (Call &) and doAction (Feature &) .
  • the function name is overloaded on parameter type; doAction may be called with a reference to a call instance or a reference to a Feature instance. This establishes call and Feature class instances as the only recognized exporters of behavior via Action instances.
  • ActionExporter Two classes are derived from ActionExporter : Call and Feature. Each has three primitive member functions and each provides a similar implementation for doAction. A call to doAction results in a call to the Specified Action's doAction function passing a reference to this. Conceptually, when a call or Feature is instructed to "do an action", the result is "do the specified action using myself.” call and Feature each have a co ⁇ esponding derivative of Action : callAction and FeatureAction. These classes provide a mechanism for catching certain type mismatches that may result from improperly defined logics, for example, a CallAction passed to a Feature instance and a FeatureAction passed to a Call instance.
  • FIGURE 18 is a diagram illustrating an example of the class hierarchy derived from Action.
  • Classes derived from CallAction and FeatureAction correlate to the primitive functions to be exported by the call and Feature classes.
  • a leaf class in the Action hierarchy co ⁇ esponds to each primitive function exported by the co ⁇ esponding call or Feature class.
  • Each leaf class instance defines doAction function to call the co ⁇ esponding call or Feature primitive method. The calling cycle is thus completed.
  • a leaf class instance is called with a reference to a call or Feature instance, it in turns calls the appropriate member function.
  • FIGURE 19 illustrates an exemplary state machine that can determine the parity of a string of 0s and Is. This machine has three states, Initial, Running, and Done. The machine recognizes only three events; a 1, a 0, and last; last indicates the last data value has been seen.
  • a generalized parser for example, can perform step (a).
  • a "compiler” can perform steps (b) and (c).
  • the result is an object based finite state machine logic that can be executed by a generalized engine.
  • the execution engine operates at the abstract level, i.e., the execution engine operates with Action ⁇ xporters, Actions, and object based finite state machines. Type resolution at run-time is handled, for example, by the virtual method calling capabilities of C++.
  • FIGURE 20 illustrates a diagram containing an approximate schema for the logics defined previously.
  • the logic consists of a set of states. Each state responds to one or more events. Each event has one ore more action sequences. Each action sequence consists of an optional predicate, one or more actions, and a co ⁇ esponding next state. Each action may have one or more corresponding parameters. Predicates, actions, and parameters each co ⁇ espond to an action exported by the run-time object model. A predicate yields true or false, an action is a simple function, and a parameter yields an attribute value.
  • the co ⁇ esponding action sequences are identified and processed as follows: for each sequence do if predicate is nil or do predicate is true then for each action in sequence do for each parameter with action do save value of do parameter done do action passing saved values (if present) done set state to next state exit for loop endif done
  • FIGURE 21 illustrates an object model for a finite state machine consistent with the previous description.
  • a state consists of one or more transitions. Each transition consists of one or more associations, called transitions, between an event and one or more action sequences.
  • An action sequence consists of no more than one predicate action and one or more actions. An action may be associated with one or more parameter literals and/or one or more parameter actions. Each action sequence is associated with one state.
  • An application context controlled by a finite state machine exists in a single state and responds to specified events.
  • An application context consists of one or more application methods (functions). Each such method is exported as a predicate action, an action, or a parameter action.
  • a method is generally exported as a single action type. Predicate actions yield true or false. Actions are simple functions, and parameter actions yield generic value wrappers. A value wrapper is a generic holder for attribute values. Parameter literals represent values embedded within the logic definition.
  • FIGURE 22 schematically illustrates exemplary TSP/CSX class 4 and class 5 switches according to the invention having several TSP processor nodes and several CSX switch nodes.
  • Each CSX switch element can be considered individually due to its unique a ⁇ angement of network and subscriber access facilities. Together, the TSP and CSX nodes are considered a single consolidated system.
  • a exemplary embodiment ofthe TSP/CSX system ofthe invention includes at least two TSP processor nodes, redundant or fault resilient persistent storage devices, and an isolated LAN dedicated to communication between TSP processor nodes and the CSX central shelf controllers.
  • the TSP/CSX system can further include an IP based LAN, independent of the TSP/CSX communications LAN, that supports distributed TSP application and third party software components.
  • the IP based LAN also provides access to external systems as necessary to support operation ofthe TSP/CSX within a carrier's environment.
  • Each processor node is capable of operating in an independent fashion.
  • Each processor node can include its own independent CPUs, RAM, etc. Power supplies can be independent unless the supply itself is fault resilient.
  • the processor nodes may be housed separately or together depending upon the most desirable configuration consistent with the target footprint, unit cost, and so forth.
  • Each processor may have a dedicated persistent storage device so long as the TSP application software, possibly in conjunction with third party software components (such as data management software), provides an acceptable level of protection against loss or destruction of vital system and/or carrier data.
  • the two processor nodes may share a single storage device so long as the device is inherently fault resilient or, in conjunction with other third party software, can otherwise provide an acceptable level of protection against loss or destruction of vital system or ca ⁇ ier data.
  • Each consolidated system provides connectivity between the TSP and at least two central shelf controllers for each CSX node.
  • the LAN is selected to be fault resilient and/or provide redundant pathways between at least two TSP nodes and each central shelf controller pair.
  • the IP based LAN is selected to provide sufficient bandwidth to support distributed software components and communications traffic between the TSP processor nodes and external systems. In addition, additional communications pathways can be added as may be required.
  • FIGURE 23 illustrates exemplary communications paths within an embodiment of a consolidated TSP/CSX system of the invention.
  • Each TSP processor node has access to a shared persistent data store.
  • Each node also supports man-machine interfaces and interfaces to authorized external systems such as billing systems, and subscriber provisioning systems. Database access and external interfaces may be supported by a single LAN. Alternatively, separate LANs may be utilized to provide the desired system performance.
  • This LAN provides the communications backbone ofthe consolidated system, and is the primary means for accessing the CSX switches.
  • the LAN configuration provides a single communications path between each TSP node and each central shelf controller.
  • the LAN hub is fault resilient.
  • the LAN also supports TSP node-to-node communications for call and feature processing and system and network management.
  • a message distribution and transport (software) layer is interposed between the TSP/CSX application software and the underlying network interfaces.
  • the purposes of this layer include, for example, presenting the TSP as a single logical entity to the CSX application software, and establishing and maintaining reliable point-to-point connections between TSP nodes and CSX central shelf controllers.
  • This layer is statically configured to include provisions for alternate routing in support of fault tolerance.
  • TSP nodes from the CSX software, and provides deterministic inter-processor routing ⁇ of messages associated with specific physical locations. Messages related to specific physical entities, such as endpoints, trunks, are routed to the TSP/CSX elements having those entities within their scope.
  • the distribution and transport layer has access to necessary physical configuration data needed to ensure consistent and reliable message routing between processing elements.
  • Fault tolerance refers to the ability of a system to provide continuous application services in spite of faults and processing interruptions that may occur within the system. These include the ability to continuously satisfy service requests on demand as well as the ability to complete processing of all service requests.
  • fault tolerance refers to the ability to complete calls, call features, and call services as well as the ability to complete calls, call features, and call services once such services have been initiated. These capabilities further include reliable capture and preservation of information utilized for billing, service management, etc.
  • a system that is fault tolerant typically has the following characteristics. It includes, for example, redundant processing elements, and has the ability to dynamically substitute one processor for another. Such a system also provides redundant communications paths between processing elements and the ability to dynamically substitute one communications path for another.
  • a fault tolerant system typically provides redundant system access paths between the system and its client community, and the ability to utilize any available path to provide service.
  • the system can have redundant or multiple persistent storage elements that provide continuous access to information used by application services, and that provide reliable persistent storage of information produced by application services. Redundant data access paths including the ability to substitute one data access path for another are also provided.
  • one processing element may be called upon to substitute for another under the following exemplary circumstances:
  • a processing element experiences a processing fault or failure that prevents it from handling new service requests and/or prevents it from completing one or more services already in progress
  • a processing element is administratively prohibited from handling new service requests and completing services already in progress
  • a processor is administratively prohibited from handling new service requests but is permitted to complete services already in progress.
  • the system recognizes that a fault or failure has occu ⁇ ed, determines that the affected processing element cannot or should not continue processing, and shifts responsibility to one or more alternate processing elements.
  • an external authority has issued a command to shift processing responsibility from one processing element to one or more alternative processing elements.
  • the above case (b), sometimes called a forced switchover, is typically a response to an event or set of events within the system that call for urgent re- action to prevent loss of service.
  • the above case (c) sometimes called a graceful switchover, is typically a pro- active measure to prevent service degradation or to initiate some system maintenance activity.
  • the decision- making and failover execution mechanisms need not be integrated.
  • a single switchover capability that can serve in forced and graceful situations can be activated by any number of decision- making capabilities including internal and external decision sources.
  • One communications path may be substituted for another under the following exemplary circumstances:
  • the determination that a communications path has become unreliable is generally carried out by a processing element within the system.
  • the decision to substitute one communications path for another due to poor reliability can be made by an external entity.
  • Selection and confrol of data access paths is normally confined within the system itself. In particular, decisions regarding the viability and selection of a data access path are usually handled exclusively by the system. Redundancy of storage elements is usually controlled by the data management system. The data management system may offer the ability to configure storage elements but usually does not provide run time control.
  • a system that can continue and complete at least some services in progress and/or satisfy at least some new service requests is refe ⁇ ed to herein as being partially fault tolerant.
  • a system that can continue and complete all outstanding service requests and satisfy all new service requests is herein refe ⁇ ed to an being completely fault tolerant.
  • the system ofthe invention provides at least partial fault tolerance of single points of failure. That is, the system can continue operation even if the failure of a single system component occurs.
  • the system ofthe invention provides continuous support for the initiation of calls, call features, and call services. It further provides continuous support for stable calls, call features, and call services. For telephony services, calls wherein both parties have engaged in two-way conversation are traditionally considered stable.
  • a call, call feature, or call service that is in a stable state is not adversely affected by the failure of a single system component.
  • the system ofthe invention prevents the loss of billing data related to completed calls, call features, and call services. It further reduces the loss of system data such as logs, performance statistics, usage statistics, etc.
  • system ofthe invention can also be configured to provide complete fault tolerance.
  • the system of the invention can declare processor faults upon various conditions that include, but are not limited to, loss of communications between TSP and CSX, loss of access to database, system (internal) resource exhaustion, program exceptions, and audit exceptions.
  • a processor may declare its own failure or be declared failed by an external entity. In some embodiments that do not provide communications path redundancy, a variety of problems including loss of a physical connection, system level software e ⁇ ors, and a non-responsive far end processor (either TSP node or CSX switch controller) appear as loss of communications between two elements.
  • Loss of a single physical connection or a software exception associated with a single connection appears as isolation ofthe connected processor, e.g., loss of connection between a TSP node and the LAN hub results in CSX switch controllers talking to, for example, one TSP node.
  • Apparent isolation of a TSP node mandates a TSP failover, and apparent isolation of a CSX switch controller mandates a controller failover.
  • a variety of problems including disk controller failures and system level software e ⁇ ors appear as loss of communications between a TSP and the database. Loss of database access mandates a TSP failover. Further, to the extent that system level resources can be identified and quantified, the system can monitor resource availability and declare faults upon resource shortages. In addition, to the extent that program exceptions can be identified and "caught", the system can recover and declare a software fault. Audit procedures may also be defined to examine various system characteristics and declare faults when acceptable limits are exceeded and the problem can not be co ⁇ ected.
  • one processor may declare that another has failed.
  • one processor can monitor another and declare the failure ofthe monitored processor if it fails to respond to a query, or fails to meet a pre-a ⁇ anged schedule commitment.
  • refe ⁇ ed to as "breach of service contract" model a client processor may declare that a server processor has failed when it no longer receives acceptable service (the server may be non- responsive or may respond too slowly). Upon failover, the designated standby or alternate processor must assume the failed processor's role.
  • the process of recovering contexts is preferably governed by a policy that recovers the most useful contexts first, and prioritizes response to external events, representing immediate service need, over recovery.
  • the policy should also prevent a load spike that would degrade the processor's performance (recovery process should spread processor demand over time to prevent the recovery process from degrading system response to external events).
  • the system has also the ability to recover a context from the persistent store upon an external event. The failover and recovery procedure also ensure that the failed processor does not inhibit service as it is restored to service.
  • one processor can substitute for another to continue a stable call, call feature, or call service.
  • the system ofthe invention provides descriptions of calls, call features, and call services, which include the notion of condition or state, that are transportable from one processor to another.
  • the system's level of fault tolerance also increases. For example, if a call is waiting for the result of a database fransaction, that information will be lost following a processor substitution unless the pending transaction is represented in the call's description. If the call description includes a description ofthe pending transaction, the transaction request could be reissued as a recovery measure upon failover.
  • the architecture ofthe system of the invention offers a variety of redundancy configurations.
  • the TSP/CSX system of the invention can include (a) redundant processing nodes within the TSP, (b) redundant switch controllers within the CSX, (c) fault tolerant object database shared by the TSP nodes, (d) fault resilient 100 Mbit LAN hub interconnecting the TSP processing nodes with the CSX switch controllers, and (e) separate man- machine and external system interfaces for each TSP processing node.
  • Redundant TSP processing nodes provide the basis for implementing fault tolerant application software.
  • the processing nodes are independent, and fault tolerance features are provided by the application software.
  • two TSP processing nodes share a fault resilient object database. This database provides persistent storage for all system data and is the mechanism for sharing run time state information between the two TSP nodes.
  • a fault resilient LAN Hub provides communications paths between the TSP nodes and the switch controllers.
  • One embodiment includes the following four distinct communications paths:
  • Each path consists of two connections, namely, (1) Node to Hub, and (2) Controller to Hub.
  • This configuration can tolerate loss of a single node to hub connection, of a single controller to hub connection, or loss of one node to hub connection and one controller to hub connection.
  • Loss of a TSP node to hub connection prohibits load sharing between the TSPs and may or may not mandate a TSP node failover (a switch controller failover would not be necessary). Loss of a switch controller to hub connection does not prohibit TSP load sharing and does not require a TSP node failover, but it may require a switch controller failover.
  • Each TSP can support one or more connections to external systems and/or machine interfaces.
  • a TSP node may or may not have redundant communications paths to these external entities.
  • FIGURE 25 depicts an N + 1 configuration consisting of four TSP Nodes and three CSX switch elements.
  • Each ofthe three primary TSP nodes is dedicated to a separate CSX switch element.
  • the standby TSP node is configured to support any of the three CSX elements.
  • the standby node may substitute for any ofthe primary nodes.
  • the standby may substitute for only a single primary node at any given time.
  • the system can compensate for the loss of a single primary TSP node by substituting the standby processor in its place.
  • a I + 1 redundancy can be achieved by providing one standby TSP node for each primary node and configuring the communications interfaces accordingly.
  • FIGURE 26 shows another configuration in which the traffic load for each CSX has been partitioned into thirds and distributed equally among three primary TSP nodes. If one ofthe primary TSP nodes fails, each CSX utilizes the communication layer to map the failed node's partition to the standby node. Similar to the previous configuration, the system can substitute the standby node for any one ofthe primary nodes if a primary node fail.
  • each TSP node is supported by a shared object database.
  • This database provides the standby with access to the objects needed to continue processing including access to transient call objects.
  • the shared transient data store is the mechanism for "copying" objects from one processor to another.
  • Application software can employ transportable context objects to capture and maintain the state of application services.
  • a context object represents or describes the state of an application service such that an arbitrary processor can continue and complete the service based on the context object.
  • Context objects may be aggregated in order to represent the state of a complex application service.
  • a processor needs to have, or to have access to, context information, describing the state of each application service that is in progress, in order to substitute for another processor.
  • the system provides some transportable mechanism of describing the state of application services.
  • a task is a mechanism that encapsulates processing.
  • a task carries with it the ability to "ran" an application. Assuming that application contexts can be transported from one processor to another, it must also be possible to associate a task with each context to facilitate execution. The ability to dynamically bind tasks with application contexts is therefore important to fault tolerance. Dynamic task-context bindings also discourage the capture of essential context information within the execution call stack.
  • the application software provides some mechanism for rendering contexts present on or accessible by the alternate processor when a processor substitution occurs. For example, replicating contexts in an alternate processor, storing contexts on a sharable disk, will ensure that a substitute processor can continue application services in progress following a processor substitution. Further, event-context binding is rendered deterministic and consistent across all processors. For a particular event, each processor must be able to bind the event to a unique (and co ⁇ ect) context, and to deliver the event to the appropriate task-context association for execution. This includes consistent recognition of events that call for the creation of new contexts.
  • Event-processing mechanisms are also defined that produce consistent behavior across multiple processors. This is often inherent in distributed software — each processor runs the same application software. However, to the extent that applications incorporate dynamic elements, mechanisms are provided that ensure consistent application behavior across multiple processors. For example, a processor that substitutes for another processor must have access to all applicable CPML pages in order to ensure consistent behavior.
  • blocking system and infrastructure services can be converted into asynchronous client- server services. System and infrastructure services may be synchronous if and only if they are guaranteed to be non-blocking. For instance, reading the system clock is typically non-blocking and can be implemented and accessed synchronously. However, reading an object from a database is typically blocking and hence is modeled as an asynchronous client- server service.
  • context information within the execution stack — a form of context information that cannot be transported from one processor to another.
  • context information that should be represented explicitly in a context object rather than implicitly by a task that is blocked on a function call. It further prevents a temporary static binding between a task and a context object. Static task- context bindings should be limited to infrastructure level services because this context information would be lost in a processor switch. Database requests should be represented within application contexts if such requests are to be preserved across processor failovers.
  • Synchronous interfaces are permitted between objects only under the following conditions:
  • Fault and failure recognition and response mechanisms are defined such that processor substitutions occur, as needed.
  • the system of the invention is capable of identifying conditions that represent or may represent an operational interruption. It is also be capable of responding in a way that prevents or minimizes loss of service, consistent with the system's requirements.
  • a system management capability is defined such that processor substitutions can be commanded by an external entity. Loss of external events, messages, and commands are prevented. Moreover, mechanisms are defined for altering external event, message, and command routing schemes when processor substitutions occur.
  • FSM finite state machines
  • FSMs are context dependent but also context free — a FSM instance contains no context data. It describes or defines behavior in terms of a context (object or set of objects) and the state ofthe context. This encourages well- defined contexts that provide a high fidelity representation of application state that can be transported from one processor to another.
  • FSMs can be implemented as singletons (single instance within a processor) and placed in the global scope with minimal consumption of memory.
  • FSMs can be defined by data structures (e.g., XML document), placed in persistent storage, and loaded into memory on demand. In this case, object caching may be used to reduce the impacts of persistent storage I/O.
  • FSMs It is also possible to define a stack execution model based on FSMs. According to this model, one FSM can invoke another using a stack mechanism and a standardized data-passing interface.
  • This model supports the dynamic integration of FSMs defined by different domains within a common application context. It extends the expressive capability server object interfaces and provides a useful layer of encapsulation for the client object designer. For example, an application or infrastructure server object could extend its interface definition to include a FSM that is "invoked" at run-time. This approach can simplify the interface between objects and can hide the underlying details ofthe interaction between client and server.
  • An interface designed and implemented as an FSM can encapsulate many object interaction details including the locations of client and server, the message objects exchanged between client and server, the message exchange mechanism, the service's mode of execution (synchronous or asynchronous), e ⁇ or detection and handling (including potential recovery options), etc. This approach can simplify application development.
  • the infrastructure ofthe system ofthe invention provides an object class, e.g., Task, to encapsulate OS threads.
  • object class e.g., Task
  • Application objects that require processing support request it from the infrastructure instead of creating new threads at will. This relieves the application from dealing with the intricacies of thread invocation and control, and it provides a consistent approach to multi- threading throughout the application.
  • Adjusting the ratio of tasks to task categories can allow controlling priorities without manipulating OS visible thread priorities. For example, adjusting the ratio of call processing related tasks to the number of maintenance related tasks can effectively raise or lower the priority of call processing.
  • the infrastructure also provides support for creation and destruction of task objects, associating and disassociating tasks and application objects on demand, and publicizing these associations to facilitate message (event) delivery.
  • This support may also include features such as task categorization in support of priority management, task to application object ratio control for load balancing, etc.
  • the mechanism for exchanging data between objects can be integrated with the overall execution model.
  • An object class e.g., Event, provides the basic vehicle for exchanging information between objects. This class is specialized (sub classed) to provide application and infrastructure specific event classes.
  • the Event class defines two points of interaction between the mfrastracture and application domains:
  • Event routing this is the process of determining which processor should handle a particular event. This behavior is application defined and is therefore represented as an abstract method.
  • Event dispatching this is the process of dete ⁇ nining which object, within a processor's scope, should handle a particular event. This behavior is also application defined and is represented as an abstract method. Event dispatching is preferably non-blocking. Assuming that the dispatching behavior is non-blocking, the event can be immediately dispatched to the appropriate application object. If the dispatching behavior is blocking, this behavior must identify an application domain object to carry out that behavior and finish dispatching the event.
  • the infrastracture can invoke each of these methods as needed when transporting events between objects.
  • Application class events are routed to a processor and then dispatched to an object — this removes assumptions about where an event can or will be processed.
  • Infrastracture class events may not require routing because infrastracture services are available globally. Infrastracture support shall be provided for the exchange of events with external systems, routing of events received from external systems, and event dispatching.
  • Delegating event dispatching to the application provides flexibility and a mechanism for solving boundary conditions, e.g., context object creation. If a particular event requires a new context object, the application can define a dispatching algorithm that targets these events to an object factory, or it can construct a context object that it then specifies as the destination.
  • Object factory is a pattern wherein an object is responsible for constructing instances of an associated class.
  • a secondary goal ofthe overall task-processing model is to reduce contention across highly dynamic objects. Call processing objects are expected to frequently dynamically change state and context. To simplify contention management, each such object is supported by a single task. All events related to a particular call- processing object are routed to its associated task. This reduces the possibility of contention for a single object by multiple execution tlireads. This also yields an event model in which events always appear in a serialized fashion — even if two or more events actually occur simultaneously.
  • a shared, fault tolerant persistent storage device houses context objects, i.e., event-processing objects, data objects used to route events to context objects, and system data objects.
  • data access mechanisms and processes are designed to access the shared data store dynamically as needed to fulfill an application's request for data. That is, if a target object cannot be located in memory, it will be accessed on the shared store. Only upon failure to locate a target object on the shared store does the application determine that the target object does not exist and/or declare a fault.
  • Caching i.e., application level caching
  • Initial attempts to search or retrieve any data object is applied to cache.
  • all access mechanisms are designed to access the persistent store in the event of a cache miss.
  • Data organization structures e.g., hash tables and indices, are also subject to dynamic access mechanisms. Accessing an object does not fail unless the associated organizational structures have been destroyed or have become corrupt.
  • Dynamic access mechanisms simplify certain aspects of failure recovery since there is no fixed expectation that a particular object will be in memory when it is accessed. However, care is taken to ensure that nominal access modes are not severely impacted by dynamic access mechanisms (some balance between dynamic access and static data loading may be needed). However, providing a dynamic access mechanism for all data objects offers the maximum flexibility for defining data storage policies.
  • the infrastructure also defines a framework for routing and dispatching events. For certain event classes, e.g., event classes related to call processing and other services related event, these decision- making algorithms are defined by the application. For other event classes, e.g., event classes related to infrastracture services, these decisions are defined in accordance with architecture/infrastructure policy.
  • the infrastructure accesses routing and dispatching behavior at appropriate points in an event's transmission cycle. Ensuring appropriate and consistent results are the applicable domain's responsibility — application or infrastracture.
  • Dynamic data and program elements can be categorized as follows:
  • a source entity can suggest a priority for updating its dependents. Certain entities may require immediate update of each dependent. For instance, changes in operational policy may require immediate update of all memory resident copies of that policy. Other entities may tolerate some delay in updates to dependents. For example, modification of a group level feature may require immediate application to all new instances of that feature while permitting instances in progress to conclude under the previous policy. In essence, updates to the feature's dependents are not required until a new feature instance is initiated.
  • Immediate update of a memory resident entity introduces contention — one or more application objects may hold a reference to and be accessing the entity in question at the time the update must occur. To ensure integrity, some form of mutual exclusion lock must guard access to each entity requiring immediate propagation of updates across all copies.
  • Delayed update of memory resident entities can be handled more simply. Upon a source entity's modification, its dependents are located and "privatized.” Application objects possessing references to an outdated dependent entity may continue to use that entity as long as the reference is held. Once all references to the outdated dependent are released, it is discarded. However, establishing a new reference to the modified entity will cause a new copy to be loaded from the persistent store. Integrity for entities having volatile store as database of record is ensured by propagating state changes from the volatile memory image to the persistent image. Persistent copies of these entities are discarded once they are no longer in use. The application controls these entities and determines the circumstances for updating the persistent image.
  • the infrastracture defines an asynchronous, message-based capability for communications between objects. This is a natural basis for a message-based, client- server model for system and infrastructure services. The model is already required for the application domain. Hence, it is logical to extend it to the infrastructure domain. This also presents one consistent activation mechanism whether a service provider exists in the application domain or the infrastructure domain.
  • FIGURE 27 provides an overview of an exemplary installation of a TSP/CSX consolidated system ofthe invention.
  • the system includes two TSP nodes with appropriate interfaces to the carrier's external systems such as the operational support system (OSS), the subscriber provisioning and maintenance system, the billing system, etc.
  • OSS operational support system
  • subscriber provisioning and maintenance system the billing system, etc.
  • a single LAN supports these interfaces. Additional interfaces may be used if needed to provide sufficient throughput on these external interfaces.
  • the TSP is supporting a single CSX, and the CSX has two central shelf controllers appearing on the communications LAN between the TSP nodes and the CSX.
  • Digital subscriber loops and DS1 access facilities provide subscriber access.
  • the DS1 access facilities are presented to the CSX by remote data terminals using the GR303 protocol.
  • the CSX also provides access to the PSTN via DS1 network access facilities.
  • the network access facilities may support a variety of protocols including, for example, FGD, ISDN/PRI, and SS7/ISUP.
  • the carrier offers features through three levels of service subscription.
  • a subscriber has access to features to which the subscriber directly subscribes at an individual level.
  • a subscriber is a member of a subscriber group that has subscribed to a set of features. Each member ofthe group has access to the group's associated features.
  • a subscriber has access to feature offered, by default, to all subscribers by the ca ⁇ ier.
  • FIGURES 28 A and 28B depict a basic application framework that is utilized in one embodiment ofthe invention.
  • An alternative to the foregoing is the use of CORBA Orb's to effect interprocess message handling.
  • Messages are received via an external interface component and converted into events as specified by a message protocol. Events are dispatched to the appropriate application context for processing. Inter- object communications, including inter- and infra-processor communications are also supported by the event passing capability. Blocking infrastructure services are implemented in the same fashion as application services using a similar task-processing context binding.
  • Event routing is a process that identifies the processor that houses the appropriate processing context for an event.
  • Event dispatching is a process that identifies the application context, within a processor, that is responsible for processing an event.
  • the appropriate application domains define the event routing and event dispatching processes (the ' infrastracture merely executes these behaviors at the appropriate point in the event passing sequence).
  • the TSP can exchange messages with an external system, such as the CSX.
  • An interface characterizes the messaging association between the TSP and the CSX.
  • the interface sends and receives message fragments.
  • One or more message fragments constitute a message.
  • Messages are converted to events and events are converted to messages according to a message protocol.
  • a message protocol consists of a parser and a streamer.
  • a parser converts a message to an event.
  • a streamer converts an event into the co ⁇ esponding message. This arrangement completely encapsulates the mapping of messages to events and events to messages. New external interfaces may be introduced without modifying the event hierarchy so long as the new protocol co ⁇ esponds to existing events. Introduction of a new protocol may introduce new events, as well.
  • FIGURE 30A depicts an event trace outlining the process of receiving a message, converting the message into an event, and dispatching the event to the appropriate processing context in a system ofthe invention.
  • FIGURE 3 OB presents a diagram illustrating an event trace that outlines the process of routing an event and sending it to an external processor via an external interface, including conversion from an event to a message format.
  • FIGURE 31 is a diagram illustrating the nature of an event hierarchy.
  • Such a hierarchy provides considerable flexibility in routing and dispatching. For instance, all TCAP events could be dispatched to a single processing context that handles all TCAP messages by implementing the routing method in the TCAP class.
  • each event class derived from TCAP event could be routed to an application context dedicated to handling events of a specific type, for example, 800 Number Translation, Calling Name Delivery, and Local Number Portability, by implementing a unique dispatch method for each class.
  • the data sets that are associated with the TSP fall into at least five categories. These categories include, for example, (a) data sets that are accessed frequently but whose (persistent) values change infrequently, (b) data sets that are accessed frequently but whose (persistent) values change with moderate frequency, (c) data sets that are accessed frequently and whose (persistent) values change frequently, (d) data sets that are accessed with moderate frequency and whose values change frequently, and (e) static data sets that are created frequently and accessed only infrequently.
  • categories include, for example, (a) data sets that are accessed frequently but whose (persistent) values change infrequently, (b) data sets that are accessed frequently but whose (persistent) values change with moderate frequency, (c) data sets that are accessed frequently and whose (persistent) values change frequently, (d) data sets that are accessed with moderate frequency and whose values change frequently, and (e) static data sets that are created frequently and accessed only infrequently.
  • Route and Call/Feature policy data sets belong to the above category (a).
  • a summary of these data sets are presented in Tables 34 and 36 of FIGURES 32A and 32B. These data sets support processing of each call, and their database of record in the persistent store.
  • the memory capacity ofthe system of the invention is preferably sufficient to support complete caching of these data sets.
  • the use of these data sets allows achieving high memory residency, and maintaining consistency with the database of record when updates occur.
  • the above category (b) of data sets includes primarily the endpoint/subscriber data set, a summary of which is presented in Table 38 of FIGURE 32C.
  • This data set supports processing of each call. Although the endpoint/subscriber data values change with greater frequency than those ofthe Route and Call/Feature policy data sets, they change at a significantly lower frequency than call attempt rates.
  • the database of record for this data set is the persistent store.
  • the endpoint/subscriber data set allows achieving relatively high memory residency with reasonable memory consumption, and maintaining consistency with the database of record when updates occur.
  • the data co ⁇ esponding to frequency callers achieves higher memory residency than those co ⁇ esponding to infrequent callers.
  • the memory capacity is preferably sufficient to support complete caching of this data set for a mature, fully configured system, thus achieving good disk access performance upon cache misses.
  • the above category (c) data set includes primarily call and feature state data, of summary of which is presented in FIGURE 32D.
  • This data set supports processing of each call and its value changes frequently during call and feature processing.
  • the frequency of changes in persistent value is less than overall frequency of state change, but it is at least several times per call.
  • the database of record is the memory image.
  • a persistent image is maintained for selected states to support fault tolerance. This data set allows achieving complete memory residency, maintaining consistency between the memory and persistent images for selected states, thereby providing excellent disk access performance for all consistency updates.
  • the above category (d) consists primarily of equipment and transmission facility state and statistical data sets.
  • FIGURES 32E, 32F, and 32G provide summaries of these data sets.
  • the data sets support network management and system operations. Some members of this data set can change their values as a function of call volume and may be subjected to frequent value changes. Aggregate members are also subject to frequent value changes. Routine polling intervals can govern access to this data set.
  • the database of record is a memory image. Persistent images are provided for historical statistical records (usage and performance) only. The data set allows achieving high memory residency, and further achieving reliable capture of historical statistical records.
  • the above category (e) data set consists primarily of Call Detail Record (CDR) and Automated Message Accounting (AMA) record sets.
  • CDR Call Detail Record
  • AMA Automated Message Accounting
  • FIGURES 32H and 321 provide summaries of this data set.
  • CDR's are generated for each call and/or feature. In selected number of cases, multiple CDR's may be generated for a single call.
  • CDR's are captured to disk for subsequent processing.
  • AMA records are in turn derived from CDR's.
  • the database of record is the persistent image.
  • CDR memory images exist only as needed to support reliable capture to the persistent store. That is, there is no memory image of AMA records.
  • This data set allows achieving reliable capture of CDRs to the persistent store. Much of this data set is also subject to sharing and duplication. Sharing is utilized to make the data available to multiple processing elements. Replication is utilized to support fault tolerance.
  • Data sets that are related to physical equipment and facilities, and related to compiled software elements are not subject to frequent schema changes. Other data sets may experience occasional schema changes.
  • some embodiments of the invention provide schema flexibility for log data types, such as system logs, exception logs, audit logs, CDRs and AMA records. This can allow altering the contents of these data sets over time without software compiles.
  • the persistent storage subsystem ofthe system ofthe invention provides data sharing. That is, data can be shared among multiple TSP processing nodes. This includes data housed by the TSP on behalf of CSX switch elements, thus ensuring high availability of data elements required by the CSX. Further, the persistent store provides mechanisms for controlling object memory residency (cache management). The purpose of this capability is to provide access performance sufficient to meet the systems' s overall performance objectives. In addition, the persistent store allows processors to share transient call/feature state and context objects through data replication. The persistent store also supports multiple threads per process and multiple processes per database. Further, the persistent store provides object level control of database commits to ensure that transient objects are persisted in co ⁇ ect (e.g., stable) states. Another functionality ofthe persistent store is object level locking. This allows achieving the overall performance objectives by reducing contention to the object level, thus decreasing the occurrence of multiple threads accessing the same object. In addition, the persistent store supports evolution ofthe object while the system is ranning.
  • FIGURE 33 illustrates a diagram depicting the nature ofthe co ⁇ elation between call/feature states in the volatile store and in the persistent store.
  • the states in the diagram are arbitrary and only for illustrative purposes (they do not co ⁇ elate to any real call model).
  • the initial state is persisted to the transient data store. This facilitates recovery processing by representing resources that have been in use, but for which no stable call state was ever reached.
  • the image in the persistent store is updated to reflect the stable state.
  • the call progresses further, it achieves another stable state causing another update to the transient data store.
  • the persistent image is destroyed because its only purpose is to support recovery of stable state calls.
  • a back up processor has access to the transient data store, and can therefore recover the appropriate stable call images. The call will revert to the state represented in the transient call store regardless of what the actual call state was at the point of failure.
  • FIGURE 36 schematically illustrates an embodiment of a system 100 ofthe invention that converts a textual description in a mark-up language of a process, e.g., a state machine, to an object graph, and preferably stores the object graph in an object repository, e.g., an object database.
  • the object graph can be accessed to determine transition of a present state ofthe process into a new state and to determine actions, if any, to be performed.
  • the system ofthe invention also provides two stages of validation. In the first stage, a lexical structure ofthe textural description ofthe process logic is validated by comparison with a document type description, and a "logical" document object model is generated from the textual description. In the second stage, actions or operations referenced by that document object model are validated, e.g., by comparison with a "reference" object model.
  • the exemplary system 100 includes a parser 102 that receives a textual description of a process 104, modeled as a state machine, in a mark- up language and generates an document object model 106.
  • the parser 102 can be of any commercially available type suitable for such purpose.
  • the textual description of the state machine herein refe ⁇ ed to as the state machine document, identifies one or more states and one or more events that cause transitions between these states.
  • the textual description can identify a state machine representative of a call feature, e.g., call forwarding, provided to a subscriber.
  • the call feature state machine transitions from one state to another in response to one or more events, e.g., call progress events such as hookflash, and optionally performs one or more actions, e.g., routing a call.
  • the mark-up language can be chosen to be any language that is suited to a particular application.
  • HTML, XML, and other mark-up languages which are extensions of XML e.g., CPML
  • FIGURE 38 depicts an XML document that describes a logic for a state machine that provides a call forwarding feature to a subscriber of a telecommunications service.
  • the model 106 herein refe ⁇ ed to as document object model (DOM), includes objects and/or references to objects that represent the states identified in the state machine document. These objects can also reference one or more operations for performing the actions, if any, specified for various states of the state machine.
  • the object model can include, e.g., structures (struct) and/or classes that represent the states identified in the textual description.
  • the DOM is an object representation of a call processing logic, e.g., the logic for providing a call feature such as call waiting.
  • the parser 102 is preferably a validating parser that compares the lexical structure, e.g., syntax, ofthe textual description 104, i.e., the state machine document, with a reference lexical structure 108, herein refe ⁇ ed to as logic document type definition (DTD), to ensure that the structure ofthe textual description 104 conforms with a pre-defined structure.
  • this validation step ensures that the structure ofthe textual description that defines a state machine is consistent with a pre-defined structure for defining state machines.
  • Appendix F provides an example of a logic document type definition which provides a reference lexical structure for defining a state machine.
  • the exemplary system 100 further includes a pre-processor 110 that receives the DOM 106 and generates an object graph 112 which is representative ofthe state machine defined in the textual description, i.e., state machine document.
  • FIGURE 36A presents a graphical representation of such an object graph based on logic specifications provided in a mark-up language.
  • the pre-processor 110 validates the document object model 106 by comparing it with a reference document object model 114, herein refe ⁇ ed to as reference DOM.
  • the reference DOM includes objects which are representative of permissible operations (actions). That is, the reference DOM identifies those operations that the system can support.
  • the object model 110 may have a reference to an operation (action), such as playtone.
  • action such as playtone.
  • Validating the object model ensures that such operations are in fact supported by the system.
  • the object graph 112, generated by the pre-processor 110 provide object representations of validated actions for a given state machine as originally specified in the textual description.
  • the reference DOM 114 can be generated, for example by the parser 102, from a textual description 116 in a mark-up language ofthe reference model.
  • the lexical structure ofthe textual description ofthe reference model can be validated by comparing it with a reference lexical structure 118, herein refe ⁇ ed to as class and instance document type definition.
  • the object graph 112 includes nodes which are indicative ofthe states ofthe state machine, and edges which are indicative of transitions between these states.
  • the object graph 112 is stored in an object repository 120, e.g., an object database.
  • an object database e.g., an object database.
  • One embodiment ofthe invention employs an object database sold by Excelon Corporation. It should be understood that other object databases can also be utilized in a system of the invention.
  • the object graphs can be accessed to execute particular iterations ofthe state machines represented by the object graphs. In some cases, it may be necessary to adapt the object graph 112 for storage into the object repository 120.
  • the exemplary system 100 includes a database adapter 122 that can transform the object graph, if needed, in a manner that renders it compatible for storage into the object repository 120.
  • Each object graph stored in the object repository genetically represents the logic for a particular state machine.
  • This representation is context free in that the object graph does not have any information regarding a particular state of and/or events received from an instantiated state machine, i.e., a particular iteration ofthe state machine.
  • the system ofthe invention can instantiate an object having information regarding the context of the state machine, i.e., present state ofthe state machine and events received by the state machine.
  • This context object communicates with an engine that in turn communicates with the object repository to accesses the object graph co ⁇ esponding to the state machine.
  • the engine navigates the object graph and instracts the context object regarding the state transitions and/or actions that the present state ofthe state machine requires. Further understanding ofthe run- time environment of a system ofthe invention can be obtained by reference to FIGURE 13 above.
  • FIGURE 37 schematically illustrates the execution of a call feature provided by a telecommunications system ofthe invention which utilizes an object graph to represent a state machine co ⁇ esponding to that call feature.
  • a subscriber's phone 122 can interact with switching and access equipment 124, e.g., PBX, to create a connection with a switch process 126.
  • switching and access equipment 124 e.g., PBX
  • the description of the call features ofthe subscriber are stored as objects in the object repository 120 (FIGURE 36). These subscriber objects can be generated, for example, from a textual description of these features in a mark-up language, such as XML.
  • a subscriber context object is instantiated that monitors progress ofthe subscriber's calls, and can transmit call events to a feature object instantiated in a feature context to provide particular call features to the subscriber.
  • the feature object communicates with an engine which in turn navigates an object graph co ⁇ esponding to the call feature, which is stored in the object repository 120, and instructs the feature object the state transition and the actions, if any, that need to be performed in response to a received call event.
  • a system according to the invention provides a number of advantages. For example, defining state machines in a mark-up language provides a more generic implementation of state machine than code based counter parts. Further, such an approach results in an event driven system that is more flexible than code based systems. For example, a system ofthe invention can be more easily provisioned and implemented. Further, providing an object representation ofthe state machine results in faster processing compared with interpretive techniques.
  • Call features and services are provided by a set of collaborating feature components. In many cases it is necessary to provision several feature components in order to provision a single call service. In some cases, simply replacing an existing feature component with another provides a new feature.
  • a service may require a collection of specific components or it may require one or more specific components, one or more of which are chosen from a particular feature classification.
  • inter-dependencies between the feature component classifications that describe how components of different classification relate to and interact, with one another. These inter-dependencies can be used to support decision making when configuring a particular service.
  • Each feature component is classified and assigned an identifier. From the EMS perspective, feature component identifiers are strings. The feature classifications and inter- dependencies as well as a basic POTS service configuration are described in more detail below.
  • an origination request handler responds to a subscriber's attempt to place a call, invoke a vertical service feature, or invoke a special service. Origination request handlers typically provide feedback to the subscriber, such as dial tone, and gather a DTMF digit sequence that indicates the subscriber's intent. However, origination request handlers may provide unique behavior such as originating a call automatically, providing customized responses, etc.
  • An origination request handler is usually invoked by a subscriber lifting the telephone handset.
  • an origination request handler may be invoked directly by other feature components. For instance, a feature that terminates by "re- originating" may invoke an origination request handler directly.
  • FIGURE 39 shows that the following two origination request handlers have been defined:
  • black telephone response when a subscriber lifts the handset. This includes providing dial tone, collecting a dialed number, analyzing the dialed number, and • invoking the subscriber's call origination feature, a vertical service feature, or a special service. This feature is provisioned for each subscriber having basic POTS service.
  • a call authorization feature determines whether or not a specific call origination attempt is authorized. These features typically invoke one or more feature restriction components, which determine whether or not the specified call is subject to a restriction or subject to a class of restrictions, and report whether or not the call is authorized. Call authorization features may also provide alternative behaviors such as a PIN code authorization for specific call types.
  • Call authorization features are invoked as needed by origination request handlers and other features in order to determine whether or not a call is authorized. This may include circumstances wherein the call may occur at a later time. For example, a call authorization feature may be invoked to validate a call forwarding destination number when the subscriber specifies the number.
  • FIGURE 40 shows the following three such feature:
  • call Restrictions this feature evaluates each provisioned restriction and reports the result. A call shall be authorized only if none ofthe provisioned restrictions apply. This feature must be provisioned whenever a subscriber has one or more call restrictions.
  • a call restriction feature operating in conjunction with subscriber attribute values, defines one or more prohibited calls or call types.
  • a call restriction feature is invoked as a subroutine to report whether or not a specified call is prohibited.
  • FIGURE X schematically illustrates the following three call restriction features:
  • a call origination feature originates and manages a call placed by a subscriber.
  • a call origination feature selects and invokes a call routing function, based on call type, supports or directly provides call progress indications, and manages voice path.
  • FIGURE 42 illustrates a POTS call origination feature, provisioned for each subscriber having basic POTS service, that originates and approves POTS calls.
  • a vertical service feature is invoked in response to a dialed vertical service code, e.g., "*70".
  • Vertical service features may be part of a larger service, e.g., Cancel Call Waiting, Activate Call Forward Busy Line, or may be a standalone feature, e.g., Customer Originated Trace (COTS).
  • COTS Customer Originated Trace
  • a dialing plan defines zero or more associations between vertical services codes and vertical service features. Each subscriber should be provisioned with a dialing plan that provides appropriate vertical service code to vertical service feature associations.
  • FIGURE 43 provides a diagram depicting the following exemplary vertical service features:
  • COTS this feature reports information about the most recently received call.
  • Call Pickup this feature allows a subscriber to receive a call placed to another directory number.
  • a termination request handler usually responds to a call termination attempt by choosing the most appropriate call termination feature from the subscriber's provisioned call termination features for the circumstances present at the time.
  • a temiination request handler chooses a feature by evaluating each terminating feature's activation criteria in sequence according to feature precedence. The call termination feature whose activation criteria are satisfied and has the highest precedence is invoked to terminate the call. However, a termination request handler may take direct action such as denying the call.
  • FIGURE 44 illustrates the following two termination request handlers:
  • POTS Termination Request Handler this feature provides the standard "black telephone" response to a call termination request. This request handler selects and invokes the most appropriate call termination feature. This feature is provisioned for each subscriber having basic call termination service.
  • a call termination feature provides a specific call termination behavior. Call termination behaviors include presenting a call to the subscriber, forwarding a call, refusing a call, etc.
  • FIGURE 45 schematically depicts the following exemplary call termination features:
  • Call Waiting this feature presents a call to a subscriber when another call is already present and allows the subscriber to alternate conversation between the two calls.
  • An alerting feature notifies a subscriber that an inbound call is present.
  • Idle Alerting Features notify the subscriber by ringing the phone. These features are invoked when the subscriber's handset is on hook.
  • Mid-Call Alerting Features notify the subscriber by generating an audible tone during conversation. These features are invoked when the subscriber is connected with another call at the time the inbound call is presented.
  • Bounded Alerting Features notify the subscriber that an inbound call is present and generate a "no answer” event if the subscriber does not "answer” within a pre- determined time limit. These features are further specialized into idle and mid-call altering features.
  • FIGURE 46 depicts the following exemplary alerting features utilized in one embodiment ofthe invention:
  • FIGURE 47 provides a diagram that depicts the relationship between boundary events, e.g., offhook, and the classifications of features, as well as relationships among various originating feature classifications defined in one embodiment of the invention.
  • FIGURE X shows how a feature handler resolves potential conflicts among different features.
  • a feature handler preferably implemented in a mark-up language, is chosen based on the feature passed to a context object by a subscriber terminal (or the network terminal).
  • an Origination Request Handler is invoked in response to an off hook event.
  • An Origination Request Handler employs a Dialing Plan for dialed number analysis and translation.
  • An Origination Request Handler may invoke a Vertical Service Feature in response to a dialed vertical service code.
  • an Origination Request Handler may invoke a Special Service in response to a dialed special service code, or may invoke a Call Authorization Feature in response to a dialed directory number.
  • a Call Authorization Feature may use one or more Call Restriction Features to identify unauthorized calls or call types.
  • An Origination Request Handler may invoke a Call Origination Feature to place an authorized call..
  • a Mid- Call Origination Request Handler may be invoked in response to an event, e.g., flash hook during a call.
  • a Mid-Call Origination Request Handler utilizes a Dialing Plan for dialed number analysis and translation.
  • a Mid- Call Origination Request Handler may invoke a Vertical Service Feature in response to a dialed vertical service code.
  • a Mid-Call Origination Request Handler may invoke a Special Service in response to a dialed special service code.
  • a Mid- Call Origination Request Handler may invoke a Call Authorization Feature in response to a dialed directory number.
  • a Mid -Call Origination Request Handler may invoke a Mid-Call Origination Feature to place an authorized call.
  • FIGURE 48 provides a diagram that depicts the inter- action of the terminating feature classifications. Similar to an origination request handler, a termination request handler processes call terminal events and ensures that no conflict arises among various features.
  • the following example depicts the evolution of call and feature processing objects configuration starting with the origination of a two-party call and ending with a three-way call.
  • FIGURE 49A provides a diagram that depicts the objects representing a particular subscriber in an idle state.
  • a SubscriberTerminai is a non-persistent object representing the current state of a subscriber.
  • Each SubscriberTerminai contains a one-way reference to a persistent DirectoryNumber object.
  • a Directory-Number object is the persistent representation of a particular subscriber including the subscriber's directory number string, the subscriber's provisioned features, and so forth.
  • Each SubscriberTerminai also has a two-way association with a servicePort.
  • a ServicePort provides the associated SubscriberTerminai with an interface to the underlying switch. It converts the terminal's commands into MEGACO transactions and/or call signaling messages. It also converts MEGACO notifications and call signaling messages into events for processing.
  • FIGURE 50 provides a diagram that depicts changes that occu ⁇ after the subscriber lifts the handset to originate a call or invoke a vertical service feature element.
  • An origination request handler is a provisioned feature that defines how to proceed when offhook occurs from the idle state.
  • the SubscriberTerminai obtains the subscriber's origination request handler feature ID from the DirectoryNumber, and constructs an independentcontext object, and passes the feature ID to this object.
  • the independentcontext object obtains a pointer to the objects that define the specified feature's state machine, initializes the processing engine, and executes the feature from the start state with the start event.
  • the independentcontext has a two-way, parent-child relationship with the SubscriberTerminai.
  • the parent/child relationship is established primarily for memory management and message routing purposes. Further, the call/terminal relationship reflects to whom each object sends messages (e.g., terminal to context object for new non-boundary events and/or context to terminal for commands). This association is established upon construction of the independentcontext and supports the following capabilities:
  • the SubscriberTerminai is responsible for releasing the memory allocated to each Independentcontext it creates. However, a SubscriberTerminai cannot determine independently when an independentcontext can be deleted.
  • Messages exchanged between originating and terminating features are routed from object to object using the subscriberTerminai's IDT and CRV plus the destination feature's independent context ID. Each message is dispatched first to the subscriberTerminai specified by the IDT and CRY values. The SubscriberTerminai examines the independent context ID and either processes the message, when the value is 0, or forwards the message to the appropriate independentcontext, when the value is greater than 0.
  • the independentcontext also has a two-way call-terminal relationship with the SubscriberTerminai. This association supports propagation of events and commands related to call and feature processing. Events originating from the underlying CSX switch, received via the ServicePort, are propagated from terminal to call. Events originating from peer features are communicated directly to the destination independent context. Commands are always propagated from call to terminal.
  • FIGURE 51 provides a diagram that depicts the changes that occu ⁇ ed after the subscriber dialed a valid directory number.
  • the "Orig Req Handler” Upon receiving the dial number, the "Orig Req Handler" calls upon the digit analyzer to classify the digit sequence.
  • a subscriber may dial a destination code (directory number), a special service code, or a vertical service code depending upon the provisioned dialing plan.
  • the "Orig Req Handler” invokes (calls) the subscriber's call origination feature.
  • the subscriber's provisioned call origination feature is "POTS Call Orig".
  • the "Orig Req Handler” has invoked the specified feature using a "function call” model.
  • the called feature is stacked on top the calling feature. Events are propagated from the top ofthe stack down. Each event is presented to each feature in this manner until a feature consumes the event, i.e., reacts to the event, or the end ofthe stack is reached. If the stack is exhausted, the event becomes stale.
  • the subscriberTerminai defines the handling of stale events. Call Request Routed From Calling to Called Subscriber
  • FIGURE 52 illustrates a diagram depicting the changes that occurr after the called subscriber has been identified and presented with a call termination request.
  • the call origination feature calls the router to route the call to the appropriate destination; in this case another local subscriber.
  • the router identifies and forwards a terminate call request to called subscriber.
  • a SubscriberTerminai invokes a termination request handler.
  • a termination request handler is a provisioned feature that defines how to proceed when a terminate call request is received.
  • Invocation of a termination request handler is similar to invocation of the "Orig Req Handler".
  • the subscriber's termination request handler is POTS Termination Request Handler. This particular request handler selects and invokes the appropriate call termination feature.
  • originator-terminator relationship has been established from the called subscriber, the terminator, towards the calling subscriber, the originator. This relationship supports message propagation between originator and terminator. However, it is one-way at this point because the originator has not yet learned the terminator's identity.
  • the CallDataBlock depicted in this diagram as well as in previous diagrams, describes a particular call leg between an originator and terminator.
  • This object contains all attributes that must be shared between the originator and terminator; attributes such as the originator and terminator ID information, call answer date and time, call disconnect date and time, and so forth. This object is carried with each message exchanged between originator and terminator to maintain synchronization and to provide up to date information.
  • FIGURE 53 presents a diagram that depicts an exemplary stable two-party call.
  • a selected call termination feature in this case POTS Call Termination, is invoked using the function call model. This particular feature presents the call to the subscriber. It therefore establishes the call-terminal association, rings the phone, and sends a call proceeding message to the originator.
  • the terminator's ID information passes to the originator in the CallDataBlock and the originator- terminator relationship becomes bi-directional.
  • This message also enables call progress indication to the originator; since this is a local subscriber-to-subscriber call audible ringing will be applied to the originating termination.
  • FIGURE 54 presents a diagram that depicts the changes that occur after the originating subscriber issues a flashhook.
  • An active call feature may consume a flashhook or the flashhook may represent a mid-call origination attempt.
  • a mid-call origination attempt is identified when, and if, a flashhook event becomes stale.
  • an origination request handler takes confrol ofthe subscriber's audio connection in order to provide feedback (tones) to and collect information (digits) from the subscriber.
  • a mid- call origination request handler is an origination request handler. Therefore, "Mid- Call Orig Req" assumed the active call role.
  • a mid- call origination request handler In assuming the active call role with respect to the SubscriberTerminai, a mid- call origination request handler must also assume the role of terminal with respect to the existing call and inform the existing call that a multi-party feature is now present. The behavior of a two-party feature is altered by the presence of a multi-party feature in that it must terminate unconditionally if and when the far end party hangs up. The mid-call origination request handler and any subsequent mid-call origination feature must know if and when the existing call terminates. By assuming the tenninal role with respect to the existing call, the mid-call origination request handler places itself in the flow of information pertaining to the existing call. Any subsequent mid-call origination feature inherits these associations; terminal with respect to the previously existing call and call with respect to the subscriberTerminai , thus satisfying its need to be in the information flow regarding the existing call.
  • the respective features each retain responsibility for disposition of their respective call legs and call detail recording.
  • FIGURE 55 illustrates a diagram that depicts the changes that occur after the subscriber dials a directory number.
  • the dialed digit sequence is classified as a destination code by the digit analyzer.
  • the subscriber's mid-call origination feature is invoked.
  • a mid-call origination feature is a provisioned feature that is invoked when a subscriber originates a call while participating in a two-party call. As shown here, the subscriber's mid-call originating feature is three-way calling.
  • a second context objectl e.g., the context object of second call, serves as proxy terminal for the context object ofthe first call., thereby ensuring consistency in event processing.
  • the call origination aspects of a mid-call origination feature are similar to a two-party call origination feature.
  • FIGURE 56 presents a diagram that depicts the changes that occur after the second call is routed to the called subscriber.
  • Processing on the called subscriber's side is identical to that observed with the two-party call since the called subscriber is responding to a terminate call request.
  • Features, object configuration, and associations are similar to those on the caller's side.
  • FIGURE 57 depicts the objects' configuration once the three-way call is completely established.
  • the original call's configuration remains unchanged except for the substitution of the SubscriberTerminai by the Independentcontext supporting the three-way call.
  • the three-way call feature acts as terminal to the previously existing call and as originator to the second call.
  • the configuration ofthe two terminators is similar.
  • FIGURE 58 schematically illustrates selected processes and their interactions in a system ofthe invention.
  • the inter-process communications can be provided by Corba orb, particularly within a TSP node.
  • message transport between element management system (EMS) and a TSP node can also be provided by Corba orb.
  • EMS element management system
  • Appendix A Class 5 Feature List
  • This appendix provides an exemplary list of class 5 features that a TSP system of the invention can implement.
  • DND Do Not Disturb
  • LNP Local Number Portability
  • SCF Selective Call Forwarding
  • Appendix B Feature Analysis
  • This feature is a terminating-only service that allows a subscriber to receive message calls originating within specified service areas, with the call charges billed to the called party instead ofthe calling party.
  • the service is provided to one or more dedicated access lines.
  • the 800 service billing information and appropriate service measurements are registered by the Automatic Message Accounting (AMA) recording arrangement serving the terminating exchange.
  • AMA Automatic Message Accounting
  • the 800 service billing information is recorded on auxiliary equipment separate from the CAMA billing arrangement. Extracted from LSSGR- end Event: 800NS (DialComplete + dialed number is prefixed with 800)
  • the basic 911 emergency service feature provides a 3-digit universal telephone number (911) that gives the public direct access to an emergency service bureau, usually without charge to the calling subscriber.
  • the emergency service is one-way only, terminating to the service bureau.
  • the emergency service bureau is usually located within a police department, although in some communities it is located in a fire department or in an independent agency serving as a communications center.
  • a given local switching system should serve no more than one emergency service bureau.
  • the bureau has the capability of holding and disconnecting the connection and monitoring the supervisory state, and ringing the originating station back.
  • the emergency call is advanced to the tandem switch with calling line ANI.
  • the calling line should not be released even if the disconnect signal is received from the calling, until a disconnect signal is received from the service bureau. It is also desirable to release the call after approximately 45 minutes have elapsed since the caller disconnect signal has been received. This time-out period begins again on receipt of an emergency ring back request from the operator (optional service). On time-out, the calling line should be idled, reorder tone should be applied to the service bureau and a message printed to inform telephone company personnel ofthe condition.
  • E911 expanded emergency service
  • a disconnect signal from the service bureau should result in a forced-disconnect of an established connection at any time, independent ofthe calling line status. Forced-disconnect should occur immediately on detection of a valid disconnect signal from the service bureau for both line and trunk originated calls.
  • DOS should take precedence.
  • Ringback should be performed when requested by the service bureau.
  • 911- Code Restriction and Diversion 911 should not be screened out, so a line with code restriction can always call 911.
  • the switching system should not be able to series complete to 911.
  • CFBL forwarded DN cannot be 911.
  • CFDA forwarded DN cannot be 911.
  • TWC During a call to 911 attendants, TWC cannot be used.
  • a TWC subscriber places the call on consultation hold and initiates a 911 call. It is desirable that the TWC subscriber can flash once to establish a TWC connection. All subsequent flashes should be ignored. Design note: 911 FLO should handle all call progress events so that it can control the handling of these events.
  • Selective Call Rejection allows customers to block subsequent calls from a calling DN after receiving a harassing call. After receiving an undesired call, the customer dials a code that places the last calling party's DN on a list for rejection. Subsequent calls from the rejected party are intercepted and routed to an announcement. Selective call rejection also enables customers to enter additional DNs onto the list in a manner similar to selective call forwarding or VIP alert (01-02-1270). Calls from these parties are also intercepted and routed to a rejection announcement. Extracted from LSSGR- end
  • SCR takes precedence over other features at seizure event. If a call is rejected due to the calling number is on the SCR list, all other features at seizure event are disabled.
  • SCR overrides SCF.
  • the Do Not Disturb feature is activated/deactivated by the customer. It routes calls destined to the customer's DN either to a special do not disturb announcement or to a special tone. The announcement may return answer supervision.
  • An option ofthe service provides that the calling party may dial a prearranged Personal Identification Number (PIN) while listening to the announcement/tone.
  • PIN Personal Identification Number
  • the local switching system collects the DTMF digits and, if they correspond to the customer-specified number, the calling party will override the do not disturb function and receive normal terminating treatment.
  • the customer may dial the activation code to enable this service, dial the deactivation code to disable the service, or dial the PIN change code to initially enter or modify the number. Extracted from LSSGR- end
  • Cancel call waiting is a feature that allows the customer with CW service to inhibit the operation of CW for one call.
  • the customer dials the cancel call waiting code, obtains recall dial tone, and places a call normally.
  • CW service should be inactive so that anyone calling the CW customer should receive the normal busy treatment, and no CW tones should interrupt the customer's call. Extracted from LSSGR- end Event: DialComplete
  • the initiator of TWC hangs up with a party on hold, he/she should be rung back and connected to the held party on answer. If the initiator's CW was disabled prior to hanging up on the held party, it should remain disabled after the customer answers the ringback.
  • CW is a feature whereby a line in the talking state is alerted by a call waiting tone when another call is attempting to complete to that line.
  • the call waiting tone is only audible to the line with the CW feature activated. Audible ringing is returned to the originating line.
  • the service also provides a hold feature that is activated by a switchhook flash. Consecutive flashes allow the customer (with the service activated) to alternately talk to the original and the new calling party. If the customer with the service activated hangs up while one party is on hold, the customer with the service activated is automatically rung back, and upon answer is connected to the held party. Extracted from LSSGR- end
  • a new call terminated on a CW user if there is only one existing call terminated on the user's line and the call is not in talk stage, SC overrides CW.
  • CW and CFDA can be assigned to a line and be active simultaneously.
  • the call should be offered under CW and CFDA timer should be started. If the CFDA timer expires before the user answers, the additional call should be forwarded.
  • CW and CCW should not be active simultaneously.
  • the flash after the call waiting tone should be freated as the request to initiate the TWC. Also if the party to whom the customer was talking hangs up and another is held, the flash should be recognized as a request to establish a talking connection with the held party. The initiator of TWC should not receive any CW treatment while in a TWC mode or while a party is on hold.
  • CW overrides TWC.
  • the additional call attempt should be treated using the CW treatment.
  • the initiator of TWC with USTWC activated should not receive Call Waiting(CW) calls.
  • the other parties to TWC should be able to receive CW Calls.
  • CW should take precedence over operator recall when the system detects a flash after CW tone is applied to the connection. Subsequent flashes control CW; no operator recall should be allowed until a two-way connection is reestablished.
  • This appendix provides an exemplary supplementary document type definition for CPML. It further provides examples of CPML+ scripts for call control, and an exampfe of an endpoint' s feature subscription in CPML+. Supplementary Document Type Definition for CPML
  • testMethod testMethod 'method (testDNISPrefix
  • execution method param
  • 800FSM >
  • ⁇ nextState id ⁇ /do>
  • Telephone service providers e.g., CLEC and ILEC
  • OSs Operations Systems
  • the network equipment are obtained from different vendors all over the world.
  • Telecommunications Managed Network (TMN) recommendations are defined by ITU in the M.3000 series to provide a framework for a standardized mechanism to manage the networks.
  • TMN enables the service providers to achieve interoperability across all managed networks over heterogeneous network equipment.
  • a Network Element contains manageable information of a network equipment that is monitored and controlled by an OS.
  • an NE In order to be managed within the scope of TMN, an NE must have a standard TMN interface, which is the Common Management Information Protocol (CMIP). If an NE does not have a standard interface, the NE can still be managed via a Q- Adapter.
  • CMIP Common Management Information Protocol
  • Q-Adapter Currently two Q-adapters are supported; TL1 Q- adapter and SNMP Q- adapter.
  • SNMPv3 has been chosen as the network management protocol for TSP and CSX, which renders the TSP/CSX system a TMN manageable network equipment. SNMPv3 offers the acknowledgement mechanism to the message originator, which is required in the TMN architecture.
  • TMN comprises layers of building blocks that provide overall epitome of the management issues and functions of TMN.
  • TMN includes a network element layer, an element management layer, a network management layer, a service management layer, and a business management layer.
  • the network element layer presents the manageable information that is managed and controlled by OSs.
  • the MIBs of TSP/CSX, the SNMP proxy agent on TSP, and the SNMP Q-adapter reside in this layer.
  • TSP and CSX are TMN enabled.
  • TSP/CSX will be SNMPv3 compliant.
  • the element management layer manages one or multiple NEs. This layer deals with, for example, the configuration data, logs, statistics of one or multiple network elements.
  • the Network Management System (NMS) in TSP provides the functions of this layer. In some embodiments, however, the element management layer will not be TMN conformant. That is, it does not provide Q3 interface to communicate with the network element layer and network management layer. NMS is the tool to provision the operation and support of TSP/CSX.
  • the network management layer has the managed view of the entire network. It coordinates all network activities and supports the service management layer functions via Q3 interface.
  • the service management layer utilizes information presented by network management layer to manage contracted service to existing and potential customers. This is the basic point of contact with customers for provisioning, accounts, quality of service, and fault management. It is also the key point for interactions with service providers and other administration domains. This layer communicates with the network element layer and element management layer via Q3 interface.
  • the business management layer includes high-level planning, budgeting, goal setting, executive decisions, business level agreements, etc.
  • This Appendix provides an example of a reference lexical structure for defining a state machine.
  • Element LOGIC Summary : A logic represents either a state machine or a rules machine structure .
  • a rules set specification defines the behavior of a stateless logic .
  • a finite state machine specification defines the behavior of state-full logic elements .
  • FSM Finite State Machine
  • the State Machine is composed of a collection of states. These states specify behavior that defines the state machine.
  • the state machine CPML element has an attribute of the initial state for this machine.
  • the inital state attribute shall be validated against the child elements of FSM to make sure that the initial state is defined.
  • a State is composed of a collection of transitions. Each state element has a name attribute which is used to identify the state.
  • Example This is an example of a state with the logical name Initial.
  • An end state is a state that has no transitions. Each state element has a name attribute which is used to identify the state.
  • Example This is an example of a end state.
  • a transition belongs to a state. These are the pathways out of that state, given an event. If we get an event we will take the transition associated with that event from the current state to another state. A transition has a set of sequences. Once a sequence is able to execute successfully we will stop testing the other sequences, and will transition to the next state defined by that sequence.
  • a sequence is the set of all possible actions for the current event .
  • An optional predicate or guard condition is used to distinquish between the different sequences.
  • the predicate refers to a method that yields a boolean "true” or "false” result.
  • the predicate sequence shall be executed until the first one fails. In other words the results of the predicates are anded together.
  • the sequence has an attribute that corresponds to the name of the next state.
  • Example 2 This is a place holder for an example that makes use of predicates. Currently predicates are not implemented in our prototype, so they have not been included yet ... -->
  • Action is a container for all of the actions that are associated with this sequence.
  • the set of actions is what gives a sequence its behavior.
  • a transform or a call action has to be the last element in the actions sequence.
  • An Action is a container for all of the actions that are associated with this sequence.
  • Action represents a small atomic piece of behavior.
  • the name attribute on action refers to a method on the current focal point.
  • the focal point is the object that the actions are called on. When the action is executed it will call the corresponding method on its focal point.
  • Validation Action names shall be validated against the core object model specification, to verify that the method exists.
  • Accessor names shall be validated against the core object model specification, to verify that the method exists.
  • the focal point of engine we will then set the focal point of engine, to the returned value.
  • the current focal point will have a method that gets the terminal.
  • I can pass in the name of the new focal point ( see Action ) , that will be looked up instead of having to call a method to get the new focal point and then set it .
  • the name of the element will correspond to a method on the current focal point.
  • a Call Action represents a nested state machine. When executed it will create a contexts that represents the state of that new state machine, and will begin executing on that new state machine.
  • the nested state machine will be a component state machine of the caller.
  • a state machine may composed of one or more nested state machines using the call action construct. This lets us decompose our state machine into reusable simpler state machines . When the nested state hits an end state it will return to the calling state machine where it will continue executing where it left off.
  • the specified feature attribute i.e. Nested State Machine
  • a Transformation Action will replace the current context's state machine logic with another logic specified by the Feature attribute.
  • a context represents the current state of a state machine.
  • Validation The feature attribute shall be validated against known features .
  • Elemen LITERAL Summary: This is a constant value that is pushed on to the parameter stack of the engine.
  • the startTimer action takes two parameters, the number of seconds to set the timer for ( an integer ) and an event to post when the timer goes off.

Abstract

A telecommunication system (10) of the invention can include two Telecommunications Service Portal (TSP) nodes (12a, 12b) which are in communication with each other and with a CSX switch (14) to provide a convergent multimedia services environment. In conjunction with the CSX, the TSP (12a, 12b) offers class 5 and class 4 voice band services. These services can satisfy, for example, the needs for Competitive Local Exchange Carriers (CLEC) and Internet Service Providers (ISP). When coupled with other network elements, intelligent peripherals, and subscriber premise equipment, the TSP offers a solution to the demand for convergent multimedia services environments.

Description

TELECOMMUNICATIONS SYSTEM AND METHODS
Reference to Related Applications
This application claims priority to provisional applications having Serial No.
60/193,701, filed on March 31, 2000, Serial No. 60/193,807, filed on March 31, 2000, Serial No. 60/193,809, filed on March 31, 2000, and Serial No. 60/193,700, filed on March 31, 2000, the teachings of all of which are incorporated herein by reference. Further, this application is related to United States Patent Application Serial No. 09/519,557, filed March 6, 2000, and entitled SYSTEMS AND PROCESSES FOR CALL AND CALL FEATURE ADMINISTRATION ON A TELECOMMUNICATIONS NETWORK, the teachings of which are incorporated herein by reference.
Background of the Invention
The invention pertains to telephony and, more particularly, to systems and processes for call and call feature setup, administration and processing on public switched telephone networks (PSTN) and other telecommunications networks.
Voice telephony (and data communication via telephone modem) today is conducted primarily by "copper loops" or wireless transmission (via base station) from the user or subscriber to a central office (Class 4/5) switch that initiates the process of connecting the call to its ultimate destination, whether in the same local exchange handled by the central office, or to a remote central office. The call set-up process involves a series of "trigger points" wherein the service options available to the caller are checked against a database that periodically downloaded to the switch from the local carrier's database (typically relational, i.e., table-based). At the central office switch ofthe receiving subscriber, a similar sequence is followed to check such service options as call waiting and call forwarding. Updates of the databases are cumbersome, and adding new services require additional programming and trigger points in an already complex code. The process of call set up outside the local service area further requires an "out of band" communication over the SS7 ("Signaling System 7") network and protocols distinct from the network over which voice traffic flows. It is this system that allows the proper switching of traffic for roaming cellular subscribers and for 800- and 900- numbers. It also provides caller identification. The system, however, is limited in its bandwidth and by the small number of knowledgeable programmers.
The prior art has made advances in the middle or "control" layer of a three- layer network model for voice telephony as part of a trend towards "Advanced Intelligent Networks" ("AIN"). These advances have involved call agents using the SS7 network to control new functionality in call set up and upgrading ofthe International Telecommunications Union H.323 Internet protocol for coordination of voice, data, and video traffic on the Public Switched Telephone Network (PSTN). For example, Bellcore and Cisco developed the Simple Gateway Control Protocol (SGCP) to improve on H.323 and Level 3 developed the Internet Protocol Device Control (IPDC). The Media Gateway Control Protocol (MGCP) is a merger of SGCP and IPDC sponsored by the Internet Engineering Task Force to migrate SS7 functions into Internet Protocol (IP).
The current state ofthe art remains one of limited service options. Any change in service requires the reloading of service maps stored in relational data bases; each new variable for service requires another table, essentially another dimension in the relational database. Each variable is implemented at a stop point in the switching fabric. Switches still require complex programming and cost in the millions of dollars.
It is an object ofthe present invention to provide improved systems and methods for call and call feature setup, administration and processing.
Another object is to provide such methods and apparatus as reduce the overhead required for implementation or modification of call feature processing. A related object is to provide such methods and apparatus as facilitate implemenation of call features, whether defined by system designers, service providers or end users.
Still another object ofthe invention is to provide such methods and apparatus as are facilitate implementation of both complex and routine call feature processing.
Yet another object ofthe invention is to provide such methods and apparatus as can be implemented on a variety of telecommunications platforms.
Yet still another object ofthe invention is to provide such methods and apparatus as can be implemented at reduced cost and in less time.
Summary of the Invention
MARKUP LANGUAGE-DEFINED STATE MACHINE FOR USE IN CALL SERVICE PROCESSING
The invention meets the foregoing objects by providing, in one aspect, methods in which state machines that model telecommunications services are compiled from a textual description in a mark-up language. Objects (referred to below to as "context objects") track the states of such service, e.g., with respect to on- going telephone calls. Those objects access the compiled representation in response to events occurring with respect to the services in order to effect transitions in the states identified by the context object and/or to perform action with respect to the underlying services.
For example, the textual description can embody the logic ofthe state machines and can be provided, e.g., by a service provider or subscriber, in a mark up language such as HTML, XML, or an extension thereof. Such a state machine may describe a call feature, specifying the action or actions to be taken in response to signaling at the caller's site. For example, the description for a call waiting state machine may include an idle state, which alerts a subscriber to an incoming call
(when the subscriber's line is otherwise busy) by providing a call waiting tone, as well as further states and actions to be effected as the call waiting feature is executed.
According to further aspects ofthe invention, the compiled representation is preferably stored in a repository, e.g., an object database. The context object can invoke an engine to access the repository and discern from the compiled representation an action to be performed and/or a state transition to be effected. A virtual function, returned as a result ofthe repository access, can be utilized to invoke the specific core functions required to carry out the service. This type-resolution methodology is particularly advantageous when the engine and/or the compiled representation ofthe state machine are implemented in a C++ programming environment. In another aspect, the invention provides methods as described above in which the compiled representation ofthe state machine logic is maintained in the objects (referred to below as "call feature objects") associated with the context objects. Like context objects, the call feature objects are invoked as necessary and, particularly, in response to events, to support features required for an on- going call or administrative process.
In a related aspect, an object, hereinafter referred to as a call control object, is instantiated to control a call processing context. The call control object can invoke a call feature object with a signal that is indicative of an event, e.g., a call progress event. In response to the signal received from the call control object, the call feature object effects a transition of a present state ofthe instantiated state machine to a new state and further effects the performance of one or more actions, if any, associated with the present state.
Utilizing a mark up language to provide a textual description ofthe logic specifications of a state machine according to the invention provides a number of advantages. For example, it places the relatively complex task of defining actions to be performed in response to a myriad of different signals in a graphically depictable format, which can be more easily validated. Further, new state machines can be designed and validated more conveniently. This allows expeditious implementation of new call features at lower cost. In addition, providing a compiled representation of the state machine, and storing the compiled representation in a repository, facilitate executing an instance ofthe state machine in response to an event, for example, providing a call feature, such as call waiting, to a subscriber.
The method ofthe invention can be implemented, for example, by a telecommunications system that includes a call control module that controls a call processing context associated with a subscriber, and a call feature module that is in communication with the call control module. The call feature module can access a compiled representation of a state machine representative of a call feature provided to a subscriber in response to an event received from the call control module to cause execution of at least one action for providing the call feature. The telecommunication system can also include a repository, e.g., an object database, for storing the compiled representation ofthe state machine. The call control module can instantiate a call context object that maintains information regarding the state of a telecommunications service, e.g., a telephone call. Further, the call feature module can utilize an engine, for example, in response to a request from the call context object, to communicate with the repository in order to access the compiled representation ofthe state machine.
In another aspect, the state machine is represented as a textual description in a mark-up language, such as, HTML, XML, and the system includes a parser that receives this textual description and generates a document object model therefrom. The system can further include a pre-processor that receives the document object model and generates the compiled representation of the state machine therefrom.
Further aspects ofthe invention provide systems operating in accord with the methods described above.
METHODS AND SYSTEMS FOR IMPLEMENTING
TELECOMMUNICATIONS AND OTHER PROCESSES USING AN OBJECT GRAPH GENERATED FROM A MARKUP LANGUAGE
The foregoing objects are among those attained by the process which provides, in one aspect, methods for modeling a process (e.g., for telecommunications call or call feature processing) based on an object graph generated from a mark-up language description. The markup language constitutes a structured textual description, e.g., in HTML, XML, extensions of XML, and so forth, that identifies states ofthe process, operations to be executed in each state, and events that effect transitions between the states. The object graph provides a node- (or object-) based representation ofthe state machine represented in that textual description. The object graph can be stored in an object repository or database, e.g., for real time implementation (or simulation) of the process.
Another aspect ofthe invention provides methods as described above for use in the telecommunications call and/or call feature processing. By way of example, an object graph is generated from an XML or XML language- like description ofthe states and state transitions and operations necessary to implement, e.g., call forwarding. Such a description identifies call states such as "alert," and "local release," events such as "hook flash" and "busy," and operations such as "set first call leg active" and "set second call leg active." The object graph generated from that description represents those states, events and actions in a way that permits their rapid access in real time for highly efficient processing.
In a related aspect, the invention provides methods as described above in which the object graph is generated from a first (or "logic") document object model — itself created from the aforementioned textual description — that represents the process from a first perspective. In a telecommunications application, for example, this object model can represent call processing logic from a user (or other high-level) perspective.
Generation ofthe object graph can, according to related aspects ofthe invention, additionally be based on a second (or "reference") document object model which identifies operations or actions that can be permissibly used in the first document object model - and, thereby, in the textual description itself. The second document object model can, itself, be generated from a mark-up language description.
According to further aspects of the invention, these document object models are used as part of a two-stage validation process. In the first stage, a lexical structure, e.g., syntax, ofthe textual description is validated, e.g., by comparison with a logical document type definition. This can be effected by a parser, for example, and can result in generation ofthe first or logical document object model. In the second stage, that object model is validated against a reference object model. This can be effected by a pre-processor which produces the object graph as its output.
Further aspects ofthe invention provide methods as described above in which the object graph includes a plurality of nodes representing the states ofthe process and edges connecting the nodes representing transitions between the states. The nodes can be represented by objects generated in a suitable object-oriented environment, e.g., a C++ programming environment. The object graph representation is preferably context free, according to further aspects of the invention, insofar as it represents a generic state machine modeling the underlying telecommunications (or other) process being implemented. Thus, the object graph does not store information regarding the state of any particular instantiation ofthe process. Rather, it stores state, operation and transition information from which such an instantiation can be driven - given the particulars of its states and the events which occur with respect to it.
Further aspects ofthe invention provide methods of implementing a process (e.g., for telecommunications call or call feature processing) using an object graph of the type described above that is persistently stored, for example, in an object repository or other database. Such a method includes instantiating objects that capture and maintain the state of actual sub -processes and/or equipment used to implement the process. In a telecommunications call or call feature processing these "context" objects can, for example, represent the application services necessary to conduct a telephone call and provide all underlying subscriber services. According to related aspects ofthe invention, context objects are aggregated in order to represent the state of a complex application service.
Still further aspects ofthe invention provide methods as described above in which the object repository is accessed in response to events occurring with respect to the sub-process, equipment and/or application services that the context objects represent. Such access can be made by an "engine" that discerns from the object graph operations to be executed and states to enter in light of those events and the current state ofthe respective context object.
Alternative aspects ofthe invention provide a processing module that is communication with an external communications device, e.g., a telecommunication switch, to receive and interpret message fragments from the device. For example, the processing module can include a message handling object that receives message fragments from the device, discerns an event and forms a message associated with the event from selected ones ofthe received message fragments. In addition, the processing module can include a dispatcher that can communicate with the message handling object. The dispatcher identifies and invokes a selected process for processing a communication service that is activated by the event that the message handling object forms.
Yet still further aspects ofthe invention provide systems that execute in accord with the foregoing methods to model and/or implement a process.
METHODS AND APPARATUS FOR CALL SERVICE PROCESSING
The present invention meets the foregoing and other objects by providing, in one aspect, methods in which a compiled representation of a textual description in a mark-up language of operations describing a telecommunication service is generated. Objects, hereinafter referred to as context objects, access this compiled representation, in response to events occurring with respect to a telecommunication service in order to effect the execution ofthe operations.
Related aspects ofthe invention provide methods as described above in which the context object is instantiated in response to a boundary event ofthe underlying telecommunications service or feature. Thus, for example, such methods can result in instantiation of context objects in response to call origination or call termination events.
Further aspects ofthe invention provide methods as described above in which notification of selected events is passed to an existing context object for processing. The object can respond to such notification by accessing the compiled representation in order to discern one or more operations for execution to further processing ofthe call feature or service. Notifications which do not result in such further processing can, according to further aspects ofthe invention, be interpreted as boundary events that result in instantiation of additional context objects.
For example, a system operating in accord with a method ofthe invention can notify an existing context object of a "hookflash" event. If that event is expected in the normal course of processing of a feature currently being handled by the object, notification results in access ofthe compiled representation and execution of further operations for the feature. If not, the hookflash is treated as an boundary event and results in creation of a new context object to handle it. The textual description that embodies the operations can be provided, e.g., by a service provider or subscriber, in a mark-up language such as HTML, XML, or an extension thereof. The operations define a set of rules and actions to be performed in order to provide a telecommunications service. Such a telecommunication service can include, but is not limited to, a call, a call feature, and subscriber or feature administration.
According to further aspects of the invention, the compiled representation is implemented in an object-oriented environment, e.g., a C++ object environment. A virtual function, returned as a result ofthe context object accessing the compiled representation ofthe operations, can be utilized to invoke one or more core functions required to carry out the telecommunications service.
In a related aspect, the textual description embodying the operations is parsed to generate the compiled representation. The context object that accesses this compiled representation can also maintain information regarding present state of an on-going communication service, and be responsive to events occurring with respect thereto.
In another aspect, the invention provides the methods described above in which objects, herein referred to as feature object, associated with the context objects embody the compiled representations ofthe operations and effect the execution ofthe telecommunication service. The feature objects can receive signals indicative of events occurring with respect to a communication service from the context objects, and effect performance of one or more actions.
Utilizing a mark-up language to provide a textual description ofthe logic specifications indicative of a telecommunication service provides a number of advantages. For example, it places the relatively complex task of defining actions to be performed in response to a myriad of different signals in a graphically depictable format, which can be easily validated. Further, new telecommunications services, e.g., call features, can be designed and validated more conveniently. The method ofthe invention can be implemented, for example, by a telecommunications system that includes a call control module that controls a call processing context associated with a subscriber, and a call feature module that is in communication with the call control module. In response to a call progress event, the call feature module accesses a compiled representation of a textual description in a mark-up language of logic defining a telecommunication service provided to a subscriber to effect the execution ofthe service.
In a related aspect, the telecommunication system can include a parser that receives the textual description and generates a compiled representation therefrom. The call feature module can instantiate an object that accesses this compiled representation to determine at least one action to be effected in order to provide the telecommunication service.
Further aspects ofthe invention provide systems operating in accord with the methods described above.
TELECOMMUNICATIONS PORTAL CAPABLE OF INTERPRETING MESSAGES FROM AN EXTERNAL DEVICE The present invention meets the above and other objects ofthe invention by providing, in a telecommunication system, a processing module that can communicate with an external communication device, e.g., a switch, to receive message fragments and assemble one or more events therefrom. The processing module can include a message handling object that receives the message fragments from the external device and discerns an event, such as a call control event, from selected ones ofthe message fragments. Further, a dispatcher that communicates with the message handling object identifies and invokes a selected process for processing the event. The process effects the execution of at least one task, e.g., operation, to provide a communication service identified by the message.
In a related aspect, the dispatcher can identify at least one processor within which the process invoked by the event discerned from the message fragments resides. The events can be classified in accord with an event hierarchy such that events within a particular event class in the hierarchy are dispatched to a single processing context.
In accord with another aspect ofthe invention, the message handling object can determine whether a newly received message fragment is the first fragment for forming a new message, or it is associated with one or more previously received message fragments. Thus, the message handling object can properly assemble the received message fragments into one or more events, and the dispatcher can transmit these events to designated processing contexts.
The events formed from the message fragments can cause the instantiation of one or more object, e.g., context objects, that can effect the execution of one or more operations for providing a communication service. The instantiated objects can access a compiled representation of logic defining a telecommunication service to determine one or more operations that need to be executed for providing that service. The compiled representation is preferably generated from a textual description in a markup language, e.g., HTML, XML, or an extension thereof.
In a system as described above for receiving and interpreting messages from an external communication device, the message handling object is generated as an application program that exchanges messages with the external device. For example, the message handling program forms a message associated with an event communicated thereto by a processing context within the system, and transmits the message to the communication device. Alternatively, the message handling program can discern an event from selected ones of message fragments received from the communication device and transmit the event to a processing context within the system. A dispatcher can exchange events and their associated messages between selected processing contexts and the message handling program to effect activation of one or more communication services identified or requested by the message.
In other aspects, the invention provides methods for supplying a telecommunication service, e.g., to a subscriber. Such methods can mclude receiving a plurality of message fragments from one or more external communication devices, such as telecommunication switches, and assembling the message fragments to discern one or more events therefrom. A process is invoked in response to the event which dynamically binds to a processing context that identifies an action, e.g., operation, to be executed to provide a selected communication service.
These and other aspects ofthe invention are evident in the drawings and in the claims that follow.
Brief Description Of The Drawings
Figure 1 schematically illustrates a telecommunications system according to the teachings of the invention,
Figure 2 schematically depicts exemplary network and external interfaces associated with a telecommunications system according to the invention,
Figure 3 schematically illustrates the interaction of a TSP node of a system of the invention with some exemplary external networks,
Figure 4 illustrates that a TSP node of a system ofthe invention can include a call processing module and a feature processing module in communication with a CSX switch according to the teachings ofthe invention,
Figure 5 illustrates that the call processing subsystem ofthe TSP node of Figure 4 includes a call control module, a feature control module, and a primitive module,
Figure 6A schematically depicts a call processing model that the call processing subsystem of Figure 5 can implement,
Figure 6B schematically depicts a second call processing model that the call processing subsystem of Figure 5 can implement,
Figure 6C schematically depicts a third call processing model that the processing subsystem of Figure 5 can implement,
Figure 7 A illustrates that a call processed by the call processing subsystem of Figure 5 can be originated from an end-user served by a TSP of a system ofthe invention and be terminated by an end- user served by the same TSP, Figure 7B illustrates that a call processed by the call processing subsystem of Figure 5 can be originated by an end- user served by a TSP ofthe system ofthe invention and be terminated outside the TSP,
Figure 7C schematically illustrates that a call request can be extended to a TSP ofthe system ofthe invention over a PSTN trunk group or IP route, and be terminated on an endpoint on the TSP,
Figure 7D schematically illustrates that an incoming call request can be extended to a TSP of a system ofthe invention over a PSTN trunk group or IP route, and can be extended to the next office or TSP over a PSTN trunk or IP route,
Figure 8 is a feature assignment table providing a map of call features to feature logic objects,
Figure 9 schematically illustrates that a feature control module ofthe call processing subsystem of a system of the invention can contain multiple feature logic objects,
Figure 10A illustrates a feature logic object coπesponding to a call forwarding busy line call feature assigned to an endpoint,
Figure 10B illustrates another feature logic object corresponding to a second call forwarding line busy call feature assigned to the endpoint of Figure 10A as a result ofthe membership ofthe endpoint in a group having the second call forwarding feature,
Figure IOC illustrates a call feature object assigned to an endpoint that subscribes to call name delivery and call forwarding variable,
Figure 10D illustrates a call feature object assigned to an endpoint that subscribes to call name delivery, call forwarding variable, and denied termination features, Figure 11A illustrates a few examples of Type I feature logic objects that map triggering events to primitives defined in a primitive module ofthe call processing subsystem ofthe invention,
Figure 1 IB illustrates a few examples of Type II feature logic objects that perform one or more transactions, and return the results of the transactions to the event triggering parties,
Figure 1 IC illustrates a few examples of Type III feature logic objects that maintain feature states,
Figure 1 ID illustrates an example of Type IV feature logic object that can create and/or start another feature logic object,
Figure 12 illustrates that dependent feature logics have life spans equal or less than the life span ofthe associated call context,
Figure 13 is a diagram depicting a logical view of selected aspects of a subscriber's associations with features,
Figure 14 is a diagram providing a detailed representation of selected portions of a core object model representing subscriber associations with features and the resolution of feature interactions,
Figure 15 is a diagram illustrating a model that depicts the correlation between instances of a core object model utilized in a system ofthe invention and the elements of the call and feature definition language ofthe invention,
Figure 16 is a diagram depicting some fundamental elements of a call and feature definition environment of an embodiment ofthe system ofthe invention,
Figure 17 is a diagram depicting an exemplary technique by which a compiled C++ object can export its attributes and behaviors to the logic definition environment of the invention, Figure 18 is a diagram illustrating an example ofthe class hierarchy derived from an Action abstract class defined in a C++ environment in accord with the teachings ofthe invention,
Figure 19 illustrates an exemplary state machine that can determine the parity of a string of 0's and 1 's.
Figure 20 is a diagram depicting an approximate schema for logics associated with the state machine of Figure 19,
Figure 21 illustrates an object model for a finite state machine,
Figure 22 schematically illustrates exemplary TSP/CSX class 4 and class 5 switches according to the teachings ofthe invention,
Figure 23 illustrates exemplary communications paths within an embodiment of a consolidated TSP/CSX system of the invention,
Figure 24 illustrates a message distribution and transport (software) layer according to the invention interposed between the TSP/CSX application software and underlying network interfaces of a system ofthe invention,
Figure 25 schematically illustrates a redundant N+l configuration of a system ofthe invention having four TSP nodes and three CSX switch elements,
Figure 26 schematically depicts another configuration of a system according to the teachings of the invention in which the traffic load for each CSX switch has been partitioned into thirds and distributed equally among three primary TSP nodes,
Figure 27 is an overview of an exemplary installation of a TSP/CSX consolidated system ofthe invention, Figures 28A — 28B depict a basic application framework for routing and dispatching events in a system according to the teachings ofthe invention,
Figure 29 is an object model illustrating an interface for exchanging messages between a TSP node and another system,
Figure 30A depicts an event trace outlining a process for receiving a message, converting the message into an event, and dispatching the event to an appropriate processing context in a system of the invention,
Figure 3 OB is a diagram illustrating an event trace that outlines a process of routing an event to an external processor via an external interface,
Figure 31 is a diagram illustrating an event hierarchy,
Figure 32A is a table listing exemplary call/feature policy data for a system according to the teachings of the invention,
Figure 32B is a table listing exemplary route policy data for a system according to the teachings ofthe invention,
Figure 32C is a table listing exemplary endpoint/subscriber data set for a system ofthe invention,
Figure 32D is a table listing exemplary call and feature state data for a system of the invention,
Figure 32E is a table listing exemplary equipment/facility data for a system according to the teachings ofthe invention,
Figure 32F is table listing exemplary equipment/facility state data for a system according to the invention, Figure 32G is a table listing exemplary equipment facility statistics for a system according to the invention,
Figure 33 is a diagram depicting the coπelation between call/feature states in the volatile store and in the persistent store,
Figures 34 and 35 depict a state machine for a call waiting feature provided a system according to the teachings ofthe invention,
FIGURE 36 is a diagram schematically depicting one embodiment of a system of the invention that converts a textual description of a state machine into an object graph,
FIGURE 36A schematically illustrates an object graph created in accord with one embodiment ofthe invention,
FIGURE 36B depicts a methodology for exporting actions from an object repository according to one embodiment ofthe invention,
FIGURE 37 is a diagram illustrating that an object graph created according to the teachings of the invention can be accessed by an object instantiated to execute a state machine represented by object graph to determine transition from a present state to a new state and any action, if any, to be performed,
FIGURE 38 is a sample XML document containing the description of a state machine for providing a call feature (call forwarding) to a subscriber of a telecommunications service,
FIGURES 39 - 46 depict request handlers and feature handlers in accord with one embodiment ofthe invention,
FIGURE 47 depicts interaction of originating feature classifications in a system according to the invention, FIGURE 48 depicts interaction of terminating feature classifications in a system according to the invention,
FIGURE 49 A depicts objects representing a subscriber in an idle state in a system according to the invention,
FIGURE 49B depicts an object model for a system according to the invention,
FIGURE 50 depicts processing of an originating call in a system according to the invention,
FIGURE 51 depicts further processing sequences in a system according to the invention,
FIGURE 52 depicts processing of a termination request in a system according to the invention,
FIGURE 53 depicts a stable two-party call in a system according to the invention,
FIGURE 54 depicts processing of an event, e.g., a flashhook, in a system according to the invention,
FIGURE 55 depicts invocation of a mid-call origination feature in a system according to the invention,
FIGURE 56 depicts three-way calling in a system according to the invention,
FIGURE 57 depicts object configuration upon establishment of a three-way call in a system according to the invention, and
FIGURE 58 schematically illustrates selected processes and their interactions in a system ofthe invention. Detailed Description of the Illustrated Embodiment
FIGURE 1 illustrates an exemplary telecommunications system 10 according to the invention having two Telecommunications Service Portal (TSP) nodes 12a and 12b in communication with each other and with a CSX switch 14 to provide a convergent multimedia services environment. In conjunction with the CSX, the TSP 12a/12b offers class 5 and class 4 voice band services. These services can satisfy, for example, the needs of Competitive Local Exchange Carriers (CLEC) and Internet Service Providers (ISP). When coupled with other network elements, intelligent peripherals, and subscriber premise equipment, the TSP offers a solution to the demand for convergent multimedia services environments.
The TSP/CSX system 10 ofthe invention offers a variety of network and external system interfaces, as depicted in FIGURE 2. For example, the TSP/CSX system includes a Call and Feature Processing subsystem that provides class 4 and class 5 call services and features via the interfaces ofthe CSX switch with a Public Switched Telephone Network (PSTN) 16. In addition to feature delivery, the system 10 also offers certain feature configuration capabilities through PSTN voice band circuits. Further, the TSP/CSX system includes a Call and Feature Creation and Maintenance Subsystem that keeps the run-time data stores in sync with externally defined calling models and call features. This subsystem also participates in the maintenance of subscriber specific data attributes that may be configured through voice band network interfaces. In addition, a Network Management Subsystem supports common network element operations, administration, maintenance, and provisioning functions covering endpoints, routes, system configuration tables, and provides surveillance of system status and performance metrics. A Billing Subsystem interfaces with external entities in support of billing and usage accounting processes.
Referring to both FIGURES 1 and 2, the TSP/CSX system 10 is situated on a PSTN network 16 and an IP network 18. In combination, the TSP and CSX provide traditional circuit switch based voice band services. The TSP independently provides call control and feature processing capabilities for IP Telephony Networks (IPTN) assuming multiple roles such as call agent over a MGCP network, proxy server over a SIP network, and so forth. Call Processing Subsystem
Reference to both FIGURES 1 and 3 shows that the exemplary TSP 12a/ 12b is on the IP network and the CSX is situated on both PSTN 16 and IP network 18. The TSP and CSX jointly provide telephony switching functionality on the PSTN network. On it own, TSP provides call control capability on the IP Telephony Network. For example, TSP can assume multiple roles in various IP telephony networks, such as call agent over MGCP network, and proxy server over SIP network. The TSP can also interface with ATM gateways over an ATM network to provide call control and feature control functions for ATM gateways.
On the PSTN side, DS1 trunks terminating at the CSX provide connections between the TSP/CSX and other network elements. These connections include traditional inter-office facilities as well as GR303 based facilities to support subscriber access.
Inter-office facilities connect TSP/CSX switches to other end offices and access tandem offices employing a variety of inter- office protocols such as FGD, ISUP, and ISDN/PRI. Each such physical connection between the CSX and another office or network element is called a 'trunk'. A set of trunks that share common characteristics and traffic load is called a 'trunk group'. Trunks and trunk groups reside on the PSTN and are managed by CSX. The concept of trunks is encapsulated within the CSX. The TSP has no representation of individual trunks. The TSP does maintain a representation of trunk groups to support call routing, network management, etc.
The TSP in conjunction with the CSX, serving as an IDT and RDTs supporting subscriber access facilities, can constitute a class 5 switch. In this configuration, the TSP/CSX system treats the endpoints on the RDTs as its endpoints. The DS0 circuits on these trunks, except the TMC and EOC circuits, are mapped to endpomts and are therefore treated as endpoints. The TSP manages the endpoints. On the IP network, connections between the TSP and other call managers, such as call agents and proxy servers are referred to as 'IP route's. PC base phones 20 can constitute endpoints. The TSP manages both the IP routes and IP based endpoints network.
The TSP treats an IP based endpoint in the same manner as an endpoint on the PSTN. An endpoint can correspond to a subscriber and can be a representation ofthe subscriber in the TSP. Likewise, the TSP treats an IP route in the same fashion as a trunk group appearing on the PSTN. The TSP manages bandwidth allocation for IP routes whereas the CSX manages the circuits and trunks that constitute a trunk group.
Each trunk group and IP route can serve a number of connections. Each connection to a trunk group or IP route is terminated at a connection point. A connection point inherits the attributes ofthe trunk group or IP route at which the connection terminates.
The TSP also includes the concept of hunt groups. A hunt group is a set of trunk groups and/or IP routes that share common characteristics and traffic load. Ultimately members of a hunt group - trunk groups or IP routes - can, but not necessarily, span between IP networks and the PSTN so that calls can be delivered over either network depending upon the network available and other driving factors.
FIGURE 4 illustrates that the TSP system can include a call processing subsystem 22 and a feature processing subsystem 24. It further illustrates exemplary roles that the TSP can play in various voice/data networks, and it also illustrates its external interfaces with other network entities. The call processing subsystem provides call processing and feature control functions. For example, it can provide call control by supporting a suite of industry standard protocols, such as SIP, MGCP, and MEGACO, to interface with external switching entities and/or PC phone clients over PSTN/ ATM/IP networks. It can further provide the basic call processing functions. The feature control function supports existing PSTN class 4/5 features and enhanced Internet services, such as email service over the voice and packet networks. The call processing subsystem is responsible for the call processing and switching functionality in the TSP. For example, it can supply basic call processing by providing switched, two-way transmission paths connecting endpoints and inter- switch facilities terminated on the TSP/CSX system. The inter-switch facilities can be, for example, PSTN trunks terminated on CSX and IP routes terminated on TSP. The basic call processing can also include the capability to apply tones, announcements, and alerting mechanisms to end users and inter- switch facilities.
The call processing subsystem can also provide resource management. For example, it can manage the call control resources defined in TSP. There are three types of call control resources in the system: endpomts, PSTN trunk groups, and IP routes. Different levels of control are applied to these resources. Endpomts are owned by the subsystem, and the subsystem provides busy/idle handling for them. PSTN trunk groups are owned by switching elements, i.e. CSX. The switching element defines logical circuits representing the physical circuits in the trunk groups and the logical circuits are exposed to the TSP. The call processing subsystem maintains the call states for the logical circuits and tracks the number of in-use circuits in the group, though it is not responsible for the busy/idle handling of physical circuits An IP route consists of a group of logical circuits. The number of logical circuits in an IP route is variable and determined by the bandwidth ofthe IP route. This subsystem owns the IP routes and provides bandwidth management for them.
Further, the call processing subsystem provides load balancing function for hunt groups. A hunt group consists of a collection of PSTN trunks and IP routes. Multiple load balancing techniques can be applied to maximize the system performance. For example, a circular hunt mechanism can be implemented. A circular hunt mechanism sequences the trunks/routes in a circular list that has a next route pointer pointing to the next trunk/route to use. When a call is extended out of a hunt group, call processing subsystem uses the circular list to determine the next trunk route to use, initiates the call on the selected trunk/route, and advances the next route pointer.
Other functions provided by the call processing subsystem include registration and authentication. The subsystem can support dynamic registration and authentication. When an endpoint or trunk is added to the system or removed from it, a registration or de-registration request is initiated by the authority ofthe endpoint and trunk, which can be the endpoint itself or CSX. An authentication procedure is carried out during the registration and de-registration procedure to assure the system integrity.
Moreover, the call processing subsystem supports multiple multimedia call control protocols, such as MGCP and SIP, and media stream control protocol over heterogeneous networks.
The call processing subsystem can also provide support for real-time and postprocessing billing model. Real-time Call Detail Record (CDR) is generated and is stored in a persistent data area during runtime.
The call processing subsystem also supports class 4 and class 5 basic and supplementary telephony services on POTS line over GR303 interface. Appendix A provides a list of class 4 and class 5 features that are supported. In addition, the subsystem supports TCAP applications. For example, it supports 800 number service, Local Number Portability (LNP), and Calling Name Delivery (CND) applications over TCAP/SS7.
The call processing subsystem ofthe invention can employ an Advanced Intelligent Network (AIN) architecture. It can further incorporate new three-tier call processing architecture technology to offer switching calling features and new IP services on one single platform. The call model ofthe invention provides a number of advantages. For example, improper feature definitions do not prevent the TSP/CSX system ofthe invention from meeting call processing behavior that is expected from peer level network elements. Further, call processing level response times are subjected to more stringent requirements, governed by specification, than feature level response times which are governed by human perceptions of "quality of service." The TSP supports portability by operating at the "network" level, e.g., via a SIP level interface, as well as at the "call processing" level, e.g., at the level of Parlay. In addition, feature processing and feature interaction are simplified by employing an AIN basic call model, where each call constitutes two half calls, origination and termination. The origination half call deals with the origination features and termination half call deals with the termination features.
The system ofthe invention allows separating feature processing from basic call processing. For example, the TSP can provide call control, feature control, and/or a combination of call confrol and feature control. An interface between the call processing entity and feature-processing entity can be asynchronous or synchronous. A number of standards are defined, for example, by VoIP industry, for such an interface. PARLAY and JAIN are two such commonly used standards that define extensive sets of APIs. As the VoIP technology evolves, PARLAY and JAIN continue to change. The system ofthe invention fully supports industry standards on this interface in order to inter-operate with equipment from various vendors. Other API, such as private proprietary API, can also be defined for providing communication between the feature processing and call processing subsystems ofthe system of the invention.
FIGURE 4 illustrates schematically the various roles that the TSP can play in various voice/data networks and its external interfaces with other network entities.
FIGURE 5 illustrates that the call processing subsystem ofthe TSP can include a call control module 26 for managing basic call processing, a feature control module 28 for handling feature processing, and a primitive module 30 that contains a set of call control methods, such as play Tone, utilized by fe ature and call control modules. FIGURE 5 also illustrates the data objects (databases) utilized by these modules and their collaborations.
With the separation of call control and feature control functions, the databases for supporting each module are also separated. The exception is the CPML policies and route table. The CPML policies are for the feature processing, and are accessed by the feature control module only. The routing function can be viewed as the basic call processing as well as feature control. Therefore, this table can be accessed by both call and feature control modules. The call processing subsystem ofthe invention can operate in three models to provide different levels of call and feature control and/or management. FIGURE 6 schematically depicts Model 1 that offers a complete call and feature control solution. In this model, the call confrol module receives external call confrol events. If the event triggers feature control, call control module generates a triggering event and sends it to the feature control module. The feature control module processes the event, and issues a command, by invoking, for example, a primitive in the primitive module. Alternatively, the command is sent down to the call control module, which in turn calls a primitive in the primitive module. In this model, all external events from the switching elements are channeled through the call control module. However, both feature control module and call control module can communicate with external switching elements through the primitive module.
FIGURE 6B schematically depicts Model 2 that offers call control capability. Further, FIGURE 6C schematically depicts Model 3 that offers feature control capability and can be utilized to provide calling features/services to foreign switching elements, such as featureless call agents and gatekeepers.
The primitive module 30 provides a call confrol library that contains a set of APIs that the feature control and call control modules can invoke to interface with the external world. These APIs can define generic call control functions, such as makeCall, acceptCall, answerCall, releaseCall, mergeCall, etc. A frame work API set provides the supporting capabilities necessary to ensure system security and manageability. Some examples include registration, authentication, and discovery procedures.
A call control API set is utilized to control the switching elements. Although this API set is primarily invoked by the control module, it includes a subset that can be called by the feature control module as well. The methods in this API subset can be called either directly by the feature control module or indirectly through the call control module. This API set can run on multiple call control protocols simultaneously. The selection ofthe protocol is done at the initialization phase. Further, a subset of call control API can be exported to CPML+ to be accessed by end users in order to control the call treatments. The primitive module further includes a set of feature control APIs, called by the feature control module, for supplying the utilities for controlling the behavior of a call, with each call having up to 2 legs. This API set provides enough functionality to allow call routing and call leg management for existing circuit and packet telephony networks. Some examples of this API set include, but are not limited to, enableCallNotification, disableCallNotification, getCallState, callEventNotification, createCallLeg, deleteCall eg, attachCallLeg, detac Call eg, routeCall egToAddress, and releaseCall. A subset ofthe feature control APIs can be exported to CPML+ to be accessed by the end users for the creation and modification of calling features.
The primitive module also includes a set of service API's for accessing external services, e.g., 800 number service, calling name server, email server, and so forth. This API set encapsulates protocol specifics to relieve the invocation entities from dealing with that level of detail. SMTP and MIME , called by feature control module, are examples of members of this API set. A subset ofthe service APIs can be exported to CPML+ and accessed by the end users for the creation and modification of calling features.
The call control module provides the basic call processing functionality for TSP. Such call processing functionality can include, for example, called ID analysis and routing, intercept treatment (tone and announcement), overload handling, detection of feature triggering events and reaction to them, generation of CDR, and generation of call related traffic counts.
The call control module employs a call model, herein referred to as TSP call model, that is derived from the AIN Basic Call Model (BCM). By AIN definition, a typical call has an Originating Basic Call Model (OBCM) at the switch ofthe caller side, and a Terminating Basic Call Model (TBCM) at the switch of callee side. Each basic call model defines a set of points in call (PICs) that correspond to important states in a call. Associated with each PIC is a set of Detection Points (DPs). A DP is associated with a set of triggers each of which specifies the conditions under which an AIN feature can be invoked.
In the TSP call model, each call consists of one OBCM and one TBCM, where the originating features/services apply to the OBCM and terminating features/services to the TBCM. An interface between OBCM and TBCM can be asynchronous, and can utilize an industry standard call control protocol. A BCM is a state machine driven by the call progress events. Any call progress event with which a feature can be associated is a triggering event. When a triggering event occurs, a notification is sent to the feature confrol module. The feature control module will take appropriate actions in response to the notification. The details of interface between the call control and feature control modules will be discussed in more detail below. The BCM exists in the form of an endpoint or connection point, depending upon the nature of origination/termination point ofthe call.
The call processing subsystem processes the calls arriving at the TSP. As a class 5 switch, a call can be 1) originated from an endpomt, and terminated to an endpoint - infra- office call, 2) originated from an endpoint, and terminated to a trunk group or IP route - inter- office call, or 3) originated from a trunk group, and terminated to an endpoint - inter-office call. As a class 4 switch, a call is originated from a trunk group or IP route and terminated to a trunk group or IP route. These are the four types of call scenarios supported by this call model.
In case 1, schematically depicted in FIGURE 7A, a call is originated from an end user served by the TSP and is terminated to an end user served by the same TSP. In case 2, depicted in FIGURE 7B, an end user, served by the TSP, originates a call and the call is terminated outside ofthe TSP. For example, the call is extended to another PSTN office or TSP through a PSTN trunk group or IP route. A connection point is allocated based on the trunk group or IP route to serve the egress leg ofthe call.
In case 3, depicted in FIGURE 7C, an incoming call request is extended to the TSP over a PSTN trunk group or IP route, and the call is terminated on an end point on the TSP. In this scenario, based on the trunk or IP route a connection point is allocated to serve the ingress leg, and an end point is allocated to serve the egress leg.
In case 4, depicted in FIGURE 7D, an incoming call request is extended to the TSP over a PSTN trunk group or IP route and the call is extended to the next office or TSP over a PSTN trunk group or IP route.
The call confrol module maintains a set of run-time data objects to support the basic call processing operation. For example, the call control module can create an endpoint status object when a call is initiated. The endpoint status object can contain all the endpoints statically configured and dynamically registered to be managed by the TSP. Each endpoint that is dynamically registered with the TSP is created with the status set to in service upon the successful registration, and is removed when the de-registration is completed. For the endpoints statically configured to be managed by the TSP, upon creation of this data object, the call control module accesses the system configuration data object to retrieve the status ofthe endpoints belonging to the TSP, and creates endpoints in the endpoint status object.
Another data object is a connection point status object that is also created when the call control module is initialized. This object keeps track ofthe in- use connection points in a PSTN trunk, or IP route.
Further, a call object is created when a call is initiated and deleted when the call is released. Each call has 2 call objects, one for the origination (ingress leg), and the other for the termination (egress leg). An endpoint or connection point can own a call object.
The TSP infrastructure provides a set of mechanisms for the storage ofthe runtime data objects, discussed below, that the call control module can utilize in order to support the system performance and reliability requirements.
Referring again to FIGURE 5, the call processing subsystem also includes a feature control module that provides supplementary calling features and services to the endpoints and PSTN-trunks/IP-routes served by call managers, for example, the call control module. The call feature module provides PSTN class 5 and call 4 features. In addition, new features can be created by the carriers and ISPs. In particular, TSP exports a set of functions, such as access 800 number data base on SS7 network, sending emails, callback utility, to CPML+. The carriers/ISPs can utilize these functions to create new services. These features/services are available on system level, and can be assigned to the entire system, individual groups, or end users. Charges may be expected either in usage or subscription basis. If the introduction of the new services and features changes the behaviors of the existing features, the creators ofthe features are responsible to specify the feature interactions.
The end users can also create new features for their own use, for example, by utilizing the capabilities of CMPL+. Typically this type of features are offered at no cost to the end users, unless the new features access the information from the system or utilize system resources, such as TCAP services.
The first three types of features described above are system- wide features, which are available to all endpoints/connection-points on the system. The last types of features are end user features that are only available to the creators ofthe features. The system- wide features can be assigned to the whole system, to individual groups, and to endpoints/connection-points. A group is defined as a collection of endpoints/connection-points, served by the same TSP, that share the same set of features. A group can be a business group, a residential group, a trunk group, etc. The members of a group have access to the group features. The end user features, however, can only be assigned to the endpoints/connection-points.
In the feature domain, there are system- wide features, such as a usage sensitive three-way call feature, that are available to all endpoints/connection points on the system. There are also group -level features, such as a call pickup feature, that are available to the members in a group, and endpoint/connection point level features, such as a call waiting feature, that can be subscribed by all endpoint/connection points on the system.
An endpoint/connection-point can have all levels and types of features assigned to it, thus necessitating management of interactions among various features. The feature control module can handle a number of different feature interactions. Two features can co-exist without impacting each other's behavior (no interaction). Alternatively, two features may be mutually exclusive. Two mutually exclusive features are not allowed to co- exist. For instance, call waiting and multiline hunt service cannot be assigned to the same endpomt simultaneously. A feature rule table is defined to specify if any two features in the system are mutually exclusive. When a feature is assigned, this table is utilized for validating the feature.
In some cases, a feature may be assigned to an endpoint/connection-point multiple times through different channels. In such cases, one feature would override the others. In particular, the system level, group level, and endpoint/connection-point level features have different configurable priorities. At the time of feature assignment, the feature interaction is resolved and a decision is made regarding which feature will take effect based on these priorities.
In cases in which two different features co-exist, one feature can oveπide the other. For instance, when denied origination and call forwarding variable are assigned to the same endpoint, denied origination overrides the call forwarding variable. This interaction is also handled based on a comparison of the priorities of the features. As discussed in more detail below, each feature is associated with a feature logic object that defines the feature behavior. More particularly, a feature has one base feature logic object that defines the feature logic when the feature operates alone, and can have multiple modified feature logic objects that define the feature logic when the feature operates with other features.
A feature assignment table 30a, shown in FIGURE 8, maps features to feature logic objects. The feature assignment table is referenced to populate feature objects for the endpoints/connection-points when features are created and assigned. The assignment table contains the feature logic objects defined in the system. Further, the assignment table is indexed by a feature mask, which is a bitmap of the features defined in the system. When a feature is present, the bit corresponding to the feature is set to 1. Thus, the feature control module handles feature interactions by implementing at least four mechanisms, namely, assigning feature priority to each individual feature, providing a system wide feature rule table, providing a system wide assignment table, and feature logic encapsulation. This allows resolving feature interactions/conflicts when features are created and assigned, thus improving the runtime performance
A more preferred embodiment of the invention provides feature classifications and resolves feature interactions in accord with the teachings provided below in connection with the description of an additional embodiment, for example, in a section entitled "Service Provisioning." In such an embodiment, a request handler processes features in accord with their pre-defined classifications to ensure that no conflict betweeen various features occur.
In the feature domain, a feature is defined as a (event, behavior, data) triplet; where event indicates a condition when the feature is invoked, behavior is a sequence of actions to take place when the feature is invoked, and data is the information used by the feature behavior. The triplet constitutes a Feature Logic Object (FLO). The features assigned to an endpoint/trunk/IP-route are stored in a feature object. Every endpoint/trunk/IP-route has one feature object. A feature object contains multiple FLOs and one active calling feature stack, as shown in FIGURE 9.
An FLO describes the (event, behavior, data) triplet ofthe feature, and defines the administrative data associated with the feature. The association between a FLO and a feature object is the event. Although a feature object can have multiple FLOs, the associations are unique within a feature object. An FLO can include an identifier, which is the feature name uniquely identifying the feature within a TSP system. For system wide features, an identifier is a mandatory field that can be updated only by authorized personnel. An event specifies the condition for occurrence of a feature. There are two types of events; base events and extended events. The base events are the typical call progress events in the basic call model and the acknowledgement events. Call progress events can include, for example, origination side: offhook, dialComplete, remoteAlerting, and remoteAnswered; termination side: seizure, alerting, and answered; both: hookflash, localRelease and remoteRelease. Acknowledgement events are returned to the feature object upon completion of a task, initiated by the feature object. For instance, the feature object can instruct a call object to start a 30- second timer. Upon the expiration ofthe timer, the call object returns an acknowledgement event to the feature object.
The extended events are a set of conditions associated with the base events. For instance, the 800NS extended event is defined as the detection ofthe dialComplete event and the dialed number that starts with 800. With the extended events, some ofthe feature control logic is shifted to the call control objects to reduce the traffic between feature domain and call control domain. The flexibility of this technique provides better system performance, less exchange of messages between the two modules, and the ability to introduce new events.
An Event Definition is present when the event is an extended event. The event definition specifies the construction of an extended event. For example, the event definition of 800NS is "dialComplete event + prefix of dialed number equals to 800".
As mentioned above, the features are prioritized in order to resolve two types of feature conflicts: same feature assigned multiple times to an endpoint/connection- point, and two different features assigned to an endpoint/connection-point where one overrides the other. A priority attribute is divided into two fields: group level field and feature priority field. The group level field resolves the first feature conflict, namely, the multiple assignment of the same feature. It specifies the feature priority based on the ownership ofthe feature. A feature can be a system level feature, group level feature, or endpoint/connection-point level feature. Each of them can have different priorities and different groups can have different feature priorities. The group level field is configurable and can be controlled by the system operator.
The feature priority field settles the second feature conflict, e.g., one feature overriding another when two features co- exist. New feature interactions are controlled and specified by the feature creators. A feature object can include an ownership attribute that identifies the owner of the feature. This field is used to propagate the updates on the features, and to remove the FLOs from feature objects when features are deleted.
A method of a feature object refers to a sequence of actions to take place when a feature occurs. It can be a simple command, such as route the call, a complete state machine, or another FLO.
Feature specific data is saved only when a feature is subscribed or activated. For example, the last incoming caller number is only saved when an end user subscribes to the Automatic Recall feature.
The stack is utilized when more than one feature can be invoked at the occurrence of an event, and/or same feature is assigned to an endpoint/connection- point multiple times. The FLOs ofthe features that should be invoked when an event occurs are put in the stack. When an event is detected, the associated FLO is retrieved. If the activated feature stack ofthe retrieved FLO is not empty, the FLOs in the stack will all be executed. The following examples better illustrate this mechanism.
In Example #1, schematically depicted in FIGURE 10 A, an endpoint A subscribes to Call Forwarding Busy Line feature (CFBL). The feature is activated with the forwarded number set to 1234. The feature object for endpoint A will have an association to the CFBL1 -FLO.
With reference to FIGURE 10B, the endpoint A may be a member of a group XYZ to which the system administrator may also assign the CFBL feature in order to forward all incoming calls to 6789 when the rung station is busy. Thus, a new CFBL FLO, CFBL2-FLO, will be associated with the endpoint A. If a group feature has a higher priority than an endpoint feature, CFBL2_FLO overrides CFBLl-FLO. Hence, CFBL2-FLO will be put in the activated feature stack and will be executed when an incoming call terminates on endpoint A, and endpoint A is busy. In Example #2, depicted in FIGURE IOC, an endpoint B subscribes to calling name delivery and call forwarding variable (CFV), and call forwarding variable is activated. If the endpoint B also adds the Denied Termination feature to its feature profile, it will have three features that co-exist at the seizure event, as shown in FIGURE 10D. According to LSSGR /01-02-0500/; when CFV and denied termination co-exist, the latter should take precedence.
The system of the invention provides at least five types of FLOs. The categorization is based on the functions that the FLOs provide. An FLO belonging to type I maps a triggering event to a primitive defined in the primitive object. That is, the method of the FLO is a primitive from the primitive object. The feature data, when present, is the input to the method. Upon completion ofthe primitive execution, the FLO is completed. FIGURE 11A depicts a few examples of Type 1 FLOs.
Another set of FLOs, herein referred to as type II, are transaction oriented.
These features perform one or more transactions, and return the results of the transactions to the event reporting parties, e.g., the call control module. The transactions can be, for example, TCAP database queries, sending an email, sending a fax, etc. The transaction results are the results of the database queries, or the acknowledgements of the completion of the transactions. This type of FLO requires a transaction state. FIGURE 1 IB illustrates some example of type II features.
Another type of FLOs, herein referred to as type III, maintain feature states. State machines are utilized to implement the complicated behaviors of these features. That is, sets of dynamic events are typically defined as part of a calling feature that is enabled when the feature is activated. These dynamic events are the driving events of the feature state machine. They are disabled once the feature is de-activated or terminated. For example, when three-way feature is activated, the dynamic events hookflash, remoteRelease, and localRelease are enabled. Once the three-way call feature is terminated, these events are disabled. FIGURE 11C depicts some examples of type III features.
An FLO, herein refeπed to as type IV, can create and/or start another FLO. The activations and deactivations of features are of this type. There are two sub-types in this category. One sub -type relates to creating an FLO and associating the FLO with the feature object. For instance, Call Forwarding Variable (CFV) is defined as (seizure, routeCall, forwarded number). When an end user activates the CFV feature, the result ofthe feature is the creation ofthe CFV- FLO and its assignment to the end user's feature object with the seizure event. The other sub -type relates to starting the FLO. For instance, when an end user activates the Automatic Recall (AR), the AR- FLO state machine is started. FIGURE 11D illustrates an example of a type IV FLO.
Another type of FLOs, herein referred to type V, are a combination of above types I- IV FLOs. The FLOs of type I through type IV encapsulate feature behaviors of a single feature, or multiple features behaving as one feature when running together. There are situations that multiple features are defined at the occurrence of one event A determination of which features to invoke can depend on the data accompanied with the event and/or the feature priority and interaction. The user data associated with events can be utilized to determine the feature invocations. This can be implemented, for example, by (1) associating a condition with an event (i.e., defining an extended event) or (2) with an executable script. The script uses the user data to navigate the feature invocation process. The method in a type V FLO can be a reference to an executable script. For example, if there are no extended events defined in the TSP, the FLO of dialComplete event will have to use the dialed digit to determine if 800 services, 900 blocks, or other features should take place.
When multiple features exist at one event, they can all be invoked as long as they do not interact with one another. These features should have the same feature priority. For example, the calling name delivery and distinctive ringing features, defined at the seizure event, can be invoked when seizure event occurs. If the features do interact with one another, and one overrides the other, they will be assigned different priorities.
If a feature is invoked and it does not terminate at the end of the invocation, the
FLO of the feature is put in the stack waiting for the occurrence of further events to complete the feature. There can be multiple FLOs on the stack for an endpoint/connection-point. When the feature is completed, the FLO is removed from the stack. As a consequence of the invocation of a feature, the call confrol object may need to monitor new sets of events. These new events are herein referred to as dynamic events. The dynamic events are to be enabled only after a feature is invoked, and are disabled once the feature is terminated. A dynamic event is not associated with the endpoint's feature object. It is rather an event in the feature state machine.
Call and Feature Definition Language
The present invention employs a mark-up language, such as CPML (a derivative of XML), to define a variety of logic elements, e.g., finite state machines, such as, call processing models, calling features, re-usable calling feature elements, etc. A prefeπed embodiment ofthe invention employs CPML call and feature definition language and its supporting environment.
A call and feature definition language utilized in the system of the invention should provide an effective and efficient means of developing and deploying network based multimedia services, for example, class 5 and class 4 call services in conjunction with a circuit switch. Multimedia features within the scope ofthe language must include the entire spectrum of standard subscriber services1, e.g., call waiting, call forward when busy, etc., as well as so-called next generation or convergent services, e.g., packet based voice service with common subscriber voice services. The language should also allow concise and efficient expression of simple services, such as call forwarding, while providing sufficient expressive complexity to define complex services, such as call waiting and three-way calling.
Secondarily, the language must facilitate the leveraging of web-based technologies in support of a variety of peripheral applications such as subscriber provisioning and maintenance, "data browsers", feature editors/generators, feature validation and testing tools, etc. The language should also support feature definition and deployment within a matter of days, and should simplify overall application development by reducing dependence upon compiled code.
1 This is the collection of calling services commonly referred to as "class 5" and "class 4" services. The call and feature definition language should make it possible to define sophisticated media services, e.g., voice calling features, without traditional software requirements: analysis, development, testing, and deployment cycle. In this regard, the language must provide the ability to define features without a "software compile." The run-time environment supporting the language defined calling features must also be sufficiently efficient to meet performance, reliability, and quality of service requirements for a reasonably large subscriber base.
The call and feature definition language must be able to define a variety of logic elements including call-processing models, calling features, re- usable calling feature elements, etc. A run- time core, consisting of a compiled object model supported by an object-oriented database, provides the fundamental capabilities (primitives) from which media services, e.g., call feature, are defined. These primitive capabilities are exported, i.e., made accessible, to externally defined logics that comprise call models and call features. Each logic element is therefore defined in terms of well-known behaviors and attributes exported by the run-time core.
In the system of the invention, the call and feature definition language is used, in effect, to define finite state machines. The mark-up languages CPML/CPML+, derivatives of XML, are well suited to this approach. In one aspect, the language provides a standardized interface between feature definition applications (GUI desktop applications) and the service delivery systems. The XML-based languages, such as CPML, have the additional advantage that they are human readable as well as machine readable.
As discussed previously, the simplest call features are stateless. That is, the behavior of such features may be described as a simple reaction to an event because the event is closely bound to a specific state, i.e., that there is a unique set of circumstances that yields the particular event. Tight coupling between an event and a specific state eliminates the need to represent the state explicitly in the feature logic of such call features. However, certain features are sufficiently complex to require explicit representation ofthe state. This is particularly true when an event may be coupled with several states, i.e., when the circumstances that yield a particular event are non-unique. Under these circumstances, the state must be represented explicitly.
The logic elements defined by the call and feature definition language ofthe invention can include embedded parameter values. Such parameter values are accessible directly because they are embedded in line with the logic elements. This alleviates the need to navigate through the run-time object model in order to access the appropriate values. Further, embedding values within logic elements provides a more efficient expression ofthe feature logic. Embedding the values of attributes associated with a carrier within a logic element adds no additional storage overhead to the system because attributes associated with the carrier are in effect global values. However, embedding values within a logic element for attributes associated with a subscriber introduces additional storage overhead since there must be a distinct instance ofthe logic element for each subscriber that utilizes the feature. This affects both persistent store and processor memory resource consumption. Embedding attribute values within logic elements may also lead to data duplication, if two or more logic elements use the same attribute, thus complicating maintenance ofthe runtime data store.
In an alternative model, the embedded values of attributes constitute default values, assigned by the feature definer, that apply when there is no other specific value available within the processing context. In this model, an individual subscriber has the opportunity to define values for these attributes, but is not required to do so. When the subscriber does not provide an explicit value for one or more of these attributes, the embedded, i.e., default, values apply. This offers additional flexibility to the subscriber.
The call and feature definition language allows defining associations between logic elements. This capability supports higher order capabilities such as defining re- usable logic elements and parameterized meta- features. For instance, conducting a dialog between a feature and a subscriber using voice prompts and DTMF responses is a feature generic capability. That is, the logic for such a dialog can be defined without regard to the specific prompts to be used or the subscriber's responses. The fundamental concept of a "prompt and response" dialog is common to and therefore re-usable by a variety of calling features.
1. Specify invocation of associated logic elements including the passing of parameters from calling logic to called logic.
2. The ability to specify the circumstances wherein one logic element activates, or calls, an associated logic element is fundamental to re- using feature generic logic elements.
The language also allows defining extensions to the core object model. In particular, the language, along with appropriate run-time support, includes some capability for extending the core object model by introducing new data objects. These extensions are referred to as data object because they hold values required by the associated feature logic. This advantageously alleviates the possibility that the core object model may not completely anticipate the specific needs of all features to be offered.
Call models and calling features are essentially event driven. Thus, the language provides the ability to associate behavioral responses with events. This includes specifying the source or sources of a particular event and whether or not the event is synchronous or asynchronous.
The language can define features based upon the attributes and behaviors that comprise the core object model as well as extensions to the model, based upon available attribute types, defined by the language itself. The feature definition environment preferably includes a representation ofthe core object model in order to provide the most complete expressive capability. Further, the language allows identifying associations between run-time objects. Utilizing associations between core objects allows exploiting the core model efficiently.
The language also Identifies means of navigation of associations between runtime objects. In order to access behavior and attributes through associations, the language includes means for specifying navigation from object to object using known associations. A logic element must be able to express interest in a particular event in order to respond to the event. The underlying core objects can propagate events along these lines of interest in order to ensure coπect behavior.
The language can also identify whether a logic element is dependent or independent of a particular run- time processing context. Each feature or call model logic executes with respect to a processing context. Processing contexts, which are part ofthe core object model, are the basis for routing and dispatching events and messages as well as gaining access to processing threads. There are two fundamental processing contexts within the core object model — the call and feature classes. The call class provides the processing context for call models. Call model logic elements are always subordinate to a specific call context since the life span of a call and a call context are always coincident. However, feature logics may be dependent upon or independent of a call context.
As depicted in FIGURE 12, dependent feature logics have life spans no greater than the associated call context. Therefore, a dependent feature logic element may be integrated into the associated call context or it may execute independently using a dedicated feature context. Independent feature logics may have life spans that exceed the associated call. Indeed, certain features may span several calls. Independent feature logics must therefore use dedicated contexts in order to facilitate the appropriate life span regardless ofthe life spans ofthe associated call or calls.
The use of a markup language as a call and feature definition language in the system ofthe invention provides a number advantages. For example, markup document parsers are typically dependent only upon the structure of a document as specified by the document type definition. In particular, parsers are independent of the contents ofthe documents. Hence, introducing the appropriate document type definition and related applications effectively introduces a new document type into the system. That is, it is not necessary to define, implement, and test a new parser. The parser can therefore be re-used by a variety of different applications. A validating parser may assist with context validation by insuring that a markup-based document adheres to the specified structure. It may also assist with certain types of data element validation, e.g., it may support validation of enumerated or other constrained data types.
Further, markup languages tend to support schema flexibility. A markup - based language can specify a variety of data structures including hierarchical structures that are difficult to implement via traditional line oriented ASCII files. Using the capabilities inherent in the call and feature definition language, it is possible to define a variety of log file formats, such as CDRs, system logs, and so forth, so long as the requisite attributes exist in the core object model or in an extension to the core model, or can be derived from existing attributes, and further, accessor methods are available. Furthermore, given that one logic element can reference and invoke another, using the language to define and produce log files provides substantial flexibility.
In addition, markup languages provide a standard and flexible way of capturing and representing data entities that are shared among heterogeneous execution environments. Different implementation languages may be used for different applications. While the core run-time system calls for a compiled object model, peripheral and front end applications may be implemented by utilizing a more convenient language such as Java.
The control and feature definition language and its supporting environment can facilitate and accelerate development of peripheral applications, such as a subscriber provisioning and maintenance application by supporting languages and development tools optimized for this purpose. Furthermore, maintaining data repositories, such as the subscriber database, in markup form may simplify development and maintenance of peripheral "back office" applications, as well as interfaces to external systems.
FIGURE 13 is a diagram depicting a logical view of selected aspects of subscriber associations with features. In this diagram, a cloud labeled CPML FLN represents a call feature defined by the language, and a cloud labeled CPML FDN
A3 represents a feature data object defined by the language. Ovals represent object instances within the run- time system. Objects labeled FLON represent feature logic objects; objects labeled FDON represent feature data objects. Further, objects labeled SON represent subscriber group objects; and objects labeled SN represent individual subscribers. Lines and arcs represent associations or relationships between the entities connected to the ends.
Feature logic objects correspond to feature logic definitions. They are in effect "compiled" representations of the logic constructed from object instances that coπespond to the logic elements used by the definition language. These objects are used by the run- time system to direct and control the core object model in order to deliver the desired feature behavior.
Feature data objects, as shown in FIGURE 13, represent instances of the "schema" defined by the feature definition elements. These objects, labeled DEXTN, extend the core object model "schema" (the S and SO ovals represent the core object model). Although there is an association between the language -based feature logic and feature data specifications, which indicates the feature logic's dependence upon the specified data, this association is not implemented directly within the run-time system. Instead, this association is implemented indirectly through the subscriber objects. This allows feature logic objects, as shown here, to remain context free. Feature logics can be instantiated as singletons, thus reducing storage overhead so long as they remain context free.
This model also depicts the three mechanisms for associating features with subscribers. Each subscriber is associated with the carrier features provided to all subscribers, e.g., FLOl. Two ofthe subscribers, S2 and S3 are members of group SO7 and therefore are associated, indirectly, with features FL02 and FL03. Because these subscribers are associated with a feature (FL03) for which there is a feature data extension to the core object model, these subscribers have been provisioned with instances ofthe appropriate feature data object, namely, DEXT3. Subscriber S3 has an individual level subscription to feature FL04. Accordingly, this subscriber has also been provisioned with an instance of DEXT4.
AA FIGURE 14 provides a detailed representation of selected portions ofthe core object model. This model represents subscriber associations with features and the resolution of feature interactions. A subscriber, which uses 0 to many endpoints (media devices), may subscribe individually to 0 or more features. A group, consisting of 0 to many subscribers, may subscribe to 0 or more features. A carrier, which provides service to 0 to many subscribers and provides service to 0 to many subscriber groups, may offer 0 or more features.
A feature may exclude another feature, may override another feature, or may interact with another feature. When an exclusion relationship exists between two features, feature provisioning must resolve this conflict so that one and only one of the two features is available to the subscriber's endpoint (at run-time). When one feature oveπides the other, the run-time system must ensure that the two features are not executed coincidentally and that the higher priority feature is preferred. When two features interact, a third feature, which resolves the interaction, must be defined to substitute for the conflicting individual features. The available features association between a subscriber's endpoint(s) and features represents the resolution of these interactions.
FIGURE 15 illustrates a model 32 depicting the correlation between core object model instances and the elements ofthe call and feature definition language. One or more endpoint objects are associated with the subscriber object. A finite state logic instance, representing the call model, is associated with each endpoint and is consistent with the endpoint type. This object controls each call-processing context that becomes associated with the endpoint. Further, a set of references to available features is also associated with each endpoint. Each feature is associated with a finite state logic object and may be associated with a feature data object. The finite state logic object controls each feature instance (the feature data instance). A component of the subscriber object, when present, contains the necessary subscriber specific attribute values.
A call processing context is always associated with an endpoint. A feature- processing context may be associated with a call processing context and/or may be associated directly with an endpoint. A feature-processing context representing a dependent feature may be associated with a call-processing context without being associated with an endpoint. An independent feature must be associated with an endpoint.
FIGURE 15 also depicts the coπelation between objects within the run- time environment and external call and feature definition components. A subscriber page describes a subscriber instance (object). In turn a subscriber page is an instance ofthe subscriber class, i.e., an instance of the subscriber document type. The subscriber class (document type definition) defines the name and type of each attribute as well as the name, type, and parameters of each behavior exported by the subscriber object class. The document type definition is used to capture and validate subscriber attributes and to validate logic instances that reference, i.e., depend upon, subscriber behavior and attributes. Similar relationships exist between other objects and external documents (pages).
Call and Feature Definition Environment
FIGURE 16 depicts some fundamental elements of a call and feature definition environment of an embodiment ofthe system of the invention. Three fundamental document types, based on XML, for example, are present, namely, an object meta-class, a provisionable object meta-class, a logic class.
The object meta-class is the document type definition for describing non- provisionable core object classes. A non-provision able class is one whose instances may be instantiated only during run-time call and/or feature processing. Examples of non-provisionable classes include call-processing context, feature processing context, event classes, and so forth. These class definitions specify attributes and behaviors exported by the core object model that may be used to define call processing and feature logics.
The provisionable object meta-class is the document type definition for descriptions of provisionable core object classes. A provisionable object class is one whose instances are provisioned, i.e., a class whose instances are defined and maintained by a peripheral application, and then imported into the core object model. Examples of provisionable object classes include, for example, subscriber and endpomt. These class definitions support the provisioning and maintenance applications as well as define the attributes and behaviors exported by the core object model for call and feature processing logic definition. In one embodiment ofthe invention, provisioned instances are maintained in markup form to support various peripheral applications such as subscriber maintenance, bill processing, and so forth. Maintaining a repository of markup-based data eliminates the need to extract data from the run-time data store to support these applications.
The logic class is the document type definition for descriptions of call and feature processing logic elements. As shown, logic descriptions are described with respect to object meta-classes and provisionable object meta-classes. In other words, class descriptions derived from the object meta-class and provisionable object meta-class are referenced by logic elements derived from the logic class. These relationships support definition, through specification of attributes and behaviors, and validation, by prohibiting the use of non-existent attributes and/or behaviors in the definition of a logic element. This capability also provides a certain degree of flexibility. For example, new attributes and behaviors can be introduced by updating class definitions. That is, there is no need for modifying the "language" used to define call and feature processing logic.
The basis for call and feature implementation in the system ofthe invention is a run-time object model that exports access to its attributes and behaviors to an external logic definition environment. The run-time object model can include, for example, compiled C++ objects that export their attributes and behaviors to such an environment.
FIGURE 17 is a diagram that depicts an exemplary technique, presented for illustrative purposes, by which a compiled C++ object may export its attributes and behaviors to the logic definition environment. This technique is presented for illustrative purposes. In C++ typing system, a caller must know an object type in order to call a member function of the object. Therefore, a mechanism is needed for resolving type linkages at run- time given a logic structure defined in a text-based document.
The technique illustrated in the diagram utilizes two abstract classes, namely,
ActionExporter and Action. An ActionExporter is a class that exports access to one or more of its member functions. An Action is the mechanism for exporting access in a type specific and type safe manner. ActionExporter defines a single, pure virtual member function doAction ( Action & ) . The sole parameter to this function is a reference to an Action instance. Since the method is pure virtual, each derived class must provide its own implementation of doAction.
Action defines two, pure virtual member functions doAction (Call &) and doAction (Feature &) . The function name is overloaded on parameter type; doAction may be called with a reference to a call instance or a reference to a Feature instance. This establishes call and Feature class instances as the only recognized exporters of behavior via Action instances.
Two classes are derived from ActionExporter : Call and Feature. Each has three primitive member functions and each provides a similar implementation for doAction. A call to doAction results in a call to the Specified Action's doAction function passing a reference to this. Conceptually, when a call or Feature is instructed to "do an action", the result is "do the specified action using myself." call and Feature each have a coπesponding derivative of Action : callAction and FeatureAction. These classes provide a mechanism for catching certain type mismatches that may result from improperly defined logics, for example, a CallAction passed to a Feature instance and a FeatureAction passed to a Call instance.
FIGURE 18 is a diagram illustrating an example of the class hierarchy derived from Action. Classes derived from CallAction and FeatureAction correlate to the primitive functions to be exported by the call and Feature classes. A leaf class in the Action hierarchy coπesponds to each primitive function exported by the coπesponding call or Feature class. Each leaf class instance defines doAction function to call the coπesponding call or Feature primitive method. The calling cycle is thus completed. When a leaf class instance is called with a reference to a call or Feature instance, it in turns calls the appropriate member function.
The above example demonstrates a technique for exporting access to functions in a compiled object model. A further appreciation ofthe technique may be attained by reference to FIGURE 36B.
As stated previously, the call and feature definition language can represent finite state machines. FIGURE 19 illustrates an exemplary state machine that can determine the parity of a string of 0s and Is. This machine has three states, Initial, Running, and Done. The machine recognizes only three events; a 1, a 0, and last; last indicates the last data value has been seen.
Two logic definitions, one defining an even parity machine and the other defining an odd parity machine, are presented. Although the logic texts were not defined using a markup language, their structure is hierarchical and could easily coπelate to a markup structure. The process for converting these logic descriptions to an executable foπn includes the following steps:
(a) parsing the text file as specified by the document type definition,
(b) verifying that each element coπesponds to an appropriate logic element defined by the state machine's object class specification, and (c) constructing a finite state machine consisting of Action instances coπesponding to the behaviors referenced in the logic specification structured according to the specified state and event relationships.
A generalized parser, for example, can perform step (a). A "compiler" can perform steps (b) and (c). The result is an object based finite state machine logic that can be executed by a generalized engine. The execution engine operates at the abstract level, i.e., the execution engine operates with ActionΞxporters, Actions, and object based finite state machines. Type resolution at run-time is handled, for example, by the virtual method calling capabilities of C++.
FIGURE 20 illustrates a diagram containing an approximate schema for the logics defined previously. The logic consists of a set of states. Each state responds to one or more events. Each event has one ore more action sequences. Each action sequence consists of an optional predicate, one or more actions, and a coπesponding next state. Each action may have one or more corresponding parameters. Predicates, actions, and parameters each coπespond to an action exported by the run-time object model. A predicate yields true or false, an action is a simple function, and a parameter yields an attribute value.
When an event occurs, the coπesponding action sequences are identified and processed as follows: for each sequence do if predicate is nil or do predicate is true then for each action in sequence do for each parameter with action do save value of do parameter done do action passing saved values (if present) done set state to next state exit for loop endif done
FIGURE 21 illustrates an object model for a finite state machine consistent with the previous description. A state consists of one or more transitions. Each transition consists of one or more associations, called transitions, between an event and one or more action sequences. An action sequence consists of no more than one predicate action and one or more actions. An action may be associated with one or more parameter literals and/or one or more parameter actions. Each action sequence is associated with one state.
An application context controlled by a finite state machine exists in a single state and responds to specified events. An application context consists of one or more application methods (functions). Each such method is exported as a predicate action, an action, or a parameter action. A method is generally exported as a single action type. Predicate actions yield true or false. Actions are simple functions, and parameter actions yield generic value wrappers. A value wrapper is a generic holder for attribute values. Parameter literals represent values embedded within the logic definition.
System Components
FIGURE 22 schematically illustrates exemplary TSP/CSX class 4 and class 5 switches according to the invention having several TSP processor nodes and several CSX switch nodes. The aggregated TSP nodes and associated peripherals together constitute the TSP. Each CSX switch element can be considered individually due to its unique aπangement of network and subscriber access facilities. Together, the TSP and CSX nodes are considered a single consolidated system.
A exemplary embodiment ofthe TSP/CSX system ofthe invention includes at least two TSP processor nodes, redundant or fault resilient persistent storage devices, and an isolated LAN dedicated to communication between TSP processor nodes and the CSX central shelf controllers. The TSP/CSX system can further include an IP based LAN, independent of the TSP/CSX communications LAN, that supports distributed TSP application and third party software components. The IP based LAN also provides access to external systems as necessary to support operation ofthe TSP/CSX within a carrier's environment.
Each processor node is capable of operating in an independent fashion. Each processor node can include its own independent CPUs, RAM, etc. Power supplies can be independent unless the supply itself is fault resilient. The processor nodes may be housed separately or together depending upon the most desirable configuration consistent with the target footprint, unit cost, and so forth. Each processor may have a dedicated persistent storage device so long as the TSP application software, possibly in conjunction with third party software components (such as data management software), provides an acceptable level of protection against loss or destruction of vital system and/or carrier data.
Further, the two processor nodes may share a single storage device so long as the device is inherently fault resilient or, in conjunction with other third party software, can otherwise provide an acceptable level of protection against loss or destruction of vital system or caπier data.
Each consolidated system provides connectivity between the TSP and at least two central shelf controllers for each CSX node. The LAN is selected to be fault resilient and/or provide redundant pathways between at least two TSP nodes and each central shelf controller pair.
The IP based LAN is selected to provide sufficient bandwidth to support distributed software components and communications traffic between the TSP processor nodes and external systems. In addition, additional communications pathways can be added as may be required.
TSP/CSX Communications
FIGURE 23 illustrates exemplary communications paths within an embodiment of a consolidated TSP/CSX system of the invention. Each TSP processor node has access to a shared persistent data store. Each node also supports man-machine interfaces and interfaces to authorized external systems such as billing systems, and subscriber provisioning systems. Database access and external interfaces may be supported by a single LAN. Alternatively, separate LANs may be utilized to provide the desired system performance.
A dedicated LAN having a bandwidth, for example, of 100 mbps, interconnects each TSP processor node and CSX central shelf controllers. This LAN provides the communications backbone ofthe consolidated system, and is the primary means for accessing the CSX switches. The LAN configuration provides a single communications path between each TSP node and each central shelf controller. The LAN hub is fault resilient. The LAN also supports TSP node-to-node communications for call and feature processing and system and network management. In addition, there is a 10-megabit communications channel between the CSX central shelf controllers. This channel supports CSX internal functions.
As depicted in FIGURE 24, a message distribution and transport (software) layer is interposed between the TSP/CSX application software and the underlying network interfaces. The purposes of this layer include, for example, presenting the TSP as a single logical entity to the CSX application software, and establishing and maintaining reliable point-to-point connections between TSP nodes and CSX central shelf controllers. This layer is statically configured to include provisions for alternate routing in support of fault tolerance.
The distribution and transport layer hides details regarding the configuration of
TSP nodes from the CSX software, and provides deterministic inter-processor routing ■ of messages associated with specific physical locations. Messages related to specific physical entities, such as endpoints, trunks, are routed to the TSP/CSX elements having those entities within their scope. The distribution and transport layer has access to necessary physical configuration data needed to ensure consistent and reliable message routing between processing elements.
Fault Tolerance
Fault tolerance refers to the ability of a system to provide continuous application services in spite of faults and processing interruptions that may occur within the system. These include the ability to continuously satisfy service requests on demand as well as the ability to complete processing of all service requests. For example, with respect to the TSP/CSX of the invention, fault tolerance refers to the ability to complete calls, call features, and call services as well as the ability to complete calls, call features, and call services once such services have been initiated. These capabilities further include reliable capture and preservation of information utilized for billing, service management, etc. A system that is fault tolerant typically has the following characteristics. It includes, for example, redundant processing elements, and has the ability to dynamically substitute one processor for another. Such a system also provides redundant communications paths between processing elements and the ability to dynamically substitute one communications path for another. Further, a fault tolerant system typically provides redundant system access paths between the system and its client community, and the ability to utilize any available path to provide service. In addition, the system can have redundant or multiple persistent storage elements that provide continuous access to information used by application services, and that provide reliable persistent storage of information produced by application services. Redundant data access paths including the ability to substitute one data access path for another are also provided.
In a fault tolerance system, one processing element may be called upon to substitute for another under the following exemplary circumstances:
(a) a processing element experiences a processing fault or failure that prevents it from handling new service requests and/or prevents it from completing one or more services already in progress,
(b) a processing element is administratively prohibited from handling new service requests and completing services already in progress,
(c) a processor is administratively prohibited from handling new service requests but is permitted to complete services already in progress.
In case (a), the system recognizes that a fault or failure has occuπed, determines that the affected processing element cannot or should not continue processing, and shifts responsibility to one or more alternate processing elements. In cases (b) and (c), an external authority has issued a command to shift processing responsibility from one processing element to one or more alternative processing elements. The above case (b), sometimes called a forced switchover, is typically a response to an event or set of events within the system that call for urgent re- action to prevent loss of service. The above case (c), sometimes called a graceful switchover, is typically a pro- active measure to prevent service degradation or to initiate some system maintenance activity.
The decision- making and failover execution mechanisms need not be integrated. A single switchover capability that can serve in forced and graceful situations can be activated by any number of decision- making capabilities including internal and external decision sources.
One communications path may be substituted for another under the following exemplary circumstances:
(a) a communications path has failed or become un- reliable, and/or
(b) a communications path is administratively removed from service.
The determination that a communications path has become unreliable is generally carried out by a processing element within the system. However, the decision to substitute one communications path for another due to poor reliability can be made by an external entity.
Selection and confrol of data access paths is normally confined within the system itself. In particular, decisions regarding the viability and selection of a data access path are usually handled exclusively by the system. Redundancy of storage elements is usually controlled by the data management system. The data management system may offer the ability to configure storage elements but usually does not provide run time control.
A system that can continue and complete at least some services in progress and/or satisfy at least some new service requests is refeπed to herein as being partially fault tolerant. A system that can continue and complete all outstanding service requests and satisfy all new service requests is herein refeπed to an being completely fault tolerant. The system ofthe invention provides at least partial fault tolerance of single points of failure. That is, the system can continue operation even if the failure of a single system component occurs. For example, the system ofthe invention provides continuous support for the initiation of calls, call features, and call services. It further provides continuous support for stable calls, call features, and call services. For telephony services, calls wherein both parties have engaged in two-way conversation are traditionally considered stable. In the system ofthe invention, a call, call feature, or call service that is in a stable state, is not adversely affected by the failure of a single system component. In addition, the system ofthe invention prevents the loss of billing data related to completed calls, call features, and call services. It further reduces the loss of system data such as logs, performance statistics, usage statistics, etc. Those skilled in the art will appreciate that the system ofthe invention can also be configured to provide complete fault tolerance.
The system of the invention can declare processor faults upon various conditions that include, but are not limited to, loss of communications between TSP and CSX, loss of access to database, system (internal) resource exhaustion, program exceptions, and audit exceptions. A processor may declare its own failure or be declared failed by an external entity. In some embodiments that do not provide communications path redundancy, a variety of problems including loss of a physical connection, system level software eπors, and a non-responsive far end processor (either TSP node or CSX switch controller) appear as loss of communications between two elements. Loss of a single physical connection or a software exception associated with a single connection appears as isolation ofthe connected processor, e.g., loss of connection between a TSP node and the LAN hub results in CSX switch controllers talking to, for example, one TSP node. Apparent isolation of a TSP node mandates a TSP failover, and apparent isolation of a CSX switch controller mandates a controller failover.
In some embodiments, a variety of problems including disk controller failures and system level software eπors appear as loss of communications between a TSP and the database. Loss of database access mandates a TSP failover. Further, to the extent that system level resources can be identified and quantified, the system can monitor resource availability and declare faults upon resource shortages. In addition, to the extent that program exceptions can be identified and "caught", the system can recover and declare a software fault. Audit procedures may also be defined to examine various system characteristics and declare faults when acceptable limits are exceeded and the problem can not be coπected.
In some cases, for example, in cases of non-responsiveness or unacceptable performance, one processor may declare that another has failed. In one model, refeπed to an "bee watcher" approach, one processor can monitor another and declare the failure ofthe monitored processor if it fails to respond to a query, or fails to meet a pre-aπanged schedule commitment. In another model, refeπed to as "breach of service contract" model, a client processor may declare that a server processor has failed when it no longer receives acceptable service (the server may be non- responsive or may respond too slowly). Upon failover, the designated standby or alternate processor must assume the failed processor's role. That is, it must load the applicable context information from the persistent store, prepare to continue viable calls, call services, and call features, or terminate unviable calls, call features, and call services. Loading contexts is necessary because there maybe recoverable contexts in states that require termination and for which no external events may be expected.
The process of recovering contexts is preferably governed by a policy that recovers the most useful contexts first, and prioritizes response to external events, representing immediate service need, over recovery. The policy should also prevent a load spike that would degrade the processor's performance (recovery process should spread processor demand over time to prevent the recovery process from degrading system response to external events). The system has also the ability to recover a context from the persistent store upon an external event. The failover and recovery procedure also ensure that the failed processor does not inhibit service as it is restored to service.
In the system ofthe invention, one processor can substitute for another to continue a stable call, call feature, or call service. In particular, the system ofthe invention provides descriptions of calls, call features, and call services, which include the notion of condition or state, that are transportable from one processor to another. As the detail and accuracy of these descriptions increase, the system's level of fault tolerance also increases. For example, if a call is waiting for the result of a database fransaction, that information will be lost following a processor substitution unless the pending transaction is represented in the call's description. If the call description includes a description ofthe pending transaction, the transaction request could be reissued as a recovery measure upon failover.
Redundancy Configurations
The architecture ofthe system of the invention offers a variety of redundancy configurations. The TSP/CSX system of the invention can include (a) redundant processing nodes within the TSP, (b) redundant switch controllers within the CSX, (c) fault tolerant object database shared by the TSP nodes, (d) fault resilient 100 Mbit LAN hub interconnecting the TSP processing nodes with the CSX switch controllers, and (e) separate man- machine and external system interfaces for each TSP processing node.
Redundant TSP processing nodes provide the basis for implementing fault tolerant application software. The processing nodes are independent, and fault tolerance features are provided by the application software. In one embodiment, two TSP processing nodes share a fault resilient object database. This database provides persistent storage for all system data and is the mechanism for sharing run time state information between the two TSP nodes. Further, a fault resilient LAN Hub provides communications paths between the TSP nodes and the switch controllers. One embodiment includes the following four distinct communications paths:
(1) Node 0 to controller 0, (2) Node 0 to controller 1, (3) Node 1 to controller 0, and (4) Node 1 to confroller 1. Each path consists of two connections, namely, (1) Node to Hub, and (2) Controller to Hub. This configuration can tolerate loss of a single node to hub connection, of a single controller to hub connection, or loss of one node to hub connection and one controller to hub connection. Loss of a TSP node to hub connection prohibits load sharing between the TSPs and may or may not mandate a TSP node failover (a switch controller failover would not be necessary). Loss of a switch controller to hub connection does not prohibit TSP load sharing and does not require a TSP node failover, but it may require a switch controller failover. Loss of two connections prohibits load sharing and may require either a node failover or a switch controller failover. Each TSP can support one or more connections to external systems and/or machine interfaces. A TSP node may or may not have redundant communications paths to these external entities.
FIGURE 25 depicts an N + 1 configuration consisting of four TSP Nodes and three CSX switch elements. Each ofthe three primary TSP nodes is dedicated to a separate CSX switch element. The standby TSP node is configured to support any of the three CSX elements. Hence, the standby node may substitute for any ofthe primary nodes. However, the standby may substitute for only a single primary node at any given time. The system can compensate for the loss of a single primary TSP node by substituting the standby processor in its place. Further, a I + 1 redundancy can be achieved by providing one standby TSP node for each primary node and configuring the communications interfaces accordingly.
FIGURE 26 shows another configuration in which the traffic load for each CSX has been partitioned into thirds and distributed equally among three primary TSP nodes. If one ofthe primary TSP nodes fails, each CSX utilizes the communication layer to map the failed node's partition to the standby node. Similar to the previous configuration, the system can substitute the standby node for any one ofthe primary nodes if a primary node fail.
In the configurations shown in FIGURE 25 and FIGURE 26, each TSP node is supported by a shared object database. This database provides the standby with access to the objects needed to continue processing including access to transient call objects. In effect, the shared transient data store is the mechanism for "copying" objects from one processor to another.
Application Software Redundancy
Application software can employ transportable context objects to capture and maintain the state of application services. A context object represents or describes the state of an application service such that an arbitrary processor can continue and complete the service based on the context object. Context objects may be aggregated in order to represent the state of a complex application service.
A processor needs to have, or to have access to, context information, describing the state of each application service that is in progress, in order to substitute for another processor. Hence, the system provides some transportable mechanism of describing the state of application services.
A task (thread or process) is a mechanism that encapsulates processing. A task carries with it the ability to "ran" an application. Assuming that application contexts can be transported from one processor to another, it must also be possible to associate a task with each context to facilitate execution. The ability to dynamically bind tasks with application contexts is therefore important to fault tolerance. Dynamic task-context bindings also discourage the capture of essential context information within the execution call stack.
The application software provides some mechanism for rendering contexts present on or accessible by the alternate processor when a processor substitution occurs. For example, replicating contexts in an alternate processor, storing contexts on a sharable disk, will ensure that a substitute processor can continue application services in progress following a processor substitution. Further, event-context binding is rendered deterministic and consistent across all processors. For a particular event, each processor must be able to bind the event to a unique (and coπect) context, and to deliver the event to the appropriate task-context association for execution. This includes consistent recognition of events that call for the creation of new contexts.
Event-processing mechanisms are also defined that produce consistent behavior across multiple processors. This is often inherent in distributed software — each processor runs the same application software. However, to the extent that applications incorporate dynamic elements, mechanisms are provided that ensure consistent application behavior across multiple processors. For example, a processor that substitutes for another processor must have access to all applicable CPML pages in order to ensure consistent behavior. Further, blocking system and infrastructure services (functions, method calls, etc.) can be converted into asynchronous client- server services. System and infrastructure services may be synchronous if and only if they are guaranteed to be non-blocking. For instance, reading the system clock is typically non-blocking and can be implemented and accessed synchronously. However, reading an object from a database is typically blocking and hence is modeled as an asynchronous client- server service. This prevents the capture of context information within the execution stack — a form of context information that cannot be transported from one processor to another. For example, the fact that an application service has a database transaction pending is context information that should be represented explicitly in a context object rather than implicitly by a task that is blocked on a function call. It further prevents a temporary static binding between a task and a context object. Static task- context bindings should be limited to infrastructure level services because this context information would be lost in a processor switch. Database requests should be represented within application contexts if such requests are to be preserved across processor failovers.
The ability to vary task to co'ntext ratios, dynamically if possible, can improve overall performance with fewer tasks. This means that the ratio of tasks to context objects may exceed one to one. If a task becomes statically bound to a context, even temporarily, it can impede overall throughput across its associated contexts.
Synchronous interfaces are permitted between objects only under the following conditions:
(a) Guarantee of locality — a client object must be guaranteed the server object is local and can be referenced directly,
(b) Guarantee the service is non-blocking — an application level service that is blocking must be modeled as an asynchronous client-server interaction for the reasons cited previously,
(c) Guarantee the service is constant with respect to the server or that suitable contention management mechanisms are in place, (d) Guarantee the service is public or that the client has the privileges needed to access the service.
Fault and failure recognition and response mechanisms are defined such that processor substitutions occur, as needed. The system of the invention is capable of identifying conditions that represent or may represent an operational interruption. It is also be capable of responding in a way that prevents or minimizes loss of service, consistent with the system's requirements.
In addition, a system management capability is defined such that processor substitutions can be commanded by an external entity. Loss of external events, messages, and commands are prevented. Moreover, mechanisms are defined for altering external event, message, and command routing schemes when processor substitutions occur.
Application and certain infrastructure components are implemented using finite state machines (FSM) to control behavior. This is a natural fit to the application, a commonly understood implementation model, and lends itself to clear definition of state and context and separation of state/context from processing.
Well-defined FSMs are context dependent but also context free — a FSM instance contains no context data. It describes or defines behavior in terms of a context (object or set of objects) and the state ofthe context. This encourages well- defined contexts that provide a high fidelity representation of application state that can be transported from one processor to another. Moreover, FSMs can be implemented as singletons (single instance within a processor) and placed in the global scope with minimal consumption of memory. Alternatively, FSMs can be defined by data structures (e.g., XML document), placed in persistent storage, and loaded into memory on demand. In this case, object caching may be used to reduce the impacts of persistent storage I/O.
It is also possible to define a stack execution model based on FSMs. According to this model, one FSM can invoke another using a stack mechanism and a standardized data-passing interface. This model supports the dynamic integration of FSMs defined by different domains within a common application context. It extends the expressive capability server object interfaces and provides a useful layer of encapsulation for the client object designer. For example, an application or infrastructure server object could extend its interface definition to include a FSM that is "invoked" at run-time. This approach can simplify the interface between objects and can hide the underlying details ofthe interaction between client and server.
An interface designed and implemented as an FSM can encapsulate many object interaction details including the locations of client and server, the message objects exchanged between client and server, the message exchange mechanism, the service's mode of execution (synchronous or asynchronous), eπor detection and handling (including potential recovery options), etc. This approach can simplify application development.
The infrastructure ofthe system ofthe invention provides an object class, e.g., Task, to encapsulate OS threads. Application objects that require processing support request it from the infrastructure instead of creating new threads at will. This relieves the application from dealing with the intricacies of thread invocation and control, and it provides a consistent approach to multi- threading throughout the application.
Furthermore, it provides a point of control that may be used to manage the number of threads and the way the threads are aligned to various task categories within the system. Adjusting the ratio of tasks to task categories can allow controlling priorities without manipulating OS visible thread priorities. For example, adjusting the ratio of call processing related tasks to the number of maintenance related tasks can effectively raise or lower the priority of call processing.
The infrastructure also provides support for creation and destruction of task objects, associating and disassociating tasks and application objects on demand, and publicizing these associations to facilitate message (event) delivery. This support may also include features such as task categorization in support of priority management, task to application object ratio control for load balancing, etc. The mechanism for exchanging data between objects can be integrated with the overall execution model. An object class, e.g., Event, provides the basic vehicle for exchanging information between objects. This class is specialized (sub classed) to provide application and infrastructure specific event classes.
The Event class defines two points of interaction between the mfrastracture and application domains:
(a) Event routing — this is the process of determining which processor should handle a particular event. This behavior is application defined and is therefore represented as an abstract method.
(b) Event dispatching — this is the process of deteπnining which object, within a processor's scope, should handle a particular event. This behavior is also application defined and is represented as an abstract method. Event dispatching is preferably non-blocking. Assuming that the dispatching behavior is non-blocking, the event can be immediately dispatched to the appropriate application object. If the dispatching behavior is blocking, this behavior must identify an application domain object to carry out that behavior and finish dispatching the event.
The infrastracture can invoke each of these methods as needed when transporting events between objects. Application class events are routed to a processor and then dispatched to an object — this removes assumptions about where an event can or will be processed. Infrastracture class events may not require routing because infrastracture services are available globally. Infrastracture support shall be provided for the exchange of events with external systems, routing of events received from external systems, and event dispatching.
Delegating event dispatching to the application provides flexibility and a mechanism for solving boundary conditions, e.g., context object creation. If a particular event requires a new context object, the application can define a dispatching algorithm that targets these events to an object factory, or it can construct a context object that it then specifies as the destination. Object factory is a pattern wherein an object is responsible for constructing instances of an associated class. A secondary goal ofthe overall task-processing model is to reduce contention across highly dynamic objects. Call processing objects are expected to frequently dynamically change state and context. To simplify contention management, each such object is supported by a single task. All events related to a particular call- processing object are routed to its associated task. This reduces the possibility of contention for a single object by multiple execution tlireads. This also yields an event model in which events always appear in a serialized fashion — even if two or more events actually occur simultaneously.
A shared, fault tolerant persistent storage device houses context objects, i.e., event-processing objects, data objects used to route events to context objects, and system data objects.
Further, data access mechanisms and processes are designed to access the shared data store dynamically as needed to fulfill an application's request for data. That is, if a target object cannot be located in memory, it will be accessed on the shared store. Only upon failure to locate a target object on the shared store does the application determine that the target object does not exist and/or declare a fault.
Caching, i.e., application level caching, is employed to optimize access to data structures and objects that are used frequently. Initial attempts to search or retrieve any data object is applied to cache. However, all access mechanisms are designed to access the persistent store in the event of a cache miss.
Data organization structures, e.g., hash tables and indices, are also subject to dynamic access mechanisms. Accessing an object does not fail unless the associated organizational structures have been destroyed or have become corrupt.
Dynamic access mechanisms simplify certain aspects of failure recovery since there is no fixed expectation that a particular object will be in memory when it is accessed. However, care is taken to ensure that nominal access modes are not severely impacted by dynamic access mechanisms (some balance between dynamic access and static data loading may be needed). However, providing a dynamic access mechanism for all data objects offers the maximum flexibility for defining data storage policies.
The infrastructure also defines a framework for routing and dispatching events. For certain event classes, e.g., event classes related to call processing and other services related event, these decision- making algorithms are defined by the application. For other event classes, e.g., event classes related to infrastracture services, these decisions are defined in accordance with architecture/infrastructure policy.
The infrastructure accesses routing and dispatching behavior at appropriate points in an event's transmission cycle. Ensuring appropriate and consistent results are the applicable domain's responsibility — application or infrastracture.
For static data and program elements, i.e., data and program elements that are static for the life ofthe application, ordinary distributed software practice will suffice. For dynamic elements, including program and data elements as well as sharable contexts, the architecture provides mechanisms for maintaining consistency across multiple processors.
Dynamic data and program elements can be categorized as follows:
(a) elements for which the persistent store is the database of record and whose copies may be contained in volatile memory stores across multiple processors. An external business or operations process generally controls these entities (the authority to establish and modify the state of these entities is outside the scope of call, call feature, and call service processing),
(b) elements for which a volatile memory store is the database of record and whose copies are placed on the persistent store in support of application features such as fault tolerance. Call, call feature, and call service processes generally control the state of these entities. The integrity of the entities having persistent store as database of record is ensured by propagating state changes from the persistent image to memory resident copies. Memory resident copies of these entities are discarded once they are no longer in use.
Each time an entity is loaded into a volatile memory store, a dependency is established between the source entity and the copy of that entity. Modifications to the state of a source entity are ultimately reflected by each of its memory resident copies, or dependents. Explicit representation of a source entity's dependencies provides a mechanism for identifying and locating its dependents.
The nature of a source entity can suggest a priority for updating its dependents. Certain entities may require immediate update of each dependent. For instance, changes in operational policy may require immediate update of all memory resident copies of that policy. Other entities may tolerate some delay in updates to dependents. For example, modification of a group level feature may require immediate application to all new instances of that feature while permitting instances in progress to conclude under the previous policy. In essence, updates to the feature's dependents are not required until a new feature instance is initiated.
Immediate update of a memory resident entity introduces contention — one or more application objects may hold a reference to and be accessing the entity in question at the time the update must occur. To ensure integrity, some form of mutual exclusion lock must guard access to each entity requiring immediate propagation of updates across all copies.
Delayed update of memory resident entities can be handled more simply. Upon a source entity's modification, its dependents are located and "privatized." Application objects possessing references to an outdated dependent entity may continue to use that entity as long as the reference is held. Once all references to the outdated dependent are released, it is discarded. However, establishing a new reference to the modified entity will cause a new copy to be loaded from the persistent store. Integrity for entities having volatile store as database of record is ensured by propagating state changes from the volatile memory image to the persistent image. Persistent copies of these entities are discarded once they are no longer in use. The application controls these entities and determines the circumstances for updating the persistent image.
The infrastracture defines an asynchronous, message-based capability for communications between objects. This is a natural basis for a message-based, client- server model for system and infrastructure services. The model is already required for the application domain. Hence, it is logical to extend it to the infrastructure domain. This also presents one consistent activation mechanism whether a service provider exists in the application domain or the infrastructure domain.
It is useful to provide a consistent activation mechanism for both synchronous and asynchronous services, i.e., it is useful to encapsulate whether or not an infrastructure service operates in a synchronous or asynchronous fashion. This further simplifies the application developer's role and provides additional flexibility. It is also useful to define infrastracture services that dynamically choose an asynchronous or synchronous mode depending upon the circumstances. For example, a data access service could operate synchronously if the requested object is contained in the memory cache or asynchronously if a transaction must be issued to retrieve the requested object — either way the presentation to the application is identical and the only variance is performance. However, it may be useful to define synchronous interfaces for infrastracture services that are guaranteed to be locally available and non-blocking.
Class 4/5 Configuration
FIGURE 27 provides an overview of an exemplary installation of a TSP/CSX consolidated system ofthe invention. The system includes two TSP nodes with appropriate interfaces to the carrier's external systems such as the operational support system (OSS), the subscriber provisioning and maintenance system, the billing system, etc. As shown, a single LAN supports these interfaces. Additional interfaces may be used if needed to provide sufficient throughput on these external interfaces.
The TSP is supporting a single CSX, and the CSX has two central shelf controllers appearing on the communications LAN between the TSP nodes and the CSX. Digital subscriber loops and DS1 access facilities provide subscriber access. The DS1 access facilities are presented to the CSX by remote data terminals using the GR303 protocol. The CSX also provides access to the PSTN via DS1 network access facilities. The network access facilities may support a variety of protocols including, for example, FGD, ISDN/PRI, and SS7/ISUP.
The carrier offers features through three levels of service subscription. In one level of service, a subscriber has access to features to which the subscriber directly subscribes at an individual level. In a second level of service, a subscriber is a member of a subscriber group that has subscribed to a set of features. Each member ofthe group has access to the group's associated features. In a third level of service, a subscriber has access to feature offered, by default, to all subscribers by the caπier.
Application Framework
FIGURES 28 A and 28B depict a basic application framework that is utilized in one embodiment ofthe invention. An alternative to the foregoing is the use of CORBA Orb's to effect interprocess message handling.
Messages are received via an external interface component and converted into events as specified by a message protocol. Events are dispatched to the appropriate application context for processing. Inter- object communications, including inter- and infra-processor communications are also supported by the event passing capability. Blocking infrastructure services are implemented in the same fashion as application services using a similar task-processing context binding.
There are two stages to event passing, i.e., event routing and event dispatching. Event routing is a process that identifies the processor that houses the appropriate processing context for an event. Event dispatching is a process that identifies the application context, within a processor, that is responsible for processing an event. The appropriate application domains define the event routing and event dispatching processes (the' infrastracture merely executes these behaviors at the appropriate point in the event passing sequence).
Events received from external systems are dispatched without routing. It is assumed that such events have been routed coπectly. Events issued from an infrastracture service context are also dispatched without routing. It is expected that infrastracture services are ubiquitous and therefore that inter- processor event passing is not required to access these services.
External Interface Object Model
With reference to FIGURE 29, the TSP can exchange messages with an external system, such as the CSX. An interface characterizes the messaging association between the TSP and the CSX. The interface sends and receives message fragments. One or more message fragments constitute a message. Messages are converted to events and events are converted to messages according to a message protocol.
A message protocol consists of a parser and a streamer. A parser converts a message to an event. A streamer converts an event into the coπesponding message. This arrangement completely encapsulates the mapping of messages to events and events to messages. New external interfaces may be introduced without modifying the event hierarchy so long as the new protocol coπesponds to existing events. Introduction of a new protocol may introduce new events, as well.
Event Passing
FIGURE 30A depicts an event trace outlining the process of receiving a message, converting the message into an event, and dispatching the event to the appropriate processing context in a system ofthe invention. FIGURE 3 OB presents a diagram illustrating an event trace that outlines the process of routing an event and sending it to an external processor via an external interface, including conversion from an event to a message format.
FIGURE 31 is a diagram illustrating the nature of an event hierarchy. Such a hierarchy provides considerable flexibility in routing and dispatching. For instance, all TCAP events could be dispatched to a single processing context that handles all TCAP messages by implementing the routing method in the TCAP class. Alternatively, each event class derived from TCAP event could be routed to an application context dedicated to handling events of a specific type, for example, 800 Number Translation, Calling Name Delivery, and Local Number Portability, by implementing a unique dispatch method for each class.
Data sets
The data sets that are associated with the TSP (either supporting the TSP or being generated by the TSP) fall into at least five categories. These categories include, for example, (a) data sets that are accessed frequently but whose (persistent) values change infrequently, (b) data sets that are accessed frequently but whose (persistent) values change with moderate frequency, (c) data sets that are accessed frequently and whose (persistent) values change frequently, (d) data sets that are accessed with moderate frequency and whose values change frequently, and (e) static data sets that are created frequently and accessed only infrequently.
Route and Call/Feature policy data sets belong to the above category (a). A summary of these data sets are presented in Tables 34 and 36 of FIGURES 32A and 32B. These data sets support processing of each call, and their database of record in the persistent store. The memory capacity ofthe system of the invention is preferably sufficient to support complete caching of these data sets. The use of these data sets allows achieving high memory residency, and maintaining consistency with the database of record when updates occur.
The above category (b) of data sets includes primarily the endpoint/subscriber data set, a summary of which is presented in Table 38 of FIGURE 32C. This data set supports processing of each call. Although the endpoint/subscriber data values change with greater frequency than those ofthe Route and Call/Feature policy data sets, they change at a significantly lower frequency than call attempt rates. The database of record for this data set is the persistent store. The endpoint/subscriber data set allows achieving relatively high memory residency with reasonable memory consumption, and maintaining consistency with the database of record when updates occur. The data coπesponding to frequency callers achieves higher memory residency than those coπesponding to infrequent callers. Further, the memory capacity is preferably sufficient to support complete caching of this data set for a mature, fully configured system, thus achieving good disk access performance upon cache misses.
The above category (c) data set includes primarily call and feature state data, of summary of which is presented in FIGURE 32D. This data set supports processing of each call and its value changes frequently during call and feature processing. The frequency of changes in persistent value is less than overall frequency of state change, but it is at least several times per call. The database of record is the memory image. A persistent image is maintained for selected states to support fault tolerance. This data set allows achieving complete memory residency, maintaining consistency between the memory and persistent images for selected states, thereby providing excellent disk access performance for all consistency updates.
The above category (d) consists primarily of equipment and transmission facility state and statistical data sets. FIGURES 32E, 32F, and 32G provide summaries of these data sets. The data sets support network management and system operations. Some members of this data set can change their values as a function of call volume and may be subjected to frequent value changes. Aggregate members are also subject to frequent value changes. Routine polling intervals can govern access to this data set. The database of record is a memory image. Persistent images are provided for historical statistical records (usage and performance) only. The data set allows achieving high memory residency, and further achieving reliable capture of historical statistical records. The above category (e) data set consists primarily of Call Detail Record (CDR) and Automated Message Accounting (AMA) record sets. FIGURES 32H and 321 provide summaries of this data set. CDR's are generated for each call and/or feature. In selected number of cases, multiple CDR's may be generated for a single call. Once generated, CDR's are captured to disk for subsequent processing. AMA records are in turn derived from CDR's. The database of record is the persistent image. CDR memory images exist only as needed to support reliable capture to the persistent store. That is, there is no memory image of AMA records. This data set allows achieving reliable capture of CDRs to the persistent store. Much of this data set is also subject to sharing and duplication. Sharing is utilized to make the data available to multiple processing elements. Replication is utilized to support fault tolerance.
Data sets that are related to physical equipment and facilities, and related to compiled software elements are not subject to frequent schema changes. Other data sets may experience occasional schema changes. In particular, some embodiments of the invention provide schema flexibility for log data types, such as system logs, exception logs, audit logs, CDRs and AMA records. This can allow altering the contents of these data sets over time without software compiles.
The persistent storage subsystem ofthe system ofthe invention provides data sharing. That is, data can be shared among multiple TSP processing nodes. This includes data housed by the TSP on behalf of CSX switch elements, thus ensuring high availability of data elements required by the CSX. Further, the persistent store provides mechanisms for controlling object memory residency (cache management). The purpose of this capability is to provide access performance sufficient to meet the systems' s overall performance objectives. In addition, the persistent store allows processors to share transient call/feature state and context objects through data replication. The persistent store also supports multiple threads per process and multiple processes per database. Further, the persistent store provides object level control of database commits to ensure that transient objects are persisted in coπect (e.g., stable) states. Another functionality ofthe persistent store is object level locking. This allows achieving the overall performance objectives by reducing contention to the object level, thus decreasing the occurrence of multiple threads accessing the same object. In addition, the persistent store supports evolution ofthe object while the system is ranning.
FIGURE 33 illustrates a diagram depicting the nature ofthe coπelation between call/feature states in the volatile store and in the persistent store. The states in the diagram are arbitrary and only for illustrative purposes (they do not coπelate to any real call model). When a call is created, the initial state is persisted to the transient data store. This facilitates recovery processing by representing resources that have been in use, but for which no stable call state was ever reached. As the call progresses, it ultimately achieves a stable state. At this point, the image in the persistent store is updated to reflect the stable state. As the call progresses further, it achieves another stable state causing another update to the transient data store. As the call concludes, the persistent image is destroyed because its only purpose is to support recovery of stable state calls. In the event of a fail over, a back up processor has access to the transient data store, and can therefore recover the appropriate stable call images. The call will revert to the state represented in the transient call store regardless of what the actual call state was at the point of failure.
Additional Embodiment
FIGURE 36 schematically illustrates an embodiment of a system 100 ofthe invention that converts a textual description in a mark-up language of a process, e.g., a state machine, to an object graph, and preferably stores the object graph in an object repository, e.g., an object database. The object graph can be accessed to determine transition of a present state ofthe process into a new state and to determine actions, if any, to be performed. As described in more detail below, the system ofthe invention also provides two stages of validation. In the first stage, a lexical structure ofthe textural description ofthe process logic is validated by comparison with a document type description, and a "logical" document object model is generated from the textual description. In the second stage, actions or operations referenced by that document object model are validated, e.g., by comparison with a "reference" object model.
More particularly, the exemplary system 100 includes a parser 102 that receives a textual description of a process 104, modeled as a state machine, in a mark- up language and generates an document object model 106. The parser 102 can be of any commercially available type suitable for such purpose. The textual description of the state machine, herein refeπed to as the state machine document, identifies one or more states and one or more events that cause transitions between these states. For example, in the telecommunications domain, the textual description can identify a state machine representative of a call feature, e.g., call forwarding, provided to a subscriber. In such a case, the call feature state machine transitions from one state to another in response to one or more events, e.g., call progress events such as hookflash, and optionally performs one or more actions, e.g., routing a call.
The mark-up language can be chosen to be any language that is suited to a particular application. HTML, XML, and other mark-up languages which are extensions of XML (e.g., CPML) can be utilized in a system ofthe invention. As an illustrative example, FIGURE 38 depicts an XML document that describes a logic for a state machine that provides a call forwarding feature to a subscriber of a telecommunications service.
The model 106, herein refeπed to as document object model (DOM), includes objects and/or references to objects that represent the states identified in the state machine document. These objects can also reference one or more operations for performing the actions, if any, specified for various states of the state machine. For example, in a C++ object-oriented environment, the object model can include, e.g., structures (struct) and/or classes that represent the states identified in the textual description. In a telecommunications application, the DOM is an object representation of a call processing logic, e.g., the logic for providing a call feature such as call waiting.
The parser 102 is preferably a validating parser that compares the lexical structure, e.g., syntax, ofthe textual description 104, i.e., the state machine document, with a reference lexical structure 108, herein refeπed to as logic document type definition (DTD), to ensure that the structure ofthe textual description 104 conforms with a pre-defined structure. For example, this validation step ensures that the structure ofthe textual description that defines a state machine is consistent with a pre-defined structure for defining state machines. Appendix F provides an example of a logic document type definition which provides a reference lexical structure for defining a state machine.
The exemplary system 100 further includes a pre-processor 110 that receives the DOM 106 and generates an object graph 112 which is representative ofthe state machine defined in the textual description, i.e., state machine document. By way of example, FIGURE 36A presents a graphical representation of such an object graph based on logic specifications provided in a mark-up language. In addition to generating the object graph, the pre-processor 110 validates the document object model 106 by comparing it with a reference document object model 114, herein refeπed to as reference DOM. The reference DOM includes objects which are representative of permissible operations (actions). That is, the reference DOM identifies those operations that the system can support. For example, in a telecommunications application, the object model 110 may have a reference to an operation (action), such as playtone. Validating the object model ensures that such operations are in fact supported by the system. Hence, the object graph 112, generated by the pre-processor 110, provide object representations of validated actions for a given state machine as originally specified in the textual description.
The reference DOM 114 can be generated, for example by the parser 102, from a textual description 116 in a mark-up language ofthe reference model. In addition, the lexical structure ofthe textual description ofthe reference model can be validated by comparing it with a reference lexical structure 118, herein refeπed to as class and instance document type definition.
The object graph 112 includes nodes which are indicative ofthe states ofthe state machine, and edges which are indicative of transitions between these states. The object graph 112 is stored in an object repository 120, e.g., an object database. One embodiment ofthe invention employs an object database sold by Excelon Corporation. It should be understood that other object databases can also be utilized in a system of the invention. As will be discussed in more detail below, the object graphs can be accessed to execute particular iterations ofthe state machines represented by the object graphs. In some cases, it may be necessary to adapt the object graph 112 for storage into the object repository 120. Hence, the exemplary system 100 includes a database adapter 122 that can transform the object graph, if needed, in a manner that renders it compatible for storage into the object repository 120.
Each object graph stored in the object repository genetically represents the logic for a particular state machine. This representation is context free in that the object graph does not have any information regarding a particular state of and/or events received from an instantiated state machine, i.e., a particular iteration ofthe state machine. To execute a state machine, the system ofthe invention can instantiate an object having information regarding the context of the state machine, i.e., present state ofthe state machine and events received by the state machine. This context object communicates with an engine that in turn communicates with the object repository to accesses the object graph coπesponding to the state machine. The engine navigates the object graph and instracts the context object regarding the state transitions and/or actions that the present state ofthe state machine requires. Further understanding ofthe run- time environment of a system ofthe invention can be obtained by reference to FIGURE 13 above.
The use of an object graph for execution of a state machine can be perhaps better understood by reference to FIGURE 37 which schematically illustrates the execution of a call feature provided by a telecommunications system ofthe invention which utilizes an object graph to represent a state machine coπesponding to that call feature. A subscriber's phone 122 can interact with switching and access equipment 124, e.g., PBX, to create a connection with a switch process 126.
The description of the call features ofthe subscriber are stored as objects in the object repository 120 (FIGURE 36). These subscriber objects can be generated, for example, from a textual description of these features in a mark-up language, such as XML. A subscriber context object is instantiated that monitors progress ofthe subscriber's calls, and can transmit call events to a feature object instantiated in a feature context to provide particular call features to the subscriber. The feature object communicates with an engine which in turn navigates an object graph coπesponding to the call feature, which is stored in the object repository 120, and instructs the feature object the state transition and the actions, if any, that need to be performed in response to a received call event.
A system according to the invention provides a number of advantages. For example, defining state machines in a mark-up language provides a more generic implementation of state machine than code based counter parts. Further, such an approach results in an event driven system that is more flexible than code based systems. For example, a system ofthe invention can be more easily provisioned and implemented. Further, providing an object representation ofthe state machine results in faster processing compared with interpretive techniques.
Further aspects ofthe construction and operation ofthe illustrated embodiment, in particular, for example, system provisioning, feature classifications and interactions, and multi-party calling, can be better understood by referring to the following discussion.
Service Provisioning
Call features and services are provided by a set of collaborating feature components. In many cases it is necessary to provision several feature components in order to provision a single call service. In some cases, simply replacing an existing feature component with another provides a new feature. A service may require a collection of specific components or it may require one or more specific components, one or more of which are chosen from a particular feature classification.
There are well-defined inter-dependencies between the feature component classifications that describe how components of different classification relate to and interact, with one another. These inter-dependencies can be used to support decision making when configuring a particular service.
Each feature component is classified and assigned an identifier. From the EMS perspective, feature component identifiers are strings. The feature classifications and inter- dependencies as well as a basic POTS service configuration are described in more detail below.
Feature Classifications
Origination Request Handler
With reference to FIGURE 39, an origination request handler responds to a subscriber's attempt to place a call, invoke a vertical service feature, or invoke a special service. Origination request handlers typically provide feedback to the subscriber, such as dial tone, and gather a DTMF digit sequence that indicates the subscriber's intent. However, origination request handlers may provide unique behavior such as originating a call automatically, providing customized responses, etc.
An origination request handler is usually invoked by a subscriber lifting the telephone handset. However, an origination request handler may be invoked directly by other feature components. For instance, a feature that terminates by "re- originating" may invoke an origination request handler directly.
Each subscriber is provisioned, by definition, with one origination request handler. FIGURE 39 shows that the following two origination request handlers have been defined:
1. POTS Origination Request Handler — this feature provides the standard
"black telephone" response when a subscriber lifts the handset. This includes providing dial tone, collecting a dialed number, analyzing the dialed number, and • invoking the subscriber's call origination feature, a vertical service feature, or a special service.This feature is provisioned for each subscriber having basic POTS service.
2. Denied Origination Service — this request handler is provisioned for all subscribers that are prohibited from originating calls. Call Authorization Feature
With reference to FIGURE 40, a call authorization feature determines whether or not a specific call origination attempt is authorized. These features typically invoke one or more feature restriction components, which determine whether or not the specified call is subject to a restriction or subject to a class of restrictions, and report whether or not the call is authorized. Call authorization features may also provide alternative behaviors such as a PIN code authorization for specific call types.
Call authorization features are invoked as needed by origination request handlers and other features in order to determine whether or not a call is authorized. This may include circumstances wherein the call may occur at a later time. For example, a call authorization feature may be invoked to validate a call forwarding destination number when the subscriber specifies the number.
Each subscriber is provisioned, by definition, with one call authorization feature. For example, FIGURE 40 shows the following three such feature:
1. No Call Restrictions — his feature simply approves all calls. This feature is provisioned for all subscribers that have POTS Call Origination Service without any call restrictions.
2. Call Restrictions — this feature evaluates each provisioned restriction and reports the result. A call shall be authorized only if none ofthe provisioned restrictions apply. This feature must be provisioned whenever a subscriber has one or more call restrictions.
3. Call Restrictions with PIN Authorization — this represents an advanced call authorization feature that includes a PIN based restriction override capability.
Call Restriction Feature
With reference to FIGURE 41, a call restriction feature, operating in conjunction with subscriber attribute values, defines one or more prohibited calls or call types. A call restriction feature is invoked as a subroutine to report whether or not a specified call is prohibited.
Each subscriber may be provisioned with 0 or more call restriction features and associated attribute values. For example, FIGURE X schematically illustrates the following three call restriction features:
1. Code Restriction and Diversio
2. Toll Restricted
3. Outgoing Call Screenin
Call Origination Feature
A call origination feature originates and manages a call placed by a subscriber. A call origination feature selects and invokes a call routing function, based on call type, supports or directly provides call progress indications, and manages voice path.
Each subscriber may be provisioned with no more than one call origination feature. For example, FIGURE 42 illustrates a POTS call origination feature, provisioned for each subscriber having basic POTS service, that originates and approves POTS calls.
Vertical Service Feature
A vertical service feature is invoked in response to a dialed vertical service code, e.g., "*70". Vertical service features may be part of a larger service, e.g., Cancel Call Waiting, Activate Call Forward Busy Line, or may be a standalone feature, e.g., Customer Originated Trace (COTS).
A dialing plan defines zero or more associations between vertical services codes and vertical service features. Each subscriber should be provisioned with a dialing plan that provides appropriate vertical service code to vertical service feature associations.
FIGURE 43 provides a diagram depicting the following exemplary vertical service features:
1. COTS — this feature reports information about the most recently received call.
2. Cancel Call Waiting — this feature temporarily de- activates the Call
Waiting feature.
3. Call Pickup — this feature allows a subscriber to receive a call placed to another directory number.
4. Calling Number Delivery Blocking — this feature temporarily marks the subscriber's directory number as private thus prohibiting its display to a called party.
Termination Request Handler
A termination request handler usually responds to a call termination attempt by choosing the most appropriate call termination feature from the subscriber's provisioned call termination features for the circumstances present at the time. A temiination request handler chooses a feature by evaluating each terminating feature's activation criteria in sequence according to feature precedence. The call termination feature whose activation criteria are satisfied and has the highest precedence is invoked to terminate the call. However, a termination request handler may take direct action such as denying the call.
Each subscriber is provisioned with one termination request handler. By way of example, FIGURE 44 illustrates the following two termination request handlers:
1. POTS Termination Request Handler — this feature provides the standard "black telephone" response to a call termination request. This request handler selects and invokes the most appropriate call termination feature. This feature is provisioned for each subscriber having basic call termination service.
2. Denied Termination Service — this termination request handler refuses all call termination attempts. This feature is provisioned for each subscriber that is prohibited from receiving calls.
Call Termination Feature
A call termination feature provides a specific call termination behavior. Call termination behaviors include presenting a call to the subscriber, forwarding a call, refusing a call, etc.
FIGURE 45 schematically depicts the following exemplary call termination features:
1. Call Waiting — this feature presents a call to a subscriber when another call is already present and allows the subscriber to alternate conversation between the two calls.
2. Do Not Disturb — this feature, when active, refuses all calls.
3. Call Forward Busy Line — this feature, when active and the subscriber is busy at the time a call is presented, forwards the call to a previously specified directory number.
4. POTS Call Termination — this feature presents a call to the subscriber.
5. Call Forward All — this feature, when active, forwards all calls to a previously specified directory number.
6. Unidentified Caller Rejection — this feature, when active, refuses all calls wherein the calling party number is private, i.e., when the call's originator prohibits presentation ofthe calling party number. Alerting Feature
An alerting feature notifies a subscriber that an inbound call is present. In one embodiment, there exists the following three sub- classifications of alerting features:
1. Idle Alerting Features — notify the subscriber by ringing the phone. These features are invoked when the subscriber's handset is on hook.
2. Mid-Call Alerting Features — notify the subscriber by generating an audible tone during conversation. These features are invoked when the subscriber is connected with another call at the time the inbound call is presented.
3. Bounded Alerting Features — notify the subscriber that an inbound call is present and generate a "no answer" event if the subscriber does not "answer" within a pre- determined time limit. These features are further specialized into idle and mid-call altering features.
By way of example, FIGURE 46 depicts the following exemplary alerting features utilized in one embodiment ofthe invention:
1. Basic Idle Alterting,
2. Calling Number Delivery,
3. Calling Name Delivery,
4. Basic Call Alerting,
5. Call Waiting with Calling Number, and
6. Call Waiting with Calling Name. Originating Feature Interactions
FIGURE 47 provides a diagram that depicts the relationship between boundary events, e.g., offhook, and the classifications of features, as well as relationships among various originating feature classifications defined in one embodiment of the invention. In particular, FIGURE X shows how a feature handler resolves potential conflicts among different features. A feature handler, preferably implemented in a mark-up language, is chosen based on the feature passed to a context object by a subscriber terminal (or the network terminal).
For example, an Origination Request Handler is invoked in response to an off hook event. An Origination Request Handler employs a Dialing Plan for dialed number analysis and translation. An Origination Request Handler may invoke a Vertical Service Feature in response to a dialed vertical service code. Alternatively, an Origination Request Handler may invoke a Special Service in response to a dialed special service code, or may invoke a Call Authorization Feature in response to a dialed directory number.
A Call Authorization Feature may use one or more Call Restriction Features to identify unauthorized calls or call types. An Origination Request Handler may invoke a Call Origination Feature to place an authorized call..
A Mid- Call Origination Request Handler may be invoked in response to an event, e.g., flash hook during a call. A Mid-Call Origination Request Handler utilizes a Dialing Plan for dialed number analysis and translation. A Mid- Call Origination Request Handler may invoke a Vertical Service Feature in response to a dialed vertical service code. Alternatively, a Mid-Call Origination Request Handler may invoke a Special Service in response to a dialed special service code. Further, a Mid- Call Origination Request Handler may invoke a Call Authorization Feature in response to a dialed directory number. A Mid -Call Origination Request Handler may invoke a Mid-Call Origination Feature to place an authorized call.
Terminating Feature Interactions FIGURE 48 provides a diagram that depicts the inter- action of the terminating feature classifications. Similar to an origination request handler, a termination request handler processes call terminal events and ensures that no conflict arises among various features.
Multi-Party Call Scenario
The following example depicts the evolution of call and feature processing objects configuration starting with the origination of a two-party call and ending with a three-way call.
Subscriber Idle
FIGURE 49A provides a diagram that depicts the objects representing a particular subscriber in an idle state. With reference to both FIGURES 49A and 49B, a SubscriberTerminai is a non-persistent object representing the current state of a subscriber. Each SubscriberTerminai contains a one-way reference to a persistent DirectoryNumber object. A Directory-Number object is the persistent representation of a particular subscriber including the subscriber's directory number string, the subscriber's provisioned features, and so forth. Each SubscriberTerminai also has a two-way association with a servicePort.
A ServicePort provides the associated SubscriberTerminai with an interface to the underlying switch. It converts the terminal's commands into MEGACO transactions and/or call signaling messages. It also converts MEGACO notifications and call signaling messages into events for processing.
Subscriber Offhook
FIGURE 50 provides a diagram that depicts changes that occuπ after the subscriber lifts the handset to originate a call or invoke a vertical service feature element.
When an offhook event is observed and the subscriber is in the idle state, the SubscriberTerminai invokes the subscriber's origination request handler. An origination request handler is a provisioned feature that defines how to proceed when offhook occurs from the idle state.
To execute the origination request handler, the SubscriberTerminai obtains the subscriber's origination request handler feature ID from the DirectoryNumber, and constructs an independentcontext object, and passes the feature ID to this object. Upon construction, the independentcontext object obtains a pointer to the objects that define the specified feature's state machine, initializes the processing engine, and executes the feature from the start state with the start event.
The independentcontext has a two-way, parent-child relationship with the SubscriberTerminai. The parent/child relationship is established primarily for memory management and message routing purposes. Further, the call/terminal relationship reflects to whom each object sends messages (e.g., terminal to context object for new non-boundary events and/or context to terminal for commands). This association is established upon construction of the independentcontext and supports the following capabilities:
1. The SubscriberTerminai is responsible for releasing the memory allocated to each Independentcontext it creates. However, a SubscriberTerminai cannot determine independently when an independentcontext can be deleted.
Each feature defines its own lifespan. An independentcontext remains viable until each of its associated feature elements has concluded. Therefore, the last feature element to conclude must execute an action instructing the
SubscriberTerminai to delete the Independentcontext. This instruction is always conveyed from child to parent .
2. Messages exchanged between originating and terminating features are routed from object to object using the subscriberTerminai's IDT and CRV plus the destination feature's independent context ID. Each message is dispatched first to the subscriberTerminai specified by the IDT and CRY values. The SubscriberTerminai examines the independent context ID and either processes the message, when the value is 0, or forwards the message to the appropriate independentcontext, when the value is greater than 0.
The independentcontext also has a two-way call-terminal relationship with the SubscriberTerminai. This association supports propagation of events and commands related to call and feature processing. Events originating from the underlying CSX switch, received via the ServicePort, are propagated from terminal to call. Events originating from peer features are communicated directly to the destination independent context. Commands are always propagated from call to terminal.
Subscriber Dialed a Directory Number FIGURE 51 provides a diagram that depicts the changes that occuπed after the subscriber dialed a valid directory number.
Upon receiving the dial number, the "Orig Req Handler" calls upon the digit analyzer to classify the digit sequence. A subscriber may dial a destination code (directory number), a special service code, or a vertical service code depending upon the provisioned dialing plan. When the digit sequence is classified as a directory number and the call is authorized, the "Orig Req Handler" invokes (calls) the subscriber's call origination feature. In this example, the subscriber's provisioned call origination feature is "POTS Call Orig".
As shown here, the "Orig Req Handler" has invoked the specified feature using a "function call" model. As the name implies, the called feature is stacked on top the calling feature. Events are propagated from the top ofthe stack down. Each event is presented to each feature in this manner until a feature consumes the event, i.e., reacts to the event, or the end ofthe stack is reached. If the stack is exhausted, the event becomes stale. The subscriberTerminai defines the handling of stale events. Call Request Routed From Calling to Called Subscriber
FIGURE 52 illustrates a diagram depicting the changes that occurr after the called subscriber has been identified and presented with a call termination request.
The call origination feature calls the router to route the call to the appropriate destination; in this case another local subscriber. The router identifies and forwards a terminate call request to called subscriber. Upon receiving a terminate call request, a SubscriberTerminai invokes a termination request handler. A termination request handler is a provisioned feature that defines how to proceed when a terminate call request is received.
Invocation of a termination request handler is similar to invocation of the "Orig Req Handler". In this scenario, the subscriber's termination request handler is POTS Termination Request Handler. This particular request handler selects and invokes the appropriate call termination feature.
Note that a one-way originator-terminator relationship has been established from the called subscriber, the terminator, towards the calling subscriber, the originator. This relationship supports message propagation between originator and terminator. However, it is one-way at this point because the originator has not yet learned the terminator's identity.
Note also that a call-terminal association has not yet been established between the SubscriberTerminai and the independentcontext. Many call termination features don't present the call to the subscriber; there are various features that refuse the call and various features that forward the call. Call termination features that don't present the call do not require control of the subscriber's access connection and therefore don't need to occupy that active call role. A feature only needs to occupy the active call role when and if it needs control ofthe subscriber's access connection. Therefore, the termination request handler defers creation ofthe call- terminal association to the selected termination feature.
The CallDataBlock, depicted in this diagram as well as in previous diagrams, describes a particular call leg between an originator and terminator. This object contains all attributes that must be shared between the originator and terminator; attributes such as the originator and terminator ID information, call answer date and time, call disconnect date and time, and so forth. This object is carried with each message exchanged between originator and terminator to maintain synchronization and to provide up to date information.
Terminating Call Presented to Called Subscriber FIGURE 53 presents a diagram that depicts an exemplary stable two-party call. A selected call termination feature, in this case POTS Call Termination, is invoked using the function call model. This particular feature presents the call to the subscriber. It therefore establishes the call-terminal association, rings the phone, and sends a call proceeding message to the originator.
With the call proceeding message, the terminator's ID information passes to the originator in the CallDataBlock and the originator- terminator relationship becomes bi-directional. This message also enables call progress indication to the originator; since this is a local subscriber-to-subscriber call audible ringing will be applied to the originating termination.
When the called subscriber answers, an answer indication passes from the terminator to the originator. This message carries the answer date and time and informs the originator that ringback can be terminated. At this point, a stable two- party call has been established.
Calling Subscriber Executes a Mid-Call Origination
FIGURE 54 presents a diagram that depicts the changes that occur after the originating subscriber issues a flashhook. An active call feature may consume a flashhook or the flashhook may represent a mid-call origination attempt. A mid-call origination attempt is identified when, and if, a flashhook event becomes stale.
In this scenario, the flashhook event was propagated to the active call but was ignored because it is not meaningful to POTS Call Origination or to "Orig Req Handler". The event became stale so the subscriberTerminai created an independent context and invoked the mid- call origination request handler; as seen here the subscriber's mid-call origination request handler is "Mid-Call Orig Req".
By definition, an origination request handler takes confrol ofthe subscriber's audio connection in order to provide feedback (tones) to and collect information (digits) from the subscriber. A mid- call origination request handler is an origination request handler. Therefore, "Mid- Call Orig Req" assumed the active call role.
In assuming the active call role with respect to the SubscriberTerminai, a mid- call origination request handler must also assume the role of terminal with respect to the existing call and inform the existing call that a multi-party feature is now present. The behavior of a two-party feature is altered by the presence of a multi-party feature in that it must terminate unconditionally if and when the far end party hangs up. The mid-call origination request handler and any subsequent mid-call origination feature must know if and when the existing call terminates. By assuming the tenninal role with respect to the existing call, the mid-call origination request handler places itself in the flow of information pertaining to the existing call. Any subsequent mid-call origination feature inherits these associations; terminal with respect to the previously existing call and call with respect to the subscriberTerminai , thus satisfying its need to be in the information flow regarding the existing call.
The respective features each retain responsibility for disposition of their respective call legs and call detail recording.
Mid-Call Origination Feature Invoked
FIGURE 55 illustrates a diagram that depicts the changes that occur after the subscriber dials a directory number.
The dialed digit sequence is classified as a destination code by the digit analyzer. Thus, the subscriber's mid-call origination feature is invoked. A mid-call origination feature is a provisioned feature that is invoked when a subscriber originates a call while participating in a two-party call. As shown here, the subscriber's mid-call originating feature is three-way calling. A second context objectl, e.g., the context object of second call, serves as proxy terminal for the context object ofthe first call., thereby ensuring consistency in event processing.
The call origination aspects of a mid-call origination feature are similar to a two-party call origination feature.
Call Routed to Called Subscriber FIGURE 56 presents a diagram that depicts the changes that occur after the second call is routed to the called subscriber.
Processing on the called subscriber's side is identical to that observed with the two-party call since the called subscriber is responding to a terminate call request. Features, object configuration, and associations are similar to those on the caller's side.
Terminating Call Presented to Called Subscriber
FIGURE 57 depicts the objects' configuration once the three-way call is completely established.
The original call's configuration remains unchanged except for the substitution of the SubscriberTerminai by the Independentcontext supporting the three-way call. The three-way call feature acts as terminal to the previously existing call and as originator to the second call. The configuration ofthe two terminators is similar.
FIGURE 58 schematically illustrates selected processes and their interactions in a system ofthe invention. The inter-process communications can be provided by Corba orb, particularly within a TSP node. In addition, message transport between element management system (EMS) and a TSP node can also be provided by Corba orb. The following appendices provide further details regarding the method and system ofthe invention.
Described above are systems and methods meeting the desired goals. Those skilled in the art will, of course, appreciate the illustrated embodiment is merely and example ofthe invention and that modifications can be made thereto without departing from the scope ofthe invention. By way of non- limiting example, it will be appreciated that markup languages other than HTML, XML, CPML and so forth, as described above, may be utilized in practice ofthe invention. By way of further example, it will be appreciated that the methods and systems may be implemented with programming structures other than OOP objects.
Appendix A: Class 5 Feature List
This appendix provides an exemplary list of class 5 features that a TSP system of the invention can implement.
I . Basic 911 Service 2. CALEA/Wire Tap (future release)
3. 800 Number Service (800NS)
4. 900 Number Blocking
5. Abbreviated Dialing (future release)
6. Advance Do Not Disturb (ADND) 7. Automatic Callback (AC)
8. Automatic Recall (AR)
9. Call Forwarding Busy Line (CFBL)
10. Call Forwarding Don't Answer (CFDA)
II. Call Forwarding Variable (CFV) 12. Calling Number Delivery (CND)
13. Calling Number Delivery Blocking (CNDB)
14. Calling NAMe delivery (CNAM)
15. Call Transfer (CT)
16. Call Waiting (CW) 17. Cancel Call Waiting (CCW)
18. Denied Origination
19. Denied Termination
20. Distinctive Ringing/Call Waiting (DR/CW)
21. Do Not Disturb (DND) 22. Intercept treatment - announcement and tone
23. Local Number Portability (LNP)
24. Message Waiting Indication (MWI) - not supported in the initial release, no plan for voice mail feature.
25. Multi-line hunt group 26. Multi-PIC
27. Operator Service
28. Selective Call Forwarding (SCF)
29. Selective Call Reject (SCR) 30. Series Completion
31. Speed Calling (SC)
32. Three- Way Call
33. Toll Restriction
34. Un-identified Call Reject (UCR)
Appendix B: Feature Analysis
This appendix provides a brief description ofthe a number of services listed in appendix A. The descriptions are extracted from Bellcore LSSGR.
Figure imgf000098_0001
Extracted from LSSGR— begin
This feature is a terminating-only service that allows a subscriber to receive message calls originating within specified service areas, with the call charges billed to the called party instead ofthe calling party. The service is provided to one or more dedicated access lines.
The 800 service billing information and appropriate service measurements are registered by the Automatic Message Accounting (AMA) recording arrangement serving the terminating exchange. When the billing arrangement used by the switching system is via a "connection to Centralized Automatic Message Accounting (CAMA) offices" (55-01-0300), the 800 service billing information is recorded on auxiliary equipment separate from the CAMA billing arrangement. Extracted from LSSGR- end Event: 800NS (DialComplete + dialed number is prefixed with 800)
Seizure
Action: 800NS
Initiate an 800 service TCAP query and starts a timer
When receiving a successful TCAP response, return the billing DN and routing DN and terminate the feature
When receiving a failed TCAP response, provide the instruction for intercept treatment and terminate the feature
If the TCAP query timer expires before a response is received, provide the instruction for intercept treatment and terminate the feature Seizure
Generate AMA record if the access line is of type INWATS
Interaction: INWATS-AR
Activation of AR is not allowed on INWATS line.
Figure imgf000099_0001
Extracted from LSSGR- begin
The basic 911 emergency service feature provides a 3-digit universal telephone number (911) that gives the public direct access to an emergency service bureau, usually without charge to the calling subscriber. The emergency service is one-way only, terminating to the service bureau. The emergency service bureau is usually located within a police department, although in some communities it is located in a fire department or in an independent agency serving as a communications center. A given local switching system should serve no more than one emergency service bureau. When the originating line and the emergency service bureau are served by the same switching system, the bureau has the capability of holding and disconnecting the connection and monitoring the supervisory state, and ringing the originating station back.
When the local switching system is in an area with expanded emergency service (E911) served through a tandem switch, the emergency call is advanced to the tandem switch with calling line ANI. After the attendant answers a line originated call and the conversation path is established, the calling line should not be released even if the disconnect signal is received from the calling, until a disconnect signal is received from the service bureau. It is also desirable to release the call after approximately 45 minutes have elapsed since the caller disconnect signal has been received. This time-out period begins again on receipt of an emergency ring back request from the operator (optional service). On time-out, the calling line should be idled, reorder tone should be applied to the service bureau and a message printed to inform telephone company personnel ofthe condition.
A disconnect signal from the service bureau should result in a forced-disconnect of an established connection at any time, independent ofthe calling line status. Forced-disconnect should occur immediately on detection of a valid disconnect signal from the service bureau for both line and trunk originated calls.
On trunk originated 911 calls, an on-hook signal should be sent toward the calling end. Normal called party timed disconnect in the originating office should then release the trunk portion ofthe connection. Extracted from LSSGR- end
Event: 911 (DialComplete + dialed string =='911 ')
Action: Enable the localRelease event
Enable the remoteRelease event
When the localRelease event is detected, apply ring signal on the originator local loop and start a 45-minute timer. Upon expiration ofthe 45-minute timer, release the call. When the remoteRelease event from the 911 operator is received, cancel the timer, disable the localRelease and remoteRelease events, and terminate the 911 feature.
Interaction: 911 - 4_ and 8_ party line On ringback, all parties should be rung, interleaved, until someone answers.
911-DOS (Denied Originating Service)
If these two features are allowed to be assigned to the same line, DOS should take precedence.
911-DTS (Denied Terminating Service)
Ringback should be performed when requested by the service bureau.
911- Code Restriction and Diversion 911 should not be screened out, so a line with code restriction can always call 911.
911- Series Completion
The switching system should not be able to series complete to 911.
911- CFBL
CFBL forwarded DN cannot be 911.
911- CFDA
CFDA forwarded DN cannot be 911.
911- CFV
CFV forwarded DN cannot be 911.
911- Make Busy Key Ringback should be performed regardless ofthe make busy condition.
911- CW
During a call to 911 attendants, CW is inhibited.
911- TWC (including usage sensitive TWC)
During a call to 911 attendants, TWC cannot be used.
In a normal 2 -way call, a TWC subscriber places the call on consultation hold and initiates a 911 call. It is desirable that the TWC subscriber can flash once to establish a TWC connection. All subsequent flashes should be ignored. Design note: 911 FLO should handle all call progress events so that it can control the handling of these events.
Figure imgf000102_0001
Extracted from LSSGR- begin
Selective Call Rejection allows customers to block subsequent calls from a calling DN after receiving a harassing call. After receiving an undesired call, the customer dials a code that places the last calling party's DN on a list for rejection. Subsequent calls from the rejected party are intercepted and routed to an announcement. Selective call rejection also enables customers to enter additional DNs onto the list in a manner similar to selective call forwarding or VIP alert (01-02-1270). Calls from these parties are also intercepted and routed to a rejection announcement. Extracted from LSSGR- end
Event: Seizure
Action: Compare the calling number with the SCR list
Play the SCR announcement/tone and release the call if the calling DN is on the list Continue the call termination treatment otherwis e
Note: the administration ofthe SCR list is part of SLE, and therefore it uses the procedures defined for SLE.
Interaction: SCR takes precedence over other features at seizure event. If a call is rejected due to the calling number is on the SCR list, all other features at seizure event are disabled.
SCR-AC
SCR customers can activate Automatic Callback (AC) to numbers on their SCR lists. Ringback for such activations is never blocked; rather, it is given to the customer.
SCR-AR
An incoming call with calling number on SCR list will be rejected and the incoming memory slot will not be updated.
SCR-SCF
SCR overrides SCF.
Figure imgf000103_0001
Extracted from LSSGR- begin
The Do Not Disturb feature is activated/deactivated by the customer. It routes calls destined to the customer's DN either to a special do not disturb announcement or to a special tone. The announcement may return answer supervision. An option ofthe service provides that the calling party may dial a prearranged Personal Identification Number (PIN) while listening to the announcement/tone. The local switching system collects the DTMF digits and, if they correspond to the customer-specified number, the calling party will override the do not disturb function and receive normal terminating treatment. The customer may dial the activation code to enable this service, dial the deactivation code to disable the service, or dial the PIN change code to initially enter or modify the number. Extracted from LSSGR- end
Event: Seizure
Action: DND Meta- feature Basic treatment —
Play the DND announcement and release the call Advanced treatment -
Play the DND + collect PIN announcement/tone to prompt of user input Collect digits
Allow the call to go through if the collected digits match the PIN Reject the call otherwise
Interaction:
Figure imgf000103_0002
Extracted from LSSGR - begin
Cancel call waiting is a feature that allows the customer with CW service to inhibit the operation of CW for one call. The customer dials the cancel call waiting code, obtains recall dial tone, and places a call normally. During this call, CW service should be inactive so that anyone calling the CW customer should receive the normal busy treatment, and no CW tones should interrupt the customer's call. Extracted from LSSGR- end Event: DialComplete
Action: CCW Meta-feature
At DialComplete detect CCW
Remove CW FLO from busy event stack
Enable local release event
Upon detection of local release, place CW FLO back to busy event stack
Terminate
Interaction: CCW-TWC
If the initiator of TWC hangs up with a party on hold, he/she should be rung back and connected to the held party on answer. If the initiator's CW was disabled prior to hanging up on the held party, it should remain disabled after the customer answers the ringback.
Figure imgf000105_0001
Extracted from LSSGR— begin
CW is a feature whereby a line in the talking state is alerted by a call waiting tone when another call is attempting to complete to that line. The call waiting tone is only audible to the line with the CW feature activated. Audible ringing is returned to the originating line. The service also provides a hold feature that is activated by a switchhook flash. Consecutive flashes allow the customer (with the service activated) to alternately talk to the original and the new calling party. If the customer with the service activated hangs up while one party is on hold, the customer with the service activated is automatically rung back, and upon answer is connected to the held party. Extracted from LSSGR- end
Event: Busy
Action: Apply the call waiting tone
Enable hookflash, localRelease, and remoteRelease events
At hookflash event, swap the speech path to the other call leg
At localRelease event, disconnect the remote talking party, apply ringing signal to the endpoint, and enable answer event.. At the subsequent answer event, disable hookflash, localRelease, remoteRelease, and answer events, and terminate the feature.
At remoteRelease event, swap the speech path to the other call leg if the release event is from talking party. And then disable hookflash, localRelease, and remoteRelease events. Finally terminate the feature.
Interaction: CW- SC (Series Completion) A new call terminated on a CW user, if there is only one existing call terminated on the user's line and the call is in talk stage, CW overrides SC.
A new call terminated on a CW user, if there is only one existing call terminated on the user's line and the call is not in talk stage, SC overrides CW.
A new call terminated on a CW user, if the user uses Make-Busy key to become busy, SC overrides CW.
A new call terminated on a CW user, if there are more than one existing calls terminated on the user's line, SC overrides CW. '
CW- CFBL If a line has CW and CFBL, CW should take precedence, unless
1. the existing call is not in talk state
2. the Make-Busy key is used by the user to become busy
3. there are more than one calls on the line
CW- CFDA
CW and CFDA can be assigned to a line and be active simultaneously. When a line is busy and in talk state, an additional call is offered to the line, the call should be offered under CW and CFDA timer should be started. If the CFDA timer expires before the user answers, the additional call should be forwarded.
CW- Make-Busy Key
The Make-Busy key should take precedence over CW. If CFBL or Series Completion is also assigned to the line, see the interaction defined for these two features.
CW- CCW
CW and CCW should not be active simultaneously.
CW-TWC
If both features are assigned to a line, the flash after the call waiting tone should be freated as the request to initiate the TWC. Also if the party to whom the customer was talking hangs up and another is held, the flash should be recognized as a request to establish a talking connection with the held party. The initiator of TWC should not receive any CW treatment while in a TWC mode or while a party is on hold.
When a user is in a TWC, but not the TWC initiator, CW overrides TWC. The additional call attempt should be treated using the CW treatment.
CW-USTWC
The initiator of TWC with USTWC activated should not receive Call Waiting(CW) calls. The other parties to TWC should be able to receive CW Calls.
In flash interpretation, CW should take precedence over USTWC.
CW-911
During a call to a 911 attendant, the CW feature should not take place. CW-Operator service
CW should take precedence over operator recall when the system detects a flash after CW tone is applied to the connection. Subsequent flashes control CW; no operator recall should be allowed until a two-way connection is reestablished.
Appendix C
This appendix provides an exemplary supplementary document type definition for CPML. It further provides examples of CPML+ scripts for call control, and an exampfe of an endpoint' s feature subscription in CPML+. Supplementary Document Type Definition for CPML
<! ENTITY % result 'result (true I false) "trueΛ
<! ENTITY % eventld 'id (OFFHOOK I ONHOOK DIGITS I PROCEEDING I ALERT I ANSWER | LOCALRELEASE | REMOTERELEASE | ) #REQUIRED '>
<! ENTITY % param 'param (CDATA I none)
"none" ' > <! ENTITY % testMethod 'method (testDNISPrefix| testDNISPostfixl testDNISSubString | testCFBLActive | testCFDAActive I ....)
#REQUIRED' > <!ENTITY % execMethod 'method (makeCall | collectDigit | acceptCall | ans erCall | releaseCall abortCall I applyTone I collectDigits j playAnnouncement | .... )
#REQUTRED' >
<! ELEMENT script (state+) > <! ATTLIST script id (CDATA) #REQUIRED billingld (CDATA) "none" >
<! ELEMENT state (event+) > <! ATTLIST state id (CDATA) #REQUTRED> < ! ELEMENT event (do*) > <!ATTLIST event _ eventId : billingld (CDATA) "none" >
< ! ELEMENT do (test?, (execute! link) +, nextState?)>
<! ELEMENT test>
<!ATTLIST test .testMethod;
%param; .result; >
< ! ELEMENT execute> <!ATTLIST execute .execMethod;
.param; billingld (CDATA) "none" >
<! ELEMENT nextState> <! ATTLIST nextState id (CDATA) #RΞQUIRED>
<! ELEMENT loadScript> <! ATTLIST loadScript target (CDATA) #REQUIRED data event I none) "none">
<! ELEMENT userProfile (event+) >
< ! ATTLIST userProfile name (CDATA) #REQUIRED uid (CDAT I none) #REQUIRED group (CDAT I none) "none" system (CDATA) #REQUIRED>
Examples of Call Control CPML+ scripts
<script id=" CallControlScript" >
< -- This script has one single state />
<state id="idle">
<event id="offhook" > <do>
<loadScript target=" OriginationScript" data=event/> </do> </event>
<event id=" seizure" > <do>
<loadScript target="TerminationScript" data=event/> </do> </event>
</state>
</script>
<script id="OriginationScript">
< -- Implements Origination Basic Call Model />
<state id="idle">
<event id="offhook" >
<do>
<execute method="timeStampOffhook" param="none"/>
<execute method="processOffhookEvent" param="none"/> </do>
<do>
<test method="testDNISReceived" param="none" result="true"/>
<execute method="routeCall" >
<nextState id="awaitAns er "/> </do> </event>
</state>
<state id=" awaitAnswer" >
<event id="remoteAnswer">
<do>
<execute method="timeStampRemoteAnswer" param="none"/> <execute method="connectSpeechPath" param="none"/>
<nextState id="connect "/>
</do> </event>
<event id="release">
<do>
<execute method="timeStampRelease" param="none"/>
<nextState id="_terminate"/>
</do> </event>
</state>
<state id=" connect" >
<event id=" release" > <do>
<execute method="timeStampRelease" param="none"/> <execute method="releaseRemoteParty" param="none"/> <execute method="disconnectSpeechPath" param="none"/> <nextState id="_terminate"/> </do> </event>
<event id="remoteRelease" > <do>
<execute method="timeStampRelease" param="none" /> <execute method=" localRelease" param="none"/> <execute method="disconnectSpeechPath" param="none"/> <nextState id="_terminate"/> </do> </event>
</state>
</script>
An example of an endpoint's feature subscription in CPML+
< -- CPML for subscriber Simon St. Laurent - with Message Waiting, Call Forwarding Don't Answer and Call Waiting features />
<useProfile name="Simon St. Laurent" uid="abed- 1234 -gbdc-4566-143333" group="St. Laurent Family" system="LATA101-Area2"> <event id=offhook> <do>
<execute method=" incrementOffhookCount" > </do> <do> <test method="isMessageWaiting" result="true"/> <-We can use else structure here
<execute method="applyTone" param="stutterTone" > <nextState id="_terminate"/> </do> <do>
<test method="isMessageWaiting" result="false"/> <execute method="applyTone" param="dialTone"> <nextState id="_terminate"/> </do> </event>
<event id=911Event> <do> <execute method="runFSM" param="911FSM" > <nextState id="_terminate"/>
</do> </event>
<event id=dialComplete> <do>
<test method="is800Dialed" result=" true" /> <execute method="runFSM" param=" 800FSM" > ■nextState id="_terminate"/> </do> <do> <test method="is900Dialed" result="true"/>
<execute method=" releaseCall" param="900 number blocked" > <nextState id="_terminate"/> </do> <do> <test method="isCFDAActivationDialed" result="true"/>
<execute method="runFSM" param="CFDAActivationFSM" > <nextState id="_terminate"/> </do> <do> <test method="isCFDADeactivationDialed" result="true"/>
<execute method="runFSM" param="CFDADeactivationFSM"> <nextState id="_terminate"/> </do> </event>
<event id=CFDA_Timer> <do>
<execute method="routeCall" param="5551212"> <nextState id="__terminate"/> </do>
</event>
<event id=busy> <do> <execute method="runFSM" param="CWFSM" >
<nextState id="_terminate"/> </do> </event> </useProfile> Appendix D
This appendix presents call waiting CPLM+ scripts, and a call waiting logic that can be better understood with reference to FIGURE 34. Example of Call Waiting CPML+ scripts
<script id="CallWaitingFeature">
<state id=" Initial" >
<event id="busy">
<do>
<execute method="incrementCallWaitingAttempt" param="none"/>
<execute method="applyTone" param="CW"/>
<execute method="enableCallΞvent" param="hookflash, localRelease, remoteRelease"/>
<execute method="setFirstCallLegHandle" param="none"/>
<execute method="setFirstCallLegActive" param="none"/> <nextState id="Alert"/>
</do> </event>
</state>
< state id=" lert" >
<event id="hookflash" > <do>
<execute method="setSecondCallLegHandle" param="none"/> <execute method="swapToSecondCallLeg" param="none"/> <execute method="setSecondCallLegActive" param="none"/>
<nextState id="Conn"/> </do> </event>
<event id=" localRelease" > <do>
<execute method="disableCallEvent" param="hookflash, localRelease, remoteRelease" />
<nextState id="_terminate"/> </do> </ event >
<event id="remoteRelease" > <do> <execute method="disableCallEvent" param=" ookflash, localRelease, remoteRelease" />
■nextState id="_terminate"/> </do> </event>
</state>
< state id="Conn">
<event id="hookflash"> <do>
<test method="isFirstCallLegActive" result="true"/> <execute method="swapToSecondCallLeg" param="none" />
<execute method="setSecondCallLegActive" param="none"/> </do> <do>
<test method="isSecondCallLegActive" result="true"/> <execute method="swapToFirstCallLeg" param="none"/>
<execute method="setFirstCallLegActive" param="none"/> </do> </event>
<event id=" localRelease" > <do> <execute method="releaseRemoteTalkingParty" param="none"/> <execute method="enableCallEvent" param="offhook" />
<nextState id="Rung"/> </do> </event>
<event id="remoteRelease" > <do>
<test method="isReleasingPartyTalking" result="true"/> <execute method="connectToHeldParty" param="none" /> </do> <do> <execute method="disableCallΞvent" param="hookflash, localRelease, remoteRelease" />
<nextState id="_terminate"/> </do> </even >
</state>
<state id="Rung">
<event id="offhook"> <do>
<execute method="disableCallΞvent" param="hookflash, localRelease, remoteRelease , offhook" />
<nextState id="_terminate"/> </do> </event>
</state>
</script>
Call Waiting Feature Logic
(CallWaitingLogic
//Initial state (Initial ( busy
( () //predicate ( //method incrementCallWaitingAttempt () ; setFirstCallLegHandle ( ) setFirstCallLegActive () applyTone (cwTone) enableCallEvent (hookflash, localRelease, remoteRelease) ) (Alert) //next state
) ) ) //end of Initial state
//Alert state
(Alert ( hookflash ( () //predicate ( //method setSecondCallLegHandle ( ) swapToSecondCallLeg ( ) setSecondCallLegActive ( )
(Conn) / /next state
)
) ( localRelease
( () //predic ;ate
( //method disableCallEvent (hookflash, localRelease, remoteRelease) )
(_terminate) //next state
) ( remoteRelease ( () //predicate ( //method disableCallEvent (hookflash, localRelease, remoteRelease) )
(_terminate) //next state ) ) ) //end of Alert state
//Conn state
(Conn ( hookflash ( (isFirstCallLegActive () ) //predicate ( //method swapToSecondCallLeg () setSecondCallLegActive ( ) )
(Conn) //next state ) ( (isSecondCallLegActive () ) //predicate ( //method swapToFirstCallLeg ( ) setFirstCallLegActive () ) (Conn) //next state
) )
( localRelease ( () //predicate ( //method releaseRemoteTalkingParty ( ) enableCallEvent (offhook) )
(Rung) //next state )
)
( remoteRelease ( (isReleasingPartylnTalkO ) //predicate ( //method connectToHeldParty ()
) () //next state
) ( () //predicate
( //method disableCallEvent (hookflash, localRelease, remoteRelease) )
(_terminate) //next state ) )
) //end of Conn state
//Rung state (Rung ( offhook ( () //predicate ( //method disableCallEvent (hookflash, localRelease, remoteRelease , offhook) )
(_terminate) //next state ) ) ) //end of Rung state
) //end of CallWaitingLogic
Appendix E: TMN Compliance
Telephone service providers, e.g., CLEC and ILEC, use many Operations Systems (OSs) to provide centralized support for the maintenance and administration ofthe telephony network equipment. More often than not, the network equipment are obtained from different vendors all over the world. Thus, the tasks of incorporating heterogeneous network equipment and providing seamless end-to-end services to customers have become very challenging. Telecommunications Managed Network (TMN) recommendations are defined by ITU in the M.3000 series to provide a framework for a standardized mechanism to manage the networks. TMN enables the service providers to achieve interoperability across all managed networks over heterogeneous network equipment.
In the TMN architecture, a Network Element (NE) contains manageable information of a network equipment that is monitored and controlled by an OS. In order to be managed within the scope of TMN, an NE must have a standard TMN interface, which is the Common Management Information Protocol (CMIP). If an NE does not have a standard interface, the NE can still be managed via a Q- Adapter. Currently two Q-adapters are supported; TL1 Q- adapter and SNMP Q- adapter.
SNMPv3 has been chosen as the network management protocol for TSP and CSX, which renders the TSP/CSX system a TMN manageable network equipment. SNMPv3 offers the acknowledgement mechanism to the message originator, which is required in the TMN architecture.
With reference to FIGURE 35, TMN comprises layers of building blocks that provide overall epitome of the management issues and functions of TMN. TMN includes a network element layer, an element management layer, a network management layer, a service management layer, and a business management layer.
The network element layer presents the manageable information that is managed and controlled by OSs. The MIBs of TSP/CSX, the SNMP proxy agent on TSP, and the SNMP Q-adapter reside in this layer. Through the SNMP Q-adapter, TSP and CSX are TMN enabled. TSP/CSX will be SNMPv3 compliant. The element management layer manages one or multiple NEs. This layer deals with, for example, the configuration data, logs, statistics of one or multiple network elements. The Network Management System (NMS) in TSP provides the functions of this layer. In some embodiments, however, the element management layer will not be TMN conformant. That is, it does not provide Q3 interface to communicate with the network element layer and network management layer. NMS is the tool to provision the operation and support of TSP/CSX.
The network management layer has the managed view of the entire network. It coordinates all network activities and supports the service management layer functions via Q3 interface.
The service management layer utilizes information presented by network management layer to manage contracted service to existing and potential customers. This is the basic point of contact with customers for provisioning, accounts, quality of service, and fault management. It is also the key point for interactions with service providers and other administration domains. This layer communicates with the network element layer and element management layer via Q3 interface.
The business management layer includes high-level planning, budgeting, goal setting, executive decisions, business level agreements, etc.
Appendix F
This Appendix provides an example of a reference lexical structure for defining a state machine.
<! --
Element : LOGIC Summary : A logic represents either a state machine or a rules machine structure .
This element exist to let us handle both state and rules machines in the same fasion.
A rules set specification defines the behavior of a stateless logic .
A finite state machine specification defines the behavior of state-full logic elements .
-->
<!ELEMENT LOGIC ( FSM ) >
<!ATTLIST LOGIC Name NMTOKEN #REQUIRED >
Element : FSM (Finite State Machine)
Summary : The State Machine is composed of a collection of states. These states specify behavior that defines the state machine. The state machine CPML element has an attribute of the initial state for this machine.
Validation : The inital state attribute shall be validated against the child elements of FSM to make sure that the initial state is defined.
-->
<! ELEMENT FSM ( (STATE+, END_STATE*) ) > <!ATTLIST FSM InitState NMTOKEN #REQUIRED >
Element : STATE
Summary : A State is composed of a collection of transitions. Each state element has a name attribute which is used to identify the state. Example : This is an example of a state with the logical name Initial.
<STATE Name=" Initial "> - ->
<! ELEMENT STATE ( TRANSITION+ ) > <!ATTLIST STATE Name NMTOKEN #RΞQUIRED > Element : END STATE
Summary : An end state is a state that has no transitions. Each state element has a name attribute which is used to identify the state.
Example : This is an example of a end state.
<END_STATE Name="Stop" > - - >
<! ELEMENT END_STATE EMPTY >
< "ATTLIST END STATE Name NMTOKEN #REQUIRED >
Element: TRANSITION
Summary: A transition belongs to a state. These are the pathways out of that state, given an event. If we get an event we will take the transition associated with that event from the current state to another state. A transition has a set of sequences. Once a sequence is able to execute successfully we will stop testing the other sequences, and will transition to the next state defined by that sequence.
Example: If we are in the "SI" state and we get an event "OneBit" that event will trigger the execution of the transition associated with that event. Once the transition is executed the behavior ("Actions") associated with that transition will be executed.
<STATΞ Name="Sl">
<TRANSITION Name="Tl_l" Ξvent="OneBit " > <FSMSEQUENCE NextState="Odd" > Validation: The Event name shall be validated against a list of known events .
-->
<! ELEMENT TRANSITION ( FSMSEQUENCE+ ) >
<! TTLIST TRANSITION Name NMTOKEN #REQUIRED > <! TTLIST TRANSITION Event NMTOKEN #REQUIRED >
Element: FSMSEQUENCE
Summary: A sequence is the set of all possible actions for the current event . An optional predicate or guard condition is used to distinquish between the different sequences.
The predicate refers to a method that yields a boolean "true" or "false" result.
The predicate sequence shall be executed until the first one fails. In other words the results of the predicates are anded together.
If all of the predicates returned true we will execute the sequence. Otherwise we will continue going through the sequences until we find one that is successful.
A sequence with no predicate guards is always executed, and any remaining sequences are never invoked. The predicates function like other actions they will invoke a method on the current focal point .
The sequence has an attribute that corresponds to the name of the next state.
Validation: Predicate methods shall be validated against the core object model specification.
The sequences next state attribute will be validated against the specified state names.
Example: In this example the sequence does not have any predicates. So it will execute the current sequence. If all of the actions are successful we will transition to the state named "Odd".
<FSMSEQUENCΞ NextState="Odd" > <ACTIONS/>
Example 2: This is a place holder for an example that makes use of predicates. Currently predicates are not implemented in our prototype, so they have not been included yet ... -->
<!ELEMENT FSMSEQUENCE ( PREDICATES?, ACTIONS+ ) > <!ATTLIST FSMSEQUENCE NextState NMTOKEN #RΞQUIRED >
Element: ACTIONS Summary: An Action is a container for all of the actions that are associated with this sequence.
The set of actions is what gives a sequence its behavior.
It can contain any type of action. A transform or a call action has to be the last element in the actions sequence.
Example: In the below example you can see how the actions are structured. <FSMSEQUENCE NEXTSTATE="Odd" >
<ACTIONS>
<STR_ASSOCIATION FocalPoint="ParityChecker"/> <ACTI0N NAMΞ="printlBitAction"/> <ACTION NAME="printOddAction"/> </ACTIONS>
</FSMSEQUENCE>
ACTIONS ( ACCESSOR | ACTION | ASSOCIATION | STR_ASSOCIATION | TRANFORMATION I CALL_ACTION | LITERAL) *
-->
<! ELEMENT ACTIONS ( (ACCESSOR | ACTION | ASSOCIATION ] STR_ASSOCIATION | LITERAL) * I
( (ACCESSOR I ACTION I ASSOCIATION I STR ASSOCIATION I LITERAL)*,
(TRANSFORMATION I CALL ACTION) ) ) >
Element: PREDICATES
Summary: An Action is a container for all of the actions that are associated with this sequence. Example: In the below example you can see how the actions are structured.
PREDICATES ( ACCESSOR | ACTION | ASSOCIATION | STR_ASSOCIATION TRANFORMATION I CALL ACTION I LITERAL) *
<! ELEMENT PREDICATES ( (ACCESSOR | ACTION | ASSOCIATION | STR_ASSOCIATION LITERAL) * ) >
Element: ACTION
Summary: An Action represents a small atomic piece of behavior. The name attribute on action refers to a method on the current focal point. The focal point is the object that the actions are called on. When the action is executed it will call the corresponding method on its focal point. Validation: Action names shall be validated against the core object model specification, to verify that the method exists.
Exam le : In the below example, we will call the apply dial tone method on the current focal point of the engine. In this case the current focal point will have a method that applies the dial tone.
<ACTION Name="applyDialTone"/> ELEMENT ACTION EMPTY
<! ELEMENT ACTION ( ACCESSOR | ACTION | ASSOCIATION | STR_ASSOCIATION LITERAL) * >
<! TTLIST ACTION Name NMTOKEN #RΞQUIRED >
Element: ACCESSOR
Summary: An ACCESSOR I think is a remanent now. All actions are able to pass parameters back and forth. Currently it is just treated like other actions.
Example :
In the below example, we will call the apply dial tone method on the current focal point of the engine. In this case the current focal point will have a method that applies the dial tone. <ACTIONS>
<ACCESSOR Name="getDialTone"/>
Validation: Accessor names shall be validated against the core object model specification, to verify that the method exists.
-->
<! ELEMENT ACCESSOR EMPTY > <!ATTLIST ACCESSOR Name NMTOKEN #REQUIRΞD >
<!--
Element: ASSOCIATION
Summary: An association will move the focal point ( see Action ) , to a new location.
The name of the element will correspond to a method on the current focal point. It will move the focal point to the result of that method. Validation: Association names shall be validated against the core object model specification, to verify that the method exists. Example :
In the below example, we will call the getTerminal method on the current focal point .
We will then set the focal point of engine, to the returned value. In this case the current focal point will have a method that gets the terminal.
<ACTIONS>
ASSOCIATION Name="getTerminal"/> - -> <! ELEMENT ASSOCIATION EMPTY >
< [ATTLIST ASSOCIATION Name NMTOKEN #REQUIRED >
Element: STR ASSOCIATION
Summary: This kind of string association is used for testing. It will eventually be removed.
I can pass in the name of the new focal point ( see Action ) , that will be looked up instead of having to call a method to get the new focal point and then set it .
The name of the element will correspond to a method on the current focal point.
It will move the focal point to the result of that method. Example :
In the below example, we will set the focal point to the focal point associated with the name "Dialog Box" . <ACTIONS>
<STR_ASSOCIATION FocalPoint="Dialog Box"/>
- ->
<! ELEMENT STR_ASSOCIATION EMPTY > <!ATTLIST STR ASSOCIATION FocalPoint NMTOKEN #REQUIRED >
Element: CALL ACTION
Summary: A Call Action represents a nested state machine. When executed it will create a contexts that represents the state of that new state machine, and will begin executing on that new state machine. The nested state machine will be a component state machine of the caller. A state machine may composed of one or more nested state machines using the call action construct. This lets us decompose our state machine into reusable simpler state machines . When the nested state hits an end state it will return to the calling state machine where it will continue executing where it left off.
All return values from nested state machines will be able to pass information back and forth, using a parameter passing technique that is available to all actions.
Validation: The specified feature attribute (i.e. Nested State Machine) shall be a known feature.
Example :
In the below example, we will call the state machine associated with the ParityChecker name .
<ACTI0NS>
<CALL_ACTION Feature=" ParityChecker" /> - -> <! ELEMENT CALL_ACTION EMPTY >
<!ATTLIST CALL ACTION Feature NMTOKEN #REQUIRED >
E1ement : TRANSFORMATION
Summary: A Transformation Action will replace the current context's state machine logic with another logic specified by the Feature attribute. A context represents the current state of a state machine. Validation: The feature attribute shall be validated against known features .
Example :
In the below example, we will be transforming our current context into a
Origination Terminal state machine.
<ACTIONS>
<TRANSFORMATION Feature="OrigTerm" /> -->
<! ELEMENT TRANSFORMATION EMPTY > <!ATTLIST TRANSFORMATION Feature NMTOKEN #REQUIRED >
Elemen : LITERAL Summary: This is a constant value that is pushed on to the parameter stack of the engine. Example: A literal could be used in any action. The startTimer action takes two parameters, the number of seconds to set the timer for ( an integer ) and an event to post when the timer goes off.
<ACTI0N Name=" startTimer" >
<LITERAL Name="IntLiteral" Value="3"/> ..LITERAL Name="EventLiteral" Value=" imeout"/>
-->
<! ELEMENT LITERAL EMPTY >
<!ATTLIST LITERAL Name NMTOKEN #REQUIRED > <! TTLIST LITERAL Value NMTOKEN #REQUIRED >

Claims

What is claimed is:
1. A method of providing a telecommunications service, the method comprising the steps of:
generating a compiled representation of a state machine that models the telecommunications service and that is defined by a textual description in a mark-up language,
instantiating an object (hereinafter "context object") that at least identifies a current state of a telecommunications service,
accessing the compiled representation in response to an event occurring with respect to the telecommunications service in order to any of (i) effect a transition in the state identified by the context object, and (ii) perform an action with respect to the telecommunications service.
2. A method according to claim 1, wherein the textual description identifies, with respect to the telecommunication service: (i) a plurality of states and (ii) rules for transition from one state to another, and (iii) optionally flentifies an action to be performed in each state, in response to an event.
3. The method of claim 1, wherein the telecommunications service is any of a call, a call feature, and subscriber or feature administration.
4. The method of claim 1, further comprising the step of storing the compiled representation in a repository.
5. The method of claim 4, further comprising the step of providing an engine that communicates with the repository to access the compiled representation in response to a request from the context object.
6. The method of claim 5, further comprising responding to the communication from the engine by returning a virtual function indicative of an action to be performed in connection with providing the communication service.
7. The method of claim 6, wherein the context object effects performance of the action indicated by the virtual function.
8. A method of providing a telecommunications service, the method comprising the steps of:
generating a compiled representation of a state machine that models the telecommunications service and that is defined by a textual description in a mark-up language, the textual description identifying, with respect to the telecommunication service: (i) a plurality of states and (ii) rules for transition from one state to another, and (iii) an action to be performed in each state, in response to an event,
instantiating an object (hereinafter "context object") that at least identifies a current state of a telecommunications service,
accessing, with an engine provided in the context object, the compiled representation in response to an event occurring with respect to the telecommunications service in order to any of (i) effect a transition in the state identified by the context object, and (ii) perform an action with respect to the telecommunications service, and
responding to such access by returning a virtual function indicative of an action to be performed in connection with providing the communication service.
9. The method of claim 8, wherein the mark-up language is any of HTML, XML or any extension thereof.
10. The method of claim 8, wherein the event is a call progress event received from an external source.
11. The method of claim 10, wherein the external source is a communications device.
12. A method of claim 8, comprising generating the compiled representation of the textual description as an object graph.
13. The method of claim 12, further comprising the step of storing the object graph in a repository.
14. The method of claim 13, wherein engine communicates with the repository in order to access the object graph.
15. The method of claim 14, wherein the engine is implemented in a C++ programming environment.
16. The method of claim 8, comprising resolving at run- time a type of at least selected methods accessed from the object database, which methods are indicative of actions to be performed with respect to the telecommunications service.
17. The method of claim 16, comprising utilizing virtual functions to facilitate such resolution.
18. A method of providing a telecommunications service, the method comprising the steps of:
providing a textual description in a mark-up language of logic defining a state machine that models a communication service, the state machine identifying a plurality of states and rules for fransition from one state to another, and optionally identifying an action to be performed in each state, and
instantiating an object (herein referred to as "call feature object") in response to an event that executes an instance of the state machine to provide the communication service modeled by the state machine.
19. The method of claim 18, wherein the event is a call progress event.
20. The method of claim 18, wherein an external source generates the event.
21. The method of claim 20, wherein the external source is a telecommunications device.
22. The method of claim 18, further comprising instantiating an object> hereinafter referred to as a call control object, that controls a call processing context.
23. The method of claim 22, wherein the call control object invokes the call feature object with a signal indicative of the event.
24. The method of claim 23, wherein the signal generated by the call control object is indicative of a call progress event.
25. The method of claim 24, wherein the call feature object transitions a present state of the state machine to a new state and effect the performance of one or more actions, if any, associated with the present state in response to the signal received from the call control object.
26. The method of claim 18, wherein the mark-up language is any of HTML, XML and any extension thereof.
27. The method of claim 18, wherein the call feature object exports access to at least a function in a C++ object model for performing one or more actions, if any, associated with a state ofthe state machine.
28. The method of claim 27, wherein the call feature object utilizes a pure virtual member function of an abstract class to export access to a function in a C++ object model.
29. A telecommunicatioins system, comprising:
a call control module that controls a call processing context associated with a subscriber, and a call feature module in communication with the call control module, the call feature module accessing a compiled representation of a state machine representative of a call feature provided to a subscriber in response to an event received from the call control module to cause execution of at least one action for providing the call feature.
30. The system of claim 29, further comprising a respository for storing the compiled representation ofthe state machine.
31. The system of claim 30, wherein the call feature module utilizes an engine to communicate with the repository in order to access the compiled representation of the state machine.
32. The system of claim 29, wherein the call control module instantiates a call context object that at least identifies a current state of a telecommunications service.
33. The method of claim 32, wherein the telecommunications service is any of a call, a call feature, and subscriber or feature administration.
34. The system of claim 29, further comprising a parser receiving the textual description and generating an document object model.
35. The system of claim 34, further comprising a pre-processor that receives the document object model and generates the compiled representation.
36. The system of claim 29, wherein the mark-up language is any of HTML, XML, or any extension thereof.
37. A method for modeling a process, the method comprising
providing a textual description in a mark-up language, the textual description identifying states ofthe process and events that effect transitions therebetween, and optionally identifying actions associated with one or more selected states, and generating from the textual description an object graph for use in any of implementing and simulating the process.
38. The method of claim 37, further comprising the steps of
validating a lexical structure of the textual description, and
generating a document object model therefrom.
39. The method of claim 38, further comprising validating the document object model to authenticate operations referenced thereby.
40. The method of claim 39, wherein the step of validating the lexical structure further includes comparing the textual description with a document type definition.
41. The method of claim 39, wherein the document object model validation step further includes comparing the document object model with a reference document object model identifying one or more permissible operations.
42. The method of claim 41, further comprising the step of providing a textual description in a mark-up language ofthe permissible operations.
43. The method of claim 42, further comprising the step of generating the reference document object model from the textual description.
44. The method of claim 43, further comprising the step of validating a lexical structure ofthe textual description ofthe permissible operations.
45. The method of claim 39, further comprising the step of utilizing a validating parser to perform the step of validating the lexical structure of the textual description.
46. The method of claim 39, further comprising the step of utilizing a pre-processor to perform the document object model validation step.
47. The method of claim 37, further comprising the step of instantiating an object (hereinafter "context object") that represents a state of any of a sub -processes, device and/or application service used to implement the process, the object receiving the events and accessing the object graph to determine transition of a present state into a new state and to determine an action, if any, to be performed.
48. The method of claim 47, wherein the context object utilizes an engine to access the object graph stored in the repository.
49. The method of claim 37, wherein the engine is implemented in a C++ programming environment.
50. The method of claim 49, wherein the engine resolves at runtime a type of at least selected objects accessed from the repository.
51. The method of claim 50, wherein the engine utilizes virtual functions to facilitate such resolution.
52. The method of claim 37, wherein the mark-up language can be any of HTML, XML or extensions thereof.
53. A method for modeling a process, the method comprising the steps of
providing a textual description in a mark-up language, the textual description identifying states ofthe process and events that effect transitions therebetween, and optionally identifying actions associated with one or more selected states,
generating from the textual description an object graph modeling the process, and
storing the object graph in an object repository.
54. The method of claim 53, wherein the object graph provides an nodal representation of the states and actions identified in the textual description.
55. The method of claim 54, wherein said object graph includes nodes representing the states ofthe process and edges connecting the nodes representing transitions between the states.
56. The method of claim 55, further comprising the step of generating an document object model from the textual description, the document object model referencing one or more objects representing the states.
57. The method of claim 56, wherein the referenced objects identify one or more operations for performing the actions.
58. The method of claim 57, further comprising the steps of
validating a lexical structure ofthe textual description; and
validating the document object model to authenticate the operations referenced by the document object model.
59. The method of claim 58, wherein the step of validating the lexical structure further includes comparing the textual description with a document type definition.
60. The method of claim 59, further comprising the step of utilizing a validating parser to compare the textual description with the document type definition.
61. The method of claim 58, wherein the step of validating the document object model includes comparing the document object model with a reference document object model having a plurality of objects representative of permissible operations.
62. The method of claim 61, ftirther comprising the step of utilizing a pre-processor to perform the document object model validation step.
63. The method of claim 62, wherein the pre-processor generates the object graph.
64. The method of claim 61, further comprising the step of generating the reference document object model from a textual description in a mark-up language of a reference model describing at least one or more peπriissible operations.
65. The method of claim 64, further comprising the step validating a lexical structure of the textual description ofthe reference model.
66. The method of claim 65, further comprising the step of comparing the lexical structure ofthe textual description of the reference model with a document type definition to validate the lexical structure of the textual description ofthe reference model.
67. A method of implementing a process, the method comprising the steps of
providing a textual description in a mark-up language of logic identifying actions required for implementing the process;
generating from the textual description an object graph indicative of the logic described in the mark-up language, and
instantiating an object (hereinafter "context object") that represents a state of any of a sub-processes, device and/or application service used to implement the process, the object receiving the events and accessing the object graph to determine transition of a present state into a new state and to determine an action, if any, to be performed.
68. The method of claim 67, further comprising the step of storing the object graph in an object repository.
69. The method of claim 68, wherein said object repository is an object database.
70. The method of claim 67, further comprising the step of generating an document object model from the textual description, the document object model referencing one or more objects each of which references one or more operations for performing the actions identified in the textual description.
71. The method of claim 70, further comprising the steps of
validating a lexical structure ofthe textual description, and
validating the document object model to authenticate the operations referenced thereby.
72. The method of claim 70, further comprising the step of utilizing a pre-processor to generate the object graph from the document object model.
73. A system for modeling a process, comprising
a parser receiving a textual description in a mark-up language of states ofthe process and events that effect transitions therebetween, the textual description optionally identifying actions associated with one or more selected states, said parser creating an document object model that references one or more objects representing the states and action defined in the textual description, and
a pre-processor receiving the document object model and generating an object graph that models the process.
74. The system of claim 73, further comprising an object repository for storing the object graph.
75. The system of claim 74, wherein the object repository is an object database.
76. The system of claim 73, wherein the object graph provides an nodal representation of the states and actions identified in the textual description.
77. The system of claim 73, wherein the object graph includes nodes representing the states of the process and edges connecting the nodes representing transitions between the states.
78. The system of claim 77, wherein the object graph includes a plurality of objects generated in a C++ object oriented environment.
79. The system of claim 73, wherein the mark-up language can be any of HTML, XML or extensions thereof.
80. The system of claim 73, wherein the parser validates a lexical structure of the textual description by comparing the textual description with a document type definition.
81. The system of claim 73, wherein the pre-processor validates the document object model by comparing the document object model with a reference document object model.
82. The system of claim 81, wherein the reference document object model identifies one or more permissible operations.
83. The system of claim 81, wherein the parser generates the reference document object model by parsing a textual description in a mark-up language of a logical reference model.
84. The system of claim 73, further comprising a database adapter for adapting the object graph for storage in the object repository.
85. The system of claim 73, further comprising an engine that navigates the object graph to instruct an object instantiated to execute one iteration ofthe process to transition from a present state into a new state and optionally to perform an action.
86. The system of claim 85, wherein the engine communicates with the object repository to access the object graph.
87. The system of claim 73, wherein the process includes a telecommunications service.
88. The system of claim 87, wherein the telecommunications service includes one or more call features provided to a subscriber.
89. The system of claim 87, wherein the object graph provides an object-oriented representation of a state machine defining at least one call feature.
90. The system of claim 88, wherein the events include call progress events.
91. The system of claim 89, wherein the call progress events are received from a communications device.
92. The system of claim 90, wherein the communications device is any of a switch or a router.
93. A method for providing telecommunications services, the method comprising the steps of:
generating a compiled representation of a textual description in a mark-up language of operations for performing a call feature or service,
instantiating an object (hereinafter "context object") that
(i)accesses the compiled representation in response to one or more events, and
(ii) effects execution ofthe operations.
94. A method according to claim 93, comprising instantiating the context object in response to a boundary event with respect to the telecommunications service or feature.
95. A method according to claim 94, comprising instantiating the context object in response to an event indicative of any of call origination or call termination.
96. A method according to claim 93, comprising passing notification of at least selected events to the context object.
97. A method according to claim 96, responding with the context object to at least selected notifications by effecting execution of further operations with respect to the call feature or service.
98. A method according to claim 96, identifying as a boundary event an event notification of which does not result in the effecting of execution of further operations with respect to the call feature or service by the context object.
99. A method according to claim 93, comprising
instantiating the context object in response to a boundary event with respect to the telecommunications service or feature, and
passing notification of at least selected events to the context object.
100. The method of claim 99, wherein the textual description defines a set of rules and actions for providing the telecommunication service.
101. The method of claim 100, wherein the textual description defines a call policy associated with a subscriber.
102. The method of claim 102, wherein the event includes a call control event indicative of a signal received from an external device.
103. The method of claim 102, wherein the external device is a telecommunications switch.
104. A method for providing telecommunications services, the method comprising the steps of:
generating a compiled representation of a textual description in a mark-up language of operations for performing any of a call feature or service, responding to an event indicative of a boundary of a telecommunications service or feature for instantiating an object (hereinafter "context object") to effect execution of that service or feature,
accessing, with the context object, handler logic operations embodied in the compiled representation, the handler logic operations controlling any of the accessing, processing and execution of further instructions necessary to effect execution ofthe service or feature.
105. A method according to claim 104, comprising accessing call origination handler logic operations embodied in the compiled representation to effect execution of an originated call.
106. A method according to claim 104, comprising accessing call origination handler logic operations embodied in the compiled representation to effect execution of a terminated call.
107. A method according to claim 104, comprising accessing, with the context object and in accord with the handler logic operations, further operations embodied in the compiled representation, the further operations effecting further of execution features or services.
108. The method of claim 104, wherein the textual description defines a set of rales and actions for providing the telecommunication service.
109. The method of claim 108, wherein the logic textual description defines a call policy associated with a subscriber.
110. The method of claim 109, wherein the event includes a call control event indicative of a signal received from an external device.
111. The method of claim 110, wherein the external device is a telecommunications switch.
112. The method of claim 104, wherein the mark-up language is any of HTML, XML or any extension thereof.
113. The method of claim 104, wherein the compiled representation is implemented in a C++ environment.
114. A method for providing telecommunications services, the method comprising the steps of:
generating a compiled representation of a textual description in a mark-up language of operations for performing any of a call feature or service,
responding to an event indicative of a boundary of a telecommunications service or feature for instantiating an object (hereinafter "context object") to effect execution of that service or feature,
accessing, with the context object, any handler logic operations embodied in the compiled representation, the handler logic operations controlling any of the accessing, processing and execution of further instructions necessary to effect execution of the service or feature,
accessing, with the context object and accord with the handler logic operations, feature logic operations embodied in the compiled representation, the feature logic operations executing additional features or services,
resolving at run- time a type of at least one selected method required for effecting the execution of an feature logic operation referenced by the compiled representation.
115. The method of claim 114, further comprising utilizing virtual functions to facilitate such resolution.
116. A method for providing telecommunications services, comprising the steps of:
providing a textual description in a mark-up language of a set of logic instructions describing a telecommunications service, parsing the textual description to generate a compiled representation of the logic instructions, and
instantiating an object (hereinafter "feature context object") in response to an event that accesses the compiled representation to effect execution of the telecommunication service defined by the logic instructions.
117. The method of claim 116, wherein the telecommunication service is any of a call, a call feature, and subscriber or feature administration.
118. The method of claim 116, wherein the event is a call progress event occurring with respect to the telecommunication service.
119. The method of claim 116, wherein the feature context object maintains information regarding present state of an on- going telecommunications service.
120. The method of claim 116, wherein the mark-up language is any of HTML, XML, or any extension thereof.
121. A method for providing telecommunications services, comprising the steps of:
providing a textual description in a mark-up language of a set of logic instructions describing a telecommunications service, and
instantiating in response to an event an object embodying a compiled representation ofthe logic instructions and effecting execution of the telecommunications service.
122. The method of claim 121, wherein the telecommunication service is any of a call, a call feature, and subscriber or feature administration.
123. The method of claim 122, wherein the event is a call progress event occurring with respect to the telecommunication service.
124. A telecommunications system, comprising:
a call control module that controls a call processing context associated with a subscriber, and
a call feature module in communication with the call confrol module, the feature control module accessing a compiled representation of textual description in a mark-up language of logic defining a telecommunication service provided to a subscriber in response to an event to effect execution ofthe service.
125. The telecommunications system of claim 124, wherein the event is a call progress event provided by the call control module in response to a signal received with respect to status of an on- going telecommunication service.
126. The system of claim 125, wherein the on- going telecommunication service is an active telephone call.
127. The system of claim 125, wherein an external device generates the signal with respect to status of an on- going telecommunication service.
128. The system of claim 127, wherein the external device is a telecommunications switch.
129. The system of claim 124, further comprising a parser for receiving a textual description of logic defining a telecommunication service and generating a compiled representation therefrom.
130. The system of claim 129, wherein the telecommunications service is any of a call, a call feature, and subscriber or feature administration.
131. The system of claim 124, wherein the call feature module instantiates an object (hereinafter "feature context object") that accesses the compiled representation to determine at least an action to be effected for providing the telecommunication service.
132. The system of claim 129, wherein the compiled representation includes objects in a C++ programming environment.
133. In a telecommunications system, a processing module in communication with an external communication device, said processing module comprising
a message handling object that receives message fragments from said external device, said message handling object discerning an event and forming a message associated with said event from selected ones of a plurality of received message fragments, and
a dispatcher in communication with said message handling object, said dispatcher identifying and invoking a selected process for processing said event,
wherein said selected process executes at least one task for providing a communication service identified by said message.
134. A processing module according to claim 133, wherein said dispatcher is configured to identify a processor containing said selected process.
135. A processing module according to claim 134, wherein said event includes a call control event.
136. A processing module according to claim 133, wherein said event belongs to an event class within an event hierarchy such that event within an event class are dispatched to a single processing context.
137. A processing module according to claim 133, wherein said communication service includes a call feature of a subscriber.
138. A processing module according to claim 133, wherein said message handling object is configured to determine whether a newly received message fragment is associated with one or more previously received message fragments.
139. A processing module according to claim 133, wherein said message handling object is configured to determine whether a received message fragment is the first fragment for forming a new message.
140. A processing module according to claim 133, wherein event effects the instantiation of one or more objects that can effect the execution of one or more operations for providing a comm nication service.
141. A processing module according to claim 140, wherein the instantiated objects access a compiled representation of logic defining a telecommunication service.
142. A processing module according to claim 141, wherein the compiled representation is generated from a textual description in a mark-up language of the logic defining the telecommunication service.
143. A processing module according to claim 135, wherein said call control event includes an extended event defined as a combination of a call progress event and a pre-defined condition.
144. A processing module according to claim 133, wherein said external device is a telecommunications switch.
145. In a telecommunications system, a processing module in communication with an external communication device, said processing module comprising
one or more message handling objects that receive message fragments from one or more external devices, said message handling objects assembling said message fragments to discern one or more events and to form one or more messages such that each message is associated with at least one ofthe events, and
a dispatcher in communication with said message handling objects, said dispatcher invoking at least one process that dynamically binds to a processing context defining an action to be executed in response to at least one of said events for providing a communication service identified by the message associated with said event.
146. A processing module according to claim 145, wherein said external communication device is a telecommunications switch.
147. hi a telecommunications system, a processing module in communication with an external communication device, said processing module comprising
a message handling object created as an application program that exchanges messages with the external device, said message handling object forming a message associated with an event communicated thereto by a processing context within the system and transmitting said message to the communication device, said message handling object further discerning an event and forming a message associated with said event from selected ones of a plurality of message fragments received from the device, and
a dispatcher that exchanges events and their associated messages between selected processing contexts and said message handling object to effectuate activation of selected communications services defined by said messages.
148. In a telecommunications system, a method for communicating with an external communication device, the method comprising the steps of
receiving a plurality of message fragments from the external device,
discerning an event and forming a message associated with said event from selected ones of said received message fragments, and
identifying and invoking a selected process for processing said event,
wherein said selected process executes at least one task for providing a communication service identified by said message.
149. The method of claim 148, further comprising the step of determining whether a newly received message fragment is associated with one or more previously received message fragments.
150. The method of claim 148, further comprising the step of determining whether a received message fragment is the first fragment for forming a new message.
151. The method of claim 148, further comprising the step of identifying a processor containing said selected process.
152. The method of claim 148, wherein said event is selected to be a call control event.
153. The method of claim 150, wherein said call control event is selected from the group consisting of offhook, dialComplete, remoteAlerting, remoteAnswered, seizure, hookflash, localRelease, and remoteRelease.
154. The method of claim 148, wherein said communication service is selected to include a call feature of a subscriber.
155. In a telecommunications system, a method for providing a communication service to a subscriber, the method comprising the steps of
receiving a plurality of message fragments from one or more external devices,
assembling said message fragments to discern one or more events and to form one or more messages such that each message is associated with at least one ofthe events, and
invoking at least one process that dynamically binds to a processing context defining an action to be executed in response to at least one of said events for providing a communication service identified by the message associated with said event.
156. The method of claim 155, wherein at least one of said external devices is selected to be a telecommunications switch.
157. In a telecommunications system, a method for providing a communication service to a subscriber, the method comprising the steps of: providing an application program that exchanges messages with an external communication device, said application program forming a message associated with an event communicated thereto by a processing context within the system and transmitting said message to the communication device, said application program further discerning an event and forming a message associated with said event from selected one of a plurality of message fragments received from the device, and
exchanging events and their associated messages between selected processing contexts and said application program to effectuate activation of selected communications services defined by said message.
158. The method of claim 157, wherein said external device is selected to be a telecommunications switch.
PCT/US2001/010402 2000-03-31 2001-03-30 Telecommunications system and methods WO2001076205A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001253043A AU2001253043A1 (en) 2000-03-31 2001-03-30 Telecommunications system and methods

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US19380700P 2000-03-31 2000-03-31
US19380900P 2000-03-31 2000-03-31
US19370000P 2000-03-31 2000-03-31
US19370100P 2000-03-31 2000-03-31
US60/193,700 2000-03-31
US60/193,807 2000-03-31
US60/193,701 2000-03-31
US60/193,809 2000-03-31

Publications (1)

Publication Number Publication Date
WO2001076205A1 true WO2001076205A1 (en) 2001-10-11

Family

ID=27498001

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2001/010402 WO2001076205A1 (en) 2000-03-31 2001-03-30 Telecommunications system and methods

Country Status (3)

Country Link
US (2) US7216350B2 (en)
AU (1) AU2001253043A1 (en)
WO (1) WO2001076205A1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1768422A1 (en) * 2004-06-22 2007-03-28 ZTE Corporation Method for protecting incoming calls in personalized ring back tone service
EP1830587A1 (en) * 2004-11-30 2007-09-05 ZTE Corporation Call protecting method and device for personalized ring back tone in an intelligent network
USRE42942E1 (en) 1997-07-21 2011-11-22 Novartis Ag Powder filling apparatus and methods for their use
WO2012135931A1 (en) * 2011-04-04 2012-10-11 Cambrai Solutions Inc. Application server for provisioning a controlled communications system in a cloud-based environment

Families Citing this family (150)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7031442B1 (en) 1997-02-10 2006-04-18 Genesys Telecommunications Laboratories, Inc. Methods and apparatus for personal routing in computer-simulated telephony
US6104802A (en) 1997-02-10 2000-08-15 Genesys Telecommunications Laboratories, Inc. In-band signaling for routing
US6480600B1 (en) 1997-02-10 2002-11-12 Genesys Telecommunications Laboratories, Inc. Call and data correspondence in a call-in center employing virtual restructuring for computer telephony integrated functionality
US6711611B2 (en) 1998-09-11 2004-03-23 Genesis Telecommunications Laboratories, Inc. Method and apparatus for data-linking a mobile knowledge worker to home communication-center infrastructure
US6985943B2 (en) 1998-09-11 2006-01-10 Genesys Telecommunications Laboratories, Inc. Method and apparatus for extended management of state and interaction of a remote knowledge worker from a contact center
USRE46528E1 (en) 1997-11-14 2017-08-29 Genesys Telecommunications Laboratories, Inc. Implementation of call-center outbound dialing capability at a telephony network level
US6985478B2 (en) * 1998-02-17 2006-01-10 Genesys Telecommunications Laboratories, Inc. Using XML expressed primitives for platform and system-independent call modeling
US7907598B2 (en) 1998-02-17 2011-03-15 Genesys Telecommunication Laboratories, Inc. Method for implementing and executing communication center routing strategies represented in extensible markup language
US6332154B2 (en) 1998-09-11 2001-12-18 Genesys Telecommunications Laboratories, Inc. Method and apparatus for providing media-independent self-help modules within a multimedia communication-center customer interface
USRE46153E1 (en) 1998-09-11 2016-09-20 Genesys Telecommunications Laboratories, Inc. Method and apparatus enabling voice-based management of state and interaction of a remote knowledge worker in a contact center environment
US7929978B2 (en) 1999-12-01 2011-04-19 Genesys Telecommunications Laboratories, Inc. Method and apparatus for providing enhanced communication capability for mobile devices on a virtual private network
US7320017B1 (en) * 2000-09-06 2008-01-15 Cisco Technology, Inc. Media gateway adapter
US7076042B1 (en) * 2000-09-06 2006-07-11 Cisco Technology, Inc. Processing a subscriber call in a telecommunications network
US7042995B1 (en) * 2000-09-06 2006-05-09 Cisco Technology, Inc. Providing features to a subscriber in a telecommunications network
US6922411B1 (en) 2000-09-29 2005-07-26 Voxeo Corporation Networked computer telephony system driven by web-based applications
US7249195B2 (en) 2001-03-30 2007-07-24 Minor Ventures, Llc Apparatus and methods for correlating messages sent between services
US20020159439A1 (en) * 2001-04-25 2002-10-31 Marsh Anita B. Dynamically downloading telecommunication call services
US7002952B2 (en) * 2001-05-25 2006-02-21 Sprint Communications Company L.P. Usage-based billing for voice over packet communications
NO323264B1 (en) * 2001-07-13 2007-02-19 Telenor Asa terminal administrator for access to multiple heterogeneous telecommunications networks
US8271619B1 (en) * 2001-09-05 2012-09-18 Sprint Communications Company, L.P. Establishing end-user communication services that use peer-to-peer internet protocol connections between service providers
US7139263B2 (en) * 2001-10-19 2006-11-21 Sentito Networks, Inc. Voice over IP architecture
US7130408B2 (en) * 2002-06-14 2006-10-31 International Business Machines Corporation Service logic context cache for signaling events
US7130856B2 (en) * 2002-07-20 2006-10-31 Microsoft Corporation Map and data location provider
FR2844123B1 (en) * 2002-08-29 2005-01-14 Cit Alcatel DEVICE FOR AUTOMATICALLY MANAGING NETWORK EQUIPMENT, FOR A COMMUNICATIONS NETWORK MANAGEMENT SYSTEM
US7529358B2 (en) * 2002-10-08 2009-05-05 Avaya, Inc. Dynamic feature and function availability for software PBX
AU2003295762A1 (en) * 2002-11-19 2004-06-15 Nexaweb Technologies, Inc. System and method for stateful web-based computing
US7330483B1 (en) * 2002-12-19 2008-02-12 At&T Corp. Session initiation protocol (SIP) message incorporating a multi-purpose internet mail extension (MIME) media type for describing the content and format of information included in the SIP message
US20040223450A1 (en) * 2003-03-25 2004-11-11 Brad Bridges Method and apparatus for provisioning remote digital terminals
US7450574B1 (en) 2003-04-25 2008-11-11 Shoretel, Inc. IP telephony network using a configuration map for organizing sites in a tree-like hierarchy
US7031697B2 (en) * 2003-07-21 2006-04-18 Lucent Technologies Inc. Correlation of call data for calling and called parties in wireless telecommunication networks
US8782097B2 (en) * 2003-07-25 2014-07-15 Honeywell International Inc. Multiple system compatible database system and method
US7729339B2 (en) * 2003-07-31 2010-06-01 Alcatel-Lucent Usa Inc. Audio watermarking for call identification in a telecommunications network
EP1509033B1 (en) * 2003-08-19 2012-10-17 Alcatel Lucent Method and devices for connecting IP terminations and PSTN terminations
US7366287B2 (en) * 2003-09-25 2008-04-29 At&T Knowledge Ventures, L.P. DTMF lockout utility epoch time stamp
CA2443447A1 (en) * 2003-09-30 2005-03-30 Ibm Canada Limited-Ibm Canada Limitee System and method for conversion between graph-based representations and structural text-based representations of business processes
US20050080628A1 (en) * 2003-10-10 2005-04-14 Metaphor Solutions, Inc. System, method, and programming language for developing and running dialogs between a user and a virtual agent
US7730501B2 (en) * 2003-11-19 2010-06-01 Intel Corporation Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion
US7739351B2 (en) 2004-03-23 2010-06-15 Salesforce.Com, Inc. Synchronous interface to asynchronous processes
US20050229048A1 (en) * 2004-03-30 2005-10-13 International Business Machines Corporation Caching operational code in a voice markup interpreter
US7802007B2 (en) 2004-05-19 2010-09-21 Salesforce.Com, Inc. Techniques for providing connections to services in a network environment
US7725605B2 (en) * 2004-08-06 2010-05-25 Salesforce.Com, Inc. Providing on-demand access to services in a wide area network
US9781274B2 (en) * 2004-10-26 2017-10-03 Cisco Technology, Inc. Providing a proxy server feature at an endpoint
US7466810B1 (en) * 2004-12-20 2008-12-16 Neltura Technology, Inc. Distributed system for sharing of communication service resources between devices and users
US8108510B2 (en) * 2005-01-28 2012-01-31 Jds Uniphase Corporation Method for implementing TopN measurements in operations support systems
US20060178898A1 (en) * 2005-02-07 2006-08-10 Babak Habibi Unified event monitoring system
FR2882211A1 (en) * 2005-02-16 2006-08-18 France Telecom METHOD FOR SYNCHRONIZING VOICE SERVICE AND VISUAL PRESENTATION
US7630997B2 (en) * 2005-03-23 2009-12-08 Microsoft Corporation Systems and methods for efficiently compressing and decompressing markup language
US20060253562A1 (en) * 2005-05-06 2006-11-09 Tp Lab Apparatus to operate and manage a consumer network device
US8684740B2 (en) * 2005-06-09 2014-04-01 Scientific Learning Corporation Method and apparatus for building vocabulary skills and improving accuracy and fluency in critical thinking and abstract reasoning
US7640351B2 (en) * 2005-11-04 2009-12-29 Intermatic Incorporated Application updating in a home automation data transfer system
US7870232B2 (en) 2005-11-04 2011-01-11 Intermatic Incorporated Messaging in a home automation data transfer system
US7694005B2 (en) * 2005-11-04 2010-04-06 Intermatic Incorporated Remote device management in a home automation data transfer system
US20070121653A1 (en) * 2005-11-04 2007-05-31 Reckamp Steven R Protocol independent application layer for an automation network
US7698448B2 (en) * 2005-11-04 2010-04-13 Intermatic Incorporated Proxy commands and devices for a home automation data transfer system
US20070256085A1 (en) * 2005-11-04 2007-11-01 Reckamp Steven R Device types and units for a home automation data transfer system
US8041800B2 (en) * 2005-11-08 2011-10-18 International Business Machines Corporation Automatic orchestration of dynamic multiple party, multiple media communications
US9008075B2 (en) 2005-12-22 2015-04-14 Genesys Telecommunications Laboratories, Inc. System and methods for improving interaction routing performance
US20080059605A1 (en) * 2006-01-20 2008-03-06 Shaul Shalev Systems and methods for operating communication processes using a personalized communication web server
US8023479B2 (en) 2006-03-02 2011-09-20 Tango Networks, Inc. Mobile application gateway for connecting devices on a cellular network with individual enterprise and data networks
US7890096B2 (en) 2006-03-02 2011-02-15 Tango Networks, Inc. System and method for enabling call originations using SMS and hotline capabilities
US11405846B2 (en) 2006-03-02 2022-08-02 Tango Networks, Inc. Call flow system and method for use in a legacy telecommunication system
US7903635B2 (en) 2006-03-02 2011-03-08 Tango Networks, Inc. System and method for enabling DTMF detection in a VoIP network
US8625749B2 (en) * 2006-03-23 2014-01-07 Cisco Technology, Inc. Content sensitive do-not-disturb (DND) option for a communication system
US8842660B2 (en) * 2006-03-31 2014-09-23 Microsoft Corporation VoIP variable metadata
US8228824B2 (en) * 2006-04-06 2012-07-24 Microsoft Corporation VoIP contextual information processing
US7747568B2 (en) 2006-04-07 2010-06-29 Microsoft Corporation Integrated user interface
US20070253407A1 (en) * 2006-05-01 2007-11-01 Microsoft Corporation Enhanced VoIP services
US8135125B2 (en) * 2006-05-10 2012-03-13 Microsoft Corporation Multi-party information analysis in a VoIP system
US8050255B2 (en) 2006-05-10 2011-11-01 Microsoft Corporation Routing a VoIP call with contextual information
US20070270126A1 (en) * 2006-05-18 2007-11-22 Microsoft Corporation Authentication of a digital voice conversation
US20070274293A1 (en) * 2006-05-26 2007-11-29 Microsoft Corporation Archiving VoIP conversations
US7983247B2 (en) * 2006-05-31 2011-07-19 Microsoft Corporation Metadata collection
US20070280254A1 (en) * 2006-05-31 2007-12-06 Microsoft Corporation Enhanced network communication
US20070280225A1 (en) * 2006-05-31 2007-12-06 Microsoft Corporation Extended services and recommendations
US8971217B2 (en) * 2006-06-30 2015-03-03 Microsoft Technology Licensing, Llc Transmitting packet-based data items
US7529233B2 (en) * 2006-08-24 2009-05-05 Cisco Technology, Inc. Interworking progress indicator in SIP-PSTN network
US8630191B2 (en) * 2006-11-01 2014-01-14 Microsoft Corporation Device selection for broadcast messages
US8578350B2 (en) * 2006-11-30 2013-11-05 Ncr Corporation System and method for interpreting a specification language file to implement a business system
US7716610B2 (en) * 2007-01-05 2010-05-11 International Business Machines Corporation Distributable and serializable finite state machine
US8654966B2 (en) * 2007-01-24 2014-02-18 Audiocodes Ltd. Method for dial plan parsing and a system incorporating the same
US20080270839A1 (en) * 2007-04-30 2008-10-30 Jenchang Ho Masked signal trap loop avoidance
US20080291932A1 (en) * 2007-05-22 2008-11-27 Santosh Kumar Mukherjee Multi-protocol digital convergent system
US8176160B2 (en) * 2007-09-14 2012-05-08 International Business Machines Corporation Network management system accelerated event channel
US8458663B2 (en) * 2008-02-14 2013-06-04 International Business Machines Corporation Static code analysis
EP2266269B1 (en) 2008-04-02 2019-01-02 Twilio Inc. System and method for processing telephony sessions
US8837465B2 (en) 2008-04-02 2014-09-16 Twilio, Inc. System and method for processing telephony sessions
US8849631B2 (en) * 2008-05-13 2014-09-30 International Business Machines Corporation Protocol independent telephony call lifecycle management scheme
US9026949B1 (en) 2008-07-22 2015-05-05 Avaya Inc. Configuration-management user interface employing searchable tags
US8707252B1 (en) * 2008-09-03 2014-04-22 Emc Corporation Techniques for automatic generation of parsing code
EP2335402A4 (en) 2008-10-01 2013-04-24 Twilio Inc Telephony web event system and method
CA2789942C (en) 2009-03-02 2017-05-23 Jeffrey Lawson Method and system for a multitenancy telephone network
EP2425599A4 (en) * 2009-04-28 2013-04-03 Ongame Services Ab Client account managing arrangement on an online gaming system
US9047168B2 (en) * 2009-05-14 2015-06-02 National Instruments Corporation Automatically generating documentation for a diagram including a plurality of states and transitions
US8594296B2 (en) * 2009-05-20 2013-11-26 Microsoft Corporation Multimodal callback tagging
US20110082723A1 (en) * 2009-10-02 2011-04-07 National Ict Australia Limited Rating agents participating in electronic transactions
US9210275B2 (en) 2009-10-07 2015-12-08 Twilio, Inc. System and method for running a multi-module telephony application
CN103038723B (en) * 2010-04-01 2018-04-17 汤姆森特许公司 A large amount of general digital terminal adapter control pattern user interfaces
US9459926B2 (en) 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US20120208495A1 (en) 2010-06-23 2012-08-16 Twilio, Inc. System and method for monitoring account usage on a platform
US9590849B2 (en) 2010-06-23 2017-03-07 Twilio, Inc. System and method for managing a computing cluster
US9338064B2 (en) 2010-06-23 2016-05-10 Twilio, Inc. System and method for managing a computing cluster
US9459925B2 (en) * 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US8838707B2 (en) 2010-06-25 2014-09-16 Twilio, Inc. System and method for enabling real-time eventing
US8745121B2 (en) * 2010-06-28 2014-06-03 Nokia Corporation Method and apparatus for construction and aggregation of distributed computations
US8649268B2 (en) 2011-02-04 2014-02-11 Twilio, Inc. Method for processing telephony sessions of a network
US9648006B2 (en) 2011-05-23 2017-05-09 Twilio, Inc. System and method for communicating with a client application
US20140044123A1 (en) 2011-05-23 2014-02-13 Twilio, Inc. System and method for real time communicating with a client application
WO2012162397A1 (en) 2011-05-23 2012-11-29 Twilio, Inc. System and method for connecting a communication to a client
EP2759123B1 (en) 2011-09-21 2018-08-15 Twilio, Inc. System and method for authorizing and connecting application developers and users
US10182147B2 (en) 2011-09-21 2019-01-15 Twilio Inc. System and method for determining and communicating presence information
US20130197955A1 (en) * 2012-01-31 2013-08-01 Fisher-Rosemount Systems, Inc. Apparatus and method for establishing maintenance routes within a process control system
US9495227B2 (en) 2012-02-10 2016-11-15 Twilio, Inc. System and method for managing concurrent events
US20130304928A1 (en) 2012-05-09 2013-11-14 Twilio, Inc. System and method for managing latency in a distributed telephony network
US9602586B2 (en) 2012-05-09 2017-03-21 Twilio, Inc. System and method for managing media in a distributed communication network
US9247062B2 (en) 2012-06-19 2016-01-26 Twilio, Inc. System and method for queuing a communication session
US8737962B2 (en) 2012-07-24 2014-05-27 Twilio, Inc. Method and system for preventing illicit use of a telephony platform
US8938053B2 (en) 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
US8948356B2 (en) 2012-10-15 2015-02-03 Twilio, Inc. System and method for routing communications
US9282124B2 (en) 2013-03-14 2016-03-08 Twilio, Inc. System and method for integrating session initiation protocol communication in a telecommunications platform
US9160696B2 (en) 2013-06-19 2015-10-13 Twilio, Inc. System for transforming media resource into destination device compatible messaging format
US9225840B2 (en) 2013-06-19 2015-12-29 Twilio, Inc. System and method for providing a communication endpoint information service
US9948726B2 (en) * 2013-07-01 2018-04-17 Avaya Inc. Reconstruction of states on controller failover
US9483328B2 (en) 2013-07-19 2016-11-01 Twilio, Inc. System and method for delivering application content
US9137127B2 (en) 2013-09-17 2015-09-15 Twilio, Inc. System and method for providing communication platform metadata
US9274858B2 (en) 2013-09-17 2016-03-01 Twilio, Inc. System and method for tagging and tracking events of an application platform
US9338018B2 (en) 2013-09-17 2016-05-10 Twilio, Inc. System and method for pricing communication of a telecommunication platform
IN2013MU03243A (en) * 2013-10-15 2015-07-17 Tata Consultancy Services Ltd
US9553799B2 (en) 2013-11-12 2017-01-24 Twilio, Inc. System and method for client communication in a distributed telephony network
US9325624B2 (en) 2013-11-12 2016-04-26 Twilio, Inc. System and method for enabling dynamic multi-modal communication
US9344573B2 (en) 2014-03-14 2016-05-17 Twilio, Inc. System and method for a work distribution service
US9226217B2 (en) 2014-04-17 2015-12-29 Twilio, Inc. System and method for enabling multi-modal communication
US20150378795A1 (en) 2014-06-27 2015-12-31 Pivotal Software, Inc. Stream computing event models
US9246694B1 (en) 2014-07-07 2016-01-26 Twilio, Inc. System and method for managing conferencing in a distributed communication network
US9774687B2 (en) 2014-07-07 2017-09-26 Twilio, Inc. System and method for managing media and signaling in a communication platform
US9251371B2 (en) 2014-07-07 2016-02-02 Twilio, Inc. Method and system for applying data retention policies in a computing platform
US9516101B2 (en) 2014-07-07 2016-12-06 Twilio, Inc. System and method for collecting feedback in a multi-tenant communication platform
WO2016065080A1 (en) 2014-10-21 2016-04-28 Twilio, Inc. System and method for providing a miro-services communication platform
US9881070B2 (en) * 2014-12-12 2018-01-30 Microsoft Technology Licensing, Llc Controlling service functions in response to service instigation and service reactivation messages
US9826000B2 (en) 2014-12-12 2017-11-21 Microsoft Technology Licensing, Llc Effecting communication events
US9477975B2 (en) 2015-02-03 2016-10-25 Twilio, Inc. System and method for a media intelligence platform
US10419891B2 (en) 2015-05-14 2019-09-17 Twilio, Inc. System and method for communicating through multiple endpoints
US9948703B2 (en) 2015-05-14 2018-04-17 Twilio, Inc. System and method for signaling through data storage
US10102286B2 (en) * 2015-05-27 2018-10-16 Level 3 Communications, Llc Local object instance discovery for metric collection on network elements
US10659349B2 (en) 2016-02-04 2020-05-19 Twilio Inc. Systems and methods for providing secure network exchanged for a multitenant virtual private cloud
US10686902B2 (en) 2016-05-23 2020-06-16 Twilio Inc. System and method for a multi-channel notification service
US10063713B2 (en) 2016-05-23 2018-08-28 Twilio Inc. System and method for programmatic device connectivity
US10374872B2 (en) * 2016-05-24 2019-08-06 Apstra, Inc. Configuring system resources for different reference architectures
US10530740B2 (en) * 2017-07-26 2020-01-07 At&T Intellectual Property I, L.P. Systems and methods for facilitating closed loop processing using machine learning
US11301539B2 (en) 2019-02-21 2022-04-12 Bank Of America Corporation Just-in-time front end template generation using logical document object models
US11461345B2 (en) * 2019-05-31 2022-10-04 Microsoft Technology Licensing, Llc Providing access to state information associated with operators in a data processing system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974135A (en) * 1997-06-11 1999-10-26 Harrah's Operating Company, Inc. Teleservices computer system, method, and manager application for integrated presentation of concurrent interactions with multiple terminal emulation sessions
US6029203A (en) * 1997-09-26 2000-02-22 3Com Corporation Apparatus and methods for use therein for an ISDN LAN modem that provides enhanced network activity

Family Cites Families (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4771425A (en) 1984-10-29 1988-09-13 Stratacom, Inc. Synchoronous packet voice/data communication system
US4656624A (en) * 1985-05-03 1987-04-07 At&T Bell Laboratories Operator communication arrangements for operator assistance systems
US4757497A (en) * 1986-12-03 1988-07-12 Lan-Tel, Inc. Local area voice/data communications and switching system
US4922486A (en) * 1988-03-31 1990-05-01 American Telephone And Telegraph Company User to network interface protocol for packet communications networks
US4893302A (en) * 1988-03-31 1990-01-09 American Telephone And Telegraph Company, At&T Bell Laboratories Arrangement for switching concentrated telecommunications packet traffic
US4958341A (en) * 1988-03-31 1990-09-18 At&T Bell Laboratories Integrated packetized voice and data switching system
US4872158A (en) 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Distributed control rapid connection circuit switch
US4872159A (en) 1988-03-31 1989-10-03 American Telephone And Telegraph Company At&T Bell Laboratories Packet network architecture for providing rapid response time
US4872160A (en) 1988-03-31 1989-10-03 American Telephone And Telegraph Company, At&T Bell Laboratories Integrated packetized voice and data switching system
US4899333A (en) * 1988-03-31 1990-02-06 American Telephone And Telegraph Company At&T Bell Laboratories Architecture of the control of a high performance packet switching distribution network
AU614246B2 (en) 1988-07-11 1991-08-22 Nec Infrontia Corporation Packet switching system for a distributed processing isdn switch
JPH0265498A (en) 1988-08-31 1990-03-06 Toshiba Corp Line connection system
US4949373A (en) 1989-01-06 1990-08-14 International Business Machines Corporation Host load balancing
US5726984A (en) * 1989-01-31 1998-03-10 Norand Corporation Hierarchical data collection network supporting packetized voice communications among wireless terminals and telephones
US5153909A (en) * 1989-05-25 1992-10-06 At&T Bell Laboratories Resource control and data handling for central office based automatic call distributors
US5341374A (en) 1991-03-01 1994-08-23 Trilan Systems Corporation Communication network integrating voice data and video with distributed call processing
JPH04324734A (en) 1991-04-24 1992-11-13 Matsushita Electric Works Ltd Voice transmission system for twisted pair line
US5282244A (en) 1991-06-24 1994-01-25 At&T Bell Laboratories Virtual signaling network method
US5463629A (en) 1992-07-13 1995-10-31 Ko; Cheng-Hsu Dynamic channel allocation method and system for integrated services digital network
JPH06105384A (en) 1992-09-21 1994-04-15 Fujitsu Ltd Lan management system in electronic exchange
US5384840A (en) 1992-10-09 1995-01-24 At&T Corp. Telecommunications system SS7 signaling interface with signal transfer capability
US5329619A (en) 1992-10-30 1994-07-12 Software Ag Cooperative processing interface and communication broker for heterogeneous computing environments
US5550836A (en) 1992-11-06 1996-08-27 Hewlett-Packard Company High speed data transfer over twisted pair cabling
US5617423A (en) 1993-01-08 1997-04-01 Multi-Tech Systems, Inc. Voice over data modem with selectable voice compression
US5535204A (en) * 1993-01-08 1996-07-09 Multi-Tech Systems, Inc. Ringdown and ringback signalling for a computer-based multifunction personal communications system
US5453986A (en) * 1993-01-08 1995-09-26 Multi-Tech Systems, Inc. Dual port interface for a computer-based multifunction personal communication system
US5452289A (en) 1993-01-08 1995-09-19 Multi-Tech Systems, Inc. Computer-based multifunction personal communications system
JPH06338887A (en) 1993-05-27 1994-12-06 Fujitsu Ltd Service offer system for ivd-lan system
JP3247540B2 (en) 1994-05-12 2002-01-15 株式会社日立製作所 Packetized communication device and switching device
US5581596A (en) 1994-06-13 1996-12-03 U S West Technologies, Inc. Method for controlling call processing in a microcellular personal communications services system
US6058104A (en) * 1994-06-17 2000-05-02 Home Wireless Networks, Inc. Communications webs for PSTN subscribers
US5550906A (en) 1994-08-05 1996-08-27 Lucent Technologies Inc. Telecommunications feature server
JP3219124B2 (en) 1994-08-19 2001-10-15 日本電信電話株式会社 LAN-PBX communication device
US5553063A (en) * 1994-09-12 1996-09-03 Dickson; William D. Voice over data communication system
US5757895A (en) 1995-11-09 1998-05-26 Unisys Corporation Extracting and processing data derived from a common channel signalling network
JP2726630B2 (en) * 1994-12-07 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション Gateway device and gateway method
US5568475A (en) 1994-12-21 1996-10-22 Lucent Technologies Inc. ATM network architecture employing an out-of-band signaling network
EP0815682B1 (en) 1995-03-16 2002-01-23 Telecommunications Research laboratories Networking computers via shared use of voice telephone lines
US5646947A (en) * 1995-03-27 1997-07-08 Westinghouse Electric Corporation Mobile telephone single channel per carrier superframe lock subsystem
JPH08274812A (en) 1995-03-30 1996-10-18 Oki Electric Ind Co Ltd Voice communication system
US5706286A (en) 1995-04-19 1998-01-06 Mci Communications Corporation SS7 gateway
US5659541A (en) 1995-07-12 1997-08-19 Lucent Technologies Inc. Reducing delay in packetized voice
US6108704A (en) 1995-09-25 2000-08-22 Netspeak Corporation Point-to-point internet protocol
US6009469A (en) 1995-09-25 1999-12-28 Netspeak Corporation Graphic user interface for internet telephony application
US5799317A (en) 1995-11-08 1998-08-25 Mci Communications Corporation Data management system for a telecommunications signaling system 7(SS#7)
IL115967A (en) * 1995-11-12 1999-05-09 Phonet Communication Ltd Network based distributed pbx system
US5787088A (en) * 1995-11-13 1998-07-28 At&T Corp Method and system for interoperating between ISDN and PSTN transport for allowing simultaneous transmission of voice and data over one telephone line
US5764639A (en) 1995-11-15 1998-06-09 Staples; Leven E. System and method for providing a remote user with a virtual presence to an office
US5881060A (en) * 1996-05-30 1999-03-09 Northern Telecom Limited Integrated cellular voice and digital packet data telecommunications systems and methods for their operation
US7336649B1 (en) 1995-12-20 2008-02-26 Verizon Business Global Llc Hybrid packet-switched and circuit-switched telephony system
US5862134A (en) 1995-12-29 1999-01-19 Gte Laboratories Incorporated Single-wiring network for integrated voice and data communications
JP2001503572A (en) 1996-01-23 2001-03-13 ファイアトーク,インコーポレイテッド Internet telecommunications system
JP2934406B2 (en) 1996-02-05 1999-08-16 沖電気工業株式会社 Line concentrator for voice telephone set and communication method for lan
US6173044B1 (en) 1996-02-06 2001-01-09 International Business Machines Corporation Multipoint simultaneous voice and data services using a media splitter gateway architecture
JPH09247214A (en) 1996-03-14 1997-09-19 Oki Electric Ind Co Ltd Data and voice hybrid communication system
US6125113A (en) * 1996-04-18 2000-09-26 Bell Atlantic Network Services, Inc. Internet telephone service
US6021158A (en) * 1996-05-09 2000-02-01 Texas Instruments Incorporated Hybrid wireless wire-line network integration and management
US5751706A (en) 1996-06-05 1998-05-12 Cignal Global Communications, Inc. System and method for establishing a call telecommunications path
US5991389A (en) * 1996-06-13 1999-11-23 Northern Telecom Limited Programmable service architecture for call control processing
US5995831A (en) * 1996-07-15 1999-11-30 Phoenix Wireless Group Cellular-telephone central call-processing system utilizing object-oriented software in adjunct personal computer
JPH1051453A (en) 1996-07-23 1998-02-20 Yokogawa Advanced Apurikeeshiyonzu Kk Lan telephone system
US5999965A (en) 1996-08-20 1999-12-07 Netspeak Corporation Automatic call distribution server for computer telephony communications
US5848069A (en) 1996-08-27 1998-12-08 Dsc Telecom L.P. Method for signaling link selection
US5822420A (en) 1996-08-30 1998-10-13 Digital Technics, Inc. Signaling protocol for multilink access network-local exchange interfaces
KR19980024329A (en) 1996-09-04 1998-07-06 윌리엄 비. 켐플러 Split modem
AU4917097A (en) 1996-10-23 1998-05-15 Mci Communications Corporation Architecture and method for managing a flexible communications netw ork
US6226286B1 (en) * 1996-10-28 2001-05-01 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for communication between data network and telecommunication network
US6128301A (en) 1996-11-07 2000-10-03 Nortel Networks Limited Architecture for distribution of voice over ATM networks
US6069879A (en) 1996-11-14 2000-05-30 Chatter; Mukesh Method of and system architecture for high speed dual symmetric full duplex operation of asymmetric digital subscriber lines
US5867495A (en) * 1996-11-18 1999-02-02 Mci Communications Corporations System, method and article of manufacture for communications utilizing calling, plans in a hybrid network
US6754181B1 (en) * 1996-11-18 2004-06-22 Mci Communications Corporation System and method for a directory service supporting a hybrid communication system architecture
US5999525A (en) 1996-11-18 1999-12-07 Mci Communications Corporation Method for video telephony over a hybrid network
US6335927B1 (en) * 1996-11-18 2002-01-01 Mci Communications Corporation System and method for providing requested quality of service in a hybrid network
US5867494A (en) * 1996-11-18 1999-02-02 Mci Communication Corporation System, method and article of manufacture with integrated video conferencing billing in a communication system architecture
US5970066A (en) * 1996-12-12 1999-10-19 Paradyne Corporation Virtual ethernet interface
US6061392A (en) 1996-12-17 2000-05-09 Paradyne Corporation Apparatus and method for communicating voice and data between a customer premises and a central office
US5841840A (en) 1996-12-23 1998-11-24 Paradyne Corporation Multiple line modem and method for providing voice on demand
US5901205A (en) * 1996-12-23 1999-05-04 Paradyne Corporation Adaptive voice and data bandwidth management system for multiple-line digital subscriber loop data communications
US6731625B1 (en) * 1997-02-10 2004-05-04 Mci Communications Corporation System, method and article of manufacture for a call back architecture in a hybrid network with support for internet telephony
US6034953A (en) 1997-03-12 2000-03-07 Nortel Networks Corporation System for local voice distribution by an ISDN communications controller
US6026087A (en) 1997-03-14 2000-02-15 Efusion, Inc. Method and apparatus for establishing a voice call to a PSTN extension for a networked client computer
US5987102A (en) 1997-03-14 1999-11-16 Efusion, Inc. Method and apparatus for bridging a voice call including selective provision of information in non-audio to the caller
US5945989A (en) * 1997-03-25 1999-08-31 Premiere Communications, Inc. Method and apparatus for adding and altering content on websites
US6081591A (en) * 1997-04-16 2000-06-27 Skoog; Frederick H. Signaling network gateway device and method for use in a signaling network
US6131162A (en) * 1997-06-05 2000-10-10 Hitachi Ltd. Digital data authentication method
US5978373A (en) 1997-07-11 1999-11-02 Ag Communication Systems Corporation Wide area network system providing secure transmission
US5958016A (en) * 1997-07-13 1999-09-28 Bell Atlantic Network Services, Inc. Internet-web link for access to intelligent network service control
US6804345B1 (en) * 1997-09-18 2004-10-12 At&T Corp Virtual contact center with flexible staffing control
US6104796A (en) * 1997-10-29 2000-08-15 Alcatel Usa Sourcing, L.P. Method and system for provisioning telecommunications services
US6493447B1 (en) * 1997-11-21 2002-12-10 Mci Communications Corporation Contact server for call center for syncronizing simultaneous telephone calls and TCP/IP communications
US6724747B1 (en) * 1997-12-03 2004-04-20 Telcordia Technologies, Inc., A Corp. Of Delaware Method and system for media connectivity over a packet-based network
US6134446A (en) 1997-12-10 2000-10-17 Motorola, Inc. Method and apparatus for subscriber unit location updating
US6937593B1 (en) 1997-12-31 2005-08-30 Mci Communications Corporation System and method for servicing calls originating via the internet
US6985478B2 (en) * 1998-02-17 2006-01-10 Genesys Telecommunications Laboratories, Inc. Using XML expressed primitives for platform and system-independent call modeling
US6072865A (en) 1998-03-23 2000-06-06 Mci Communications Corporation Enhanced call forwarding with termination notification
US6144723A (en) * 1998-03-24 2000-11-07 Nortel Networks Corporation Method and apparatus for providing voice assisted call management in a telecommunications network
US6370141B1 (en) * 1998-04-29 2002-04-09 Cisco Technology, Inc. Method and apparatus for configuring an internet appliance
US6188760B1 (en) 1998-05-08 2001-02-13 Cisco Technology, Inc. Signaling state management system for packet network gateways
US6343318B1 (en) * 1998-05-29 2002-01-29 Palm, Inc. Method and apparatus for communicating information over low bandwidth communications networks
US6075784A (en) 1998-06-08 2000-06-13 Jetstream Communications, Inc. System and method for communicating voice and data over a local packet network
US6407997B1 (en) 1998-08-05 2002-06-18 Sprint Communications Company L.P. Asynchronous transfer mode system for providing telephony service
US6229803B1 (en) * 1998-08-05 2001-05-08 Sprint Communications Co. L.P. Telecommunications provider agent
US6772139B1 (en) * 1998-10-05 2004-08-03 Smith, Iii Julius O. Method and apparatus for facilitating use of hypertext links on the world wide web
US6333931B1 (en) * 1998-12-28 2001-12-25 Cisco Technology, Inc. Method and apparatus for interconnecting a circuit-switched telephony network and a packet-switched data network, and applications thereof
US6597689B1 (en) * 1998-12-30 2003-07-22 Nortel Networks Limited SVC signaling system and method
US6345307B1 (en) * 1999-04-30 2002-02-05 General Instrument Corporation Method and apparatus for compressing hypertext transfer protocol (HTTP) messages
US6535506B1 (en) * 1999-05-11 2003-03-18 Click Interconnect, Inc. Method and apparatus for establishing communications with a remote node on a switched network based on hypertext calling received from a packet network
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6606660B1 (en) * 1999-08-31 2003-08-12 Accenture Llp Stream-based communication in a communication services patterns environment
US6502213B1 (en) * 1999-08-31 2002-12-31 Accenture Llp System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6640249B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6438594B1 (en) * 1999-08-31 2002-08-20 Accenture Llp Delivering service to a client via a locally addressable interface
US6742015B1 (en) * 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6640244B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6601192B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6550057B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment
US6715145B1 (en) * 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6615253B1 (en) * 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6529948B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Multi-object fetch component
US6640238B1 (en) * 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6571282B1 (en) * 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6477665B1 (en) * 1999-08-31 2002-11-05 Accenture Llp System, method, and article of manufacture for environment services patterns in a netcentic environment
US6477580B1 (en) * 1999-08-31 2002-11-05 Accenture Llp Self-described stream in a communication services patterns environment
US6442748B1 (en) * 1999-08-31 2002-08-27 Accenture Llp System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
US6434568B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6615199B1 (en) * 1999-08-31 2003-09-02 Accenture, Llp Abstraction factory in a base services pattern environment
US6549949B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6434628B1 (en) * 1999-08-31 2002-08-13 Accenture Llp Common interface for handling exception interface name with additional prefix and suffix for handling exceptions in environment services patterns
US6339832B1 (en) * 1999-08-31 2002-01-15 Accenture Llp Exception response table in environment services patterns
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
US6496850B1 (en) * 1999-08-31 2002-12-17 Accenture Llp Clean-up of orphaned server contexts
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6842906B1 (en) * 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6289382B1 (en) * 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
US6578068B1 (en) * 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6332163B1 (en) * 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
US6490564B1 (en) * 1999-09-03 2002-12-03 Cisco Technology, Inc. Arrangement for defining and processing voice enabled web applications using extensible markup language documents
US6671818B1 (en) * 1999-11-22 2003-12-30 Accenture Llp Problem isolation through translating and filtering events into a standard object format in a network based supply chain
US6606744B1 (en) * 1999-11-22 2003-08-12 Accenture, Llp Providing collaborative installation management in a network-based supply chain environment
US6804716B1 (en) * 1999-12-22 2004-10-12 Bellsouth Intellectual Property Corporation Network and method for call management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974135A (en) * 1997-06-11 1999-10-26 Harrah's Operating Company, Inc. Teleservices computer system, method, and manager application for integrated presentation of concurrent interactions with multiple terminal emulation sessions
US6029203A (en) * 1997-09-26 2000-02-22 3Com Corporation Apparatus and methods for use therein for an ISDN LAN modem that provides enhanced network activity

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE42942E1 (en) 1997-07-21 2011-11-22 Novartis Ag Powder filling apparatus and methods for their use
US8783305B2 (en) 1997-07-21 2014-07-22 Novartis Ag Powder filling apparatus and methods for their use
EP1768422A1 (en) * 2004-06-22 2007-03-28 ZTE Corporation Method for protecting incoming calls in personalized ring back tone service
EP1768422A4 (en) * 2004-06-22 2014-04-30 Zte Corp Method for protecting incoming calls in personalized ring back tone service
EP1830587A1 (en) * 2004-11-30 2007-09-05 ZTE Corporation Call protecting method and device for personalized ring back tone in an intelligent network
EP1830587A4 (en) * 2004-11-30 2010-04-21 Zte Corp Call protecting method and device for personalized ring back tone in an intelligent network
US8005201B2 (en) 2004-11-30 2011-08-23 Zte Corporation Call protecting method and device for personalized ring back tone in an intelligent network
WO2012135931A1 (en) * 2011-04-04 2012-10-11 Cambrai Solutions Inc. Application server for provisioning a controlled communications system in a cloud-based environment

Also Published As

Publication number Publication date
US20020085696A1 (en) 2002-07-04
US20020064267A1 (en) 2002-05-30
AU2001253043A1 (en) 2001-10-15
US7046778B2 (en) 2006-05-16
US7216350B2 (en) 2007-05-08

Similar Documents

Publication Publication Date Title
US7216350B2 (en) Methods and apparatus for call service processing by instantiating an object that executes a compiled representation of a mark-up language description of operations for performing a call feature or service
US6393481B1 (en) Method and apparatus for providing real-time call processing services in an intelligent network
AU770505B2 (en) Method and apparatus for providing real-time call processing services in an intelligent network
US5551035A (en) Method and apparatus for inter-object communication in an object-oriented program controlled system
US7934206B2 (en) Service level executable environment for integrated PSTN and IP networks and call processing language therefor
CA2399715C (en) Methods and systems for creating, distributing and executing multimedia telecommunications applications over circuit and packet switched networks
US6333931B1 (en) Method and apparatus for interconnecting a circuit-switched telephony network and a packet-switched data network, and applications thereof
WO2000019677A2 (en) Connection manager for telecommunications
JP2004135286A (en) Mediation of open advanced intelligent network interface for public switched telephone network
JP2002522932A (en) Method and system for intelligent distributed network architecture
JP2014090446A (en) Communication network
USH1964H1 (en) Resource management sub-system of a telecommunications switching system
EP0405829B1 (en) Object oriented software system architecture
Calder et al. Hybrid solutions to the feature interaction problem
KR100489686B1 (en) Method for processing event of softswitch
Cisco Release Notes for the BTS 10200 Release 2.0
US7573899B2 (en) Adaptor module
EP1352508B1 (en) Improvements in service oriented networks
Elfe et al. Dynamic constraint satisfaction for feature interaction
WO2001003447A2 (en) An intelligent network management system
Sprague et al. Tekelec's Transport Adapter Layer Interface
Chopra et al. Toward standardisation of the AIN SLEE and SMS interface
Solomonides The evolution of control architectures towards next generation networks
Sefidcon Feature interactions detection in intelligent networks
CA2347405A1 (en) Connection manager for telecommunications

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP