# Patent

## Title
Presence aware automated conferencing system

## Abstract

An automated method and system is provided for resolving conflicts in presence and availability information stored at differing network nodes and configuring interparty communications.

## Background
CROSS REFERENCE TO RELATED APPLICATION
The present application claims the benefits of U.S. Provisional Application Ser. No. 60/951,611, filed Jul. 24, 2007, entitled “Constraint Selectable Recipient for Conference”, which is incorporated herein by this reference in its entirety.


FIELD OF THE INVENTION
The invention relates generally to web conferencing and particularly to audio web conferencing.
BACKGROUND OF THE INVENTION
Audio multi-party conferencing is critical to conducting business today. Circuit-switched audio conferencing can be initiated from a participant's phone but typically is limited to three or fewer participants. Outsourced conferencing services enable multi-party conference calls of larger numbers of participants. Such outsourced conferencing services, however, have become a significant expense for many organizations.
Audio and video web conferencing is rapidly replacing circuit-switched audio conferencing. Using such applications, users, through a graphical user interface, can set up conference calls among a large number of parties. The applications have been integrated with electronic calendars to schedule seamlessly the calls. When a user identifies the conference call participants and specifies conference call time and duration, invitations are sent automatically to each desired participant to docket the call time and contact information on each participant's electronic calendar. The invitation can include conference call options to indicate whether and how the potential participant will participate in the conference call. As each conference call option selection is received, another updated conference call invitation is sent to each participant. At the scheduled time, the conference call is initiated by the originating participant's teleconferencing bridge automatically or by each participant calling into the bridge. When automated, the order of joining the participants is generally based on the order in which the invitations are generated or accepted or by random selection. Such applications have reduced corporate expenses by eliminating outsourced conferencing services and saving per-port charges levied by the telecommunication service providers for each teleconferencing minute.
Although audio and web conferencing is a major improvement over circuit-switched audio conferencing, it still gives the originating participant only limited control over the configuration of the conference call.
Other problems can arise in conference call scheduling. Because a user can have multiple communication devices and, sometimes, multiple presence services, there is a likelihood that differing sets of presence information, user preferences, and/or electronic scheduling information maintained by differing network nodes will be in conflict at any one time. This is particularly the case with the increasing levels of artificial intelligence available in communication devices, such as wireless phones, digital phones, Personal Digital Assistants, and the like. It is desirable to provide a method and architecture not only for identifying conflicts in different sets of presence and availability information but also for resolving such conflicts.
SUMMARY OF THE INVENTION
These and other needs are addressed by the various embodiments and configurations of the present inventions. The present inventions are directed to an automated method and system for arbitrating conflicts between and updating presence and availability information maintained at differing network nodes and for configuring inter-party communications.
In a first embodiment of the invention, an auto-conferencing method is provided that includes the following steps:
(a) receiving a set of participants for a conference call and a start time for the conference call;
(b) scheduling the conference call in an electronic calendar of at least one of the participants;
(c) accessing presence information for a plurality of the participants in advance of the conference call; and
(d) using the presence information, automatically contacting the participants to set up the conference call in temporal proximity to the start time.
The use of presence information in scheduling and/or initiating a conference call can provide for fewer unsuccessfully initiated conference calls due to absentee participants and therefore lead to substantial benefits to businesses. Each time a conference call is incompletely populated, the call must either be abandoned or conducted inefficiently and sometimes ineffectively without full attendance
In a second embodiment, a method is provided that includes the steps:
(a) receiving a request to schedule an inter-party communication function;
(b) selecting a communication device to participate in the communication function; and
(c) generating and sending to the selected communication device an invitation to participate in the communication function, the invitation comprising an attachment, the attachment including a reason for selecting the communication device.
The attachment can include one or more of:
presence and availability information currently in the possession of a transmitting communication device,
a request or command to the selected communication device,
a set of communication capabilities required of the selected communication device to participate in the communication function, an identification of a conflict between first and second sets of presence and availability information,
an identification of an existence of invalid or valid presence and availability information,
an indication of a set of presence and availability information deemed to be invalid or valid, a timestamp associated with entry, update, and/or creation of presence and availability information,
a hierarchical indicator indicating a relative degree of priority of the transmitting communication device and/or presence and availability information.
This embodiment can provide an efficient and easily implemented technique for scheduling inter-party communications, even when a selected user has potentially conflicting or invalid presence and availability information stored at differing network nodes. The incorporation of a rationale or reason for selecting the communication device into the attachment can not only be incorporated into the normal communication setup and/or scheduling messages but also be implemented with few changes to current communication protocols.
In a second embodiment, a method is provided that includes the steps:
(a) identifying a conflict between first and second sets of presence and availability information, the first and second sets of presence and availability information being stored at differing nodes of a network; and
(b) determining which of the first and second sets of presence and availability information is valid and which of the first and second sets of presence and availability information is invalid.
The determination is based on one or more of:

    
    
        first and second timestamps associated with the first and second sets of presence and availability information,
        first and second hierarchical indicators associated with the differing nodes and/or first and second sets of presence and availability information,
        user input,
        a preconfigured user preference,
        first and second identities of the differing nodes, and
        an electronic calendar entry.
    
    


