Abstract:
A telephony application capable of being updated while on-line is disclosed. The application supports a plurality of active dialogs with callers, and comprises functions, call flows, voice prompts, and on-line updating versions for making on-line modifications of the functions, call flows, and voice prompts. The modifications are coordinated so that selected sets of functions, call flows and voice prompts can be committed to use while one or more active dialogs are occurring without affecting the active dialog(s).

Description:
This application is a continuation of application Ser. No. 08/415,845, filed Apr. 3, 1995, now abandoned. 
    
    
     FIELD OF THE INVENTION 
     The present invention generally relates to telephony applications, and more particularly to a telephony application having means for performing on-line updates of call flows, functions, and voice prompts. The invention permits on-line updates to be made to the call flows, functions and prompts without affecting active dialogs. 
     BACKGROUND OF THE INVENTION 
     FIG. 1 is a simplified block diagram depicting part of a telephone system comprising a public switched telephone network (PSTN) 10, a network applications platform (NAP) 12, and a number of telephony applications, including a voicemail application 14A, a fax application 14B, a call routing application 14C, and a bank-by-phone application 14D. 
     The basic elements of any telephony application include call flows, functions, and prompts. Call flows define the personality of the application, i.e., the logical flow of the application interface to the caller (the person that dialed a phone number and was transferred to the telephony application in question). Functions represent the software building blocks employed to implement the desired call flow functionality. A function is computer code and may involve access to an application database. Each function produces a result that determines the path of the associated call flow. Prompts are logical groups or sequences of pre-recorded, typically digitized, voice. Prompts are presented to the caller through control of the call flows. 
     A class of telephony application creation environments employs a modularized approach whereby the basic elements (call flows, functions, prompts) are logically separated both at the time of creation and during execution. In particular, the call flows are maintained in an interpretative state table, functions reside in executable object code, and prompts reside in a database such as, for example, Unisys&#39; SPeech Interface to NAP, or SPIN, database. Further information about Unisys&#39; Network Applications Platform (NAP) can be obtained from U.S. Pat. No. 5,133,004, Jul. 21, 1992, titled &#34;Digital Computer Platform For Supporting Telephone Network Applications.&#34; 
     In a telephone system of the type depicted in FIG. 1, the network applications platform (NAP) 12 could be located at a local telephone company connected to one or more central offices or switches, or could alternatively be located on the premises of a customer of the telephone company, such as a large or medium-sized company. In the latter case, the NAP 12 would typically be connected to a private branch exchange (PBX) instead of a PSTN. 
     The present invention was devised during the process of developing a service creation environment (somewhat similar to a compiler and editor) for servicing telephone systems employing telephony applications (voicemail, fax, call routing, bank-by-phone, etc.), and particularly for modifying such applications after they are installed in the customer&#39;s telephone system. Telephone customers typically demand 100% system availability, which means that, for a large customer having hundreds or even thousands of employees at a given location, it is extremely difficult to take the telephony application off-line (out of service) for even a short time to make updates or modifications. Therefore, when it becomes necessary to modify the call flows, voice prompts, or functions of an application, the application provider needs a way to make such modifications while the application is kept on-line. Moreover, there is a need to coordinate such modifications so that, in a given dialog, the appropriate versions of call flows, voice prompts and functions are invoked. In other words, once a caller enters into a dialog with the application, the application should not change versions of call flows, voice prompts or functions during that dialog. An &#34;active dialog&#34;, then, is a concurrent logical communication path between the application and the NAP, that is maintained in an &#34;active&#34; status, provided the necessary operating conditions are present, e.g., the active dialog is not terminated. However, different versions could be in use at the same time for different dialogs. These needs are particularly acute for high volume telephone systems, which typically cannot be taken out of service without inconveniencing at least some users. 
     In summary, a disadvantage of modularizing telephony applications into call flows, functions, and prompts is that to maintain proper functionality they all need to be updated in a coordinated fashion when changes are made to any one of the parts. Typically, any combination of changes to the parts will require that the application be taken out of service. The goal of the present invention is to provide a mechanism permitting one to make changes to call flows, functions and voice prompts without taking the application out of service. Preferably, all changes should take effect at the same time so that any new caller will be presented with a coordinated set of call flows, functions and prompts. The present invention meets these goals. 
     SUMMARY OF THE INVENTION 
     One key to providing a mechanism for making on-line updates to a telephony application is in how the call flows are maintained at runtime. At any given time, there are plural sets or &#34;versions&#34; of call flows available. One version is loaded during application initialization and one or more versions can be loaded via on-line updates. A software module, referred to herein as &#34;NAPTool agent,&#34; associates every new dialog (incoming phone call) with a call flow version indicator (V ID ). The association between dialog and call flow version is maintained until the dialog is terminated. 
     The functions associated with a call flow version are contained in a library. Each version of the call flow may be associated with a different function library. The invention permits a function library to be re-installed, a bug to be fixed, or a new function to be added, without taking the application out of service. The invention coordinates new call flows with new functions at the caller or dialog level. 
     In preferred embodiments of the invention, prompts are maintained and supported outside of the NAPTool agent by a product called &#34;SPIN/PEP&#34; (Speech Interface to NAP/Prompt Expansion Processor). Since it is typical for an update to a telephony application to require new or modified prompts, each set of prompts required by one of its call flow versions is defined in a different SPIN application and is identified by a SPIN application ID. Each call flow version is then associated with a SPIN application ID. During initialization of the telephony application, the NAPTool agent saves this association so that it is available when a call flow version is loaded and can be used to access the required set of prompts. 
     In preferred embodiments, the NAPTool agent does not have direct control of what prompt versions are associated with a given SPIN application ID. This allows an external module, referred to as the &#34;Installation Manager,&#34; to have more control of an installation or update. This is accomplished by having two-phase commits of when updated information (e.g., call flows and prompts) is actually put into production. Initially, the NAPTool agent marks a call flow version as pending instead of putting it directly into production. Both the NAPTool agent and PEP are given a confirmation notification by the installation manager, informing them when to put pending call flows and prompts into production. 
     Call flows are coordinated with prompts and call flows are coordinated with functions, so inherently prompts are coordinated with functions. The coordination of these entities is performed on a live system and takes effect only on new dialog activity, leaving existing activity unchanged. To accomplish this, the NAPTool agent associates a version of the call flows with every new dialog. 
     To summarize, the present invention provides a service creation environment in which call flows, function code and prompts can be changed on-line. All of these changes are coordinated together so that they take effect at the dialog (phone call) level. 
     Other features of the invention are described below. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a conventional telephone system comprising a variety of telephony applications. 
     FIG. 2 is a block diagram of a runtime environment according to a preferred embodiment of the present invention. 
     FIG. 3A depicts a first version of call flows and functions, and 
     FIG. 3B depicts a second version of call flows and functions. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     FIG. 2 depicts a block diagram of one preferred embodiment of a runtime environment in accordance with the present invention. In this embodiment, the network applications platform (NAP) 12 interacts with a NAPTool agent (a state machine) 14E, which in turn interacts with a SPIN/PEP 18. The NAPTool agent 14E and SPIN/PEP 18 are coupled to an Installation Manager 16. The NAP 12 is coupled to a voice database 20 containing digitized sequences of voice messages or prompts. The NAPTool agent 14E has access to a Version 1 function library 22, comprising code and data, and a Version 1 set of call flows 24. The call flows are stored in memory tables. The SPIN/PEP 18 accesses a Version 1 set of application IDs which identify corresponding voice sequences in the voice database 20. The call flows and SPIN application IDs are memory resident. 
     A key aspect of the present invention is that the runtime environment of FIG. 2 also comprises a Version 2 function library 22&#39;, a Version 2 set of memory resident call flows 24&#39;, and a Version 2 set of memory resident SPIN application IDs 26&#39;. 
     The functionality of the system of FIG. 2 will now be described. 
     The Installation Manager 16, NAPTool agent 14E, and Speech Interface to NAP/Prompt Expansion Processor (SPIN/PEP) 18 are the major program objects. The function library objects each contain all of the functions needed for a given call flow version. As mentioned above, both versions of call flows and both versions of SPIN application IDs represent memory resident data. 
     As explained above, the preferred embodiments of the present invention employ an application, e.g., the NAPTool agent 14E, to associate every new dialog with a call flow version indicator (V ID ). The association between dialog and call flow version is maintained until the dialog is terminated. As each association is made between a dialog and a version indicator, a counter is employed to report status on call flow activity and to determine when to reuse call flow table memory 24, 24&#39;. If a request is made to update the call flows and there is no unused table available for a new version, the operator is asked to make a decision on whether to abort the load or recycle (overwrite) the oldest active version of the call flow table. 
     The functions associated with a version of call flows are contained in the function libraries 22, 22&#39;. Each version of the call flows may be associated with a different function library. The goal here is to be able to re-install a function library, to fix a bug, or to add a new function, without taking the application out of service. The NAPTool agent 14E provides two library declarations (one service, one custom) per call flow version. If a function library must be re-installed, the title (part of the call flow installation parameters) is changed and the call flows are updated on-line. When a new version of call flows requires function library code changes, the library title change allows for the new library to be brought up alongside the original library. Functions accessed by the original call flows are linked to the original function library for the duration of their respective dialogs. Functions accessed from the new call flows are linked to the new function library. This process completely coordinates a new version of call flows with a new version of function library at the caller level. 
     After each new version of call flows has completely loaded (which may include new library declarations), the NAPTool agent 14E determines whether any current libraries are no longer in use. If a previously loaded library is not in use, it is de-linked to allow future call flow updates the opportunity to reuse the declarations. 
     In preferred embodiments, prompts are maintained and supported outside the NAPTool agent 14E by the SPIN/PEP 18. Since an update to a telephony application typically requires new or modified prompts, each set of prompts required by one of the call flow versions is defined in a different SPIN application and is identified by a SPIN application ID stored in memory tables 26, 26&#39;. Each call flow version is then associated with a SPIN application ID in the telephony application&#39;s installation parameter file (not shown). During initialization of the telephony application, the NAPTool agent 14E saves this association so that it is available when a call flow version is loaded and can be used to access the required set of prompts. 
     The NAPTool agent 14E does not have direct control of what prompt versions are associated with a given SPIN application ID. The coordination process is left outside the NAPTool agent so that the Installation Manager 16 can have more control of an installation or update. This is accomplished by having two-phase commits of when updated information is actually put into production. Initially, the NAPTool agent marks a call flow version as pending instead of putting it directly into production. Both the NAPTool agent and PEP are given a confirmation notification by the installation manager, informing them when to put pending call flows and prompts into production. 
     Call flows are coordinated with prompts and call flows are coordinated with functions, so inherently prompts are coordinated with functions. The coordination of these entities is done on a live system and takes effect only on new dialog activity, leaving existing activity unchanged. To accomplish this, the NAPTool agent associates a version of the call flows with every new dialog. 
     FIGS. 3A and 3B schematically depict a portion of a call flow that deals with the main menu of a voice mail application. The call flow is made up of state transitions called &#34;callstates.&#34; Callstates are represented by the ellipses. The rounded-edge boxes contain descriptive information. The prompt script is what the caller actually hears when a call state associated with the PLAYPROMPT function is executed. Assume the customer wishes to change the user interface of his or her voicemail application. For example, assume the customer has requested that a new option be presented to the caller&#39;s main menu. The new functionality desired is to add a scan option so that, if a caller has many messages, he or she may scan the first several seconds of each message. To accomplish this menu change, all three basic elements of the application must change. The call flows must be modified to add a new result to the PLAYPROMPT function. The functions library must be modified by a adding new function (&#34;Scan&#34;) for the new result to execute, and the voice prompts must be modified to use the MENU2 prompt script instead of the MENU1 script. 
     The present invention is not limited to the specific embodiments described above. For example, embodiments of the invention could employ more that two versions of call flows, function libraries, or voice prompts. Moreover, the invention is not limited to voicemail applications, as other applications such as fax, call routing, bank-by-phone, and the like can employ the inventive concept of maintaining &#34;shadow&#34; versions of various parts of the application in question, such that the application can be updated while it is on-line.