Modern websites allow a user to accomplish a myriad of tasks online from the user's computing device whether the device be a laptop, desktop, smartphone, tablet, or otherwise. These tasks may include retrieving information, purchasing items, creating content, communicating with other users, or any other online activity. While a website allows a user to accomplish one or more tasks, the website does not allow for multiple users to have the same experience without those users present at the same computing device. In particular, even though multiple users can each direct their respective computing devices to retrieve the same website, those users will each be interacting with a separate and independent instance of the website. Therefore, if one of the users interacts with the website on his or her computing device, the interactions of that user have no effect on the experience of the other users. Moreover, the devices of each user may be different types of devices, may be running different operating systems, and/or rendering the website using different web browsers, which may cause the website to be displayed differently on each device.
Overview
Embodiments described herein provide systems and method for allowing multiple devices to browse the same instance of a website. In a particular embodiment, a method provides receiving an instruction in the co-browsing system to initiate a co-browsing session for a website with a first client and a second client. The method further provides acquiring the website from a server that hosts the website and rendering the website in the co-browsing system to generate a rendered image of the website. The method further provides transferring a first copy of the rendered image to the first client and a second copy of the rendered image to the second client.
The following description and associated figures teach the best mode of the invention. For the purpose of teaching inventive principles, some conventional aspects of the best mode may be simplified or omitted. The following claims specify the scope of the invention. Note that some aspects of the best mode may not fall within the scope of the invention as specified by the claims. Thus, those skilled in the art will appreciate variations from the best mode that fall within the scope of the invention. Those skilled in the art will appreciate that the features described below can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific examples described below, but only by the claims and their equivalents.
In operation, clients 101 and 102 are executing on computing devices, such as laptop computers, desktop computers, tablet computers, and smartphones. Clients 101-102 may be executing within a web browsing application that is also executing on their respective computing devices or may be independent applications. Clients 101 and 102 may be installed as extensions or plugins within their respective web browsers or software for the clients may be transferred from co-browsing server 103 as needed. Client software may take the form of a web standard, such as HTML 5 or Java, so that the web browser on a device does not require additional plugins or extensions in order to execute clients 101 and 102. While a typical web browsing application is able to retrieve a website from web server 104, clients 101 and 102 allow for the same instance of the website to be viewed on multiple computing devices via co-browsing server 103.
Furthermore, clients 101 and 102 allow for the website to be displayed in the same manner on the devices executing clients 101 and 102. Thus, even if the devices executing clients 101 and 102 are different types of devices, which may have different display resolutions, running different operating systems, and/or running different web browsers having different browsing engines, clients 101 and 102 allow for the display of the website to remain consistent between the two devices.
After receiving the instruction to initiate a co-browsing session, co-browsing server 103 acquires the website from web server 104 (step 202). Co-browsing server 103 may acquire the website using the same protocols, including the Hypertext Transfer Protocol (HTTP), that a typical web browser would use to acquire website data. Accordingly, web server 104 may not be able to recognize a different between co-browsing server 103 acquiring the website data and a typical web browsing application acquiring the website data.
Co-browsing server 103 renders the received website to generate a rendered image of the website (step 204). Co-browsing server 103 may use any browser engine to render the website. A browser engine uses content information and formatting information to generate an image of a website. The content information may be received from web server 104 in HyperText Markup Language (HTML), Extensible Markup Language (XML), image files, or some other format—including combinations thereof. The formatting information may be received from web server 104 in Cascading Style Sheets (CSS), Extensible Stylesheet Language (XSL), or some other format—including combinations thereof. Examples of a browser engine may include Webkit, Gecko, Trident, or any other browser engine. The rendered image is what would be displayed by a web browsing application after rendering the website.
Co-browsing server 103 transfers a first copy of the rendered image to the client 101 and a second copy of the rendered image to client 102 (step 206). The image may be transferred to the client in a remote image buffer protocol, such as the remote framebuffer (RFB) format used in Virtual Network Computing (VNC). Clients 101 and 102 then display the first and second copies of the rendered image, respectively. In order to ensure that both client 101 and 102 are displaying the same image, co-browsing server 103 may format the image so that both clients display the same image area. For example, a page of a website may include more information than can be displayed in the space provided by a web browser window and, therefore, requires scrolling to view the additional information. Even if one client has a larger viewing area, the viewable area on that client will still display the same information as is displayed on the other client with a smaller viewing area. Co-browsing server 103 may also transfer audio information to clients 101 and 102 if the website includes audible information.
In some embodiments, additional rendered image copies may be transferred to client devices 101 and 102. Co-browsing server 103 may continually transfer images at a frame rate based on network speed, client 101 or 102 preferences, server 103 preferences in order to ensure clients 101 and 102 display a current rendering of the website. For example, the website may include animations, video, or some other visual feature that changes over time as the website is being displayed. In order to ensure that a user of client 101 or 102 is able to view these changes, co-browsing server 103 transfers render images to clients 101 and 102 that reflect the changes. In an alternative embodiment, the images may only be transferred when something changes in the rendered image of the website so as to limit the resources used to transfer unchanged images.
Clients 101 and 102 may further allow their respective users to interact with the displayed websites. These interactions may include clicking on links, entering information into text boxes, scrolling around the displayed web page, or any other way that a user may interact with a website. Upon receiving the user input, the client transfers the input information to co-browsing server 103. Co-browsing server 103 applies the input to the website, updates the rendered website image in accordance with the user input, and transfers copies of the updated rendered website image to clients 101 and 102. For example, if the user scrolls to a different area of the web page, then the rendered image will be updated to display the new area of the web page. Likewise, if the user inputs text, the text will be displayed in an updated image. Moreover, co-browsing server 103 may need to retrieve additional information from web server 104 in response to the user input. For example, if the user clicks on a link, then co-browsing server may need to retrieve information corresponding to a new web page or some other information corresponding to the link. Co-browsing server 103 then uses that information to render a new image.
In accordance with the above embodiments, using client 101 or 102, a user is able to view and interact with the website in the same manner as the user would if the website were rendered on a web browser local to the user's device. Since a copy of the same rendered website image is displayed at both clients, users of both clients are able to interact with the website as though the users were interacting with the website on the same client. Moreover, the use of co-browsing server 103 allows the website to be displayed in the same manner at both clients independent of which type of device each of the clients are executing on, which operating system each device is using, and which web browser each client is using.
It should be understood that while the embodiments discussed above include only two clients, the embodiments could be expanded to include any number of clients. Co-browsing server 103 would simply transfer additional copies of the rendered image to the additional clients.
Referring back to
Co-browsing server 103 comprises a computer system and a communication interface. Co-browsing server 103 may also include other components such a router, data storage system, and power supply. Co-browsing server 103 may reside in a single device or may be distributed across multiple devices. Co-browsing server 103 is shown externally to web server 104, but co-browsing server 103 could be integrated within the components of web server 104.
Web server 104 comprises a computer system and communication interface. Web server 104 may also include other components such a router, data storage system, power supply, and any further components that may be used for providing websites to web browsing applications. Web server 104 may reside in a single device or may be distributed across multiple devices.
Communication links 111-113 use metal, glass, air, space, or some other material as the transport media. Communication links 111-113 could use various communication protocols, such as Time Division Multiplex (TDM), Internet Protocol (IP), Ethernet, communication signaling, CDMA, EVDO, WIMAX, GSM, LTE, WIFI, HSPA, or some other communication format—including combinations thereof. Communication links 111-113 could be direct links or may include intermediate networks, systems, or devices.
While shown separately, web server 307 and co-browsing server 306 may be incorporated within one another or may be collocated such that they communicate over a local area network rather than Internet 308. Similarly, support center 305 and either web server 307, co-browsing server 306, or both may be collocated. Alternatively, support center 305 may be a virtual center with clients 302-304 distributed in multiple locations and accessing Internet 308 on separate links. Additionally, client 301, support center 305, co-browsing server 306, web server 307 may access Internet 308 through one or more access providers.
In operation, agents operate clients 302-304 to assist customers or, some other types of user, with issues that the customer may have. In some embodiments, support center 305 may be associated with an entity from which the customer requires support. For example, web server 307 may include a website for a company and support center 305 provides support to customers using the company's website. If necessary, co-browsing server 306 may be used for an agent operating one of clients 302-304 to provide the customer with website support.
The indication to initiate the co-browsing session may be received from an agent of support center 305 or from a customer. For example, the customer may click a link on a web page, or elsewhere, that initiates the co-browsing session with an agent. Similarly, if a customer is already communicating with an agent, then the agent may transfer a link to the client for the client to initiate the co-browsing session. The link may be transferred over email, instant messaging, client-to-client messaging, or any other way of transferring a link. The content of the link may be generated by co-browsing system 306 itself, by a client, by web server 307, or by some other system or application. The information necessary to initiate the co-browsing session may be included in the link, may direct co-browsing server 306 to a location containing the information, may be a code that correspond to parameters created for the co-browsing session, or any other method of providing the co-browsing server with information necessary to initiate a co-browsing session.
In this embodiment, the request to initiate a co-browsing session indicates to co-browsing server 301 should initiate a co-browsing session between client 301 and client 302. Client 302 may be selected from support center clients 302-304 based on the agent operating client 302 already communicating with the customer operating client 301. Alternatively, if the agent is not already communicating with the customer, then a client may be randomly chosen, selected based on an agent distribution algorithm, or some other method for selecting a support center agent.
Virtual browser 309 then executes on co-browsing server 306 to acquire and render a website requested by the request to initiate the co-browsing session (step 402). Virtual browser 309 receives website data and renders the website data using a browser engine the same as or similar to a browser engine used in a typical web browser. The rendering of the website data results in an image that would be displayed to a user if virtual browser 309 were a typical web browser executing on a computing device. However, virtual browser 309 transfers the rendered website image to clients 301 and 302 as described below.
After the website is rendered, copies of the rendered images are created and rendering filters 310 are applied to the rendered image copies before transferring each copy to its respective image buffer in image buffers 311 (step 404). The filters may include identifying and obscuring information on a rendered image copy or otherwise modifying the rendered image copy. The filters may filter the rendered image copies based on the client to which a particular image copy is being sent. For example, a filter may obscure private customer information in a rendered image copy destined for client 302 operated by an agent while not obscuring the private customer information to client 301 operated by a customer. The filters may also apply differently to different agents so that certain agents who receive the rendered image copies are allowed to view private customer information while others are not. In some embodiments, a filter may provide an indicator on the rendered image copy of elements in the rendered image copy with which an agent is not allowed to interact.
After the filtered copies of the rendered website images are placed in their respective image buffer of image buffers 311, image buffers 311 transferred to client 301 and 302, respectively, for display to users of clients 301 and 302 (step 406). The image buffers are used as part of a remote image buffer protocol. The protocol is used between co-browsing server 306 and clients 301 and 302 to facilitate the remote website rendering described above. Clients 301 and 302 allow users to interact with the website image in the same way that a user would interact with a website using a typical web browser.
Upon receiving user input, clients 301 and/or 302 transfer an indication of the user input to co-browsing server 306 and input filters 312 filter the input to determine whether the input is allowed (step 408). For example, input received from client 301 of a customer may always be allowed while input from client 302 of an agent has limited input, such as the inability to select links that submit forms for the customer or any other type of input that an agent should not be allowed to perform. Input not allowed from client 302 may be the same input that is indicated by the filters in step 404.
If the input is allowed, virtual browser 309 applies the input to the website (step 410). When applying the input to the website, virtual browser 309 may need to send the indicated input to web server 307 in order to request more data from web server 307. For example, the input may select a link that directs to a new web page of the website that needs to be retrieved from web server 307. Alternatively, the input may simple change the appearance of the current web page, such as entering text, scrolling, or other type of input. Upon applying the input, virtual browser 309 renders the website according to the input and transfers the rendered website image to clients 301 and 302 through rendering filters 310 and image buffers 311, as described above.
In some embodiments, as both an agent and customer interact with a website through their respective clients, the session may be recorded in a storage system of co-browsing server 306 or elsewhere. The recording of the session may be performed by saving some or all of the rendered images that were transferred to clients. Additionally, co-browsing server 306 may save an indication of which client performed which inputs on the website during the session. Hence, when viewing a playback of a recorded co-browsing session, the saved indication allows a viewer to know which user performed which actions.
In this example, the customer is currently viewing the order form page of the website. The lower left corner of window 500 displays a link so that the customer clicks on the link to receive agent assistance with the website. Upon selecting the link, a message is sent to co-browsing server 306 to initiate a co-browsing session with an agent of the website. In addition to initializing a co-browsing session for the website, the link may open a chat window so that the customer can interact with the agent with which the customer will be co-browsing. Alternatively, the customer may be prompted to provide a telephone number so that the agent can call the customer during the co-browsing session.
After receiving notification that the customer clicked on the link, co-browsing server transfers information needed for the web browser on the customer's device to execute co-browsing client 301. The information may include the software for client 301 itself if client 301 is not already installed in the customer's web browser. Co-browsing client 301 may execute in web browser window 600 using standard web protocols, such as HTML5, so that the web browser does not need any plugins, extensions, or other modification to run client 301. Alternatively, client 301 may execute using Java, Flash, or any other type of web environment.
The co-browsing toolbar at the bottom of web browser 600 indicates to the customer that web browser window 600 is displaying client 301. While
Once co-browsing client 301 is executing, co-browsing server 306 can begin transferring images to client 301 of the web page that virtual browser 309 rendered after retrieving from web server 307. In this example, the web page is the same page that the customer was browsing before the customer selected the link described above. During the co-browsing session, the link no longer displays since the co-browsing session has already been initiated.
Once client 301 receives the image of the web page, client 301 displays the image in browser widow 600 for viewing and interaction by the customer. As additional images are received, client 301 further displays those images. The additional images may be received only when a change is made to the rendered image or at a periodic rate, such as a number of frames per second or some other rate. If the customer types information into the web page, client 301 sends the information to co-browsing server 306 so that virtual browser 309 can manipulate the web page accordingly. For example, if the customer types a ‘j’ to begin entering the customer's email address, a notification that a j has been typed is sent to co-browsing server 306. Virtual browser 309 then places a ‘j’ in the email text box, renders the web page image with a ‘j’ in the text box, and transfers the image to client 301 for display. This action is repeated for further input. Therefore, aside from possible network delay, the customer is able to view the web page input as though the web page is rendered in the web browsing application on the customer's local device.
Additionally, in a manner similar to that described above, client 301 will display rendered web page images that include input received from other parties on the co-browsing session. For example, if a support center agent is also on the co-browsing session, the agent may enter the customer's email address on behalf of the customer. Client 301 will display the email address in the web page image rendered by virtual browser 309 as the agent is typing.
Client 302 displays the web page in browser window 700 almost exactly as the same web page is displayed to the customer in browser window 600. However, the rendering filters 310 block out the card number field so that anything typed into that field by the customer cannot be seen by the agent. Additionally, rendering filters 310 block out the check box and submit button so that the agent cannot make such selections on behalf of the customer. The rest of the web page is displayed to the agent in the same manner as client 301 displays the web page to the customer. This allows the agent to know exactly what the customer is looking at when assisting the customer. In some cases, client 302 may need to scale or resize the display match the display of the customer, as may be the case if the agent and the customer have display screens of differing resolutions.
As with client 301, client 302 will transfer any input from the agent to co-browsing server 306 so that virtual browser 309 can apply the input to the web page. Virtual browser 309 renders the web page in accordance with the input and the rendered image is transferred to both client 301 and 302 for display. Additionally, input filters 312 filter any input from client 302. Input filters 302 ensure that the agent is not entering any information into the credit card number text box, the terms of service check box, or pressing the submit button. If the agent does provide input into any of these areas despite the areas being blocked out, input filters 312 will identify the input and not transfer the input to virtual browser 309.
The toolbar for client 302 shown at the bottom of browser window 700 is similar to the toolbar of client 301. However, client 302 also has a transfer button. The transfer button allows the agent to transfer the co-browsing session to another agent. Thus, the agent may press the transfer button and indicate that co-browsing session should be transferred to the agent operating client 304. Upon receiving notification of the transfer, co-browsing 306 server will begin sending rendered web page images to client 304 instead of client 302 and client 304 will perform in a similar manner to client 302. The web page images transferred to client 304 may have the same rendering filter and image filter parameters as are applied to client 302 or may be subject to different parameters.
In some embodiments, the transfer button, or a separate button, may also provide the agent with the ability to conference one or more other agents into the co-browsing session. For example, the agent operating client 302 may indicate that the agent operating client 304 should be included in the co-browsing session. In response to the indication, co-browsing server 306 begins sending rendered web page images to client 304 in addition to clients 301 and 302. Thus, client 302 continues to participate in the session along with client 301 and 304 as a three party co-browsing session. The web page images transferred to client 304 may have the same rendering filter and input filter parameters as are applied to client 302 or may be subject to different parameters.
Communication interface 801 comprises components that communicate over communication links, such as network cards, ports, RF transceivers, processing circuitry and software, or some other communication devices. Communication interface 801 may be configured to communicate over metallic, wireless, or optical links. Communication interface 801 may be configured to use TDM, IP, Ethernet, optical networking, wireless protocols, communication signaling, or some other communication format—including combinations thereof.
User interface 802 comprises components that interact with a user. User interface 802 may include a keyboard, display screen, mouse, touch pad, or some other user input/output apparatus. User interface 802 may be omitted in some examples.
Processing circuitry 805 comprises microprocessor and other circuitry that retrieves and executes operating software 807 from memory device 806. Memory device 806 comprises a non-transitory storage medium, such as a disk drive, flash drive, data storage circuitry, or some other memory apparatus. Operating software 807 comprises computer programs, firmware, or some other form of machine-readable processing instructions. Operating software includes virtual browser module 808 and image buffer module 809. Operating software 807 may further include an operating system, utilities, drivers, network interfaces, applications, or some other type of software. When executed by circuitry 805, operating software 807 directs processing system 803 to operate co-browsing server 800 as described herein.
In particular, communication interface 801 receives an instruction in the co-browsing system to initiate a co-browsing session for a website with a first client and a second client. Virtual browser module 808 directs processing system 803 to acquire the website from a server that hosts the website and renders the website to generate a rendered image of the website. Image buffer module 809 directs processing system 803 to transfer a first copy of the rendered image to the first client and a second copy of the rendered image to the second client.
The above description and associated figures teach the best mode of the invention. The following claims specify the scope of the invention. Note that some aspects of the best mode may not fall within the scope of the invention as specified by the claims. Those skilled in the art will appreciate that the features described above can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific embodiments described above, but only by the following claims and their equivalents.
Number | Name | Date | Kind |
---|---|---|---|
629551 | Dawson et al. | Jul 1899 | A |
5862330 | Anupam | Jan 1999 | A |
6199096 | Mirashrafi | Mar 2001 | B1 |
6295551 | Roberts | Sep 2001 | B1 |
6668273 | Rust | Dec 2003 | B1 |
6871213 | Graham et al. | Mar 2005 | B1 |
7287054 | Lee et al. | Oct 2007 | B2 |
7660899 | Gavrilescu | Feb 2010 | B2 |
7979909 | Jancula et al. | Jul 2011 | B2 |
8682977 | Roy et al. | Mar 2014 | B1 |
8806024 | Toba Francis | Aug 2014 | B1 |
9112975 | Sayko | Aug 2015 | B2 |
20020032731 | Qian | Mar 2002 | A1 |
20020049812 | Nahon | Apr 2002 | A1 |
20030225836 | Lee | Dec 2003 | A1 |
20040225716 | Shamir et al. | Nov 2004 | A1 |
20050097159 | Skidgel | May 2005 | A1 |
20050197922 | Pezaris et al. | Sep 2005 | A1 |
20050251006 | Dellis | Nov 2005 | A1 |
20060129642 | Qian et al. | Jun 2006 | A1 |
20060149567 | Muller | Jul 2006 | A1 |
20070143423 | Kieselbach | Jun 2007 | A1 |
20080046976 | Zuckerberg | Feb 2008 | A1 |
20080052377 | Light | Feb 2008 | A1 |
20080127276 | Kim | May 2008 | A1 |
20090164581 | Bove | Jun 2009 | A1 |
20090328135 | Szabo et al. | Dec 2009 | A1 |
20100082747 | Yue | Apr 2010 | A1 |
20100131868 | Chawla | May 2010 | A1 |
20100218105 | Perov | Aug 2010 | A1 |
20100250756 | Morris | Sep 2010 | A1 |
20100306642 | Lowet | Dec 2010 | A1 |
20100306834 | Grandison | Dec 2010 | A1 |
20100318571 | Pearlman | Dec 2010 | A1 |
20110083101 | Sharon | Apr 2011 | A1 |
20110119352 | Perov | May 2011 | A1 |
20110126290 | Krishnamurthy et al. | May 2011 | A1 |
20110202881 | Singh | Aug 2011 | A1 |
20110258316 | Rizk | Oct 2011 | A1 |
20110313915 | Tang | Dec 2011 | A1 |
20120005598 | Burckart et al. | Jan 2012 | A1 |
20120030288 | Burckart | Feb 2012 | A1 |
20120047449 | Burckart | Feb 2012 | A1 |
20120110472 | Amrhein | May 2012 | A1 |
20120210243 | Uhma | Aug 2012 | A1 |
20120210244 | de Francisco Lopez | Aug 2012 | A1 |
20120245955 | Bari | Sep 2012 | A1 |
20120284801 | Goodwin et al. | Nov 2012 | A1 |
20120303702 | Richter et al. | Nov 2012 | A1 |
20120303703 | Richter et al. | Nov 2012 | A1 |
20130091172 | Kelesis | Apr 2013 | A1 |
20130129074 | Peterson et al. | May 2013 | A1 |
20130129075 | Whitaker | May 2013 | A1 |
20130176333 | Agar et al. | Jul 2013 | A1 |
20130205375 | Woxblom et al. | Aug 2013 | A1 |
20130218964 | Jakobson | Aug 2013 | A1 |
20140019534 | Handrigan | Jan 2014 | A1 |
20140053085 | Stephure | Feb 2014 | A1 |
20140195588 | Badge et al. | Jul 2014 | A1 |
20140207872 | Roy | Jul 2014 | A1 |
20140258889 | Badge | Sep 2014 | A1 |
20150058407 | Uhma | Feb 2015 | A1 |
20150067181 | Roy | Mar 2015 | A1 |
20150142573 | Chien et al. | May 2015 | A1 |
Number | Date | Country |
---|---|---|
2012131688 | Oct 2012 | WO |
Number | Date | Country | |
---|---|---|---|
20140195588 A1 | Jul 2014 | US |