This embodiment can provide a robust and easily implemented technique for identifying and resolving conflicts between sets of presence and availability information stored at differing locations or network nodes. The embodiment can use a number of factors or indicia indicating which set of presence and availability information is most likely to be valid or invalid. The use of an attachment to normal communication signaling messages can permit the embodiment to be implemented with current communication protocols.
These and other advantages will be apparent from the disclosure of the invention(s) contained herein.
As used herein, “at least one”, “one or more”, and “and/or” are open-ended expressions that are both conjunctive and disjunctive in operation. For example, each of the expressions “at least one of A, B and C”, “at least one of A, B, or C”, “one or more of A, B, and C”, “one or more of A, B, or C” and “A, B, and/or C” means A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B and C together.
The term “a” or “an” entity refers to one or more of that entity. As such, the terms “a” (or “an”), “one or more” and “at least one” can be used interchangeably herein. It is also to be noted that the terms “comprising”, “including”, and “having” can be used interchangeably.
The term “automatic” and variations thereof, as used herein, refers to any process or operation done without material human input when the process or operation is performed. However, a process or operation can be automatic even if performance of the process or operation uses human input, whether material or immaterial, received before performance of the process or operation. Human input is deemed to be material if such input influences how the process or operation will be performed. Human input that consents to the performance of the process or operation is not deemed to be “material”.
The term “computer-readable medium” as used herein refers to any tangible storage and/or transmission medium that participates in providing instructions to a processor for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, NVRAM, or magnetic or optical disks. Volatile media includes dynamic memory, such as main memory. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, magneto-optical medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, a solid state medium like a memory card, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. A digital file attachment to e-mail or other self-contained information archive or set of archives is considered a distribution medium equivalent to a tangible storage medium. When the computer-readable media is configured as a database, it is to be understood that the database may be any type of database, such as relational, hierarchical, object-oriented, and/or the like. Accordingly, the invention is considered to include a tangible storage medium or distribution medium and prior art-recognized equivalents and successor media, in which the software implementations of the present invention are stored.
The terms “determine”, “calculate” and “compute,” and variations thereof, as used herein, are used interchangeably and include any type of methodology, process, mathematical operation or technique.
The term “module” as used herein refers to any known or later developed hardware, software, firmware, artificial intelligence, fuzzy logic, or combination of hardware and software that is capable of performing the functionality associated with that element. Also, while the invention is described in terms of exemplary embodiments, it should be appreciated that individual aspects of the invention can be separately claimed.
The preceding is a simplified summary of the inventions to provide an understanding of some aspects of the invention. This summary is neither an extensive nor exhaustive overview of the inventions and their respective embodiments. It is intended neither to identify key or critical elements of the inventions nor to delineate the scopes of the inventions but to present selected concepts of the inventions in a simplified form as an introduction to the more detailed description presented below. As will be appreciated, other embodiments of the inventions are possible utilizing, alone or in combination, one or more of the features set forth above or described in detail below.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a communications architecture according to an embodiment of the present invention;
FIG. 2 depicts a graphical user interface display according to an embodiment of the present invention;
FIG. 3 is a flowchart according to an embodiment of the present invention;
FIG. 4 is a flowchart according to an embodiment of the present invention;
FIG. 5 is a flowchart according to an embodiment of the present invention
FIG. 6 is a signal flow diagram according to an embodiment of the present invention; and
FIG. 7 is a flowchart according to an embodiment of the present invention.



