The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
The disclosed system may be embodied for use with any specific type of client system, including but not limited to desktop computer systems, PDAs (Personal Digital Assistants), cell phones, tablet PCs, or any other appropriate client device. The illustrative example of
In one embodiment, the disclosed system operates through a server managed client model, as illustrated by the Server Managed Client 18a in
Computer systems in the server clusters 16 and 12, as well as in the client systems 18, 20, 22 and 24, may, for example, each consist of at least one processor, program storage, such as memory, for storing program code executable on the processor, one or more input/output devices and/or interfaces, such as data communication and/or peripheral devices and/or interfaces, and may each further include appropriate operating system software.
During operation of the embodiment of the disclosed system shown
Further as shown in
In one embodiment of the disclosed system, the Client Desktop 30, Web Conference Bootstrap Agent 40, User Preferences 42, and Credential Store 44 are provided as part of one of the client systems 18, 20, 22 or 24 shown in
As shown in
The participant may be given the option of accepting the bootstrap agent itself at step 70. In one embodiment, a counter is incremented at step 70 to count the number of times an attempt has been made to get the participant to accept the bootstrap agent. In such an embodiment, the number of times such an attempt is made is counted to limit the number of times an attempt is made to get the participant to accept the bootstrap agent, since the participant may be away, and may not be able to accept the bootstrap agent. If the participant accepts the bootstrap agent at step 70, then the bootstrap agent can be triggered by the server system to pull the user into the Web conference, and accordingly step 70 is followed by step 66, in which the process exits. Otherwise, if the participant does not accept the bootstrap agent at step 70, then the counter is checked at step 74 in order to determine whether the configured limit āNā to the number of attempts to get the participant to accept the bootstrap agent has been reached. If the counter has expired, then step 74 is followed by step 66, in which the process exits. Otherwise, following a delay period at step 76, step 74 is followed by step 60, and the process of
As shown in
At step 108, the server side process determines whether each of the participants that have accepted invitations to the Web conference are currently online. When a participant that accepted the invitation is found to be online, then step 108 is followed by step 110. Otherwise, if the participant is not currently online, then step 108 is followed by step 114.
At step 110, the server side process initiates execution of a bootstrap agent previously loaded onto the client system of the participant that is currently online. Step 110 should be performed by the server software at a time sufficiently prior to the start of the Web conference (e.g. several minutes prior to the conference) to allow the client side process to auto-join the participant to the conference by the time the conference begins.
In one embodiment, at step 110, the server side process provides information to the client system that enables the bootstrap agent to perform preliminary steps to be performed, including information to support the making and/or enforcing of recommendations with regard to the client system software used to provide the conference. For example, as part of such information conveyed from the server process to the client system at step 110, the server software may indicate that certain software components must be installed on the client system. For example, certain client side software components may be required when the server software was recently updated, as when recently updated server software requires that a specific browser plug-in be installed on the client system. This embodiment of the disclosed system would, under such circumstances, cause the bootstrap agent or the like to either request or require that the user install the plug-in, and then subsequently allow the user to join the conference. Installation or upgrading of specific client software could be made a requirement for the participant to join the conference. Another example of a situation in which the server may require specific software for use in participating in a conference would be when the server is experiencing problems with connections from a specific type of browser program (e.g. Internet Explorer), and accordingly requires that the bootstrap agent use another browser program (e.g. Netscape or Mozilla) to be launched on the client system for connection to the conference. Along these same lines, if the server system is experiencing certain problems at the time the conference is about to start, it may wish to provide at step 110 a completely different URL from that provided in the original meeting invitation, and then this new URL would be used by the bootstrap agent to connect the participant to the conference to avoid these problems.
The bootstrap agent then obtains information necessary to log the participant into the Web conference, and that information is received by the server side process at step 112. The server side process can then join the participant into the Web conference using the logon information received at step 112 at step 113.
At step 115, the server side process receives status information from the bootstrap agent, including indication of whether the automatic join attempted by the bootstrap agent was successful. If the attempt to automatically join the participant to the Web conference was not successful, then an indication of why the automatic join failed is provided to the server system. Information regarding participant status during the Web conference is also passed from the client process to the server side process at step 115. Such information may, for example, include indications of whether the participant is currently participating in the conference. For example, whether a participant is currently participating in a conference may be determined by checking whether their Web browser program's user interface window presenting the conference has a Z-Order indicating that it is front-most in their display, thus indicating that they are currently at their desk and paying attention to the conference. Similarly, a participant may be determined to not be currently paying attention to a conference based on a detection by the client process that a screen saver process or the like is currently active on the client system, and indication of such current participant status accordingly passed from client side process to the server side process.
The information received by the server at step 115 may include other information regarding the status of the participant, such as an indication of the connection speed at which the participant will be accessing the conference. Alternatively, the connection speed of a given participant may be derived by the server. For example, an approximate or likely connection speed of a participant may be extrapolated by the server based on measurements of the time between steps within a multi-step process through which the participant joins the conference, or similarly from a measurement of the round trip time for contacting the participant's client computer system while pulling the participant into the conference.
In the event that a participant could not be joined to the conference, such status would be returned to the server system at step 115. In response to such a failure, the present system may be embodied to automatically send the non-joined participant conference materials via email. This feature may, for example, be advantageous to participants that are unable to connect to the conference due to a poorly functioning network, but still have access to email and telephone.
At step 117, the server side process generates a display object in Web conference display for participants in the Web conference indicating the current status of participants in the Web conference, based on the information received at step 115. Accordingly, the display object generated at step 117 includes an indication of those participants automatically joined to the Web conference without their participation. The display object generated at step 117 disappears/changes appearance in response to an indication received from the client side bootstrap agent that a participant automatically joined without their participation has started or is currently participating in the conference, for example as indicated when their Web browser program's user interface window has a Z-Order indicating that it is front-most in their display, thus indicating that they are currently at their desk and paying attention. Examples of a display object generated at step 117 include an graphical icon visually depicting a user looking at a computer to show that a participant is currently present and paying attention, which is negated (e.g. by displaying a diagonal line through the icon) in response to an indication that the participant is not present and/or not paying attention.
At step 114, in the event that the participant is not currently online, the server side process sends a message to the bootstrap agent previously loaded onto the client system of the participant, where the message indicates that the Web conference is ready to start, and instructing the bootstrap agent to initiate bootstrap actions causing the participant to be automatically joined to the Web conference upon detection that the participant has come online. Next, at step 116, the server side process exits, leaving responsibility for auto-joining the participant into the Web conference to the bootstrap agent running on the client system.
As shown in
At step 126, the client side process operates to obtain details about the Web conference that is about to begin, such as a URL associated with the Web conference. Both the user preferences information obtained at step 124, and the details about the Web conference obtained at step 126, are obtained from a Client Datastore 134, which may include the User Preferences 42 shown in
At step 128, the client side process obtains the user name and password required for the participant to join the Web conference. The user name and password are obtained from the Credential Vault 132, which corresponds to the Credential Store 44 of
Following step 140, at step 142, the client side process accesses user preferences from the Client Datastore 164, to determine in order to determine how the participant wishes the automatic joining to be performed. The disclosed system further operates at step 142 to detect and resolve conflicts between the scheduled times of multiple conferences. As noted above, the resolutions of such scheduling conflicts are automatically determined based on conference priorities. Similar to the operation of step 124 in
At step 144, the client side process operates to obtain details about the Web conference that is about to begin, such as a URL associated with the Web conference. Both the user preferences information obtained at step 142, and the details about the Web conference obtained at step 144, are obtained from a Client Datastore 164, which may include the User Preferences 42 shown in
At step 146, the client side process obtains the user name and password required for the participant to join the Web conference. The user name and password are obtained from the Credential Vault 162, which corresponds to the Credential Store 44 of
At step 150, the client side process suspends its operation until the participant is online. The client side process remains suspended until a determination is made at step 152 that the participant has become online. In that event, at step 153, a determination is made as to whether the Web conference is still active. If not, then the client side process exits at step 156. Otherwise, if the participant is auto-joined to the Web conference at step 154. The client side process operates at step 154 to load the URL associated with the Web conference into the address field of the browser program launched at step 148. Further at step 154, the client side process performs any other actions needed to auto-attend the Web conference, such as providing the username and password required for the conference to the Web conference application in order to login to the Web conference.
The disclosed system can take the form of an entirely software embodiment, an entirely hardware embodiment, or an embodiment containing both software and hardware elements. The figures include block diagram and flowchart illustrations of methods, apparatus(s) and computer program products according to an embodiment of the invention. It will be understood that each block in such figures, and combinations of these blocks, can be implemented by computer program instructions. These computer program instructions may be loaded onto a computer or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the block or blocks.
Those skilled in the art should readily appreciate that programs defining the functions of the present invention can be delivered to a computer in many forms; including, but not limited to: (a) information permanently stored on non-writable storage media (e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment); (b) information alterably stored on writable storage media (e.g. floppy disks and hard drives); or (c) information conveyed to a computer through communication media for example using wireless, baseband signaling or broadband signaling techniques, including carrier wave signaling techniques, such as over computer or telephone networks via a modem.
While the invention is described through the above exemplary embodiments, it will be understood by those of ordinary skill in the art that modification to and variation of the illustrated embodiments may be made without departing from the inventive concepts herein disclosed.