US 20050141483 A1
This invention integrates instant messaging, presence, and other collaborative capabilities with conventional PBX functionality through use of a PBX-Messaging Integration Client (PMIC). The invention in its several embodiments features a method and system for using the PMIC-based computer interface to perform off-hook/on-hook presence notification for a PBX phone, establish media sessions concurrent with PBX telephonic communication, execute custom call treatment in conjunction with a PBX phone, implement call transfer capability between a PBX phone and numerous other devices, and provide PBX call control. The PBX is generally enabled with computer telephony integration (CTI) and, depending on the embodiment, a Voice-over-Internet Protocol (VoIP) such as Session Initiation Protocol (SIP). The invention empowers enterprise workers with a diverse, unified and integrated set of both PBX functions and SIP-based collaboration tools.
1. A media session method for a first computer interface operatively coupled to a system comprising a private branch exchange (PBX) and a second computer interface, wherein the first computer interface is associated with a first PBX phone and the second computer interface is associated with a second PBX phone, the concurrent media session method comprising the steps of:
receiving a first message signifying that the second PBX phone is calling the first PBX phone;
transmitting a second message from the first computer interface to the second computer interface requesting a media session;
determining whether the media session request has been accepted; and
establishing a media session between the first computer interface and the second computer interface if the session request message has been accepted.
2. The media session method of
3. The media session method of
4. The media session method of
5. The media session method of
6. The media session method of
7. The media session method of
8. The media session method of
9. The media session method of
10. The media session method of
This application is a continuation of prior application Ser. No. 10/750,795 filed Dec. 31, 2003, which is hereby incorporated herein by reference for all purposes.
The present invention relates to a technique for integrating one or more user interfaces with a PBX phone system. In particular, the invention relates to a method and system for providing off-hook/on-hook presence notification for a PBX phone, establishing media sessions concurrent with PBX telephonic communication, customized call treatment for a PBX phone, call transfer capability between a PBX phone and numerous other devices, and PBX call control.
Private Branch Exchange (PBX) telephone systems are used in many businesses to enable workers to make and receive calls from the Public Switched Telephone Network (PSTN) and other PBX phones within the enterprise. PBX systems also provide a host of telephonic services to the enterprise workers including call forwarding, transferring, conferencing, voice mail, personalized greetings, and the like. In many cases, an enterprise worker's phone resides on the desktop in immediate proximity to the worker's personal computer. The personal computer may provide tools for word processing, viewgraph editing, email, and web browsing, as well as other communications tools such as instant messaging, buddy lists, presence, video, and other tools for collaboration. Instant messaging allows people with network access to send text messages and other media to other individuals listed in a buddy or contact list. An instant text message is sent in near-real time to a contact where it is then displayed in a graphical user interface window within the context of an on-going text-based conversation. In addition to text messages, instant messaging may also be used within chat sessions and custom chat rooms where friends or co-workers can interact and share media. Some instant messaging applications are also enabled with a presence protocol used by a one person to determine whether a buddy or contact is “present” online and to subscribe to changes in the presence state or information. Despite the prevalence of PBX phones and communications-enabled personal computers in the enterprise, there is an absence of sufficient integration between these two types of communication systems. For example, an enterprise worker's instant messaging application may be aware of the worker's online presence but is oblivious to the worker's telephonic presence, i.e. buddies do not know that a worker is occupied on his PBX phone. Or, as a second example, although a worker sets up a voice session to another worker by dialing a PBX extension, an entirely separate process must be followed to setup a session for exchanging a document. Therefore, there is a need for a solution that integrates the PBX system and communications applications on enterprise workers' computers to provide greater interoperability, simplified PBX control, and enhanced sharing and collaboration.
The invention in its several embodiments features a method and system for using a computer interface to perform off-hook/on-hook presence notification for a PBX phone, establish media sessions concurrent with PBX telephonic communication, execute custom call treatment in conjunction with a PBX phone, implement call transfer capability between a PBX phone and numerous other devices, and provide PBX call control. The PBX is generally enabled with computer telephony integration (CTI) capabilities and may also, depending on the embodiment, be enabled with Voice-over-Internet Protocol (VoIP) capabilities such as Session Initiation Protocol (SIP). The computer interface may be any number of computer appliances including personal computer also enabled with CTI, for example.
In one embodiment, the invention relates to a presence notification method for communicating an enterprise worker's on-phone/off-phone presence state to other workers using a computer interface operatively coupled to a system comprising a private branch exchange (PBX) and a first PBX phone. The presence notification method preferably comprises the steps of: receiving from the PBX a first message indicating an off-hook state of the first PBX phone; consulting a subscriber table including the identity of one or more presence-state subscribers; and transmitting a second message to at least one of the one or more presence-state subscribers indicating the off-hook state of the first PBX phone.
In a second embodiment, the invention relates to a method for establishing a collateral communication session between a plurality of enterprise workers' computer interfaces in response to a call between the workers. The collateral communication session, referred to herein as a concurrent media session, may take a number of forms including text messaging, document exchange, desktop sharing, and video, for example. The method for establishing concurrent media session setup using a first computer interface operatively coupled to a system comprising a private branch exchange (PBX) and a second computer interface preferably comprises the steps of: receiving from the PBX a first message signifying that the second PBX phone has called the first PBX phone; transmitting a second message from the first computer interface to the second computer interface requesting a media session; determining whether the media session request has been accepted at the second computer interface; and establishing a media session between the first computer interface and second computer interface if the session request message is accepted.
In a third embodiment, the invention relates to a method for performing custom call treatment allowing a recipient of an incoming PBX call to respond to the call by transferring the call to another device or responding with an instant message, for example, depending on various factors including the caller, the time, and date. The call treatment method in a first computer interface operatively coupled to a system comprising a private branch exchange (PBX) and a first PBX phone preferably comprises the steps of: receiving from the PBX a first message indicating an incoming call; determining from a call routing table maintained by the first computer interface an incoming call response to the incoming call; and transmitting a group of one or more messages based on the incoming call response, wherein the group comprises a second message answering the incoming call.
In a fourth embodiment, the invention relates to a method for transferring a call between an enterprise worker's PBX phone and an associated computer interface. The call transfer method in a first computer operatively coupled to a system comprising a private branch exchange (PBX) and a first PBX phone, preferably comprises the steps of: transmitting to the PBX a first message for transferring a telephone call associated with the first PBX phone; establishing a voice-over-IP session between the PBX and the first computer; and replacing the telephone call to first PBX phone with a call to the first computer via the voice-over-IP session.
In a fifth embodiment, the present invention relates to a method of controlling PBX telephone calls to a worker's PBX phone using a computer interface operatively coupled to a system comprising a PBX and a first PBX phone. The PBX call control method preferably comprises the steps of: receiving from the PBX a first message indicating the presence of a telephone call associated with the first PBX phone; and transmitting to the PBX a call control message, such as a call-hold command, or call-forwarding command directing the PBX to another PBX phone or VoIP client, for example.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings, and in which:
Also operating within the enterprise is a data communications network 150 embodied in or operably coupled to a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), the Internet Protocol (IP) network 104, or a combination thereof. The communications network 150 operably couples a plurality of computers enabled with a PBX-Messaging Integration Client (PMIC) 140-142 distributed throughout the enterprise to each other and to the resources available through the World Wide Web using Ethernet and or the transmission control protocol (TCP)/IP protocol suite. Each of the PMICs 140-142 is generally associated with an individual enterprise worker. In most cases, an individual's PMIC is located in the immediate proximity to the individual's phone, thus giving rise to a logical association between a user PMIC and a user phone. The logical association between a PMIC, a phone, and a single user exist for a multiplicity of enterprise workers including a first user 120, second user 121, and third user 122, and so on.
In the preferred embodiment, the PBX 110 is enabled with a computer telephone integration (CTI) protocol, which refers to a signaling convention by which the PMICs 140-142 may control and monitor PBX functions. In the preferred embodiment, the PMICs 140-142 are adapted to act as individualized clients for: (1) placing and answering PBX calls without a PBX phone, (2) routing incoming call directed PBX extensions to other devices, (3) forwarding calls away from PBX phones to other devices, and (4) placing calls on hold. In addition to receiving CTI commands, the PBX or the CTI client associated thereto is also adapted to transmit CTI messages upon occurrence of certain events, as is described in greater detail below. Also in the preferred embodiment, the PMIC provides an interface to presence, instant messaging, document exchange, desktop sharing and other capabilities typically resident in applications such Microsoft's Real-Time Communications (RTC) Messenger.
Signaling and voice communications between the PBX 110 and phones 130-132 are conventionally performed using a digital protocol, although an analog protocol may also be employed. The digital protocol, referred to herein a private digital signaling and voice (PDSV) protocol, comprises a signaling convention that includes operation-codes used to exchange voice communications as well control signals. Although well understood by those skilled in the art, PDSV protocols are generally proprietary implementations and differ between vendors. The major CTI standards are Telephony Application Programming interface (TAPI) and Telephony Services Application Programming Interface (TSAPI), as well as the European Communications Manufacturers Association (ECMA) standard for CTI, namely the Computer Supported Telecommunications Applications (CSTA) protocol.
Illustrating in a
The processing module 410 generally comprises hardware components including a central processing unit 412, computer memory 414, and random access memory (RAM). As illustrated in
Upon receipt of an incoming call, the PMIC 428 generally consults routing logic 430 to whether to forward an incoming call to another PBX phone or other device, for example, or respond with a message transmitted via the network 150. In the process of monitoring calls involving a user's PBX phone, the PMIC 428 may consult the subscriber table 432 to identify any Instant Messaging (IM) buddies in a contact list of changes in the enterprise worker's telephonic presence. In some circumstances, the PMIC 428 may also consult the concurrent media session (CMS) handler 434 to initiate transmission of an instant message, text chat or other voice and/or video media session between the PMICs of the users that are engaged in telephonic communication.
PMIC processing module 410 further comprises a CTI client 422, preferably a CTI protocol stack, and Real-Time Communications (RTC) client 426 running on top of an operating system 418 such MS WINDOWS also by Microsoft Corporation. The CTI client 422 together with its CTI application programming interface (API) 420 provides the underlying functionality used to implement the various call control functionality embodied in the PMIC processing of the preferred embodiment. The RTC client 426 with RTC API 426 provides support for the Session Initiation Protocol (SIP) used in some embodiments to enable the CMSs, as discussed in greater detail below.
Although the PMICs 140-142 in the preferred embodiment are personal computers, one skilled in the art will appreciate that any of a variety of processing devices including desktop computers, laptop computers, personal digital assistants (PDA), Internet-enabled appliances, or mobile communication devices such as cellular phones may be adapted for purposes of this invention.
When a call is initiated by a user phone 130-132, an off-hook signal is transmitted from the phone to the PBX 110 with “digits” or dual-tone multi-frequency (DTMF) signals representing a phone number or a PBX extension number. If the off-hook signal 520 is accompanied by the phone number to an external phone, the PBX 110 transitions to an external call-placed state 504, illustrated in greater detail in the external call process 600 *of
Referring again to
At nny time during the PDSV voice communications (state 510), the call in progress may be transferred to another device. If the PBX 110 is enabled with a VoIP protocol, for example, the PBX can transfer the call in response to a transfer command 534, e.g. a CTI message, with an identifier specifying the device to which the voice communication is to be redirected. If transferred to a VoIP client in the enterprise worker's PMIC, for example, the PBX 110 attempts to establish a VoIP session (state 512) and transfer the caller side of the communication to a VoIP device. In the session setup process 800 associated with the session setup (state 512) illustrated in
After the SIP VoIP session is established (state 514), a participant in the session may terminate the session and effectively end the call (state 516) by issuing a VoIP termination message such as a SIP BYE message 544. In the alternative, the participant may transfer the call back to a phone set (state 510) using a transfer command 536 including the appropriate phone extension.
Any time during the PDSV voice communications (state 510), the call in progress may be placed on hold (state 518) by a hold PDSV operation code from the user's PBX phone or by a hold command 524 received by the PBX 10 ‘from the user’s PMIC 428 via the network 150. Similarly, the call may be taken off hold in response to the appropriate operation code or an un-hold command from the user's PMIC 428.
In addition to outgoing calls discussed above, the PBX 110 is also enabled to facilitate incoming calls. When a call 540 is directed to a user phone 130-132 from either another PBX user phone 130-132 or external PSTN line, the PBX 110 transitions into the initial call receiving state 508. As illustrated the call receiving procedure 900 of
In the preferred embodiment, the incoming call may be answered at the recipient's PBX phone or by way of a CTI answer event received by the PBX 110 from the user's PMIC via the network 150. Upon receipt of an off-hook signal 570 from the PBX phone, the PBX 110 transitions to the call answered (state 552) illustrated in more detail in the call answered process 1000 of
When the incoming call is answered at the call recipient's PMIC, the PBX 110 generally receives an answer command accompanied by a transfer command from the PMIC. The transfer command includes a URI designating the user's PMIC or a SIP user agent therein and the PBX 110 transitions to the PBX's VoIP session setup state 556 consistent with the VoIP session setup state 514 discussed above. If the session request message issued by the PBX 110 is accepted, the PBX transitions into the PBX's VoIP session (state 558) and the PDSV voice communication terminated. The recipient may subsequently transfer 586 the call between the PDSV voice communication (state 554) and the VoIP session (state 558) in the manner described above.
If the transfer command 590 received while in the initial call receiving (state 508) includes a URI designating a phone, computer, or user agent other than that of the recipient, the PBX 110 effectively transfers the call to the other device and returns to monitoring the phone status (state 502).
A PMIC generally monitors (state 1102) the IP network 150 for messages transmitted by the PBX 110 as well as other PMICs in the enterprise. The messages from the PBX 110 generally fall into one of two categories, namely, call-placed messages indicating that the PBX phone 130-132 with which the PMIC is associated is being used to place a call or incoming call messages indicating that the associated PBX phone is receiving a call from either another PBX user phone or external line.
When the PBX phone associated with the PMIC is used to place a call, the PMIC receives the off-hook event 1130 generated by PBX 102 and transitions into the on-phone presence-state (P-S) processing (state 1104). The P-S processing (state 1104) is illustrated in greater detail in the on-phone P-S processing method 1200 of
When the PBX phone associated with the PMIC receives a call, the PMIC receives an incoming-call event 1140 and transitions to a call-routing mode (state 1110) in which the PMIC consults its routing logic 430. The routing logic 430 is customized by the user and prescribes the action to be taken in response to an incoming call. In the preferred embodiment, the PMIC is adapted to perform one or more of the following: (1) permit the incoming call to ring at the user PBX phone without intervention, (2) transfer the incoming call to the user's PMIC, (3) transfer the incoming call to another device.e.g., the user's cell phone, (4) transfer the incoming call to another PBX phone, or (5) transmit an instant message to the caller. In the preferred embodiment, the user can define individual call-routing rules that prescribe how to respond to the incoming calls as a function of when the call is received, the telephone number or extension of the caller, the time of day and day of week, and the user's presence-state, for example.
If the routing logic 430 prescribes no action and the call recipient answers the PBX phone, the PMIC receives an off-hook event 1142 from the PBX 110. The PMIC process 1100 advances to an on-phone presence-state (state 1112), as illustrated in
Referring again to
Referring again to
Apart from the monitoring function (state 1106), the PMIC in some embodiments is also adapted to issue commands to the PBX 110 to alter the telephonic communication involving the associated PBX phone. In the preferred embodiment, the caller may alter the ongoing telephonic communication by taking one of the following actions: (1) terminate the call, (2) place the call on hold, (3) transfer the call, or (4) establish a conference call with one or more additional parties. The user may terminate the call from the PMIC by issuing a terminate command 1162, e.g. a CTI message, that instructs the PBX 110 to end (state 124) voice communications with the user PBX phone. The user may also issue a hold command 1134A, e.g., a CTI message, to temporarily discontinue the voice communications, after which the PMIC process 1100 resumes passively monitoring (state 1106) the PBX 110. An analogous release-hold command 1134B may be issued by the user from the PMIC to remove the hold and enable voice communication.
Prior to ending the call, the user may also transfer the call from the PBX phone to another device by issuing a transfer command to the PBX 110. Depending on the identifier—URI, phone number, or extension—the PBX 110 may transfer the call to the user's PMIC, the user's cell phone, or another PBX extension, for example. When transferred by command 1144 to the user's PMIC, the PMIC process 1100 transitions to the PMIC session setup (state 1116) in which the PMIC and PBX 110 exchange SIP INVITE and OK messages necessary to establish a VoIP session (state 1118) to replace the telephonic communication. While in the PMIC VoIP session (state 1118), the user acting through the PMIC GUI 436 can issue a PBX phone transfer command 1148 to restore the telephonic communication (state 1106), issue a SIP BYE 1158 message to end the call (state 1124), or issue an external-device transfer command 1160 causing the PBX 110 to forward (state 1120) the call to any device specified by the user.
In addition to permitting an incoming call to be answered at the user's PBX phone, the call routing logic 430 may be configured to cause the PMIC in the call routing mode (state 1110) to automatically respond with one or more of the following actions: (1) transfer an incoming call to the PMIC session setup (state 1116), transfer or forward the call to an external device (state 1112), or (3) reply with a message to the caller's PMIC using an Instant Message. In the preferred embodiment, routing logic 430 is configured by the user to direct calls depending on the caller's identification, the time, and the date, for example.
The flow diagrams in
The registration command 1402 causes the PBX 110 to send to the first user's PMIC various CTI events relating to the first user's phone 130. The registration command 1402 may require that the first user 120 enter a user identifier and password, although other forms of authentication may be implemented. Similarly, the PBX 110 is able to associate CTI commands from this first user's 120 PMIC 140 with the phone 130 extension.
At some later point in time, when the first user 120 picks up the phone 130, an off-hook signal 1404 is relayed by the PBX 110 to the first user PMIC 140 in the form of an off-hook event, preferably a CTI off-hook message 1406. Receipt of the CTI event stimulates the PMIC 140 to automatically change the presence-state for the first user to “on-phone” state. As prescribed by the on-phone presence-state processing 1200, the PMIC 140 consults (method 1200) its subscriber table 432 and transmits a notify message 1408, 1410 to all subscribers 121, 122 by way of the associated PMICs 141, 142. The notify message is preferably a SIP on-phone message advertising the change in the first user's telephonic availability.
When the first user completes the call, the on-hook signal 1412 from the first user phone 130 causes the PBX 110 to send the first user's PMIC 140 an on-hook event 1414, preferably a CTI message. As prescribed by the off-phone present state processing 1250, the PMIC 140 consults (method 1250) the subscriber table 430 and notifies all subscribers 141, 142 of the change in the presence state by way of a SIP notify messages 1416, 1418. In the preferred embodiment, the presence state indicated by the SIP notify messages 1416, 1418 is the presence state that existed just prior to the placement of the call. In an alternative embodiment, the presence state sent when the user goes off-phone may be “on-line” notice. The selection between the two embodiments might be a user-manageable setting.
One skilled in the art will appreciate that the linkage between the PBX phone operation and the presence state is performed entirely within the associated PMIC endpoint itself. Moreover, the presence-state for the user is changed automatically based on receipt of a CTI event without the user manually changing his or her presence state via GUI interaction or other manual input. A principal advantage of this method of presence integration is that it can completely coexist and fully interoperate with all other presence servers, presence collection/distribution servers, and any other SIP proxy servers that might be operational within the network 150. The proposed method is also highly scalable, since it each PMIC is only responsible for the presence management of its associated user PBX phone.
In some embodiments, the PBX 110 is both the source of CTI events and recipient of CTI commands. One skilled in the art will recognize, however, the a PBX may employ a separate and external CTI server (not shown) that provides fan-out capability, user authentication, and other CTI management tasks, as well as protocol translation between the PBX and the CTI client, for example.
As illustrated in
If the incoming call is answered with off-hook signal 1610, the PBX 110 puts the first user phone 130 and second user phone 131 in telephonic voice communication 1616. The CTI-enabled PBX 110 also responds to the off-hook signal 1610 with a first call-answered event 1612 transmitted (step 1020) to the second user's PMIC 141 as well as a second call-answered event 1614 transmitted (step 1040) to the first user's PMIC 140.
In response to the first call-answered event 1612, the second user's PMIC 141 automatically initiates (step 1650) a media session, preferably a SIP chat session, concurrent with the telephonic voice communication 1616. The process of initiating (step 1650) the media session is set forth in greater detail in CMS setup 1114 of
After the SIP exchange is completed with SIP OK 1622, SIP text messaging windows are open on both first user's PMIC 140 and second user's PMIC 141, thereby allowing the first user 120 and second user 121 to text chat with one another concurrent with the voice communication 1616. One skilled in the art will appreciate that there is no need for the first user 120 or second user 121 to appear on each other's contact lists, nor a need for either user to lookup an IP address or SIP URI. Instead, the SIP session is established automatically based on the PBX call.
As illustrated in more detail below, the integration of a CTI client capability into a PMIC permits the user to execute standard telephone set control functions from the individual's computer. In the preferred embodiment, the PMIC is adapted to transmit PBX call control commands including, but not limited to, make-call commands to initiate a call, answer-call commands to accept an incoming call, hold-call commands to temporarily pause an on-going call at the PBX, transfer-call commands to redirect a call between the PBX phone and user PMIC or other device, conference-call commands to establish a call with three or more parties, and forward-call commands to direct a call to a device specified by the user.
As illustrated in
As illustrated in
As illustrated in
In response to an incoming call 2002, the PBX 110 in the preferred embodiment transmits ring signal 2006 to the second user phone 131 and an incoming-call event 2008 to the call recipient's PMIC 141. Upon receipt of the incoming-call event 2008, the second user PMIC 141 implements call routing processing (state 1110) that dictates how this call is to be treated. If the call routing logic 430 of
The call routing logic 430 in the preferred embodiment comprises user-managed preferences include forwarding criteria and the action to be taken when the forwarding criteria are satisfied. These criteria may include the phone number or extension of the calling party and the time-of-day and date, for example. The call routing logic 430 may dictate that (1) on Wednesday evenings the call should be answered and transferred to PBX phone extension number x6789, on (2) Thursday evenings the call should be answered and transferred to John@acme.com, and (3) at all other times, the call is not answered by the PMIC, thereby allowing the PBX 110 to automatically forward to call voicemail 206 if not answered.
The call routing logic 430 in some embodiments may also depend on the presence state of its user. For example, if a user's presence state is set to “away,” determined either via manual operation or automatically in the absence of keyboard activity for a period of time, the call routing logic 430 may be configured to forward to an incoming call to the extension of an administrative assistance. Similarly, an incoming call might be directed to the SIP user agent of another enterprise colleague selected by the user, thereby providing an alternative point of contact while the user is unavailable or out of the office. In the preferred embodiment, the call routing logic 430 is in the form of a script created by the user, although it may also be configured via a graphical and or menu-based interface on the PMIC GUI 436.
The call routing logic 430 of a PMIC in some embodiments also includes the SIP text messaging and document transfer capabilities as part of the call treatment for incoming and outgoing calls at the PBX phone. Illustrated in
The instant message may include a standardized greeting or a customized Instant Message including information specifically intended for the caller about. A person may, for example, generate a personal message including the anticipated return time or an alternate contact number. Similarly, the call routing logic 430 in some embodiments is adapted to transmit a document that may contain text, graphics, spreadsheet, or other information of interest to the caller in response to an incoming call directed to a specific PBX extension.
After the instant message 2020, the incoming call may further processed in any number of ways defined by the call routing logic 430. In this example, the second PMIC 141 causes the PBX 110 to transfer the incoming call to device ABCD using transfer command 2022.
In some embodiments, the caller's PMIC may also be configured to respond to the call recipient's instant message with another instant message sent to the call recipient's PMIC 141. For example, when the second user 121 receives a telephone call from extension number x1234, the call routing logic 432 generates the appropriate URI and sends an instant message to SIP:SecondUser@pda.com to inform the second user 121 that the first user phone 131, i.e., extension number x1234, had called. The call routing logic 430 may be tailored to inform a call recipient of the call and the time of the call.
The call routing logic 430 may also be configured to automatically send an instant message when an outbound call is placed from the PBX phone associated PMIC. A specific SIP emergency message, for example, may be sent to a pre-selected SIP user when the Emergency 911 number is dialed.
Although the description above contains many specifications, these should not be construed as limiting the scope of the invention but as merely providing illustrations of some of the presently preferred embodiments of this invention.
Therefore, the invention has been disclosed by way of example and not limitation, and reference should be made to the following claims to determine the scope of the present invention.