This disclosure relates generally to improvements in real-time communication capabilities, in particular a web-based client application for providing voice communication capabilities.
The following discussion sets forth the inventors' own knowledge of certain technologies and/or problems associated therewith. Accordingly, this discussion is not an admission of prior art, and it is not an admission of the knowledge available to a person of ordinary skill in the art.
Web browsers can be used to provide access to software programs can configure customized user interfaces. Providing a software program as a web application allows the software program to be largely independent of the underlying operating system. Another major advantage of using web applications is the ability to provide access to software without having to deliver and install software to the user's computer.
For many years, software applications were distributed via CDs or other media that were sold to the customer either directly or via third-party merchants. Taking advantage of improvements in network bandwidth and storage capacity, downloading software via the Internet eventually became the preferred mechanism for providing software to users. Taking this one step further, rather than deliver the software program to the user and rely on the software to be correctly installed and updated, many software applications are now offered as services that run on centralized servers with only thin-client interfaces provided to the user. This has significantly improved the ability for software companies to support and improve their products. It has also improved the ability of software companies to limit the use of their software to licensed customers.
In the next step in this evolution, web browser based environments are becoming an increasingly popular mechanism for providing software to a distributed set of users. Just as software-as-a-service moved application software from the user's computer to centrally located servers, web based applications have similarly moved the user's application environment to a remote server. Users of a web based applications are provided with a URL that downloads a thin client that supports the display of the application on the user's device, the Graphical User Interface (GUI) and part of the application logic runs on the web browser and the rest runs on the server. By providing web based applications, enterprises benefit from centralized administration and security of the software applications provided to the user.
Running applications from a web browser provides significant advantages. For example, users always run the latest version of the application, there is no need to download or install new versions. If there are new features or changes to the GUI they are applied on the server without requiring any user intervention. However, using a browser also presents several challenges, some of which result from users needing to keep multiple browser windows open at once. Since web applications are not tightly integrated with the operating system, it is difficult for users to differentiate between a web based application and all other open web browser windows. There are other usability difficulties associated with web based applications. For example, switching between browser tabs using keyboard shortcuts is not as natural as switching between applications, alerts from the web application don't appear in the same place as native application alerts, and the application is represented in the task bar and program launcher as another instance of the web browser, whereas a native applications may utilize distinctive icons. These difficulties are emphasized when web applications are run on a mobile device. For instance, switching from the web browser to a native application on a mobile device may effectively suspend the web browser as a result of mobile device procedures for preserving battery power and network resources. Such limitations render some real time applications unusable on mobile devices. These challenges result on users favoring native applications over web based applications.
An example of a software application that may be used from a web based environment is a real-time communication client. For instance, a softphone is a real-time communication client that provides a user with a graphical interface for initiating, configuring and participating in voice and/or video calls. Users prefer to have an application such as softphone running natively on their device so that they can receive real time alerts for voice and video calls and messages, switch easily to the application to initiate new conversations, check presence or search the address book.
One option for embedding a real-time client, such as a softphone, in a web based environment is to utilize the WebRTC (Web Real Time Communications) protocols and APIs (Application Programmer Interface). WebRTC provides the tools for an application to access the hardware resources of the host device through a web browser. WebRTC also allows web browsers to establish real-time communication connections using RTP communications. The RTP communications utilized by WebRTC can be transmitted using protocols such as UDP and HTTP that are supported by web browsers. Using WebRTC, a softphone client can be provided as an embedded web browser application.
A problematic aspect of providing a softphone interface via a web browser is the incompatibility between a user's normal use of a web browser and a user's expectations for a telephone device. Users are accustomed to opening and closing web browsers as needed. A user may leave a web browser open indefinitely, but users are accustomed to closing a web browser once their present use of the browser is complete. For instance, users checking online for sporting event scores or to find a recipe are accustomed to being able to close the web browser once these tasks are complete. In this manner, users are accustomed to using web browsers for discrete tasks and closing the web browser until it is needed again. In addition to closing a web browser once a discrete task is completed, users are also accustomed to manipulating web browsers as windowed components of a desktop whereby the web browser can be minimized or stacked among other instances of the web browser and other applications that are being displayed in the desktop. User are accustomed to cycling between web browsers instances other supported applications as needed by moving a selected browser to the forefront of the display. Another disadvantage of a web-based application is the confusion caused by providing the user with separate menus for the web-based application and the web browser, with the web browser menus often providing little added value to the web-based application. As before, these problems are magnified on mobile devices because mobile operating systems typically conserve battery power by suspending the web browser when the user switches to another application.
A user's expectations for use of a telephone are significantly different than those for use of a web browser. Once a telephone device is powered and connectivity to a calling network is established, users are accustomed to having a telephone at their disposal, both for making and receiving calls. Users view a telephone as providing a continuous service rather than just a device for completing discrete tasks. Consequently, providing a softphone client as a web application can be a frustrating experience for users since by closing the web browser from which the softphone client is running, the user is disconnecting their telephone from the network such that no calls can be made or received.
Accordingly, there is a need for a softphone client that can be supported as a web application, while proving the user with telephone functionality that comports with their expectations for telephone service. To address these and other needs, the inventors hereof have developed a client application that provides real-time communications via an embedded web client component, as described in detail below.
Methods and systems are claimed for providing improved real-time communication services to users. The claimed invention utilizes a service node to provide the real-time communication services to users, that may be using different computing host types. The real-time communication services are provided via a communication application container executing on the computing host of the user, the communication application container integrated as a native application. The communication application container receives instructions from the service node for the display of a graphical user interface, such as a softphone client, in a web-client component of the communication application container. The service node also provides functional instructions to the communication application container, these functional instructions being used to support configuration and transmission of real-time communication sessions. A softphone interface configured in this manner provides a user with phone service capabilities that comport with a user's expectations from a native softphone client that utilizes a web client user interface.
Methods and systems are described, for providing real-time communication services to a user according to various embodiments. User interaction instructions and functional execution instructions are provided from a service node to a communication application container executing on a computing host, wherein the user interaction instructions include instructions for the display by a web client of a real-time communications graphical display. A real time communication service is configured based on user input to the graphical display executing on the communication application container. The real time communication service is provided based on the functional execution instructions executing on the communication application container.
According to additional embodiments, the functional execution instructions include instructions for at least one of: selecting an audio input device; controlling parameters such as volume, echo cancellation and codec type that are associated with a selected audio input device; selecting a video input device; controlling parameters, such as resolution, frame rate, codec type, that are associated with a selected video input device; selecting an audio output device for user alerts; selecting an audio output device for communication media; recording locally a communication session; getting current location data, such as GPS, WiFi, and cellular cell data; obtaining list of available network interface; selecting a network interface for a communication flow; getting network quality metrics for a network interface; accessing or updating a personal directory provided by a computing host; authentication via a SIM card; authentication via a fingerprint reader; launching another application on the computing host; presenting a visual notification for an event via the computing host notification methods; controlling windows formatting; receiving touch events from a touchscreen; configuring a cellular network dialer for normal and emergency calls; configuring cellular messaging; and configuring cellular RCS (Rich Communication Services.
According to additional embodiments, the user interaction instructions are web-based instructions on web-based protocols and methods such as HTML, HTML5, JAVASCRIPT and CSS. According to additional embodiments, the real time communications between the communication application container and the service node may be provided using protocols and methods such as REST, SOAP, and JSON. According to additional embodiments, the service node interacts with a real time communication network using SIP. According to additional embodiments, the communication application container may transmit real time communication media using protocols such as RTP. According to additional embodiments, the communication application container provides a primary telephony or messaging user interface for a mobile device. According to additional embodiments, the real time communication services include at least one of: audio, video, messaging, screen sharing, application sharing, co-browsing, whiteboard sharing, annotation, remote control, and streaming. According to additional embodiments, the communication application container includes an abstraction layer which provides a consistent interface for the user interaction instructions and functional execution instructions across different computing host types. According to additional embodiments, the user interaction instructions provided by the service node are selected based on a user profile.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings. The use of the same reference symbols in different drawings indicates similar or identical items. Reference will now be made to the accompanying drawings, wherein:
Embodiments disclosed herein are directed generally to configuring and providing a set of web-based graphical user interfaces for setting up and participating in real-time communications sessions.
The term “telecommunications,” as used herein, is intended to encompass voice communications or telephony, as well as other forms of communications (e.g., video communications, videoconferencing, instant messaging or IM, Short Messaging Service or SMS, emails, etc.) that may take place electronically, for example, over wireless networks, circuit-switched networks, packet-switched networks, or any combination thereof. As such, a reference to a “call” in the description of embodiment of the claimed invention may encompass a voice call, a video call or a data message. Also, a reference to a “conversation” may encompass a voice call, a video call, a data message or any combination of them.
A conventional system for providing real-time communications to a user of a native communication application is illustrated in
In the conventional scenario of
Once a call between the computing host 140 and the remote device 105 has been configured, communication pathway 125 is used to transmit the real-time data stream between the two endpoints via service node 115. The real-time data stream encodes the voice and/or video data transmitted between the computing host 140 and the remote device 105. Typical systems that support real-time communications utilize communication protocols that are suited for transmission of real-time data streams. Real-time Transport Protocol (RTP) is a protocol that is specifically adapted for the real-time transmission of data between two network endpoints.
A problematic aspect of conventional native applications such as illustrated in
One advantage of communication application 130 being a native application is that the application is tightly integrated with the computing host 140 operating system. This provides the communication application 130 with access and control of the resources 135 of the computing host 140. These resources will typically include peripheral devices such as microphones, cameras and speakers as well as networking and data storage resources of the computing host 140.
As a component running on the web browser, the real time communication application of the conventional system of
As with the convention native application of
Since the conventional real-time communication application of
Where the native real-time communication application of
The embodiments of the claimed invention that are described and illustrated below utilize a communication application container that replaces the web browser to provide the user with a softphone user interface. In such embodiments, the communication application container is configured to provide a softphone user interface on the user device via direct interaction with the calling network.
Unlike the conventional system described with respect to
In the embodiment of
The service node 315 is responsible for configuring and supporting real-time communication sessions on behalf of communication application container 330. In some embodiments, service node 315 is configured to operate as a SIP endpoint on behalf of communication application container 330. In the embodiment of
In the embodiment of
The embodiment of
The service node 415 is further comprised of a real time communication functions component that is used to configure and conduct real-time communications on behalf of communication application container 430. The real-time communications functions include functions by which the service node 415 serves as a SIP endpoint on behalf of the communication application container 430 and configures calls using the softphone interface. The real-time communications functions also include instructions for transmitting call data via communication service media pathway 425. In certain embodiments, the communication service media pathway 425 utilizes WebRTC protocol for communicating call data between computing host 440 and service node 415. WebRTC provides a mechanism for supporting real-time communication sessions from within the communication application container 430.
Since the web client component of the communication application container is built on web technology, the communication application container is configured to adhere to certain restrictions imposed by web standards (e.g., HTML5, CSS3, JAVASCRIPT). As a result the softphone client behaves as a web component in certain aspects. As a web-client, the softphone client interface can be constructed in a dynamic fashion when the graphical interface is initialized. In order to construct the softphone graphical interface, the communication application container invokes a URL or similar resource identifier that provides the instructions and data necessary to build the softphone display. In certain embodiments, the communication application container retrieves these display instructions based on a user profile. The user profile is used to provide the communication application container with instructions for constructing a display that is customized according to information provided in the user profile. In some embodiments, the user may be provided with controls by which to re-configure the appearance and/or the functionality of the softphone graphical interface.
For example, a user profile may indicate that a particular look and feel is preferred by a user. In such embodiments, the retrieved softphone graphical interface will conform to a layout and style previously identified by the user. In another example, a user profile may specify that controls for certain calling features, such as hold, mute or conference functions, should be displayed by default, while other features can be manually displayed by the user through menu selections. In such embodiments, the retrieved softphone graphical interface will incorporate these controls into the display. In other embodiments, the user profile will specify a user's job function, such as a secretary or a receptionist, which will be used to determine which controls will be included in the softphone graphical display for this user. In other embodiments, the user profile will specify which features have been purchased by the user, such that only the controls for purchased features are incorporated into the softphone graphical interface.
Another form of customization present in certain embodiments is the ability to incorporate address book and/or contact list information into the softphone graphical interface. In certain embodiments, the display information utilized by the embedded softphone client includes information from the user's address book and/or contact list. For instance, the softphone graphical interface may be customized to include quick dial buttons for certain address book and/or contact list entries, such as the people with whom the user converses most frequently. In some embodiments, the address book and/or contact list are comprised within the user's profile. In some embodiments, the address book and/or contact list are retrieved from a remote source as needed.
In some embodiments, the softphone graphical interface will provide the user with the ability to further configure ongoing communication sessions. In such embodiments, the softphone graphical interface includes controls for functions such as conferencing in another party to a call and placing a caller on hold. As described, these functions for configuring an existing call may be included and arranged within the softphone graphical interface based on information contained in the user's profile. In some embodiments, the controls for features used to configure ongoing communication sessions will not be displayed in the softphone graphical interface until a call has been established such that there is an ongoing call that can be configured.
The first softphone user interface component is a call placement graphical interface 525. This is the default interface provided to the user when there is no ongoing call and no incoming call notifications are pending. The call placement graphical interface 525 provides the user with the functions necessary to place outgoing calls. As described with respect to the embodiment of
As a component of web browser, the call placement graphical interface 525 may be comprised as a standalone instance of the browser within the communication application container 520. As such, the call placement graphical interface 525 may be manipulated as a web browser in certain respects. In some embodiments, the call placement graphical interface 525 may be configured such that it retains the windowing functionality of a web browser. In such embodiments, the call placement graphical interface 525 may be minimized or hidden such that it is no longer displayed is instead represented in the toolbar of the user display or in some other area designated by the operating system GUI 515. In some embodiments, the call placement graphical interface 525 may be configured to be further minimized such that it is represented only by an icon in the notification area of operating system GUI 515. When minimized, the user may utilize windowing functionality provided by the operating system GUI 515 in order to restore the call placement graphical interface 525 to a visible state. In some embodiments, the user may be provided with the capability of retaining the call placement graphical interface 525 as a visible component of the operating system GUI 515 that cannot be minimized and thus always remains visible on the user device 505.
In some embodiments, the second softphone user interface component is the call configuration graphical interface 530. The call configuration graphical interface 530 may provide status information to the user. When displayed in the communication application container 520, the call configuration graphical interface 530 may include status indicators such as icons that represent whether the softphone client is currently connected to the calling network and is able to send and received calls. In situations where the call configuration graphical interface 530 is minimized, these status indicators may be displayed in a similar fashion using icons that represent whether the softphone client is presently connected to the calling network.
As opposed to the call placement graphical interface 525 that is displayed by default in certain embodiments, the call configuration graphical interface 530 is displayed when there is an ongoing call. In some embodiments, the call configuration graphical interface 530 may be displayed instead of the call placement graphical interface 525 and in other embodiments the call configuration graphical interface 530 may be displayed as a companion interface to the call placement graphical interface 525. The call configuration graphical interface 530 provides controls that can be used to modify an ongoing call. For instance, in some embodiments, the call configuration graphical interface 530 includes controls for placing a party on hold, conferencing in new parties and muting. In some embodiments, the call configuration graphical interface 530 may also provide data regarding the call, such as its duration, a list of the other parties on the call and/or quality of service metrics indicating the strength of the connection.
As with the call placement graphical interface 525, the call configuration graphical interface 530 may be configured as a standalone window in the communication application container 520. Configured in the manner, the call placement graphical interface 525 can be configured such that in can be minimized to the toolbar or other area of the operating system GUI 515. In some embodiments, the call placement graphical interface 525 can be configured to remain as a visible window of the operating system GUI 515 as long as an ongoing call session remains active.
In some embodiments, the third softphone user interface component is the call notification graphical interface 535. The call notification graphical interface 535 is only displayed on the operating system GUI 515 when an incoming call is pending. Upon receiving notification of a request for an incoming call, the softphone interfaces displayed on the communication application client 520 are updated to include the call notification graphical interface 535. In some embodiments, the call notification graphical interface 535 will be a companion interface to the call configuration graphical interface 530 or the call placement graphical interface 525. In some embodiments, the call notification graphical interface 535 will be presented to the user as a pop-up notification providing the user with information regarding the incoming call request. For instance, pop-ups may be provided as notifications associated with the toolbar of the operating system GUI 515.
In some embodiments, the call notification graphical interface 535 may provide the user with information identifying the incoming caller. In embodiments that utilize SIP, the invitee may provide identifying information as meta-data associated with a SIP call invite. In some embodiments, the call notification graphical interface 535 may interface with the user's address book and/or contact list in order to identify the incoming caller. In some embodiments, the call notification graphical interface 535 may provide the user with information regarding the date and time of last call from the incoming number. In some embodiments, the call notification graphical interface 535 may interface with databases that provide information regarding the identity of callers associated with an individual phone number. Using such databases, the call notification graphical interface 535 can be used to identify calls from known telemarketing entities and configured to provide this information to the user.
As a component of a web browser running in a communication application container, each of the described softphone graphical interfaces may be configured in some embodiments as a borderless containers that occupy an entire browser window. In addition, certain embodiments will disable all capabilities of the web browser that are not required by the softphone graphical interface. By configuring the communication application container in this manner, certain indicators that a user would associate with a web browser would not be displayed such that the user would be less likely to manipulate the softphone user interface as a web browser. To further discourage the user from closing the softphone user interface, the user may be prompted to confirm the closing of the communication application container containing the softphone graphical interface.
Each of the communication application containers 630a-c includes a computing host abstraction layer that is especially adapted for interfacing with different computing host types that are supported. The computing host abstraction layer allows the service node 610 to provide generally uniform user interface instructions and functional execution instructions that are not intended for a specific computing host type. The host abstraction layer is configured to adapt the user interface instructions to the display of a particular computing host type in order to provide a consistent user interface across the different supported computing host types. The host abstraction layer may also enable the communication application container to take advantage of functionality that is specific to a particular computing host type. The host abstraction layer also allows generally uniform functional execution instructions to be used by the service node 610 as the functional instructions provided by the service node 610 are adapted by the host abstraction layer to account for differences between the supported computing host types.
Certain of the steps described above for providing the necessary interfaces for the user to configure an incoming call from a remote party are further described in the flowchart of
in the operation of the embodiment described in
Once the communication application container has been initialized and the softphone graphical interface has been instantiated, the configuration of the softphone graphical interface can proceed. At step 710, the status of certain capabilities of the user device are determined. The softphone client will require the use of at least the microphone and speaker of the user device in order to provide voice service. In embodiments that provide both voice and video service, the camera of the user device will also be required. In certain embodiments, including those where the softphone graphical interface is provided within a communication application container that has been configured to allow direct network access from the web browser, the network status will also be determined. In some embodiments, these capabilities will be determined on the user device via JavaScript programs executed by the browser upon instantiation of the softphone user interface. In some embodiments, proper network configuration will be determined by the softphone graphical interface performing a handshake with a service node.
At step 715, the configuration of the softphone graphical interface continues in some embodiments by providing a user interface for evaluating and configuring the settings for the user device capabilities identified in step 710. In some embodiments, a settings user interface will provide controls for adjusting the microphone of the user device. The user may be provided with the ability to test the microphone by recording the user speaking into the microphone and playing back the recorded track for the user to hear. The user can adjust the placement of the microphone and/or settings available on the user device in order to improve performance. Likewise, the user may be provided with controls for adjusting the speakers of the user device. The user may be provided the ability to play test sounds and may further be provided the ability to adjust the volume of the user device speakers. In embodiments that support video calls, the settings user interface may display a video feed from the camera of the user device. Using this video feed, the user may adjust the physical positioning of the camera and/or the camera settings provided by the user device. In some embodiments, the user will also be provided with the ability to adjust network settings. For instance, in situations where multiple network interfaces may be available, the user may be provided with the ability to choose which network interface the softphone will utilize.
At step 720, the softphone user interface is configured. As described, some embodiments may utilize a call placement graphical interface 725 as a default interface. In such embodiments, the call placement graphical interface 725 may be customized according the user's preferences. As described above, the softphone graphical interface that is displayed may be customized based on a user profile. The user profile may specify preferences settings provided by the user or other attributes of the user that may be used to customize the softphone graphical interface. Once the customized layout for the softphone user interface has been determined, the process may continue with the initialization and display of the interface on the user device at step 725.
In order to receive incoming calls, the softphone must be a recognized client of a calling network. At step 730, the softphone uses a signaling protocol such as SIP to register as a client of a calling network. As described above, SIP allows network devices to request configuration of a communication session between parties on the network. Prior to configuration of an actual SIP communication session between devices, the device endpoints must register as SIP user agents. A device that issues a SIP command registering as a user agent serves as notification that the device is ready to send and receive communications in SIP sessions. Once registered, the user agent can use additional SIP commands to invite other registered user agents to participate in a SIP communication session.
The described embodiments rely on one or more service nodes to manage registration and call configuration on behalf of the softphone. A service node thus serves as a SIP endpoint on behalf of the softphone and registers itself as a SIP user agent accordingly. Serving in this capacity as a SIP endpoint, a service node also manages SIP invites on behalf of the softphone client. In some embodiments, the softphone client may register as a SIP endpoint directly, without utilizing the services of a service node.
This registration of the softphone must be repeated at least each time the communication application container is initialized and also any other time that the softphone is started. In some embodiments, this registration process is automatically repeated each time network connectivity is reestablished after an interruption in service. Users accustomed to conventional telephone systems do not expect to have to repeatedly initialize a phone interface in order to signal that the user is ready to receive calls via the phone. Users expect that a phone device will be configured to receive calls as soon as the device has been powered and the device has been able to establish a connection to a calling network. The user can be expected to provide user credentials in order to establish connectivity to the calling network. Consequently, in some embodiments, this registration step is an automatic process.
Once registration is complete, the softphone is ready to receive calls. At step 735, the softphone monitors the calling network for incoming call requests. In the above embodiment, a service node registers as a SIP user agent endpoint on behalf of the softphone and monitors the calling network for incoming call requests seeking to establish a call with the user. In some embodiments, the communication application container may register as a SIP user agent and monitor the calling network. At step 740, incoming SIP call invites are received by the component that has registered as the SIP agent on behalf of the softphone. In the embodiments above, the SIP call invites are received at a service node and forwarded to the communication application container.
At step 745, the user is notified of the incoming call request. In the embodiment of
At step 750, the user accepts the incoming call invite via a control provided by the call notification graphical interface 735. User input to the call notification graphical interface 535 is transmitted from the communication application container to a service node. Based on the user's acceptance of the call invite, at step 760, a service node uses a signaling protocol such as SIP to establish a call session between the user device and the device of the inviting party.
Once the configuration of the call is complete, the softphone display can be updated to display the call configuration graphical interface 530 that is described above with respect to the embodiment of
The service node, the user device and the remote server described with regard to the preceding embodiments may each be implemented or executed, at least in part, by one or more computer systems. One such computer system is illustrated in
In various embodiments, computer system 800 may be a single-processor system including one processor 800A, or a multi-processor system including two or more processors 810A-N two, four, eight, or another suitable number). Processor(s) 810A-N may include any processor capable of executing program instructions. For example, in various embodiments, processor(s) 810A-N may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x86, PowerPC®, ARM®, SPARC®, or MIPS® ISAs, or any other suitable ISA. In multi-processor systems, each of processor(s) 810A-N may commonly, but not necessarily, implement the same ISA.
System memory 820 may be configured to store program instructions (e.g., the real-time communications configuration functions) and/or data accessible by processor(s) 810A-N. In various embodiments, system memory 820 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. As illustrated, program instructions and data implementing certain operations such as, for example, those described in connection with
In an embodiment, I/O interface 830 may be configured to coordinate I/O traffic between processor(s) 810A-N, system memory 820, and any peripheral devices in the device, including network interface 840 or other peripheral interfaces, such as input/output devices 850. In some embodiments, I/O interface 830 may perform any necessary protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 820) into a format suitable for use by another component (e.g., processor(s) 810A-N). In some embodiments, I/O interface 830 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface 830 may be split into two or more separate components, such as a north bridge and a south bridge, for example. In addition, in some embodiments some or all of the functionality of I/O interface 830, such as an interface to system memory 820, may be incorporated directly into processor(s) 810A-N.
Network interface 840 may be configured to allow data to be exchanged between computer system 800 and other devices attached to a network, such as between a service node and a user device. In various embodiments, network interface 840 may support communication via wired or wireless general data networks, such as any suitable type of Ethernet network, for example; via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks; via storage area networks such as FibreChannel SANs, or via any other suitable type of network and/or protocol.
Input/output devices 850 may, in some embodiments, include one or more display terminals, keyboards, keypads, touchpads, scanning devices, RFID readers, NFC readers, voice or optical recognition devices, or any other devices suitable for entering or retrieving data by one or more computer system 800. Multiple input/output devices 850 may be present in computer system 800 or may be distributed on various nodes of computer system 800. In sonic embodiments, similar input/output devices may be separate from computer system 800 and may interact with one or more nodes of computer system 800 through a wired or wireless connection, such as over network interface 840.
As shown in
The configuration scenario illustrated in
Once the identity of a user 915 has been authenticated, the service node 920 proceeds by retrieving 942 any customizations to the real-time communications client that are associated with this user. As described above, the communication application container 910 operates similar to a web browser in that the graphical display is provided from a server, in this case the service node 920. The service node 920 incorporates any customizations to the real-time communications client graphical interface. The graphical interface and instructions for display and operation of the real-time communications client are then communicated 942 to the communication application container 910 where it can then be displayed on the user device 905.
Prior to the display and use of the real-time communications client, certain configuration procedures may be utilized. In the embodiment of
The scenario illustrated in
If the user responds to the SIP invite 952 by answering the call, an answer notification 956 is communicated to the service node 920 via the communication network 925. The answer notification 956 is then relayed to the user device 905 by configuring 958 a streaming audio connection from the communication application container 910 to the user device 905. Now connected, the call data is communicated 960 via RTP between the user device 905 and the remote party. In other embodiments, the communication application container 910 may utilize communication mechanisms other than RTP to communicate call data.
In certain embodiments, the call may continue with the sharing of location information by the user 915. In such embodiments, a user 915 signals via an interface of the real-time communications client to share a present location with the remote party. This signal is received by the communication application container 910, which then proceeds to retrieve 962 the location of the user, as provided by the location functions of the user device 905. This location information is then relayed from the communication application container 910, to the service node 920 and is forwarded 964 to the remote party via the communication network 925.
A person of ordinary skill in the art will appreciate that computer system 800 is merely illustrative and is not intended to limit the scope of the disclosure described herein. In particular, the computer system and devices may include any combination of hardware or software that can perform the indicated operations. In addition, the operations performed by the illustrated components may, in some embodiments, be performed by fewer components or distributed across additional components. Similarly, in other embodiments, the operations of some of the illustrated components may not be provided and/or other additional operations may be available. Accordingly, systems and methods described herein may be implemented or executed with other computer system or processor-based configurations.
Although certain embodiments are described herein with reference to specific examples, numerous modifications and changes may be made in light of the foregoing description. Accordingly, the specification and figures are to be regarded in an illustrative rather than a restrictive sense, and all such modifications are intended to be included within their scope. Any benefits, advantages, or solutions to problems that are described herein with regard to specific embodiments are not to be construed as a critical, required, or essential feature or element of any or all the claims. Furthermore, it should be understood that the various operations described herein may be implemented in software, hardware, or a combination thereof. The order in which each operation of a given technique is performed may be changed, and the elements of the systems illustrated herein may be added, reordered, combined, omitted, modified, etc. It is intended that the embodiments described herein embrace all such modifications and changes and, accordingly, the above description should be regarded in an illustrative rather than a restrictive sense.
Unless stated otherwise, terms such as “first” and “second” are used to arbitrarily distinguish between the elements such terms describe. Thus, these terms are not necessarily intended to indicate temporal or other prioritization of such elements. The term “coupled” is defined as “connected” and/or “in communication with,” although not necessarily directly, and not necessarily mechanically. The terms “a” and “an” are defined as one or more unless stated otherwise. The terms “comprise” (and any form of comprise, such as “comprises” and “comprising”), “have” (and any form of have, such as “has” and “having”), “include” (and any form of include, such as “includes” and “including”) and “contain” (and any form of contain, such as “contains” and “containing”) are open-ended linking verbs. As a result, a system, device, or apparatus that “comprises,” “has,” “includes” or “contains” one or more elements possesses those one or more elements but is not limited to possessing only those one or more elements. Similarly, a method or process that “comprises,” “has,” “includes” or “contains” one or more operations possesses those one or more operations but is not limited to possessing only those one or more operations.