Abstract:
A system and computer-based method for allowing a user to control the switching between a PSTN voice communication link between a user computer and a remote telephone and a VoIP voice communication link is disclosed. A soft-phone application running on a user computer allows a user to suspend a phone call at the switch port of a server computer connected to an exchange and switch from a PSTN connection to a VoIP connection or vice versa.

Description:
CROSS-REFERENCE(S) TO RELATED APPLICATION(S)  
       [0001]    This application claims the benefit of prior U.S. Provisional Patent Application No. 60/272,889, filed on Mar. 2, 2001, priority from the filing date of which is hereby claimed under 35 U.S.C. §  119 . 
     
    
     
       FIELD OF THE INVENTION  
         [0002]    The present invention is related to the field of software communication systems and, in particular, software communication systems wherein a voice communication link can be switched between a Public Switched Telephone Network connection and a Voice Over IP connection.  
         BACKGROUND OF THE INVENTION  
         [0003]    In recent years, there has been a tremendous proliferation of computer-related telephone communication systems that have begun to infiltrate the Public Switched Telephone Network (PSTN). Voice Over IP (VoIP) is one way in which a voice communication link can be realized using a computer-related telephone communication system. In a VoIP connection, a user computer has a single data connection to a server computer which in turn has a connection to an exchange, such as a corporate private branch exchange (PBX) capable of connection to many other telephones either via the PBX or via the PBX and the PSTN. On the single data connection, call control data, as well as voice data, are sent and received by a software application running on the user computer over a TCP/IP connection to the server computer. A VoIP communication link is an effective way of using existing intranets and the Internet to establish a voice communication link between remote telephones and a user computer. However, during high traffic or interruptions on a network, real-time communication becomes problematic. A standard PSTN connection does not suffer from a real-time communication slowdown because it uses isolated communication network links that are not affected by high traffic or other computer network related problems.  
           [0004]    In the past, software applications were able to detect problems on a particular network and determine if a real-time communication interruption was about to occur. At this point, the software application was able to switch the voice communication link from a Voice Over IP (VoIP) connection to a Public Switched Telephone Network (PSTN) connection. However, once this switch was made, software applications were unable to switch the voice communication link back to a VoIP connection. Furthermore, the user had no control over the switching process as a software determination initiated the switch from a VoIP connection to a PSTN connection. The present invention overcomes these limitations of previous software applications and voice communication systems by allowing a user of a voice communication link to freely switch between a VoIP connection and a PSTN connection.  
         SUMMARY OF THE INVENTION  
         [0005]    The present invention is directed to a system and computer-based method for allowing a user to control the back and forth switching of voice communication between a PSTN communication connection between a user computer and a remote telephone and a VoIP communication connection. The present invention can be used to extend the functionality of a telephone communication exchange, such as a corporate PBX, to remote users, giving the remote user access to all of the features and functions of a typical telephone communication exchange. This is accomplished by using a “soft-phone” graphical user interface (GUI) application running on a user computer. Commands from the soft-phone control a server computer that provides switching functionality between the user computer and remote telephones connected to the server computer through a telephone exchange. During a voice communication session between a user computer and a remote telephone, the user has the ability to initiate a change in connection type between a PSTN connection and a VoIP connection.  
           [0006]    In accordance with other aspects of the invention, a remote telephone and a user at a user computer location can communicate in one of two ways: via a PSTN connection or via a VoIP connection. A PSTN connection can be established between the remote telephone and a regular telephone at the user&#39;s location. A VoIP connection can be between a remote telephone and a soft-phone on the user&#39;s computer at the user&#39;s location.  
           [0007]    In accordance with further aspects of the present invention, a user establishes a VoIP connection through a single data connection from the user computer to a server computer. Call control data and voice data are promulgated between the user computer and the server computer through the single data connection. The server computer provides a switching system between the user computer and the exchange. On the single data connection, call control data is sent and received by a VoIP client application running on the user computer. The VoIP client application communicates with the server computer over a suitable (e.g. TCP/IP) connection to the network. To transmit and receive voice data, a user typically uses an integrated headset and boom microphone plugged into the user&#39;s computer soundcard. Voice data to and from the headset/microphone passes through the soundcard, and from there, it is encoded and “packetized” for sending, or “depacketized” and decoded for receiving by the user&#39;s computer. Call control data and voice data are processed by different program modules running on the server computer.  
           [0008]    In accordance with still further aspects of the present invention, a user can suspend a phone call at a switch port of the server computer and toggle from a PSTN connection to a VoIP connection or vice versa. In one embodiment, a user who has established a VoIP connection to a remote telephone can initiate a switch to a PSTN connection. The call is interrupted at the switch port and a PSTN port object is created at the server computer. Upon establishing a voice communication link between the newly created PSTN port and the user computer, the server computer deconstructs the previous VoIP port used in the initial voice communication link. At that point, the call suspended at the switch port is re-directed to the newly created PSTN port and the voice communication link is re-established. Similarly, in another embodiment, a user who has established a PSTN connection to a remote telephone can initiate a switch to a VoIP voice communication link. The call is interrupted at the switch port and a VoIP port object is created at the server computer. Upon establishing a connection between the newly created VoIP port and the user computer, the server computer deconstructs the previous PSTN port used in the initial voice communication link. At that point the call suspended at the switch port is re-directed to the newly created VoIP port and the voice communication link is re-established. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0009]    The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:  
         [0010]    [0010]FIG. 1 is a block diagram of a general purpose computer system suitable for implementing the present invention.  
         [0011]    [0011]FIG. 2 is a pictorial representation of a communication system implementing the present invention.  
         [0012]    [0012]FIG. 2A is a pictorial representation illustrating in more detail the VoIP channel of the communication system shown in FIG. 2.  
         [0013]    [0013]FIG. 3 is a flow diagram illustrating the process of detecting whether a computer system is configured for both VoIP and PSTN connections.  
         [0014]    [0014]FIG. 4 is a flow diagram illustrating the process of implementing a change between VoIP and PSTN connections.  
         [0015]    [0015]FIG. 5 is a pictorial representation of the steps involved in disconnecting a VoIP connection.  
         [0016]    [0016]FIG. 6 is a flow diagram illustrating the process of disconnecting a VoIP or PSTN connection.  
         [0017]    [0017]FIG. 7 is a flow diagram illustrating the process of creating a new voice communication link for both VoIP and PSTN.  
         [0018]    [0018]FIG. 8 is a pictorial representation of the steps involved in re-establishing a PSTN connection.  
         [0019]    [0019]FIG. 9 is a flow diagram illustrating the process of re-connecting a PSTN connection.  
         [0020]    [0020]FIG. 10 is a pictorial representation of the steps involved with disconnecting a PSTN connection.  
         [0021]    [0021]FIG. 11 is a flow diagram illustrating the process of disconnecting PSTN connection.  
         [0022]    [0022]FIG. 12 is a pictorial representation of the steps involved with re-establishing a VoIP connection.  
         [0023]    [0023]FIG. 13 is a flow diagram illustrating the process of re-connecting VoIP connection. 
     
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT  
       [0024]    [0024]FIG. 1 and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the invention may be implemented. Although not required, the invention will be described in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routines, programs, objects, components, data structures, etc., that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations.  
         [0025]    The exemplary computer system shown in FIG. 1 includes a general purpose computing device in the form of a conventional personal computer  10 , including a processing unit  21 , a system memory  22 , and a system bus  23  that couples various system components including the system memory to the processing unit  21 . The system memory includes read only memory (ROM)  24  and random access memory (RAM)  25 . A basic input/output system (BIOS)  26 , containing the basic routines that help to transfer information between elements within the personal computer  10 , such as during start-up, is stored in ROM  24 . The system bus  23  may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. The personal computer  10  further includes a hard disk drive  27  for reading from and writing to a hard disk, not shown. The hard disk drive  27 , is connected to the system bus  23  by a hard disk drive interface  32 .  
         [0026]    A number of program modules may be stored on the hard disk, including an operating system, one or more application programs, other program modules, and program data. A user may enter commands and information into the personal computer  10  through input devices such as a keyboard  40  and pointing device  42 . Other input devices, such as a microphone (not shown) can also be used. These and other input devices are often connected to the processing unit  21  through a serial port interface  46  that is coupled to the system bus, but may be connected by other interfaces, such as a parallel port, game port or a universal serial bus (USB). A monitor  47  or other type of display device is also connected to the system bus  23  via an interface, such as a video adapter  48 . A headset and microphone  57  are also connected to the system bus  23  via an interface, such as a sound card  56 . In addition to the monitor, headset and microphone, personal computers typically include other peripheral output devices (not shown), such as printers, speakers, scanners, etc.  
         [0027]    The personal computer  10  may operate in a networked environment using logical connections to one or more remote computers, such as remote computer  49 . The remote computer  49  may be another personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the personal computer  10 , although only a memory storage device  50  has been illustrated in FIG. 1. The logical connections depicted in FIG. 1 include a local area network (LAN)  51  and a wide area network (WAN)  52 . Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet. As depicted in FIG. 1, the remote computer  49  can communicate with the personal computer  20  via the local area network  51  or via the wide area network  52 .  
         [0028]    When used in a LAN networking environment, the personal computer  10  is connected to the local network  51  through a network interface or adapter  53 . When used in a WAN networking environment, the personal computer  10  typically includes a modem  54  or other means for establishing communications over the wide area network  52 , such as the Internet. The modem  54 , which may be internal or external, is connected to the system bus  23  via the serial port interface  46 . In a networked environment, program modules depicted relative to the personal computer  10 , or portions thereof, may be stored in the remote memory storage device. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.  
         [0029]    [0029]FIG. 2 illustrates an exemplary architecture of a networked telephone communication system employing the invention that includes components for both VoIP connections and PSTN connections between various telephones and computer systems. Exemplary user computers  200   a ,  200   b ,  200   c  are shown connected to an exemplary server computer  210  through a network  204 . In an actual embodiment of the invention, multiple user computers are connected to one or more server computers via the network  204 . The network  204  may be a local area network  51  (FIG. 1), a wide area network  52  (FIG. 1), or a combination of networks that allow the server computer  210  to communicate with other computers, such as the user computers  200   a ,  200   b ,  200   c  . . . , either directly or indirectly. The server computer  210  and the user computers  200   a ,  200   b ,  200   c  . . . are preferably similar to the personal computer  10  depicted in FIG. 1 and discussed above.  
         [0030]    In the exemplary pictorial illustration shown in FIG. 2, the user computers  200   a ,  200   b ,  200   c  . . . are connected to the network  204  via communication links  203   a ,  203   b ,  203   c  suitable for carrying both voice and data. A communication link  205  is shown as connecting a hereinafter-described VoIP port  211  to the network  204 . Additionally, a communication link  206  is shown connecting a hereinafter-described TCP_CLIENT program module  222  to the network  204 . The TCP_CLIENT program module is shown communicating with another program module (the OFFICELINK_CLIENT program module that, in turn, communicates with and controls a switch port  212 . A system bus  213 , similar to the system bus  23  of FIG. 1, provides a communication link between the VoIP port  211  and the switch port  212 , which is also located within the server computer  210 .  
         [0031]    The switch port  212  is linked by a communication link  239  to an exchange  240 . Exchange  240  can be any communication system capable of handling typical telephone communication protocols and interfaces. Most typically, exchange  240  is a PBX. The exchange  240  is capable of establishing a connection to any telephone on the exchange network, such as remote telephone  202 , via communication link  241 . As will be readily appreciated by those skilled in the art and others, the exchange  204  is exemplary. In addition to being formed by a PBX, the exchange may be formed by the PSTN to by a combination of PBXs and the PSTN.  
         [0032]    Each user computer  200  typically has an associated user telephone  208   a ,  208   b ,  208   c  . . . at the locations of the user computers  200   a ,  200   b ,  200   c  . . . . Each user telephone  208   a ,  208   b ,  208   c  is connected to the server computer  210  through communication links  207   a ,  207   b ,  207   c  . . . connected to a switch  215  that, in turn, connects by a communication link  207  to the server computer  210 . The switch may be a PBX and could be formed by the exchange  240 . Thus it will be appreciated that the communication path between the user telephones  208   a ,  208   b ,  208   c  . . . and the server  210  can be any combination of exchanges, switches, routers, computer networks or any other typical phone communication system components. Since typical telephone communication systems and components are well known, the communication path is not described further. The communication link  207   d  from the switch  215  is shown as connected to a hereinafter-described PSTN port  209 . The PSTN port  209  is connected to the switch port  212  through the system bus  213 . As described in detail below, PSTN and VoIP voice communications use various components of the system shown in FIG. 2.  
         [0033]    [0033]FIG. 2A illustrates in more detail the VoIP channel of the communication system shown in FIG. 2. More specifically, FIG. 2A shows that the VoIP port includes two modules—a CIP channel module and a CDSP channel module, both of which are hereinafter described.  
         [0034]    As will be readily appreciated from the foregoing description, the herein-described modules are software modules that form part of an application program or programs running on the server computer  210 . The application program(s) extend the functionality of the exchange  240  to all user computers connected to the network  204  by providing features and functions of a common telephone exchange. Additionally, each user computer  200   a ,  200   b ,  200   c  . . . includes an application program (a VoIP client application called a soft-phone) that handles voice communication links to and from the user computer  200   a ,  200   b ,  200   c  . . . . A soft-phone is a graphic user interface (GUI) application that has the ability to control the voice communication between the user computer and the server computer  210 . The application program running on the server computer  210  has the ability to differentiate between a PSTN voice communication link and a VoIP voice communication link.  
         [0035]    When voice communication is to be established using the VoIP connection between one of the user computers  200   a ,  200   b ,  200   c  . . . and a remote telephone  202 , the server computer  210  is configured to use the VoIP voice communication link. When a call is initiated at the remote telephone  202 , the call is directed to the server computer  210  through the exchange  240 . The server computer  210  deciphers the destination of the call (i.e., which user computer on network  204  is to receive the call) in order to establish a voice communication path. Similarly, when a call is initiated at the user computer  200 , the server computer  210 , which is also configured to receive calls from the user computer  200 , deciphers the destination of the call (i.e., which telephone is to receive the call) in order to establish voice communication path.  
         [0036]    While other protocols can be used, preferably, the VoIP connection between the user computer  200  and the server computer  210  uses the well-known TCP/IP protocol. The VoIP connection carries two kinds of packetized data—call control data and voice data. Since the ability to use the TCP/IP protocol to identify and communicate different kinds of data is well known in the art, this protocol is not described further herein. Call control data and voice data follow different communication paths through the server computer  210 . Call control data is passed through the OFFICELINK_CLIENT program module  223  and the TCP_CLIENT program module  222 . Voice data is directed by the system bus  213  to the VoIP port  212 .  
         [0037]    The establishment of the communication path for both call control and voice data depends on who initiates the call. For a call initiated by the remote telephone  202 , the call signal (which is typically a pulse code modulated (PCM) signal) is sent by the exchange  240  to the switch port  212  of the server computer  210 . The call destination is first determined by the server computer  210 . Since the call signal is not in packetized TCP/IP form, the call signal is directed to the OFFICELINK_CLIENT program module  223  where the signal is “packetized.” The packetized call signal is directed to the TCP_CLIENT program module  222  where it is put in TCP/IP form. The packetized call signal, now in the form of TCP/IP call control data packets, is transmitted to the network  204  by the TCP_CLIENT program module  222  via the communication link  206 . The call control data packets pass through the network  204  and are eventually received by the designated user computer  200   a ,  200   b ,  200   c  . . . . A soft-phone application program running on the destination user computer  200   a ,  200   b ,  200   c  . . . receives the call control data packets and indicates to the user that there is an incoming call. After the user of the destination user computer  200   a ,  200   b ,  200   c  . . . “answers” the soft-phone, a voice communication link is established to transmit voice data back and forth between the destination user computer  200   a ,  200   b ,  200   c  . . . and the calling remote telephone  202 .  
         [0038]    As was previously pointed out, voice data follows in a different communication path than call control data. After the soft-phone has answered the call, a voice communication link is established between the destination user computer  200   a ,  200   b ,  200   c  . . . and the calling remote telephone  202  by directing voice data from the switch port  212  to the VoIP port  211  through the system bus  213 . As noted above, the VoIP port  211  has two program modules that facilitate the voice communication link—a CIP Channel program module  220  and a CDSP Channel program module  221 .  
         [0039]    The voice data is received by the CDSP Channel program module  221  where it is encoded into a form suitable for transmitting using TCP/IP. The depacketized, encoded voice data is packetized by the CIP Channel program module  220  prior to being sent to the destination user computer  200   a ,  200   b ,  200   c  . . . though the network  204 . Call signal voice data that has been encoded and packetized is herein referred to as voice data packets. In the opposite direction, voice data packets produced by the soft-phone application running on the destination user computer  200   a ,  200   b ,  200   c  . . . and received by the server computer  210  are depacketized by the CIP Channel program module  220 . The resulting depacketized encoded voice data is decoded by the CDSP Channel program module  221  into forwardable (i.e., PCM) voice signals. The PCM signals are directed by the system bus  213  to the switch port  212 . The switch port  212  forwards the PCM voice signals to the exchange  240  which forwards the PCM signals to the calling remote telephone  202  Since PCM encoding and decoding of telephone voice signals is well known in the art, it is not discussed here. A voice communication link is now established using the VoIP connection.  
         [0040]    When a call is initiated by the soft-phone application running on a user computer  200   a ,  200   b ,  200   c  . . . , call control data packets are first generated and sent by the calling user computer  200   a ,  200   b ,  200   c  . . . to the server computer  210 . The call control data packets are received by the TCP_CLIENT program module  222 . The call control data packets, which are in TCP/IP form, are depacketized by the TCP_CLIENT program module  222 . The depacketized call control data is converted by the OFFICELINK_CLIENT program module  223  into a call signal. The call signal is transmitted to the remote telephone  202  being called via the switch port  212  and the exchange  240 . A voice communication link is established when the called remote telephone  202  is answered. Thereafter, voice data can be transmitted between the calling user computer  200   a ,  200   b ,  200   c  . . . and the called remote telephone  202 .  
         [0041]    As before, voice data packets produced by the calling user computer  200   a ,  200   b ,  200   c  . . . and received by the server computer  210  are depacketized by the CIP Channel program module  220 . The depacketized encoded voice data is decoded by the CDSP Channel program module  221  and converted into a forwardable telephone (i.e., PCM) signal. The PCM signal is transmitted via the system bus  213  to the switch port  212  which forwards the PCM signal to the exchange  240 . The exchange  240  forwards the PCM signal to the called remote telephone  202 . PCM signals produced by the called remote telephone  202  are sent by the exchange  240  to the switch port  212 . The switch port  212  forwards the PCM signals, via the system bus  213 , to the CDSP channel program module  221 , which encodes the PCM signals. The depacketized encoded PCM signals are packetized by the CIP Channel program module  220  and sent to the calling remote user computer  200   a ,  200   b ,  200   c  . . . through the network  204 .  
         [0042]    As noted above, embodiments of the present invention have the ability to switch fluidly between a VoIP connection and a PSTN connection without losing the continuity of the connection between the communicating user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202 , i.e., without dropping the call. A voice communication link that is currently a VoIP connection can be switched to a PSTN connection. Alternatively, a voice communication link that is currently a PSTN connection can be switched to a VoIP connection. The first switching process to be described below is the VoIP connection to a PSTN connection switching process.  
         [0043]    In accordance with this invention, the user of the communicating user computer  200  uses the soft-phone application running on the user computer  200   a ,  200   b ,  200   c  . . . to initiate a switch from a VoIP connection to a PSTN connection. This is accomplished by attempting to enable the display of a pop-up menu and choosing a “Use Phone” command. The soft-phone application first confirms that the system is capable of handling the request, and if capable, enables the pop-up menu. After the “Use Phone” selection is made, the soft-phone application sends a message to the server computer  210  to change from a VoIP connection to a PSTN connection. Flow diagrams illustrating these logical processes are shown in FIG. 3 and FIG. 4.  
         [0044]    [0044]FIG. 3 is a flow chart illustrating the process of checking the configuration of the system. Upon receipt of a user input, such as, for example, a right mouse click  301 , the soft-phone determines, in step  302 , if the communicating user computer  200   a ,  200   b ,  200   c  . . . is configured for both VoIP and PSTN. If the communicating user computer is not configured for both VoIP and PSTN, the pop-up menu is not displayed and the process is terminated as shown in step  306 . If the communicating user computer  200   a ,  200   b ,  200   c  . . . is configured for both VoIP and PSTN, the pop-up menu is displayed as shown in step  303 . The user is presented with various choices, which are described below with respect to FIG. 4. The pop-up menu is displayed until either the user makes a selection or the pop-up menu is closed by some other well-known action, such as, for example, placing the mouse cursor in a screen location and activating (clicking) the appropriate mouse button.  
         [0045]    [0045]FIG. 4 is a flow chart illustrating the process for responding to a user&#39;s input once it has been determined (FIG. 3) that a particular user computer  200  has been configured for both VoIP and PSTN and the pop-up menu is displayed. The pop-up menu displays several menu items. Among the choices are “Use Phone” and “Use VoIP.” At step  401 , the user selects a particular menu item. At step  402 , the soft-phone application determines whether or not the user has selected the “Use Phone” item. If the user has selected “Use Phone,” the process moves to step  403  where a test is made to determine if the user computer is currently using a VoIP connection. If the user computer  200  is not currently using a VoIP connection, the user computer  200  must be using a PSTN connection. Thus, no change is necessary. As a result, the process terminates at step  410 . If the user computer  200  is currently using a VoIP connection, a change in the voice communication link is required. As a result, the process moves to step  404  where a “voice connection off” message is sent to the server computer  210 . Once the “voice connection off” message has been sent to the server computer  210 , the process terminates at step  410 .  
         [0046]    If the “Use Phone” test, step  402 , is answered in the negative, the process proceeds to step  405  where a test is made to determine if “Use VoIP” has been selected from the pop-up menu. If “Use VoIP” has been selected, the process moves to step  406 . At step  406 , a test is made to determine if the user computer  200  is currently using a PSTN connection. If the user computer  200  is not currently using a PSTN connection, the process terminates at step  410 . If it is determined that the user computer  200  is currently using a PSTN connection, a change in the voice communication link is required. As a result, again, at step  404 , a “voice connection off” message is sent to the server computer  210 . After the “voice connection off” message has been sent to the server computer  210 , the process terminates at step  410 . The process also terminates at step  410  if the user has not selected either “Use Phone” or “Use VoIP” in the pop-up menu.  
         [0047]    The “voice connection off” message sent to the server computer triggers a number of steps that cause the existing communication path to be torn down and a new and different communication path to be built. FIG. 5 is a pictorial representation of the steps involved in terminating a VoIP connection at the server computer  210  when a “voice connection off” message is received by the server computer  210 . For ease of following the following description, the sequence of steps is shown by numbers in parentheses. When the soft-phone application running the communicating user computer  200   a ,  200   b ,  200   c  . . . sends a “voice connection off” message to the application server  210 , the message is sent  501  in TCP/IP form to the TCP_CLIENT program module  222 . This is step ( 1 ). The “voice connection off” message is de-packetized by the TCP_CLIENT program module  222  and sent  502  to the OFFICELINK_CLIENT program module  223 . This is step ( 2 ). In response to the “voice connection off” message, the OFFICELINK_CLIENT program module  223  disconnects  503  the CDSP Channel program module  221  from system bus  213  and, thus, from the switch port  212 . This is step ( 3 ). The OFFICELINK_CLIENT program module  223  then sends a “stop” message  504  to the CIP Channel program module  220 . This is step ( 4 ). In response to the “stop” message, the CIP Channel program module  220  disconnects  503  the VoIP connection between the server computer  210  and the communicating user computer  200   a ,  200   b ,  200   c  . . . . This is step ( 5 ). Then the CIP Channel program module  220  is disconnected from the CDSP Channel program module  221 . This is step ( 6 ). After the VoIP connection has been disconnected, the CIP Channel program module  220  sends  507  a “stopped” message back to the OFFICELINK_CLIENT program module  223 . This is step ( 7 ). A “voice connection off” response message is generated by the OFFICELINK_CLIENT program module  223  and sent  508  to the TCP_CLIENT program module  222 . This is step ( 8 ). The “voice connection off” response message is put into TCP/IP form by the TCP_CLIENT program module  222  and sent  509  to the communicating user computer  200   a ,  200   b ,  200   c  . . . . This is step ( 9 ). If at any step, a failure occurs, a “voice connection off failed” message (not shown) is sent to the communicating user computer  200   a ,  200   b ,  200   c . . . .    
         [0048]    [0048]FIG. 6 is a flow chart of the process followed by the soft-phone application running on the communicating user computer  200   a ,  200   b ,  200   c  . . . upon receiving a “voice connection off” response message or a “voice connection off failed” message. At step  601 , the message is received by the communicating user computer  200   a ,  200   b ,  200   c  . . . . In step  602 , a test is made to determine if the message is a “voice connection off” response message. If the message from the server computer  210  is not a “voice connection off” 0  response message, but instead is a “voice connection off failed” message, an error message is displayed on the communicating user computer  200   a ,  200   b ,  200   c  . . . (step  606 ) and the process terminates (step  610 ). The switching process stops at that point. If the VoIP connection cannot be dropped, another connection will not be established.  
         [0049]    If the message from the server computer  210  received by the communicating user computer  200   a ,  200   b ,  200   c  . . . is a “voice connection off” response message, a phone icon controlled by the soft-phone application running on the user computer  200  will change color, e.g., turn blue (step  603 ). The blue phone icon indicates to the user that there is no VoIP connection. (When a VoIP connection is present, the phone icon has a different color, e.g., green.)  
         [0050]    At step  604 , the soft-phone application determines if the server computer  210  is in the process of changing to a VoIP connection. If the server computer is in the process of switching to a VoIP connection, the soft-phone application running on the user computer  200  sends a “voice connection on (VoIP)” message to the server computer (step  605 ). The process then terminates at step  610 . If the server computer is not in the process of switching to a VoIP connection, the soft-phone application running on the user computer  200  sends a “voice connection on (PSTN)” message to the server computer (step  606 ). Then the process terminates at step  610 . (Since the current example is switching from a VoIP connection to a PSTN connection, the soft-phone application running on the communicating user computer  200   a ,  200   b ,  200   c  . . . sends a “voice connection on (PSTN)” message to the server computer.) In response to the receipt of a “voice connection on” message, either PSTN or VoIP, from the communicating user computer  200   a ,  200   b ,  200   c  . . . , the server computer  210  creates the applicable communication port. More specifically, when the server computer  210  receives the “voice connection on” message, the OFFICELINK_CLIENT program module  223  creates a port of the appropriate type. For the current example of switching from a VoIP connection to a PSTN connection, the OFFICELINK_CLIENT program module  223  creates a PSTN port. For the case in which the switch is from a PSTN connection to a VoIP connection, the OFFICE_LINK program module  223  would create a VoIP Port (which contains the CIP channel  220  and the CDSP channel  221 ).  
         [0051]    [0051]FIG. 7 is a flow chart showing the process followed by the server computer  210  when creating the appropriate voice communication link port discussed above. In step  700 , the message is received by the OFFICELINK_CLIENT program module  223 . At this point, the received message has been depacketized by the TCP_CLIENT program module  222 . Next the process determines whether the message is a “voice connection on (PSTN)” message (step  701 ). If the message is a “voice connection on (PSTN)” message, the process proceeds to step  702 . At step  702 , a PSTN port software object is created by the server computer  210 . In the current example, the switch is from a VoIP connection to a PSTN connection; thus, this is the logical path the process follows. Alternatively, where the switch is from a PSTN connection to a VoIP connection, at step  702 , the process determines that the message is not a “voice connection on (PSTN)”. In this case, the process proceeds to step  704 . At step  704 , a VoIP port software object is created by the server computer  210 .  
         [0052]    Regardless of which type of port is created, the process proceeds to step  703  where a test is made to determine if the creation of the port software object (either PSTN or VoIP) was successful. If the port software object was not created, the process proceeds to step  706  and a “voice connection on failed” message is sent to the communicating user computer  200   a ,  200   b ,  200   c  . . . . The process then terminates at step  707 . If the port software object was created, the process proceeds to step  705  where the original voice communication link resources are released and a voice communication link is established (by the newly created port software object). The process followed by the server computer when establishing a PSTN connection is illustrated in FIG. 8 and described below with respect to FIG. 8. The process followed by the server computer when establishing a VoIP connection is illustrated in FIG. 12 and is described below with respect to FIG. 12. After the appropriate process is finished, the process illustrated in FIG. 7 terminates at step  707 .  
         [0053]    As noted above, FIG. 8 illustrates (in pictorial form) the process followed by the server computer when establishing or reestablishing a PSTN connection between the server computer  210  and the communicating user computer  200   a ,  200   b ,  200   c  . . . . After creation (step  702 , FIG. 7), the newly created PSTN port  800  is “started.” More specifically, the PSTN port  209  causes the trunk protocol (loop start or wink start for T 1 ) to start. When this occurs, the PSTN port  209  sends  801  a “started” message to the OFFICELINK_CLIENT program module  223 . This is illustrated as step ( 1 ) in FIG. 8. The OFFICELINK_CLIENT program module  223  receives the “started” message and responds  802  by sending a “place call” message back to the PSTN port  209 . This is step ( 2 ) of FIG. 8. The PSTN port  209  identifies the user telephone  208   a ,  208   b ,  208   c  . . . associated with the previously communicating user computer  200   a ,  200   b ,  200   c  . . . location and places a call  803  to the phone number of that telephone  208   a . This is step ( 3 ). When a user answers the called telephone  208   a , the user&#39;s voice is detected  804  by the PSTN port  209 . This is step ( 4 ). The PSTN port  209  then sends  805  an “answered” message to the OFFICELINK_CLIENT program module  223 . This is step ( 5 ). In response, the OFFICELINK_CLIENT program module  223  plays  806  a zip tone, which initiates a communication path between the OFFICELINK_CLIENT program module  223  and the PSTN port  209 . This is step ( 6 ). The zip tone is forwarded  807  to the user&#39;s telephone as shown by step ( 7 ). After the zip tone has been sent to the user&#39;s telephone  208   a , the PSTN port  209  sends  808  a “zip tone done” message to the OFFICELINK_CLIENT program module  223 , as shown by step ( 8 ). A voice communication link has now been established between the server computer  210  and the user&#39;s telephone  208   a  associated with the previously communicating user computer  200   a ,  200   b ,  200   c  . . . via a PSTN connection. Next the OFFICELINK_CLIENT program module  223  sends a “voice connection on” response message back to the previously communicating user computer  200   a ,  200   b ,  200   c  . . . . More specifically, the “voice connection on response” message is sent  809  from the OFFICELINK_CLIENT program module  223  to the TCP_CLIENT program module  222 . This is step ( 9 ) The TCP_CLIENT program module  222  packetizes the “voice connection on response” message and sends  801  the message over the network  204  to the previously communicating user computer  200   a ,  200   b ,  200   c  . . . , as illustrated by step ( 10 ). Finally, the PSTN port  209  establishes  811  a communication connection back to the switch port  212  via the system bus  213 . This is step ( 11 ) and completes the PSTN connection. Step ( 11 ) illustrates that PCM voice signal flow from the user telephone  208   a  through the newly created PSTN port  209  to the switch port  212 , then to exchange  240 , and ultimately to the remote telephone  202 . If, at any point during this process, a failure occurs, a “voice connection on failed” message is sent to the previously communicating user computer  200   a ,  200   b ,  200   c . . . .    
         [0054]    After receiving the “voice connection on” response message generated at step ( 9 )of FIG. 8 and sent to the communicating user computer at step ( 10 ), the soft-phone application running on the previously communicating user computer  200   a ,  200   b ,  200   c  . . . follows the logic depicted in FIG. 9. First, the message is received at step  901 . At step  902 , a test is made to determine if the message is a “voice connection on” response message. If the message is a “voice connection on” response message, the process proceeds to step  906  and the phone icon on the soft-phone application is colored its PSTN color, i.e., blue. The process then terminates at step  905 . If the message is not a “voice connection on” response message, the message is a “voice connection on failed” message. In this event, an error message is displayed by the soft-phone application. See step  903 . Preferably, the error message display includes a prompt and a soft key that allows a user to choose to restore the original voice communication link between the previously communicating user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202 . In this particular example, the choice presented the user would be to reestablish the VoIP connection.  
         [0055]    If the user chooses not to restore the original connection, the process terminates at step  905 . Selecting not to restore the original connection results in the voice communication link between user computer  200  and remote telephone  202  being completely terminated. If the user chooses to restore the original connection, the process required to reestablish a voice communication link between the previously communicating user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202  is started. This process is initiated at step  907  where the previously communicating user computer  200   a ,  200   b ,  200   c  . . . sends a “voice connection off” message to the server computer  210 , as occurred at step  404  in FIG. 4. After this message is sent, the process illustrated in FIG. 9 terminates at step  905 . As will be understood from the following description, the “voice connection off” message initiates a switch back to a VoIP connection. The particular steps that occur when switching from a PSTN connection to a VoIP connection are discussed in detail below.  
         [0056]    The foregoing discussion describes in detail the process of switching from a VoIP connection to a PSTN connection. The reciprocal situation, i.e., switching from a PSTN connection to a VoIP connection, is accomplished by this invention. As noted above, FIG. 2 illustrates an exemplary network communication system architecture in which the present invention operates.  
         [0057]    As also previously noted, FIG. 2 depicts a PSTN connection between a user telephone  208   a ,  208   b ,  208   c  . . . and a remote telephone  202 . At this point, it is assumed that a PSTN connection between a telephone  208   a ,  208   b ,  208   c  . . . associated with one of the user computers  200   a ,  200   b ,  200   c  . . . and the remote telephone  202  exists and that the user wants to change to a VoIP connection. This change is initiated by the user selecting “Use VoIP” from a pop-up menu displayed by the soft-phone application running on the user computer. Thereafter the processes shown in FIGS. 3 and 4 and described above occur. As a result, a “voice connection off” message is sent to the server.  
         [0058]    The “voice connection off” message triggers a number of steps that cause the PSTN communication link to end and a VoIP communication link to be created. FIG. 10 is a pictorial representation of the steps involved in terminating a PSTN connection between the server computer  210  and a user telephone  208   a ,  208   b ,  208   c  . . . when a “voice connection off” message is received by the server computer 210 . The “voice connection off” message is sent  1001  via TCP/IP packets, as illustrated by step ( 1 ). The “voice connection off” message is received by the TCP_CLIENT program module  222 . The “voice connection off” message is depacketized by the TCP_CLIENT program module  222  and sent  1002  to the OFFICELINK_CLIENT program module  223 , as illustrated by step ( 2 ). In response to receiving the “voice connection off” message, the OFFICELINK_CLIENT program module  223  disconnects  1003  the bus connection between the PSTN port  209  and the switch port  212 , as illustrated by step ( 3 ). After the bus connection has been disconnected, the OFFICELINK_CLIENT program module  223  sends  1004  a “stop” message to the PSTN port  209 , as illustrated by step ( 4 ). The “stop” message causes the PSTN port  209  to disconnect  1005  the connection between the PSTN port  209  and the user telephone  208   a , as illustrated by step ( 5 ). After this disconnection has occurred, the PSTN port  209  sends  1006   a  “stopped” message back to the OFFICELINK_CLIENT program module  223 , as illustrated by step ( 6 ). The “stopped” message causes the OFFICELINK_CLIENT program module  223  to send  1007  a “voice connection off” response message to the TCP_CLIENT program module  222 , as shown by step ( 7 ). The TCP_CLIENT program module  222  packetizes the “voice connection off” response message. The TCP/IP packets containing the “voice connection off” response message are sent  1008  to the pertinent user computer  200   a ,  200   b ,  200   c  . . . as shown by step ( 8 ). If at any time during the foregoing process, a failure occurs, a “voice connection off failed” message is sent to the pertinent user computer  200   a ,  200   b ,  200   c . . . .    
         [0059]    [0059]FIG. 11 is a flow chart illustrating the process that soft-phone application of the pertinent user computer  200   a ,  200   b ,  200   c  . . . follows when a “voice connection off” response message is received. After receiving a message from server computer  210  (step  1101 ), the user computer determines if the message is a “voice connection off” message. See step  1102 . If the message is not a “voice connection off” response message, an error message is displayed (step  1106 ). Because the PSTN connection was not able to be disconnected, the process illustrated in FIG. 11 then terminates at step  1210 . As a result, the original voice communication link via the PSTN connection persists.  
         [0060]    If, at step  1202 , the user computer determines that a “voice connection off” response message was received, the process proceeds to step  1103 . At step  1103 , the phone icon color is changed to blue. Then a test is made to determine if the server computer  210  is in the process of switching to a VoIP connection. See step  1104 . If the server computer is in the process of switching to a VoIP connection, the soft-phone application process proceeds to step  1105  and a “voice connection on (VoIP)” message is sent to the server computer  210 . If the server computer is not in the process of switching to a VoIP connection, the soft-phone application process proceeds to step  1107  and a “voice connection on (PSTN)” message is sent to the server computer  210 . After the “voice connection on (VoIP or PSTN)” message has been sent to the server computer  210 , the process terminates at step  1110 .  
         [0061]    The server computer  210  follows the logical steps illustrated in FIG. 7 in response to receiving a “voice connection on” message from the user computer whether it be for a PSTN connection establishment or a VoIP connection establishment. Since this logic was previously described, the logic is not described here except to note that after a VoIP port is created (step  704 , FIG. 7), the original PSTN connection resources are released and the steps to establish a voice communication link between the pertinent user computer  200   a ,  200   b ,  200   c  . . . and the server computer  210  via a VoIP connection are carried out.  
         [0062]    [0062]FIG. 12 is a pictorial representation of the steps involved in establishing a VoIP connection between the server computer  210  and a user computer  200   a ,  200   b ,  200   c  . . . after a VoIP port  211  has been created by the server computer (step  704 , FIG. 7). As previously described, the VoIP port  211  contains a CIP channel program module  220  and a CDSP Channel program module  221 . Since these program modules were described previously, they are not shown in FIG. 12 and are not described further.  
         [0063]    After being created, the VoIP port  211  sends  1201  a “started” message to the OFFICELINK_CLIENT program module  223 , as illustrated by step ( 1 ). In response, the OFFICELINK_CLIENT program module  223  sends  1202  a “place call” message back to the VoIP port  211 , as illustrated by step ( 2 ). A VoIP call is then placed  1203  from the VoIP port  211  to the appropriate user computer  200   a ,  200   b ,  200   c  . . . as illustrated by step ( 3 ). When the operator of the user computer answers the VoIP call using the soft-phone application running on the user computer  200 , the resulting voice signal is detected  1204  by the VoIP port  211 , as illustrated at step ( 4 ). The VoIP port  211  forwards  1205  the “answered” message to the OFFICELINK_CLIENT program module  223 , as illustrated at step ( 5 ). The OFFICELINK_CLIENT program module  223  responds to the “answered message” by sending  1206  a “play zip tone” message to the VoIP port  211 . See step ( 6 ). The VoIP port generates and sends  1207  a zip tone to the user computer  200  over the new voice communication link, as illustrated by step ( 7 ). After the zip tone has been sent, the VoIP port  211  sends  1208  a “zip tone done” message back to the OFFICELINK_CLIENT program module  223 , as illustrated by step ( 8 ). The “zip tone done” message signals to the OFFICELINK_CLIENT program module  223  that it can now send a “voice connection on” response message back to the pertinent user computer  200   a ,  200   b ,  200   c  . . . . The “voice connection on” response message is sent  1209  from the OFFICELINK_CLIENT program module  223  to the TCP_CLIENT program module  222 . See step ( 9 ). The TCP_CLIENT program module  222  packetizes the “voice connection on” response message and sends  1210  the TCP/IP packets to the pertinent user computer  200   a ,  200   b ,  200   c  . . . as shown by step ( 10 ). A VoIP connection has now been established between the pertinent user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202 . PCM voice messages can now flow  1211  from the pertinent user computer  200   a ,  200   b ,  200   c  . . . through the VoIP port  211  over the system bus  213  to the switch port  212 , then to exchange  240  and eventually to the remote telephone  202 , as illustrated by step ( 11 ). If at any time during the foregoing process a failure occurs, a “voice connection on failed” message is sent to the pertinent user computer  200   a ,  200   b ,  200   c . . . .    
         [0064]    [0064]FIG. 13 is a flow chart illustrating the process that the soft-phone application running on the user computer  200   a ,  200   b ,  200   c  . . . after receiving a “voice connection on” response message from the server computer  210  (step  1210 , in FIG. 2). At step  1301 , the message is received. At step  1302 , the user computer  200  determines if the message is a “voice connection on” response message. If the message is a “voice connection on” response message, the process proceeds to step  1306  and the phone icon on the soft-phone application turns green to indicate that a VoIP connection has been established. The process then terminates at step  1305 . If the message received is not a “voice connection on” response message, the process proceeds to step  1303 . At step  1303 , an error message is displayed. In addition, the user is prompted to choose to restore the original voice communication link between the pertinent user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202 . In this particular example, the user would be prompted to reestablish the PSTN connection. If the user chooses not to restore the original connection, the process terminates at step  1305 . Selecting not to restore the original connection results in the voice communication link between pertinent user computer  200   a ,  200   b ,  200   c  . . . and the remote telephone  202  being completely terminated. If the user chooses to restore the original connection, the PSTN communication link between the pertinent user telephone  208   a ,  208   b ,  208   c  . . . and remote telephone  202  is established in the manner described above. This action is initiated at step  1307  by the pertinent user computer  200   a ,  200   b ,  200   c  . . . sending a “voice connection off” message to the server computer  210  (step  404 , FIG. 4). After this message has been sent, the process illustrated in FIG. 13 terminates at step  1305 .  
         [0065]    While the preferred embodiment of the invention has been illustrated and described, it will be appreciated that within the appended claims various changes can be made therein without departing from the spirit and scope of the invention.