DETAILED DESCRIPTION
The various inventions will be illustrated below in conjunction with an exemplary communication system. Although well suited for use with, e.g., a system using a server(s) and/or database(s), the invention is not limited to use with any particular type of communication system or configuration of system elements. Those skilled in the art will recognize that the disclosed techniques may be used in any communication application in which it is desirable to conference multiple parties together, whether by live voice, text, and/or video, such as web conferencing, text chat, and instant messaging.
FIG. 1 depicts an architecture 100 according to a first embodiment of the present invention. Referring to FIG. 1, an enterprise network 104 is in communication, via packet-switched (typically untrusted or unsecure or public) Wide Area Network (WAN) 108, with one or more presence services 112a-m, and a plurality of external communication devices 116a-x. The enterprise network 104 includes a communications server 120 and a plurality of internal first, second, . . . nth communications devices 124a-n, interconnected by a (trusted or secure or private) Local Area Network (LAN) 128. As will be appreciated, extensions of internal communication devices are extensions within the enterprise network 104 that are directly serviced by the enterprise server. More particularly, these extensions correspond to endpoints serviced by the server, and the server can direct incoming calls to and receive outgoing calls from these extensions in a conventional manner. External terminals are not directly supported as endpoints by the enterprise server.
The communications server 120 can include a PBX, an enterprise switch, an enterprise server, or other type of telecommunications system switch or server, as well as other types of processor-based communication control devices such as media servers (i.e., email servers, voicemail servers, web servers, and the like), computers, adjuncts, etc. The server 120 is preferably configured to execute telecommunication applications such as the suite of MultiVantageTM applications of Avaya, Inc., including Communication ManagerTM and MultiVantage ExpressTM. The server 120 preferably includes one or more MultiPoint Conferencing UnitsTM (MCU) and/or Meeting ExchangeTM of Avaya, Inc., and a suitable conferencing server, such as a 1056-port CS700 Conferencing ServerTM of Avaya, Inc. These products typically require the participants to dial into a conference bridge using a predetermined dial-in number and access code to initiate conferences, without an operator or advanced reservations. As will be appreciated, these products further provide integrated features such as audio and web conference management, desktop sharing, polling, interactive whiteboard session, chat, application sharing, conference recording and playback of audio and web portions of the conference, and annotation tools.
The first, second, . . . nth communication devices 124a-n can be any IP-capable hard- or softphone modified to perform the operations of the present invention. Examples of suitable modified IP telephones include the 5600TM, 9620TM, 9630TM 9640TM, 9640GTM, 9650TM, and Quick EditionTM telephones and IP wireless telephones of Avaya, Inc. The communication devices 124a-n each include a processor 132 and memory 136. The memory 136 includes various computational modules, including an electronic calendar module 140, such as OutlookTM by Microsoft, Inc., a listing of contact information 144, a conference call configuration module 148, and a conference call placement module 152.
The electronic calendar 140 handles scheduling of all conference calls requested by a subscriber. Accordingly, the calendar 140 automatically sends conferencing invitations to conference call participants, receives and processes accept and decline responses and sends updated conferencing invitations responsive thereto, and, when all participants agree upon a time for the call, handles entry of the scheduled conference call into each participant's electronic calendar. The conferencing invitations include a number of fields that may vary by the communication modality selected by each participant. Exemplary fields include subject, location, label, start time, end time, reminder time, description, participant identifiers, participant selected communication modality identifier for one or more of the identified participants, participant contact information (e.g., electronic address of endpoint to participate in conference call) for one or more of the identified participants, accept, decline, and scheduling changes. A pointer in each participant's calendar entry references data structures associated with the scheduled conference call.
The contact listing 144 (or local address book) is a subscriber-selected listing of contact information from which the conference call participants may be selected. The contact listing may be automatically configured, or populated initially, in response to tracking the subscriber's interpersonal communications, manually input by the subscriber, or a combination thereof. Each contact listing entry includes, for example, the name of the person, home address, employer, category of the person, and electronic addresses of one or more of the person's communication devices. A participant may be selected by accessing the contact listing and selecting the participant's entry.
The conference call configuration module 148 provides a graphical user interface to the subscriber to enable the subscriber to configure a conference call. As shown in FIG. 2, the display provides a number of options or fields, including a number of conference call start time 200, end time 204, duration 208, date 212, the name 216a-d of each participant, and, for each named participant, an order identifier 220a-d indicating an order in which the corresponding participant is to be contacted, an electronic address 224a-d (e.g., a telephone number, address of record, and the like) of the corresponding participant, a time 228a-d to join the corresponding participant, a condition or precursor event 232a-d to join the corresponding participant, and role identifier 236a-d. Additional participants can be selected using yes/no icons 240 and 244. Completion of the display is indicated by selecting “yes” icon 248.
The conference call placement module 152 contacts automatically each conference call participant at the time and by the communication modality indicated by the subscriber. This can be done, for example, by the server 120 simulating telephone number key presses for a participant to be contacted by circuit-switched phone or by sending Voice over Internet Protocol or IP call set up messages to the appropriate electronic addresses. When the participant answers the call, he or she receives a message such as “This is your conference call scheduled for X pm. Please hold while I connect the other participants.” When all of the participants have answered, the conference bridge is activated so that they are all conferenced together.
In the example depicted in FIG. 2, the conference call initiator or host is Mary Smith, the participant on the first line of the display. The configuration module 148 auto-populates this entry as the module already knows her information. Unless indicated otherwise, the initiator is assumed to be the first participant to be contacted when the conference call is initiated.
Returning to the example, Mary Smith has selected John Doe, John Hancock, and William Clark as participants. She has further indicated, using order identifier 220, the order in which the participants are to be contacted and joined to the conference call. Mary Smith is to be first contacted at 1:00 pm by the conference call placement module 152; John Hancock second as close to 1 pm as possible; John Doe third at 1:15 pm; and William Clark immediately after John Hancock disconnects from the conference call but not later than 1:45 pm. Alternatively, Mary Smith could have stipulated that William Clark be connected immediately after John Hancock connects to the conference call. Regarding the handling of each participant's media stream, Mary Smith, John Doe, William Clark, and John Hancock are to receive outgoing media streams from each of the other participants (as each of these three participants listens and talks). The outgoing media stream of John Hancock, however, is not forwarded to the other three participants (as he is listen only). As will be appreciated, the media stream may be audio only or a combination of audio and video.
In one configuration, the conference call initiator can further indicate what communication modality is to be used for each participant. For example, Mary Smith could ask for herself to be connected by (unsecured) circuit-switched phone, John Doe and William Clark by (secured) packet-switched phone, and John Hancock by instant messaging, with the speech being converted into a streaming text equivalent.
In one configuration, the subscriber may indicate that a participant is to be conferenced into the conference call only if he decides, during the call, to do so. In other words, the contingent event that must be satisfied before the participant is joined is a decision made and a command issued by the subscriber during the conference call. The command may be as simple as a single key press or icon selection. The subscriber need not dial the participant's electronic address. In the other cases above, the contingent event is either temporal or based upon an action of a participant other than the subscriber.
The presence services 112a-m each include a presence server 154 and an associated presence information database 158 that may or may not be operated by the enterprise network. Each of the presence servers 154 and presence information databases 158 collectively track the presence and/or availability of presence service subscribers and/or their communication devices and provide, to requesting entities, current presence information respecting selected presence service subscribers.
“Presence information” refers to any information associated with a network node and/or endpoint device, such as a communication device, that is in turn associated with a person or identity. Presence information can indicate user status (e.g., online or offline), user availability (e.g., available, busy, on the phone, or out to lunch), user's desired contact means (e.g., instant messaging, circuit-switched telephone, packet-switched telephone, cell phone, pager, etc.) that may vary by contactor identity and/or contact time, and at what endpoint a contactor is most likely to reach successfully the presence service subscriber. Presence information can span a number of different communication channels. The aggregated view of a user's presence (that is, the availability across all of an individual's SIP-enabled devices) is called Multiple Points of Presence or MPOP. Examples of information useful in determining a user's presence and availability include information regarding the accessibility of the endpoint device, the recency of use of the endpoint device by the person, recency of authentication by the person to a network component, recency of registration of an endpoint device, an endpoint publishing presence information, SUBSCRIPTION requests generated by a user agent in the user's endpoint device, geographical location of the user using mobile device location information, scheduled activities on the user's calendar, indications whether or not a user has been reading or sending email, and an indication whether the user's email application has an out of office setting. Present information can be, for example, the electronic address of a device at which the service subscriber is currently deemed to be present and/or available.
Presence information can further include user preferences. User preferences, for example, include contact mode preferences or profiles such as the communication device to be contacted for specific types of contacts or under specified factual scenarios, contact time preferences, impermissible contact types and/or subjects such as subjects about which the person does not wish to be contacted, permissible contact type and/or subjects such as subjects about which the person does wish to be contacted, and contactor's to be given preference, priority, or additional choices for user's communication endpoints and/or mode. For example, user preferences can include a buddy list much like instant messaging. User preferences permits a user to specify modes of communication based upon the time of day of communications, e.g., the user might accept a nonurgent call on a cell phone during the day but after hours direct it to a voice-mail or Interactive Voice Response unit. User preferences permit a user to select which medium of communication he or she wants to use or respond with, based upon a wide number of parameters.
The presence server 154 can act as both a presence agent and proxy. Presence agents receive and respond to SUBSCRIPTION requests, send NOTIFY requests, and generate state notifications as defined by the Session Initiation Protocol (“SIP”) Events specification. Before establishing a dialog and sending notifications over that dialog, presence agents first authenticate SUBSCRIPTION requests. Proxies forward SUBSCRIBE requests to another presence agent.
In one configuration, the presence service 112 is used to access participant presence information for the graphical user interface displayed to the subscriber or immediately prior to contacting the participant to connect him or her to the conference call. The subscriber first enters an address of record into the display as participant contact information. The configuration module 148 then retrieves the presence information for the participant from the participant's presence service 112. Alternatively, the subscriber can enter a participant's electronic address, which can be mapped to the participant's address of record or presence service 112 using known techniques, such as the ENUM protocol.
In one configuration, the presence service 112 is used when the participant fails to answer at the electronic address selected by the subscriber when the conference call was configured. In that event, the placement module 152 retrieves the absentee participant's current presence information from the presence service 112. The address having the greatest likelihood of contacting successfully the absentee participant is then used to retry joining the participant to the conference call. The number of attempts made using different addresses of absentee participants is user configurable. In this configuration, either intelligent or parallel forking may be employed. When a SIP proxy (a server that processes and forwards SIP requests between calling and called parties) receives an INVITE (request to communicate), it uses the called party's presence information to make a routing decision, or forking. An intelligent fork sends an INVITE to a specific endpoint device of a contactee, while a parallel fork sends simultaneously an INVITE to different endpoint addresses of the contactee.
Alternatively at the time of joining each participant, the module 152 can access the presence service of each participant to obtain his or her current presence information and use the presence information to contact the participant even if the presence. information is in conflict with the data structures associated with the conference call.
The external communication devices 117a-x can be any suitable circuit- or packet-switched or TDM-enabled communication device. Examples include wired and wireless telephones, Personal Digital Assistants or PDAs, Personal Computers or PCs, laptops, packet-based H.320 video phones and conferencing units, packet-based voice messaging and response units, peer-to-peer based communication devices, and packet-based traditional computer telephony adjuncts.
The operation of the conference call configuration module 148 will now be discussed with reference to FIG. 3.
In step 300, a subscriber completes a display similar to FIG. 2 containing conference call configuration information and selects icon 248.
In step 304, the configuration module 148 provides the information to the electronic calendar module 140 and the module 140 generates and sends conferencing invites to the named participants (including the subscriber).
In step 308, when all conference call details have been successfully negotiated amongst the participants, the configuration module 148 creates automatically data structures containing the resulting conference call details and the calendar module 140 causes the entry of the details in each participant's electronic calendar.
In decision diamond 312, the configuration module 148 determines whether there is another conference call to be scheduled. If so, the module 148 returns to step 300. If not, the module 148 terminates operation.
The operation of the conference call placement module 152 will now be discussed with reference to FIG. 4.
In step 400, the module 152 receives notification from the calendar module 140 that a conference call requires initiation. The notification includes a pointer to the data structures describing the conference call. The notification is typically generated in advance of the earliest scheduled initiation time for the call.
In step 404, the module 152 retrieves the conference call data structures.
In step 408, the module 152 places calls and constructs communication channel (i.e., media stream flow) associations in accordance with the data structures.
FIG. 5 shows an embodiment according to another invention. This flowchart may be employed to obtain participant's presence information when configuring the conference call or immediately before the conference call.
In step 500, the module 152 generates a SUBSCRIPTION request to the presence service 112 of each participant identified on the graphical user interface display of FIG. 2. The request may be generated for a participant as that participant is added or immediately before that participant is to be contacted and connected to the conference bridge. The SUBSCRIPTION request can include, in addition to the participant's address of record, the conference call parameters, namely conference call start time, end time, duration, date, and required conference call endpoint capabilities. As noted, conference calls can provide features, such as audio and web conference management, desktop sharing, polling, interactive whiteboard session, chat, application sharing, conference recording and playback of audio and web portions of the conference, and annotation tools. These various features can require specific endpoint capabilities for effective implementation in a conference call. By way of example, a video conference call requires each endpoint to have the ability to generate a video stream of the local participant and receive and process video streams of the other participants. Desktop sharing requires each endpoint to be capable of receiving and processing the packets of the application, such as ExcelTM, being shared during the conference call. If the conference call is to be in the form of a text chat or instant messaging session, the various endpoints must be text chat or instant messaging capable.
In step 504, the presence server 154 authenticates the SUBSCRIPTION request.
In step 508, the presence server 154 determines, for the conference call parameters, which presence information to publish. As noted, presence information can include user preferences. This step permits the user preferences of the participant to be applied to the conference call request. For example, when the user preferences specify which communication device can be published for a specified requestor and/or at the scheduled time of the conference call, only those communication devices are published in response to the SUBSCRIPTION request.
In step 512, the presence server 154 determines for the conference call parameters which of the participant's communication devices to select. This step requires viewing the capabilities of the participant's various communication devices in light of the minimum required capabilities required for the conference call. Only those communication devices meeting or exceeding the minimum required capabilities are selected for publication.
In step 516, the presence server 154 provides the presence information to be published to the user agent of the host. The user agent provides the presence information to the conference call configuration module 148 for presentation to the host in the “party contact information” field of the display of FIG. 2. This may be done as a drop down list of the various communication devices for selection by the host.
Step 520 is applied when steps 500-516 are performed immediately prior to a conference call being initiated. In step 520, the communication device of the participant is selected and a contact initiated to join the participant to the conference call.
With reference to FIG. 1, another embodiment of the present invention will now be discussed. This embodiment provides a methodology and architecture, inter alia, for identifying and resolving conflicts in presence information, user preferences, and electronic scheduling information, among others, obsolete or otherwise invalid presence information, user preferences, and electronic scheduling information, and scheduling communication sessions between two or more individuals or devices.
Prior to discussing the embodiment, the reader should understand the prior art concept of federation. Returning to FIG. 1, the communications server 120 and/or first, second, . . . nth communication devices 124a-n each contain a presence federation module 184, which is, typically, configured as a software engine and obtains presence and availability information from one or more presence services 112a-m associated with a selected user. For instance, a first set of communication devices of a selected user can be associated with a first presence service 112a, and a second set of communication devices associated with the same user can be associated with a second presence service 112b. The user preferences and presence information maintained by the first and second presence services 112a-m typically are not exchanged directly between the two presence services and are therefore not reconciled with one another. The presence federation modules 184 are registered with the presence services and, through SUBSCRIBE 800 and NOTIFY 804 messages, obtain this information from the first and second presence services and reconcile it for use by the associated presence agent 180. The SUBSCRIBE 800 request is sent periodically to each of the presence services associated with the user. The NOTIFY 804 message is transmitted in response to the SUBSCRIBE request and/or, while the SUBSCRIBE request is in effect in response to presence state changes involving a communication device associated with the user.
Even when federation is employed, conflicts between and amongst the various repositories of presence information, user preferences, and electronic scheduling information (hereinafter “presence and availability information”) can still occur. As shown in FIG. 1, the first, second, . . . nth communication devices, external communication devices 116a-x, and communications server 120 each include a presence agent 180 to reconcile and arbitrate potentially conflicting, stale, or otherwise invalid presence and availability information stored locally in the various network devices.
When a user has presence and availability information maintained at multiple network nodes, which are frequently part of differing enterprises, incidences of conflicting, stale, and invalid presence and availability information are inevitable. For example, the presence database 158 of a selected user's presence service 112 may indicate that, during a specified time interval, the user is not to be contacted at a specific communication device while an electronic calendar entry for the user stored in another network node indicates that the user is to be contacted at the communication device. In another example, the selected user may have multiple presence services 112a-m for differing communication devices of the user. By way of illustration, a user may have a first set of devices registered with and monitored by a first presence service and a second set of devices, different from the first device set, registered with and monitored by a second presence service. Because the first and second presence services fail to communicate with one another regarding the user's presence and availability information, the first and second presence services 112 frequently contain conflicting presence and availability information for the user. In yet another example, the first communication device 124a for the selected user may contain electronic calendar entries in conflict with electronic calendar entries maintained at the communications server 120. Although some of these conflicts may be discovered by federation, they are commonly not resolved in current architectures, even if discovered.
The presence agents 180 in the various network devices communicate with one another regarding presence and availability information for a common user and, in doing so, (a) identify conflicting, stale, or otherwise invalid presence and availability information and (b) determine collectively how to process and respond to requests by and commands from the user and requests to the user from third parties. In one configuration, the presence agents 180 are configured as software engines, which, depending on the network device with which they are associated, have access to locally stored presence and availability information of the user. As will be appreciated, the presence agents 180 can be configured in other ways, such as artificially intelligent software modules, logic circuits, and the like.
In one configuration, the existence of presence and availability information and other relevant information is communicated by a presence and availability attachment to messages formatted according to a communications protocol, including existing signaling protocols, such as the Session Initiation Protocol (“SIP”). As will be appreciated, the messages can be sent according to other protocols, such as H.323. As an example, the attachment can be configured as an eXtended Markup Language (“XML”) attachment to a SIP invite. As will be appreciated, other markup languages, or languages used to define additional information to be added to the content of a set of information, may be employed. The use of the attachment enables the use of this embodiment with existing communication protocols.
The presence and availability attachment can include a variety of information. The information includes not only presence and availability information currently in the possession of the transmitting communication device but also one or more of a request or command to the selected communication device, a rationale for selecting a communication device for a selected communication function, the communication capabilities of the selected communication device, an identification of a conflict in presence and availability information, an identification of invalid or stale presence and availability information, an indication of which presence and availability information is deemed to be valid, timestamps associated with entry, update, and/or creation of presence and availability information, and/or hierarchical indicators of the relative degree of priority of the device associated with specific presence and availability information. The hierarchical indicators can indicate which device is deemed to have the most reliable presence and availability information or the most reliable category of presence and availability information. Other devices may be deemed to have more reliable presence and availability information of other categories. The indicators can be default values or values configured by the user.
Conflicts can be identified by periodic exchanges of messages, such as using the SUBSCRIPTION and NOTIFY paradigm of SIP and during the course of effecting and/or scheduling media sessions. Which presence and availability information is valid can be determined, for instance, based on timestamps associated with the associated presence and availability information, user input, user configurations, the identified source of the presence and availability information, and hierarchical indicators. As will be appreciated, presence and availability information having a more recent timestamp and/or a higher precedence hierarchical indicator is generally deemed to be more valid than conflicting presence and availability information having a less recent timestamp or lower precedence hierarchical indicator. As will be further appreciated, presence and availability information, such as user preferences as indicated by calendar entries and user preferences in presence information, are generally deemed to be controlling over conflicting presence and availability information. Conflicts between user preferences, calendar entries, or user preferences and calendar entries can be arbitrated based on the relative recency of the timestamps, user input, user configuration, identities of the sources of the user preferences, and relative priorities of the hierarchical indicators.
An illustration of the use of the presence and availability attachments will now be discussed with reference to scheduling a conference call. In conference call scheduling, the presence and availability attachment is used to respond more efficiently to scheduling requests. This implementation will be discussed with reference to FIGS. 6-7.
The conference call configuration module 148 in the communications server 120 or a communication device 124a-n receives, in block 700, a request for scheduling a conference call. The request may be received directly from the user associated with the communication device or indirectly from a subscriber or nonsubscriber (other than the user), who is initiating the conference call set up. Control then passes to block 704.
In block 704, the conference call configuration module 148 retrieves the current presence and availability information associated with the user. Using the technique(s) discussed above, the conference call configuration module 148 selects an appropriate communication device (whether external or internal to the enterprise network 104) to receive the conference call.
In block 708, the presence agent 180 receives the selection and rationale for the selection and generates and sends to the selected communication device an INVITE 808 including a presence and availability attachment. The presence and availability attachment includes the scheduling information associated with the conference call, required media capabilities for the conference call, and/or rationale, or reason(s), why the communication device was selected. Although FIG. 6 shows the scheduling request for the conference call being received and the INVITE generated by the communications server 120, it is to be understood that the request may be received and INVITE generated by a communication device.
The INVITE 808 message, in block 712, is received by the selected communication device. The device unwraps the presence and availability attachment from the packet and opens it.
In block 716, the presence agent 180 in the recipient communication device accesses locally stored presence and availability information, compares the accessed presence and availability information with the contents of the INVITE, including the attachment, and, based on the comparison, selects an appropriate response. Depending on the implementation, there are a number of possible responses.
In a first response 720, the presence agent 180 can simply reject the INVITE. This is done, for example, by any final response message resulting in the rejection of the requested session. (not illustrated in the diagram) Rejection may occur, for instance, where the scheduling information is invalid or conflicts with the timing of the conference call, the communication device lacks the needed media capabilities for the conference call, the conference call conflicts with a user preference, or the rationale is otherwise invalid.
In a second response 724, the presence agent 180 accepts the INVITE. Acceptance can be indicated using an OK 812 message. The electronic calendar of the user will be updated accordingly, as described above.
In a third response 728, the presence agent 180 prompts the user for input before deciding to accept or reject the INVITE. Because the user may not respond immediately, the presence agent 180 can send an OK 812 message indicating, in the attachment, that the user needs to be prompted before the INVITE can be processed. If the user fails to respond to the prompt within a selected period of time, the INVITE may be rejected by the first response 720 or accepted by the second response 724. Which response is generated will depend on how the presence agent 180 is configured to act in this event.
In a fourth response 732, the presence agent 180 can deflect, or redirect, the INVITE to another communication device. This may occur, for instance, when the user has indicated a preference to receive such communications at a different communication device, when the user has indicated a preference to be contacted only by a different media (such as text), when the user has changed his electronic calendar to delete the conference call, when the selected communication device is not capable of handling the media requirements associated with the conference call, and when a different communication device is more capable of handling the media requirements of the conference call. This response can be indicated in an final response REDIRECTION message or REFER message returned to the source of the original INVITE or in a new INVITE message sent by the selected communication device to the proper communication device.
Regardless of the response selected, the presence agent 180, in block 736 generates and sends an appropriate response to the proper entity. The response normally includes a presence and availability attachment providing, as appropriate, a rationale for the decision made by the presence agent, updated presence and availability information (e.g., providing updated presence information, scheduling information, and/or user preferences), (current) media capabilities of the corresponding communication device, and any indications given directly by the user (accepted, provisionally accepted, rejected, etc.). Regarding media capabilities, it will be understood that the media capabilities can be temporally and/or spatially dependent. For instance, a mobile phone configured according to the 3G suite of protocols is more capable in the presence of a 3G network than when in the presence of a GSM network. When the mobile phone is in a roaming mode, it may not be available to accept or prevented by a user preference from accepting the conference call.
In certain implementations, a series of messages are transmitted back and forth between the requesting and responding devices. This possibility is shown in FIG. 6 by the dialog double-headed arrow 816. Back-and-forth messages that are part of the session are normally identified and tracked by the address pairing in the packet header and dialog identifier. If needed, one of the devices sends a BYE 820 message when the dialog is completed. The fact that the BYE 820 can be sent by either device is shown by the double-headed arrow.
When the response is returned to the server 120, the server 120, if necessary depending on the response, can recalculate or edit the invitation or select another communication device to handle the requested communication.
The present invention may be used with either a client-server architecture or a peer-to-peer architecture, such as those envisioned by the Session Initiation Protocol and SIP Instant Messaging and Presence Leveraging Extensions or SIMPLE. In the client-server model or paradigm, network services and the programs used by end users to access the services are described. The client side provides a user with an interface for requesting services from the network, and the server side is responsible for accepting user requests for services and providing the services transparent to the user. By contrast in the peer-to-peer model or paradigm, each networked host runs both the client and server parts of an application program. Moreover, the invention does not require a specific Internet Protocol Telephony (IPT) protocol and could be implemented, for example, using QSIG, H.323, and combinations thereof.
The exemplary systems and methods of this invention have been described in relation to conference call scheduling and initiating. However, to avoid unnecessarily obscuring the present invention, the preceding description omits a number of known structures and devices. This omission is not to be construed as a limitation of the scope of the claimed invention. Specific details are set forth to provide an understanding of the present invention. It should however be appreciated that the present invention may be practiced in a variety of ways beyond the specific detail set forth herein.
Furthermore, while the exemplary embodiments illustrated herein show the various components of the system collocated, certain components of the system can be located remotely, at distant portions of a distributed network, such as a LAN and/or the Internet, or within a dedicated system. Thus, it should be appreciated, that the components of the system can be combined into one or more devices, such as a server and/or server adjunct, or collocated on a particular node of a distributed network, such as an analog and/or digital telecommunications network, a packet-switch network, or a circuit-switched network. It will be appreciated from the preceding description, and for reasons of computational efficiency, that the components of the system can be arranged at any location within a distributed network of components without affecting the operation of the system. For example, the various components can be located in a switch such as a PBX and media server, gateway, in one or more communications devices, at one or more users' premises, or some combination thereof. Similarly, one or more functional portions of the system could be distributed between a telecommunications device(s) and an associated computing device.
Furthermore, it should be appreciated that the various links connecting the elements can be wired or wireless links, or any combination thereof, or any other known or later developed element(s) that is capable of supplying and/or communicating data to and from the connected elements. These wired or wireless links can also be secure links and may be capable of communicating encrypted information. Transmission media used as links, for example, can be any suitable carrier for electrical signals, including coaxial cables, copper wire and fiber optics, and may take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
Also, while the flowcharts have been discussed and illustrated in relation to a particular sequence of events, it should be appreciated that changes, additions, and omissions to this sequence can occur without materially affecting the operation of the invention.
A number of variations and modifications of the invention can be used. It would be possible to provide for some features of the invention without providing others.
For example in one alternative embodiment, the various computational modules in memory 136 may be located in other network nodes. For example, one or more of the modules can be located in the server 120. In another example, one or more of the modules can be located on a conferencing service provider's premises with subscribers thereto being charged for using the modules.
In another alternative embodiment, the invention can be used with time-sensitive or dependent items other than conference calls. By way of example, the invention can be used with layered passwords that only become valid in a specific order or at a specific time. This can be done using a display similar to that of FIG. 2, where the party identity and party contact information are replaced by password fields, and the “when join?” and “condition to join” fields are replaced with fields regarding when a password is to become valid and for how long and events upon which password validity is contingent (or what event is required for a password to become valid). Thus, the graphical user interface can become a convenient way to create layered password structures in user security applications.
In yet another embodiment, the participants call into a bridge. Text messages, such as email or instant messages, are forwarded automatically by the conference call placement module 152 to the participants when they are to be joined requesting them to call into the predetermined number associated with the bridge. In this embodiment, the module 152 does not itself automatically make a call to each of the participants.
In yet another embodiment, the systems and methods of this invention can be implemented in conjunction with a special purpose computer, a programmed microprocessor or microcontroller and peripheral integrated circuit element(s), an ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit such as discrete element circuit, a programmable logic device or gate array such as PLD, PLA, FPGA, PAL, special purpose computer, any comparable means, or the like. In general, any device(s) or means capable of implementing the methodology illustrated herein can be used to implement the various aspects of this invention. Exemplary hardware that can be used for the present invention includes computers, handheld devices, telephones (e.g., cellular, Internet enabled, digital, analog, hybrids, and others), and other hardware known in the art. Some of these devices include processors (e.g., a single or multiple microprocessors), memory, nonvolatile storage, input devices, and output devices. Furthermore, alternative software implementations including, but not limited to, distributed processing or component/object distributed processing, parallel processing, or virtual machine processing can also be constructed to implement the methods described herein.
In yet another embodiment, the disclosed methods may be readily implemented in conjunction with software using object or object-oriented software development environments that provide portable source code that can be used on a variety of computer or workstation platforms. Alternatively, the disclosed system may be implemented partially or fully in hardware using standard logic circuits or VLSI design. Whether software or hardware is used to implement the systems in accordance with this invention is dependent on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being utilized.
In yet another embodiment, the disclosed methods may be partially implemented in software that can be stored on a storage medium, executed on programmed general-purpose computer with the cooperation of a controller and memory, a special purpose computer, a microprocessor, or the like. In these instances, the systems and methods of this invention can be implemented as program embedded on personal computer such as an applet, JAVA® or CGI script, as a resource residing on a server or computer workstation, as a routine embedded in a dedicated measurement system, system component, or the like. The system can also be implemented by physically incorporating the system and/or method into a software and/or hardware system.
Although the present invention describes components and functions implemented in the embodiments with reference to particular standards and protocols, the invention is not limited to such standards and protocols. Other similar standards and protocols not mentioned herein are in existence and are considered to be included in the present invention. Moreover, the standards and protocols mentioned herein and other similar standards and protocols not mentioned herein are periodically superseded by faster or more effective equivalents having essentially the same functions. Such replacement standards and protocols having the same functions are considered equivalents included in the present invention.
The present invention, in various embodiments, includes components, methods, processes, systems and/or apparatus substantially as depicted and described herein, including various embodiments, subcombinations, and subsets thereof. Those of skill in the art will understand how to make and use the present invention after understanding the present disclosure. The present invention, in various embodiments, includes providing devices and processes in the absence of items not depicted and/or described herein or in various embodiments hereof, including in the absence of such items as may have been used in previous devices or processes, e.g., for improving performance, achieving ease and\or reducing cost of implementation.
The foregoing discussion of the invention has been presented for purposes of illustration and description. The foregoing is not intended to limit the invention to the form or forms disclosed herein. In the foregoing Detailed Description for example, various features of the invention are grouped together in one or more embodiments for the purpose of streamlining the disclosure. The features of the embodiments of the invention may be combined in alternate embodiments other than those discussed above. This method of disclosure is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the following claims are hereby incorporated into this Detailed Description, with each claim standing on its own as a separate preferred embodiment of the invention.
Moreover, though the description of the invention has included description of one or more embodiments and certain variations and modifications, other variations, combinations, and modifications are within the scope of the invention, e.g., as may be within the skill and knowledge of those in the art, after understanding the present disclosure. It is intended to obtain rights which include alternative embodiments to the extent permitted, including alternate, interchangeable and/or equivalent structures, functions, ranges or steps to those claimed, whether or not such alternate, interchangeable and/or equivalent structures, functions, ranges or steps are disclosed herein, and without intending to publicly dedicate any patentable subject matter.

## Claims

1. A method, comprising:
(a) identifying, at a first node, a conflict between first and second sets of presence and availability information for a user, the first and second sets of presence and availability information being stored at differing nodes of a network and available to the first node, wherein the first and second sets of presence and availability information relate to a future event;
(b) determining, at the first node, which of the first and second sets of presence and availability information is valid and which of the first and second sets of presence and availability information is invalid, the determining step (b) being based on at least one of:
first and second timestamps associated with the first and second sets of presence and availability information,
first and second hierarchical indicators associated with the differing nodes and/or first and second sets of presence and availability information,
user input,
a preconfigured user preference,
first and second identities of the differing nodes, and
an electronic calendar entry; and

(c) forwarding, at the first node, a message to a second node, the message comprising an attachment, the attachment including the presence and availability information and an indication of which of the first and second sets of presence and availability information is valid or invalid.

2. The method of claim 1, wherein the attachment further includes a reason for the indication.

3. The method of claim 1, wherein the determining step is based on first and second hierarchical indicators associated with the differing nodes and/or first and second sets of presence and availability information.

4. A non-transitory computer readable medium comprising processor executable instructions to perform the steps of claim 1.