Patent Publication Number: US-2022229525-A1

Title: Dynamic user interface customization

Description:
CROSS REFERENCE TO RELATED APPLICATION 
     This application is a continuation of U.S. patent application Ser. No. 17/004,362 filed Aug. 27, 2020, which is a continuation of U.S. patent application Ser. No. 15/389,598 filed Dec. 23, 2016 which is a continuation of U.S. application Ser. No. 13/841,434 filed Mar. 15, 2013, which claims priority to U.S. Provisional Application No. 61/638,825, filed Apr. 26, 2012, the disclosure of each of which is incorporated herein by reference in its entirety for all purposes. 
    
    
     TECHNICAL FIELD 
     The technical field relates generally to computer-based methods and apparatuses, including computer program products, for dynamic user interface customization, and to dynamic communication and collaboration between businesses and consumers through a customizable user interface. 
     BACKGROUND 
     With the continued growth of internet use by consumers, live online help services have become increasingly important. Website providers can incorporate online chat options into their website page(s) to offer an additional level of customer service to their users (e.g., in addition to the more traditional fillable information request forms, frequently asked questions pages, etc.). For example, many websites include a “click to chat” option, which a website user can use to engage in interactive chat with a live help agent. When the user clicks the “click to chat” button, a chat user interface is presented to the website user, and through the interface, the user is able to exchange chat messages with the help agent. As another example, websites can include embedded code to automatically display a message to the user that includes a “click to chat” button (e.g., after the user has been idle on a page for a predetermined amount of time). There are several additional methods to engage a website user, and facilitate live interaction between the user and an agent. Regardless of the engagement method used, the help agent can interact with the user through the chat to answer the website user&#39;s questions, help navigate the user through the website, suggest products, and/or the like. 
     While online chat has become an increasingly common method used by website owners to serve users, online chat may not scale well to address each individual user&#39;s needs. For example, if the live agent cannot successfully help a website user via the chat, the chat user interface may not include sufficient functions and/or features to successfully address the user&#39;s problem. Further, website providers currently face limitations imposed by the chat user interface itself. For example, when current chat interfaces are used, it is generally not possible to add any specific functionality to address the individual needs of the website providers or website user. 
     Additionally, once a user is engaged with a particular communication channel (e.g., text chat, voice, video, etc.), then it is usually difficult to switch among other communication modalities without starting a new engagement with the user. For example, once a user is engaged in an online chat session, a new communication channel (e.g., with separate user interfaces, equipment, etc.) is often required to change to a different communication modality (e.g., to set up a video chat instead of a standard text chat). 
     SUMMARY OF THE INVENTION 
     This disclosure provides a computer-implemented method, a computer-program product, and a computer-implemented system, each of which may be used to dynamically customize a user interface. The method may comprise the steps of storing, at a computing device, multiple functions for a user interface, wherein each of the stored functions is configured to operate on a remote user device, in conjunction with the user interface, and wherein the user interface is configured to operate at the remote user device, transmitting a first set of data to the remote user device, wherein the first set of data causes a first one of the stored functions to operate on the remote user device, wherein operating on the remote user device includes operating in conjunction with the user interface, receiving, at the computing device, interaction data associated with user interactions with the user interface, the interactions occurring at the remote user device, identifying a second set of data based on the received interaction data, wherein the second set of data is identified at the computing device; and transmitting the second set of data from the computing device to the remote user device, wherein the second set of data causes a second one of the stored functions to operate on the remote user device, in conjunction with the user interface. 
     The system may include a processor which is configured to perform operations such as storing, at a computing device, multiple functions for a user interface, wherein each of the stored functions is configured to operate on a remote user device, in conjunction with the user interface, and wherein the user interface is configured to operate at the remote user device, transmitting a first set of data to the remote user device, wherein the first set of data causes a first one of the stored functions to operate on the remote user device, wherein operating on the remote user device includes operating in conjunction with the user interface, receiving, at the computing device, interaction data associated with user interactions with the user interface, the interactions occurring at the remote user device, identifying a second set of data based on the received interaction data, wherein the second set of data is identified at the computing device; and transmitting the second set of data from the computing device to the remote user device, wherein the second set of data causes a second one of the stored functions to operate on the remote user device, in conjunction with the user interface. 
     The computer-program product may include instructions for causing a computing device to perform operations including storing, at the computing device, multiple functions for a user interface, wherein each of the stored functions is configured to operate on a remote user device, in conjunction with the user interface, and wherein the user interface is configured to operate at the remote user device, transmitting a first set of data to the remote user device, wherein the first set of data causes a first one of the stored functions to operate on the remote user device, wherein operating on the remote user device includes operating in conjunction with the user interface, receiving, at the computing device, interaction data associated with user interactions with the user interface, the interactions occurring at the remote user device, identifying a second set of data based on the received interaction data, wherein the second set of data is identified at the computing device; and transmitting the second set of data from the computing device to the remote user device, wherein the second set of data causes a second one of the stored functions to operate on the remote user device, in conjunction with the user interface. 
     The computerized methods and apparatus disclosed herein allow dynamic customization of a user interface (e.g., a chat user interface) by dynamically adding interactive elements or functions (e.g., widgets) to customize the user interface based on a user&#39;s unique experience. A unified communication channel allows seamless integration among various communication modalities, such as chat, voice, and video communication channels. A brief summary of various exemplary embodiments is presented. Some simplifications and omissions may be made in the following summary, which is intended to highlight and introduce some aspects of the various exemplary embodiments, but not limit the scope of the invention. Detailed descriptions of a preferred exemplary embodiment adequate to allow those of ordinary skill in the art to make and use the inventive concepts will follow in the later sections. 
     In one embodiment, a computerized method is featured. The computerized method is for dynamically customizing a user interface. The method includes storing, by a computing device, a set of functions for a user interface, whereby each function is configured so that it can be added to the user interface. The method includes transmitting, by the computing device, a first set of data to a remote device that causes the user interface to be displayed on the remote device with a predetermined subset of functions from the set of functions, wherein one or more functions from the predetermined subset of functions are displayed as a selectable item at the user interface, such that a user can select, activate or engage the function. The method includes receiving, by the computing device, interaction data indicative of a user&#39;s interactions with the user interface. The method includes transmitting, by the computing device, a second set of data to the remote device that causes the user interface to dynamically add a new function from the set of functions to the user interface based on the interaction data, wherein the new function is displayed as a selectable item in the user interface, such that the function may be selected for use by the user. 
     In another embodiment, a computer program product, tangibly embodied in a non-transitory computer readable medium, is featured. The computer program product includes instructions configured to cause a data processing apparatus to store a set of functions for a user interface, the set of functions including functions which can be added to the user interface. The computer program product includes instructions configured to cause a data processing apparatus to transmit a first set of data to a remote device that causes the user interface to be displayed on the remote device with a predetermined subset of functions from the set of primary functions, wherein one or more functions from the predetermined set of functions are displayed as a selectable item in the user interface that a user can select to use the function associated with the primary function. The computer program product includes instructions being configured to cause a data processing apparatus to receive interaction data indicative of a user&#39;s interactions with the user interface. The computer program product includes instructions being configured to cause a data processing apparatus to transmit a second set of data to the remote device that causes the user interface to dynamically add a new function from the set of predetermined functions to the user interface based on the interaction data, wherein the new function is displayed as a selectable item in the user interface that the user can select to use a function associated with the new function. 
     In another embodiment, an apparatus is featured. The apparatus is for dynamically customizing a user interface. The apparatus including a processor and memory. The apparatus is configured to store a set of functions for a user interface, each function including a function that can be added to the user interface. The apparatus is configured to transmit a first set of data to a remote device that causes the user interface to be displayed on the remote device with a predetermined set of functions from the set of functions, wherein one or more functions from the predetermined set of functions are displayed as a selectable item in the user interface that a user can select to use the function associated with the function. The apparatus is configured to receive interaction data indicative of a user&#39;s interactions with the user interface. The apparatus is configured to transmit a second set of data to the remote device that causes the user interface to dynamically add a new function from the set of functions to the user interface based on the interaction data, wherein the new function is displayed as a selectable item in the user interface that the user can select to use a function associated with the new function. 
     In other examples, any of the aspects above can include one or more of the following features. The user interface can be a chat window facilitating chat between the user and a third party. A function from the set of functions can include an agent function that provides information about an agent that the user is in communication with, a shopping cart function that lists a set of products the user has selected while browsing a website, a data transfer function that downloads data to the user, allows a third party to push data to the user, or both, a video function that allows a user to control playback of video content, an audio function that allow a user to control playback of audio content, or any combination thereof. 
     In some examples, data indicative of a new function is received, wherein the new function includes a function that customizes the user interface for a third party, and adding the new function to the set of functions. The interaction data can be transmitted to an agent device. Action data indicative of the user taking an action associated with a function of a function on the user interface can be received, and the action data can be transmitted to the agent device. 
     In other examples, data selecting a function from the set of functions is received for addition to the user interface, and a third set of data is transmitted to the remote device that causes the user interface to dynamically add the selected function to the user interface, such that a function associated with the selected function is incorporated into the user interface, wherein prior to addition of the selected function to the user interface, the user interface did not include the function associated with the selected function. A third set of data can be transmitted to the remote device that causes the user interface to dynamically add a second new function from the set of functions to the user interface based on the interaction data, wherein the new function is not displayed as a selectable item in the user interface. The second new function can listen for one or more events from the user interface. 
     In other examples, transmitting the second set of data to the remote device includes transmitting the second set of data based on data indicative of a change of the user interface, data indicative of user interface behavior, or any combination thereof. An interface can be configured to receive data to design a user interface experience. The user interface experience can include a function, an interaction model between a first function and a second function, a behavior, a restriction for the user of the user interface, an agent the user is in communication with, or both, an automated interaction model, a set of permissions for the user, or any combination thereof. 
     The techniques described herein are techniques capable of being embodied in methods or apparatuses, and may provide or enable one or more of the following features. The techniques may allow functions to be dynamically added to, and/or removed from the user interface, such that the user interface can be altered to suit an individual user and/or solve problems or address needs associated with the user&#39;s interaction with the interface. Further, new functions can be designed for addition to the user interface to suit individual website provider needs. A single engagement with a customer can provide a unified communication channel that can seamlessly use any number of modalities to communicate with the customer. For example, various modalities such as chat communication channels, voice communication channels, video communication channels, and/or other communication channels can be seamlessly switched among during the single engagement with the customer. 
     Other aspects and advantages of the present invention will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, illustrating the principles of the invention by way of example only. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The foregoing and other aspects, features, and advantages of the present invention, as well as the invention itself, will be more fully understood from the following description of various embodiments, when read together with the accompanying drawings. 
         FIG. 1  is an exemplary diagram illustrating a computerized system for dynamic user interface customization; 
         FIGS. 2A  illustrates an exemplary diagram of a user interface being dynamically customized; 
         FIGS. 2B  illustrates an exemplary diagram of a user interface being dynamically customized; 
         FIG. 3  illustrates an exemplary computerized method for dynamic user interface customization; and 
         FIG. 4  illustrates an exemplary computerized method for adding new functions for dynamic user interface customization. 
     
    
    
     DETAILED DESCRIPTION 
     In general, computerized systems and methods are provided for dynamically customizing a user interface through adding, removing, configuring or making available functionality, features, capabilities or options. In accordance with this disclosure, the customization of the user interface may be done such that, from the perspective of the interface user, all customized elements are completely integrated with the interface. For example, in the case of a user and an agent in communication over chat, the techniques, methods and systems of this disclosure may enable the agent (and/or the engagement service that established the communication between the user and the agent) to dynamically add and/or remove functions (e.g., either with or without graphical interface component(s)) to/from the user interface to customize the user interface for the particular user, without any action required on the user&#39;s part. For example, an agent may be able to add a desktop sharing function, a video function, and/or other functions to the interface, as described herein. 
       FIG. 1  is a diagram illustrating an example computerized system  100  for facilitating dynamic user interface customization through implementation of any combination of the techniques described herein. The system  100  includes a user device  110 , a web server  120 , an engagement server  130 , and an agent device  140 . As depicted, each of these components is connected for communication via network  150 . The user device  110  includes a browser  112  and user interface  114 . Engagement server  130  includes database  132  and customization component  134 . The agent computer  140  includes agent user interface  142 . The system  100  includes third party server  160 . 
     In accordance with this disclosure a user device such as the device depicted at  110  may be a personal computer, (e.g., a PC or a laptop) including a processor and memory. Alternatively, the user device  110  may be a smart phone, a personal digital assistant, a tablet PC, and/or any another computing device capable of displaying browser  112  and/or the user interface  114  to the user associated with the user device  110 . The user device  110  may be a computing device capable of displaying web content using a web browser (e.g., the browser  112 ). The browser  112  may be implemented through software used by the user device  110  to display web content received from the web server  120  (e.g., web pages). For example, the web browser may be Microsoft Internet Explorer. 
     Although  FIG. 1  depicts browser  112 , this specific inclusion is for exemplary purposes only. In certain embodiments of this disclosure, the user device  110  may display user interface  114  without the interface being associated with a web browser. Additionally, while  FIG. 1  only includes a single user device  110 , the system can include multiple user devices. When such an arrangement is used, two or more users may participate in a joint engagement (i.e. more than two parties involved) with agent computer  140  (or multiple agent computers, not shown). For example, two users can participate in an engagement that is moderated by an agent. 
     The user interface  114  may be, for example, a chat window facilitating chat between the user of the user device  110  and a third party (e.g., the agent operating agent device  140 ). For example, if the user encounters difficulties navigating a web page displayed by the browser  112 , the user can initiate a chat help session (e.g., by clicking a “click to chat” button) with an agent who is operating agent device  140 . In this way, the agent may be able to help the user properly navigate the web page. The user, via the user interface  114 , can chat with the agent to learn how to navigate the web page. 
     In other example embodiments included within the scope of this disclosure, the user interface  114  may be, or may include, a video chat interface, online help interface, or any other type of user interface. In certain implementations of the techniques presented herein, the user interface  114  may be configured so as to not be displayed on the user device  110  until after an initializing action (or other predetermined criteria) is taken by the user of the user device  110 . Additionally or alternatively, the user interface  114  may be configured such that the interface  114  enables the user to minimize, maximize and/or control predetermined aspects of the user interface  114 . 
     In accordance with this disclosure, the web server  120  may be, for example, a single web server with a processor and memory. In other embodiments, the web server  120  may comprise a plurality of web servers configured to provide web services (e.g., to serve web site content). The web server  120  may provide content which may be accessed at the user device  110  through utilization of browser  112 . 
     The engagement server  130  can be, for example, a single server with a processor and memory. In some embodiments, the engagement server  130  may include multiple servers connected directly to each other, or connected through the network  15 . The engagement server  130  can be configured to provide any number of technical solutions or capabilities. One such possible capability may be provided to an agent who, through operating agent device  140 , provides customer service or assistance to a user operating user device  110 . The solution provided by the engagement server  130  to the agent may involve providing the agent with capabilities associated with the agent&#39;s operation of agent device  140 . With these capabilities, the agent may be able to provide improved or enhanced customer service, help, recommendations to users (e.g., visitors to a website, such as user devices  110  loading web content provided by web server  120  via browser  112 ) or improved management of communicative connections with users. For example, the engagement server  130  can establish an online chat help session between the user device  110  and the agent device  140 . The engagement server  130  may be configured to provide such a capability in response to a user clicking a “click to chat” button at user device  110 , in response to a web page being displayed in the browser  112 , or upon satisfaction of some other predetermined criteria established by code associated with browser  112 , etc.). 
     Additionally or alternatively, the engagement server  130  may be configured to provide a number of services to remote users (e.g., users interacting or interfacing with a device such as user device  110 ). The customization component  134  may be configured to dynamically customize the user interface  114 . The customization component  134  may be configured to use data from past user or agent engagements (e.g., historical data indicative of functions which were activated, used or displayed, or were otherwise associated with a user interface, and whether the engagement(s) associated with these functions were successful). The customization component  134  may be configured with capabilities for intelligently learning from the data how to optimize a particular user experience, based on previous successful engagements. The customization component  134  can process such data and use the data to customize user interfaces. This processing and customizing may involve using rules (e.g., stored in database  132 ), predictive analytics, multivariate analysis and testing, and/or other methods or analytics. 
     For example, in one aspect of the present disclosure, the engagement server  130  may receive data indicative of user actions occurring on the user device  110  (e.g., taken by a user of the user device  110 ). The customization component  134  may then use the received data to intelligently add and/or remove functions from the user interface  114 . As another example, the engagement server  130  can receive data from the agent user interface  142 . This data may include instructions to add and/or remove functions from the user interface  114 , and may be used by the customization component  134  to execute appropriate action in response to the instructions. 
     The engagement server  130  can transmit data to the agent device  140  (e.g., to the agent user interface  142 ) that provides feedback about the user interface  114  and/or about a user&#39;s current or past experience with the interface  114 . For example, engagement server  130  may provide functions or capabilities to an agent, so that the agent may push new functions and/or content to the user interface  114 . The agent may be enabled to push these functions and/or content via agent user interface  142 , in conjunction with network  150 . However, the agent may need to know a current configuration of the user interface  114  before selecting a new function to be pushed to the user interface  114 . In this case, the engagement server  130  may be configured to transmit data which describes a user&#39;s experience with user interface  114 . The data may be transmitted to the agent device  140 , thereby enabling the agent to understand the user&#39;s experience on the user interface  114 , and/or the current configuration and/or functionality of the user interface  114 . For example, the engagement server  130  can transmit a snapshot of the user interface  114  at a particular time. The snapshot may be transmitted to agent device  140 , thereby enabling the agent to ascertain the user interface  114  configuration. The agent can use the data to determine what the user is experiencing through the user interface  114 , and can use that determination to customize the user interface  114  by adding new functions to it. 
     In accordance with certain embodiments of this disclosure, the engagement server  130  may be configured to cause an agent user interface  142  to be displayed at agent device  140 . This interface on agent device  140  may enable the agent to receive data pertinent to helping a user and/or customizing a user interface experience for the user associated with user interface  114 . For example, once the engagement server  130  causes an agent user interface  142  to be displayed on the agent device  140 , the engagement server  130  may then receive data associated with the agent&#39;s interactions or experience with agent user interface  142 . Additionally or alternatively, the engagement server may receive data associated with a user&#39;s interactions or experience with user interface  114 . The engagement server may be configured to use this data to appropriately customize agent user interface  142  or user interface  114 . 
     As described herein, a user or agent experience with an interface may be understood to include, be characterized by, or be affected by, one or more functions operating in conjunction with the interface, an interaction model between a first function and a second function (e.g., which describes how the two functions interact with one another), user or agent behavior (e.g., a combination of user or agent interaction with one or more components or functions associated or operating in conjunction with the interface), a restriction affecting a user and/or agent interacting with the interface, an automated interaction model (e.g., which may executed by the engagement server  130  to determine when to dynamically alter the user interface  114  or agent user interface  142 , based on previously collected data), a set of permissions for the user of the user device  110 , or any other arrangement(s) recognizable, in light of this disclosure, to an artisan of ordinary skill in any one of the arts to which this disclosure pertains. 
     This paragraph will discuss one possible example implementation of certain of the techniques and methods disclosed herein. This example implementation is presented only for the purposes of demonstrating one way in which data related to a user experience may be used, in accordance with this disclosure, to customize an interface. In this example implementation, user behavior data may be used by engagement server  130  for purposes of customizing an agent user interface (such as the one shown at  142 ) or a user interface (such as the one shown at  114 ). In this case, engagement server  130  may be configured to install certain functions which operate on user device  110  or agent device  140 , and in conjunction with user interface  110  or agent user interface  142 , as the case may be. These particular functions, when installed or activated, may provide functionality based on, or in response to, user or agent interaction data associated with the user interface  114  or agent user interface  142 . This interaction data may be received and processed by engagement server  130 , and additionally, in some embodiments, may then be provided to agent device  140  by the engagement server  130 . 
     Implementations such as those which are consistent with the aforementioned implementation description may enable an agent to intelligently affect a user&#39;s experience or customize the user interface  114  based on the user&#39;s or agent&#39;s current behavior. For example, the engagement server  130  may be configured to provide an agent with information relevant to serving the user, whereby the provided information is selected by the engagement server  130  based on detection of a specific term provided by the user or agent in chat or in another type of communication session. A function operating on agent device  140  or user device  110  may be used to detect such a term. The function may inform engagement server  130  that the term has been used. The engagement server  130  may then apply a business rule to analyzes the term and determine the term if it is associated with a relevant product. Alternatively, the function may apply the rule to analyze the term. In either case, the function or the engagement server  130  could cause an additional function to be incorporated into the user interface  110  or agent user interface  142 . The additional function could be configured to provide product information to the user or agent related to any product determined to be relevant, in view of the detected term and the business rule. 
     The engagement server  130  may be configured to include a database  132 . In an embodiment of this disclosure, the engagement server  130  may be configured to use the database  132  to store feedback information indicative of the state of user interface  114 . For example, the engagement server  130  can keep a log of all functions added to and/or removed from the user interface  114  (e.g., added automatically via the engagement server  130 , and/or added via an agent through the agent user interface  142 ), and can be configured to use the log to determine a current state of the user interface  114 . 
     In some examples, the user interface  114  can include a function that transmits feedback information to the engagement server  130 . For example, a function can be configured to periodically send data to the engagement sever  130  indicative of a snapshot of the user interface  114  (e.g., at predetermined time intervals or upon request from the engagement server  130 ). Based on this snapshot, the Agent may be provided with a detailed visual depiction of the visitor&#39;s experience, as well as a visual depiction of what the visitor sees at user interface  114 . In this way, the system may suggest next steps to the agent based on the current view or experience of the visitor. 
     The database  132  stores, for example, the functions that can be added to and/or removed from the user interface  114 . For example, a function can be an agent function that provides information about an agent (e.g., the person using the agent user interface  142  on the agent device  140 , which may be in some sort of communication with the user device  110  via online chat, video chat, voice chat, etc.) that the user of the user device  110  is in communication with through the user interface  114 . As another example, the function can be a shopping cart function that lists a set of products the user of the user device  110  has selected while browsing a website, using the browser  112 , that is provided by the web server  120  (e.g., an online catalog). As another example, the function can include a data transfer function that downloads data to the user (e.g., a coupon), allows a third party to push data to the user (e.g., allows the agent device  140  to upload a file, document, presentation, work file, etc. to the user device  110 ), and/or the like. As another example, the function can be a video function that allows a user to control playback of video content (e.g., to play, pause, stop a video being streamed to the user). As another example, the function can be an audio function that allows a user to control playback of audio content (e.g., to play, pause, stop audio being streamed to the user). As another example, the function can be a social engagement function (e.g., Twitter, Facebook, etc.) that allows a user to push the engagement between it and the agent device  140  (e.g., an online chat) into the user&#39;s social engagement application to continue the experience in the user&#39;s social engagement application. As another example, the function can provide a service that affects the user&#39;s experience (e.g. a translation service). As another example, the function can be a secure information transfer function (e.g., which is compliant with the PCI Security Council standards for the exchange of credit card numbers) that allows transfer of Personal Identifiable Information (PII) over the communication channel (e.g., over chat). 
     In some examples, a function can be configured to detect events, and to take one or more actions based on the detected events. For example, a detected event may be triggered by a user&#39;s actions taken on the user device  110 , the browser  112 , the user interface  114 , etc. Such events can also be events which occur in response to one or more other functions associated with the user interface  114 , etc. The functions can be configured to send data to the engagement server  130  (and/or the agent user interface  142 ). For example, the functions can be configured to transmit data indicative of state changes and user interface interaction. For example, the video function can transmit data to the engagement server  130  indicative of the user&#39;s actions taken with respect to the video function (e.g., transmit information indicative of the user pressing play on the user interface  114 , information indicative of the user pressing pause on the user interface  114 , etc.). 
     This disclosure shall not be interpreted to be limited in scope by the mention or description of example functions presented herein. Rather, the functions specifically presented and described are included for example purposes only. This disclosure is intended to cover any and all functions which may expand, limit, alter, track, monitor, improve, document or otherwise affect a user experience associated with a user interface such as user interface  114 . This disclosure is also intended to cover the many other types of related or applicable functions which would, in view of this disclosure, be readily recognizable to a person skilled in one or more of the arts to which this disclosure applies. 
     In some examples, the functions are added to the user interface  114  without changing the visual display of the user interface  114 . Such functions may be thought of as behind-the-scenes functions with respect to the user interface  114 . For example, a function can be added that tracks events and initiates responsive actions based on the detected events. For example, a function can detect a reception of data sent to the user device  110  from the agent device  140  (e.g. messages from the agent operating the agent user interface  142 ) and initiate actions based on the received data (e.g., transmitting a message in response to the received data). As another example, a function can be added to detect a user&#39;s interaction with other functions of the user interface  114 . This may enable the detecting function to initiate actions which are determined to be appropriate based on the user&#39;s interactions with the user interface  114 . 
     The agent device  140  can be, for example, a personal computer (e.g., a PC or a laptop) which includes a processor and memory. Alternatively, and in accordance with this disclosure, the agent device  140  may a smart phone, a personal digital assistant, a tablet PC, and/or any another computing device capable of providing the agent user interface  142  and/or operations or processing associated with it. The agent user interface  142  may be configured so that the the agent interfacing with the agent device  140  is able to control, activate, remove and/or invoke functions provided by the engagement server  130 . For example, the agent interface  142  may be configured to that the agent has the option of activating a chat help session involving the user device  110 ). An example agent console is described in U.S. patent application Ser. No. 13/413,197, which was filed on Mar. 6, 2012, entitled “Occasionally-Connected Computing Interface,” and which is incorporated by reference herein in its entirety. The agent user interface  142  can also display a detailed visual “playback” of historical user experience data (e.g., historical charts and/or graphs of function usage, success rates for functions, etc.). The historical user experience data can include, for example, historical data collected from previously-deployed user interfaces, such as which functions were used for the user interface and whether the engagement was successful (e.g., whether an agent was able to solve the user&#39;s problem via the user interface). The historical data playback can be used, for example, for backtracking and analysis capabilities, as well as the use of Natural Language Processing (NLP) (e.g., which can analyze text in a text chat) to identify correlations and insights of functions (or user interface configurations) by looking at the functions and/or the engagement experience. While the terms “agent” and “agent device” are used herein, the terms should be interpreted broadly to include any end user, such as a typical agent as well as a user similar to that using the user device  120 . As another example, an agent can be a business ambassador for a company (e.g., a representative or spokesperson for the company). 
     Network  150  can be, for example, a packet-switching network that can forward packets to other devices based on information included in the packet. 
     Third party server  160  can provide services for functions added to the user interface  114  (e.g., in addition to those services provided by the engagement server  130 ). The engagement server  130  can be configured to incorporate technologies from the third party sever  160  (and/or other third party servers, not shown), which can add to the robustness of the experience presented to the user through the user interface  114 . The engagement server  130  can incorporate disparate technologies and/or applications into the user interface  114  (e.g., much like an operating system). 
     The system  100  is an example of a computerized system that is configured to perform the methods described herein. However, the system structure and content recited with regards to  FIG. 1  is presented for exemplary purposes only and is not intended to limit this disclosure to implementations involving the specific structure shown in  FIG. 1 . As will be apparent to one of ordinary skill in the art, many recognizable system structures can be used to implement the techniques and methods described herein, without departing from the scope of this disclosure. For example, a web server  120 , while included for illustrative purposes, may be omitted without departing from the spirit of the invention. As another example, a plurality of user devices and/or agent devices (not shown) may be used in the system  100 . 
     In addition, information may flow between the elements, components and subsystems described herein using any technique. Such techniques include, for example, passing the information over the network using standard protocols, such as TCP/IP, passing the information between modules in memory and passing the information by writing to a file, database, or some other non-volatile storage device. In addition, pointers or other references to information may be transmitted and received in place of, or in addition to, copies of the information. Conversely, the information may be exchanged in place of, or in addition to, pointers or other references to the information. Other techniques and protocols for communicating information may be used without departing from the scope of the invention. 
       FIGS. 2A-2B  depict an example of user device components involved in dynamic customization of a user interface, in accordance with certain of the methods disclosed herein.  FIG. 2A  depicts a user device  202 , a web browser  204 , and a user interface  206 . Furthermore, as depicted in  FIG. 2A , user interface  206  includes functions  208 A,  208 B. The user interface  206  also includes a chat console  210 . 
       FIG. 2B  depicts each of the aforementioned components shown in  FIG. 2A , and also includes function  208 C, which will be explained in greater detail in following paragraphs.  FIGS. 2A and 2B  are used for illustrative purposes only. In accordance with this disclosure, a user interface may include any number of additional and or alternative functions and components. For example, a user interface such as user interface  206  may include other interactive components or features in addition to, or instead of, chat console  210 . Also, a user interface need not include any active functions (e.g., the user interface may include simply a list of functions which are selectable by the user). The user interface  206  may be an interface associated with a computer to computer connection, a video display (e.g., with notification that the video is being watched), and/or any other type(s) of engagement or communication interface (e.g., an interface linking the agent device  140  and the user device  110 ). For example, certain user interfaces which are within the scope of this disclosure are described in U.S. patent application Ser. No. 13/371,163, entitled “Analytic Driven Engagement,” filed on Feb. 10, 2012, which addresses analytic driven engagement, and is incorporated herein in its entirety. In some examples, the initial user interface  206  is not displayed on the web browser  204  until the user device  110  or engagement server  130  determines the user interface  206  should be displayed (e.g., the engagement server  130  may make such a determination based on interaction data, as is described further below). 
       FIG. 3  illustrates an example computerized method  300  for dynamic user interface customization in accordance with the present disclosure. The discussion of the method depicted in  FIG. 3  will refer back to previous  FIGS. 1, 2A and 2B , as these previous figures depict components and elements which may be involved in certain of the method steps described in  FIG. 3 . 
     As depicted in  FIG. 3 , at step  302 , the engagement server  130  stores a set of functions which may be installed or activated on a user interface (e.g., for user interface  114 ). In certain embodiments, the user interface may, but need not necessarily, be displayed in a browser such as the one depicted at  112 . At step  304 , the engagement server  130  transmits a first set of data to user device  110 . This transmitted data causes the user interface  114  to be displayed on the user device  110  such that the interface displays a predetermined set of the functions stored at engagement server  130 . The data causes these displayed functions (e.g., functions  208 A and  208 B, as shown in  FIG. 2A ) to be incorporated into the user device  110 . At step  306 , the engagement server  130  receives interaction data from the user device  110 . As depicted, the interaction data is indicative of a user&#39;s interactions with the browser  112  and/or the user interface  114 . At step  308 , the engagement server  130  transmits a second set of data to the user device  110 . The second set of data is selected by the engagement server  130  based on the interaction data, and causes the user interface  114  to dynamically add a new function from the stored set to the user interface  114 . 
     Referring to step  302 , each function stored at the engagement server  130  may be a function which can be added to the user interface  114 . For example, the stored functions may be functions such as the functions described above with respect to  FIG. 1 . These functions include video playback, audio playback, file transfer, and/or any other function which could be configured to be incorporated into the user interface  114 . 
     Referring to step  304 , the first set of data (e.g., data which determines which functions will be initially included in the user interface  206 ) can be predetermined and stored in a configuration file. The engagement sever  130  can store such a configuration file in a database such as database  132 , for example. The configuration file can be configured for a particular customer of the engagement serer  130 . For example, the customer may be a website provider (e.g., web server  120 , which provides content that can be loaded by a browser such as the browser depicted at  112 ). The website provider can configure its website, such that, when the website is requested by the browser  112 , a code module is loaded in the browser  112 . The code module, when loaded, may then control the time at which the user interface  114  is displayed to the user of the user device  110 . For example, a code module of this type may prevent the user interface  114  from being displayed until after the user clicks a “click to chat” button, or until after the user has remained at a particular web page in browser  112  for a predetermined period of time (e.g., ten seconds), and/or the like. 
     Referring further to step  304 , the first set of data need not cause actual display of functions on the user interface  114 . For example, the engagement server  130  can transmit data to the user device  110  which causes the user interface  114  to dynamically incorporate or activate a function such that the new function is not displayed in the user interface (e.g., the function adds functionality to the user interface  114  without requiring a displayed component). For example, such a function can include javascript code executable by the user&#39;s browser  112  for monitoring and storing information related to user interactions with websites loaded using the browser  112 . As another example, the function can include javascript code that (e.g., when executed by the browser  112 ) for detecting one or more events associated with the user interface  114  (e.g., button presses, menu-item selections, checkbox selections, and/or other graphical user interface interactions). 
     Referring further to step  304 , certain of the function(s) in the set of functions stored at engagement server  130  may be displayed for selection within the user interface  114 . In this way, a user operating user device  110  may select the function for use, activation or installation when it is displayed. Displaying a function for selection may include, for example, displaying a clickable icon, menu item, checkbox, and/or any other graphical user interface component which can be used or invoked by a user. 
     Referring to step  306 , the engagement server  130  can receive interaction data indicative of the user&#39;s interactions with the browser  112  and/or the user interface  114 . For example, the browser  112  can include a code module (not shown) which executes in the browser  112  to track and store the user&#39;s navigation or search history associated with the user&#39;s use of browser  112 . The code module can cause this stored interaction data to be transmitted to the engagement server (e.g., on command, periodically, etc.). As another example, the user interface  114  can include a code module which monitors a user&#39;s interactions with the user interface  114  (via the user device  110 ). 
     Referring further to step  306 , the engagement server  130  can use the interaction history data to determine when to add and/or remove functions from the user interface  114  (while method  300  addresses adding functions, functions can also be removed from the user interface  114 ). For example, the engagement server  130  can reference a stored set of rules which describe when to add a function to the user interface  114 . The engagement server can use the rules by processing the interaction data in light of the rules. In this way, the engagement server  130  can use the rules (and/or other similar forms of artificial intelligence) to determine which functions are added and/or removed from the user interface  114  (to provide the user with the best possible experience). In some examples, the engagement server  130  uses data indicative of a change of the user interface  114  (e.g., data that is transmitted between the user interface  114  and the engagement server  130  that provides constant updates about what is occurring with the user interface  114  on the user device  110 ), data indicative of user interface behavior (e.g., interaction among functions), or both, to determine when to add and/or remove functions from the user interface  114 . 
     As another example, the engagement server  130  can transmit the interaction data to the agent device  140 . An operator of the agent device  140  can use the agent user interface  142  to view the interaction data to determine when to add/remove functions from the user interface  114  (e.g., if the user clicked on a video link displayed using a video function, if the user started playback of the video using the video function, if the user paused playback of the video using the video function, etc.). The operator can transmit a signal to the engagement server  130  to cause the engagement server  130  to transmit a new function to the user device  110  for incorporation into the user interface  114 . 
     Referring to step  308 , the user device  110  dynamically adds the new function to the user interface  114 . As described above, the new function may include a visual aspect (e.g., a checkbox, menu item, button, icon, etc.). In some examples, the new function is displayed as a selectable item in the user interface  114  that the user can select to use a function associated with the new function (e.g., new function  208 C of  FIG. 2B , which was newly added to the interface  206  from  FIG. 2A , which only includes functions  208 A and  208 B). For example, once a function is added to the user interface  114 , the user can invoke the functionality of the new function by clicking an icon associated with the function. 
     As an example of method  300 , referring to  FIGS. 2A and 2B , assume an agent is conducting an online chat with a user of the user device  202  (e.g., a situation in which an online chat involves the agent user interface  142  of agent device  140 , and the user interface  206  includes the chat console  210 ) to help the user navigate a website loaded in the browser  112 . In this case, the agent user interface  142  may display the chat information entered by the user via the chat console  210 . The agent on the agent device  140  can determine, for example, that it is most beneficial to play a movie for the user. In accordance with the techniques disclosed herein, the agent, by using the agent user interface  142 , may be able to send a command to the engagement server  130 . The command may cause a new function, such as function  208 C, to be loaded in the user interface  206 . In this way, the user may be provided with the ability to control playback of the desired video content. For example, function  208 C can include playback controls (e.g., pause, fast forward, rewind, etc.) that the user of the user device  110  can use to control playback of the video content. The function  208 C can include a listening component (and/or the engagement server  130  can send a second function to the user device  110 ) that monitors which of the playback controls are used, and transmits information indicative of the same to the agent user interface  142 . For example, when the user invokes, using the user interface  114 , the play button, the function transmits data to the agent device  140  indicative of the user starting playback of the video content. 
     As another example, referring to  FIGS. 2A-2B , the engagement server  130  establishes a chat communication between the user of the user device  202  (via the chat console  210 ) and an agent (e.g., via agent user interface  142  of  FIG. 1 ). The user begins asking the agent about the website loaded in the web browser  204  (e.g., the user is having trouble navigating the website). It becomes apparent through the chat conversation that the agent can better assist the user by viewing the same webpage, however the user interface  206  does not include desktop sharing. Therefore, the agent causes the engagement server  130  to add a desktop sharing function to the user interface  206  (e.g., function  208 C). The user can invoke the desktop sharing function by selecting the function (or, in some examples, the user need not take any action to invoke the function). The desktop sharing function can share the user&#39;s screen with the agent, so that the agent can guide the user through navigating the web page on the user&#39;s web browser  204 . 
     The agent can add (and/or remove) any number of functions to the user interface  206  (e.g., video playback, file transfers, etc.). For example, if the agent is still having trouble helping out the user, the agent can add a video function so the conversation can escalate to a video chat. The experience is in the user interface, and the user interface can change form to best suit addressing the user&#39;s problem. For example, while systems often use separate channels for online chat, voice, and video communications, the user interface  206  can provide a unified communication channel that allows the agent to seamlessly switch among different communication modalities with the user. The communication modalities can also include traditional communication channels (e.g., phone communications over the PSTN). For example, the agent can switch from chat to voice communication, and then switch again from voice to video communication, all while using the same user interface  206 . The agent can add and/or remove the additional communication modalities by, for example, adding and/or removing functions from the user interface  206 . For example, if an agent determines that he needs to move from a chat communication to a voice communication, the agent can add a voice communication function (e.g., via the agent user interface  142 ) to the user interface  206  such that the user interface  206  can provide both the chat communication and the voice communication to the user of the user device  110  (e.g., the user can click the newly-added voice communication function to engage in voice communication with the agent without opening any additional interfaces or taking any further actions on the user device  110 ). 
       FIG. 4  illustrates an exemplary computerized method  400  for adding new functions for dynamic user interface customization. At step  402 , the engagement server  130  receives data indicative of a new function. At step  404 , the engagement server  130  adds the new function to the set of functions (e.g., adds the function to the database  132  for storage) so that the new function can be incorporated into a user interface. At step  406 , the engagement server  130  receives data selecting the new function for addition to a user interface. At step  408 , the engagement server  130  transmits data to the remote device (e.g., to the user device  110 ) that causes the user interface (e.g., user interface  114 ) to dynamically add the selected function to the user interface, such that a function associated with the selected function is incorporated into the user interface, wherein prior to addition of the selected function to the user interface, the user interface did not include the function associated with the selected function. 
     Referring to step  402 , functions can be added to the engagement server to add functions for a third party, such that the third party can use the functions to customize the user interface based on the third party&#39;s needs. For example, if the third party is a new user of the engagement server  130  dynamic customization services, the third party can create new/additional functions designed specifically for the needs of the third party. For example, if the third party would like to use a video function but there are no video functions (e.g., there are no video functions stored in the database  132 , and/or the video function(s) stored in the database  132  do not include desired functionality), the third party can create a new video function to include all the functions desired by the third party (e.g., via the agent user interface  142  of  FIG. 1 ). 
     The dynamic customization systems and methods described herein provide for flexibility of designing functions and customizing user interfaces to dynamically add and/or remove functions (e.g., during use of the user interface, without any action required on the GUI user&#39;s part). Any function can be configured to communicate with any other function(s) running in the user interface framework, and therefore the functions can be used to design any kind of desired behavior. The communication and signaling between the functions and/or the environment (e.g., the web browser, user interface, etc.) can be managed in a pluggable way. For example, a predefined language set can be implemented to support the communication and signaling. A user of the service can implement functions by designing their own callback procedures and callback names to signal between, for example, two functions, that the user adds to the engagement server  130 . 
     The dynamic customization systems and methods can measure the success of an engagement. For example, it may be desirable to measure how successful certain engagements are with users (e.g., where a successful engagement is measured by whether a user&#39;s problem was solved, whether the user was satisfied with the engagement, etc.). As an example, the system may determine that engagements that start with chat communication and then escalate to voice communication are more successful at solving the user&#39;s problems than those engagements that only use chat communication. As another example, it may be desirable to measure how often a function is used in a successful user engagement. For example, an agent may be more likely to add a particular function to the user interface  206  if it has a higher rate of success than other functions. 
     The user interface experience can be used on any device. For example, if a user is interacting with the user interface on their home computer, they can continue the experience from their mobile phone. For example, the agent can send the user a code on the home computer, and the user can scan the code using their mobile device by taking a picture of the code and using a code converting application (the agent can send the code using a code function). After scanning the code, the code converting application can re-create the user interface  114  on the user&#39;s mobile device (and/or the interaction, such as chat, the user was engaged in with the agent). The user can then continue the interactions on their mobile phone. 
     The engagement server  130  can provide a modular, personalized service to individual users. For example, the engagement server  130  can associate a user with a brand. The brand can allow users to have an “assistant” (e.g., virtual assistant that goes everywhere with the user). If the user asks the virtual assistant a question, it can initiate an online chat window with agents working for the brand (e.g., which can expand into a movie, etc. based on the user&#39;s interactions with the agents). 
     The above-described techniques can be implemented in digital and/or analog electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. The implementation can be as a computer program product, i.e., a computer program tangibly embodied in a machine-readable storage device, for execution by, or to control the operation of, a data processing apparatus, e.g., a programmable processor, a computer, and/or multiple computers. A computer program can be written in any form of computer or programming language, including source code, compiled code, interpreted code and/or machine code, and the computer program can be deployed in any form, including as a stand-alone program or as a subroutine, element, or other unit suitable for use in a computing environment. A computer program can be deployed to be executed on one computer or on multiple computers at one or more sites. 
     Method steps can be performed by one or more processors executing a computer program to perform functions of the invention by operating on input data and/or generating output data. Method steps can also be performed by, and an apparatus can be implemented as, special purpose logic circuitry, e.g., a FPGA (field programmable gate array), a FPAA (field-programmable analog array), a CPLD (complex programmable logic device), a PSoC (Programmable System-on-Chip), ASIP (application-specific instruction-set processor), or an ASIC (application-specific integrated circuit). Subroutines can refer to portions of the computer program and/or the processor/special circuitry that implement one or more functions. 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital or analog computer. Generally, a processor receives instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and/or data. Memory devices, such as a cache, can be used to temporarily store data. Memory devices can also be used for long-term data storage. Generally, a computer also includes, or is operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto-optical disks, or optical disks. A computer can also be operatively coupled to a communications network in order to receive instructions and/or data from the network and/or to transfer instructions and/or data to the network. Computer-readable storage devices suitable for embodying computer program instructions and data include all forms of volatile and non-volatile memory, including by way of example semiconductor memory devices, e.g., DRAM, SRAM, EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and optical disks, e.g., CD, DVD, HD-DVD, and Blu-ray disks. The processor and the memory can be supplemented by and/or incorporated in special purpose logic circuitry. 
     To provide for interaction with a user, the above described techniques can be implemented on a computer in communication with a display device, e.g., a CRT (cathode ray tube), plasma, or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse, a trackball, a touchpad, or a motion sensor, by which the user can provide input to the computer (e.g., interact with a user interface element). Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, and/or tactile input. 
     The above described techniques can be implemented in a distributed computing system that includes a back-end component. The back-end component can, for example, be a data server, a middleware component, and/or an application server. The above described techniques can be implemented in a distributed computing system that includes a front-end component. The front-end component can, for example, be a client computer having a graphical user interface, a Web browser through which a user can interact with an example implementation, and/or other graphical user interfaces for a transmitting device. The above described techniques can be implemented in a distributed computing system that includes any combination of such back-end, middleware, or front-end components. 
     The computing system can include clients and servers. A client and a server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. 
     The components of the computing system can be interconnected by any form or medium of digital or analog data communication (e.g., a communication network). Examples of communication networks include circuit-based and packet-based networks. Packet-based networks can include, for example, the Internet, a carrier internet protocol (IP) network (e.g., local area network (LAN), wide area network (WAN), campus area network (CAN), metropolitan area network (MAN), home area network (HAN)), a private IP network, an IP private branch exchange (IPBX), a wireless network (e.g., radio access network (RAN), 802.11 network, 802.16 network, general packet radio service (GPRS) network, HiperLAN), and/or other packet-based networks. Circuit-based networks can include, for example, the public switched telephone network (PSTN), a private branch exchange (PBX), a wireless network (e.g., RAN, bluetooth, code-division multiple access (CDMA) network, time division multiple access (TDMA) network, global system for mobile communications (GSM) network), and/or other circuit-based networks. 
     Devices of the computing system and/or computing devices can include, for example, a computer, a computer with a browser device, a telephone, an IP phone, a mobile device (e.g., cellular phone, personal digital assistant (PDA) device, laptop computer, electronic mail device), a server, a rack with one or more processing cards, special purpose circuitry, and/or other communication devices. The browser device includes, for example, a computer (e.g., desktop computer, laptop computer) with a world wide web browser (e.g., Microsoft® Internet Explorer® available from Microsoft Corporation, Mozilla® Firefox available from Mozilla Corporation). A mobile computing device includes, for example, a Blackberry®. IP phones include, for example, a Cisco® Unified IP Phone 7985G available from Cisco System, Inc, and/or a Cisco® Unified Wireless Phone 7920 available from Cisco System, Inc. 
     One skilled in the art will realize the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. The foregoing embodiments are therefore to be considered in all respects illustrative rather than limiting of the invention described herein. Scope of the invention is thus indicated by the appended claims, rather than by the foregoing description, and all changes that come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.