Incorporating selectable application links into conversations with personal assistance modules
Patent Information
- Application Number
- DE102016125804
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2016-07-12
- Filing Date
- 2016-12-28
- Publication Date
- 2025-10-02
- Estimated Expiration
- 2036-12-28
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
background
[0001] Personal assistant modules are software processes installed on computing devices, such as smartphones, tablets, car navigation systems, and smartwatches, to provide user-friendly interfaces for users to issue natural language commands. Users often issue natural language commands using their voice, but personal assistant modules can also respond to other modalities, such as various forms of text and / or image input. Content exchanged between a user and a personal assistant module is typically limited to text (e.g., typed or generated by voice input) or other data, such as images, and is not typically stored for later use.Consequently, a user seeking external information relevant to the conversation must switch to another application, such as a web browser, to obtain the desired information. Application switching, particularly using mobile devices that often display a single application at a time, can be distracting and annoying, particularly for users with reduced dexterity, and may disrupt the flow of the conversation. US 2013 015 20 92 A1 relates generally to conversational interactive applications, and more particularly to methods and apparatus for natural language interaction in conversational interactive applications. US 2014 024 51 40 A1 describes techniques for transferring an interaction with a virtual assistant from one smart device to another smart device.US 2016 005 52 46 A1 describes implementations that provide an interface for triggering actions related to content displayed by the user on a mobile device. US 8 868 409 B1 describes technologies related to speech recognition and semantic analysis. US 2015 012 12 16 A1 describes techniques for mapping actions and objects to tasks, which may include identifying a task to be performed by a virtual assistant for an action and / or object. Brief description
[0002] At least one of the disadvantages described above can be overcome by a computer-implemented method as defined in claim 1, a system as defined in claim 12, and a non-transitory computer-readable medium as defined in claim 20. The present disclosure is generally directed to methods, apparatus, and computer-readable media (transitory or non-transitory) for incorporating "selectable application links"—graphical elements included in a message exchange thread between a user and a personal assistant module to reveal to the user an interface associated with another application—directly into a transcript of the message exchange thread rendered on a user-operated client computing device (or simply "client device").In various implementations, the selectable application links included in a transcript may be dictated by various resources of the client device rendering the transcript. For example, one or more "candidate applications" that are relevant in some way to the content of the message exchange thread—and that are also installed on the client computing device operated by the user interacting with the personal assistant module—may be identified. In some implementations, only executable application links to installed applications may be presented. In other implementations, if no applicable applications are installed, a link to an installer application (e.g., in an app store or on a website) or to a website that provides relevant functionality may be included instead.Including selectable application links in the messaging thread can reduce the number of user inputs a user must make on a device to access the content available through the links. This can be particularly beneficial for users with reduced dexterity or who otherwise have difficulty making user inputs on a device. Including the selectable suggestions in the messaging thread can, at least for these users, increase the reliability and speed of using the device, e.g., by preventing the user from being exposed to errors due to their reduced dexterity.
[0003] The inclusion of selectable application links in a transcript can be triggered by various cues. In some implementations, the cues can originate from content included in the message exchange thread from one or more client computing devices operated by the user. For example, a user can ask an instance of a personal assistant module running on a smartwatch, "What's on my schedule for tonight?" The personal assistant module can look up the user's calendar and / or other data sources (either online or locally on the client device) and respond that the user has nothing on their schedule for tonight. Later, the user can interact with a second instance of the personal assistant module running on a different client device, such as a smartphone or tablet.The user may say something like, "Make a reservation at XYZ Café." The user wasn't sure when the reservation was supposed to be made, so the second instance of the personal assistant module can consult the persistent messaging thread to infer that the user meant that evening, based on the previous question to the first instance of the personal assistant module running on the smartwatch and / or the response to it. By making such inferences, it is possible to further reduce the number of inputs required from a user.
[0004] The applications installed on a client device can be identified in different ways. In some implementations, applications installed on the client device can be known outside the client device, for example, from an application store server that maintains records of the applications installed on one or more client devices that form a coordinated "ecosystem" of client devices used by a user. In such a case, data indicative of one or more selectable application links associated with applications known to be installed on a client device may be downloaded from the client device in such a way that the client device can include a selectable application link in a message thread of those applications. In at least these scenarios, the selectable links included in the message exchange thread may have an effect external to the device on which the links are displayed—at least by causing data to be downloaded from the device to one or more external computers.This process can be made more reliable using selectable links, which ensure that the risk of downloading erroneous data to a device due to one or more erroneous inputs, such as a user selecting the result of an erroneous manual search, is drastically reduced. This can reduce network traffic and make the entire system more efficient. In some implementations, multiple installed applications can be remotely identified (and data indicating this is downloaded to the client), and the client device can then select a subset of the multiple applications based on various signals, such as the frequency with which the application is used (e.g., among one or more client computing devices in the user's ecosystem, or on a single client computing device).In some implementations, the client device can identify applications installed on it. For example, an application category (e.g., "Maps," "Reservations," "Music," "Movie," "Message," "Video Conferencing," "Phone," etc.) can be identified based on the content of a message exchange thread, and then a client device within a category can identify whether it already has matching applications installed.
[0005] According to the invention, a computer-implemented method is provided that includes the following operations: operating, by a client computing device operated by a user, an instance of a personal assistant module tasked with serving the user while operating the client computing device, wherein the instance of the personal assistant module has access to the persistent records of the messaging thread between the user and one or more instances of the personal assistant module; detecting, by the instance of the personal assistant module, one or more indications sent by the persistent messaging thread, wherein the one or more indications trigger the inclusion, in the persistent messaging thread, of one or more selectable links to one or more applications,that are different from the instance of the personal assistant module; identifying, by the instance of the personal assistant module, one or more candidate applications installed on a client computing device operated by the user, wherein the one or more candidate applications are associated with the content of the message exchange thread; and including, by the instance of the personal assistant module, one or more selectable links in a transcript of the message exchange thread displayed on a graphical user interface rendered on the client computing device, wherein each selectable link is operable by the user to cause the client computing device to reveal to the user an interface associated with a corresponding candidate application. Identifying includes identifying a web browser,installed on the client computing device as a candidate application in response to a determination that a given application associated with the content of the message exchange thread is not installed on the client computing device. Including comprises including in the transcript a selectable link to an interactive web page, wherein the interactive web page may include functionality corresponding to the functionality of the given application not installed on the client computing device, and / or a selectable link to a web page associated with downloading an installer of the corresponding application.
[0006] This method and other implementations of the technology disclosed herein may optionally include one or more of the following features.
[0007] In various implementations, the client computing device may be one of a plurality of client computing devices operated by the user, and each of the plurality of client computing devices may be configured to operate a separate instance of the personal assistant module with access to the persistent messaging thread. In various implementations, the one or more notifications comprise multiple messages included in the persistent messaging thread of different client computing devices of the plurality of client computing devices.
[0008] In various implementations, the identification may be performed by one or more of the processors spatially remote from the client computing device, and data indicative of one or more selectable links is downloaded from the client computing device. In various implementations, the method may further include, by the personal assistant module instance, selecting a subset of the one or more downloaded selectable links for display based on one or more information signals. In various implementations, the one or more information signals may include a frequency of use of the one or more candidate applications.
[0009] In various implementations, the identifying may be performed by one or more of the processors inherent in the client computing device. In various implementations, the one or more clues may originate from the contents of the message exchange thread. In various implementations, the one or more clues may include a keyword or key phrase associated with a particular application.
[0010] In various implementations, the graphical user interface may include an operable portion and a persistent portion. The transcript may be presented in the persistent portion. The operable portion may include one or more graphical elements operable to include content in the message exchange thread. In some of these implementations, the method may further include selectively incorporating the at least one non-persistent selectable link into the operable portion of the graphical user interface based on one or more signals, wherein the at least one non-persistent selectable link is operable by the user to cause the client computing device to reveal to the user an interface associated with a particular candidate application.In some implementations, the one or more signals may include an interaction history between the user and the particular candidate application.
[0011] Other implementations may include a non-transitory computer-readable storage medium storing instructions executable by a processor to perform a method, such as one or more of the methods described above. Yet another implementation may include a system including a memory and one or more processors operable to implement instructions stored on the memory to implement one or more modules or engines that individually or collectively perform a method, such as one or more of the methods described above.
[0012] It is understood that all combinations of the above concepts and the additional concepts further described herein are intended as part of the subject matter disclosed herein. For example, all combinations of the claimed subject matter appearing at the end of this disclosure are intended as part of the subject matter disclosed herein. Short description of the drawings Fig. 1 illustrates an environment in which one or more selectable application links can be included in a message exchange thread, according to various implementations. Fig. 2, Fig. 3 , and Fig. 4 illustrate examples of how client devices can render graphical user interfaces according to different implementations. Fig. Figure 5 illustrates an example of how individual client devices can identify candidate applications installed locally according to different implementations. Fig. Figure 6 illustrates an example of how candidate applications installed on individual client devices can be remotely identified according to different implementations. Fig. 7 is a flowchart illustrating an exemplary method according to various implementations. Fig. Figure 8 illustrates another example of how a client device can render a graphical user interface according to various implementations. Fig. Figure 9 schematically depicts an exemplary architecture of a computer system. Detailed description
[0013] Fig. 1 illustrates an environment in which one or more "selectable application links" are directly incorporated into a transcript of a message exchange thread between a user and one or more instances of a personal assistant module rendered on a client device operated by the user. The exemplary environment includes a plurality of client devices 1061-N and a knowledge system 102. Knowledge system 102 may be implemented in one or more computers communicating, for example, over a network. Knowledge system 102 is an example of an information retrieval system in which the systems, components, and techniques described herein may be implemented and / or to which systems, components, and techniques described herein may be interfaced.
[0014] A user may interact with a knowledge system 102 via one or more client devices 106, which collectively form a coordinated "ecosystem" 108 of client devices. The client device 106 of the user's ecosystem 108 may be a computer coupled to the knowledge system 102 via one or more networks 110, such as a local area network (LAN) or a wide area network (WAN), such as the Internet. The client device 106 may be, for example, a desktop computing device, a laptop computing device, a tablet computing device, a mobile phone computing device, a computing device of a user's vehicle (e.g., an in-vehicle communication system, an in-vehicle entertainment system, an in-vehicle navigation system), or a user's wearable device that includes a computing device (e.g., a user's wristwatch that includes a computing device, a pair of user's eyeglasses that includes a computing device).Additional and / or alternative client devices may be provided.
[0015] Each client device 106 may have a variety of different applications, such as a personal assistant module 107 and / or the applications APP A, APP B, APP C, APP D, and APP E, which are in Fig. 1. It can be seen that different hypothetical applications are installed on different client devices 106. For example, on the first client device 1061, APP A, APP B, and APP C are installed. On the other client device 106N, APP A is also installed, although APP B or APP C is not installed on it. However, on the other client device 106N, APP D and APP E are installed. APPs AE are generally intended to refer to any application that has an interface that is exposed to a user of the client device 106 in response to various events. An application interface can be "exposed" to a user (i.e., allowing a user to interact with it) by loading / opening / launching the application (e.g., from non-volatile memory), or if the application was already running / opening / launched in the background, bringing the application to the foreground (e.g.,make the application window the active window). These apps (and any "Candidate Application" mentioned herein) may include, but are not limited to, applications for making reservations or purchasing tickets (e.g., restaurant reservations, hotel reservations, airline reservations, train reservations, event reservations, etc.), mapping applications, calendar applications, reminder applications, media consumption applications (e.g., music or video players), games, news applications, weather applications, real estate applications, fitness applications, shopping applications, messaging applications, car sharing applications, productivity applications such as word processing applications or spreadsheet applications, phone applications, and web browsers, etc.
[0016] Each client device 106 and knowledge system 102 may each include one or more memories for storing data and software applications, one or more processors for accessing data and executing applications, and other components that enable communication over a network. The operations performed by one or more client devices 106 and / or the knowledge system 102 may be distributed across multiple computer systems. For example, the knowledge system 102 may be implemented as computer programs running on the one or more computers at the one or more locations coupled together over a network.
[0017] In various implementations, knowledge system 102 may include a personal assistance engine 120, an application engine 122, an index engine 126, an information engine 130, a ranking engine 134, and an alternative query suggestion engine 136. In some implementations, the one or more engines 120, 122, 126, 130, 134, and / or 136 may be omitted. In some implementations, all or aspects of the one or more engines 120, 122, 126, 130, 134, and / or 136 may be combined. In some implementations, one or more engines 120, 122, 126, 130, 134, and / or 136 may be implemented in a component that is separate from knowledge system 102. In some implementations, one or more of engines 120, 122, 126, 130, 134, and / or 136, or any operative portion thereof, may be implemented into a component executed by client device 106.
[0018] In various implementations, the personal assistant machine 120 may have complementary functionality for handling speech input, e.g., using a speech-based query processor that relies on various acoustic / linguistic, grammatical, and / or commerce models that may be stored in index 121. It will be appreciated in some implementations, particularly since most client devices 106 are resource-constrained devices, that the personal assistant machine 120 may implement more complex and increasingly computer-aided resource-intensive speech processing functionality than resides locally on each client device 106.It should be noted that when an action is described herein as being performed by the personal assistant module 107, this does not necessarily include one or more aspects of the action being performed by the personal assistant machine 120.
[0019] In some implementations, multiple personal assistance machines 120 may be deployed, each acting as an online counterpart to one or more individual personal assistance modules 107. For example, in some implementations, each client device 106 in an ecosystem 108 may be configured to operate an instance of a personal assistance module 107 assigned to the user (e.g., configured with the user's preferences, assigned to the same interaction history, etc.). A single user-centric online instance of the personal assistance machine 120 may be accessible to each of these multiple instances of the personal assistance module 107, depending on which device the user is operating at the time.
[0020] In some implementations, both online and offline functionalities may be supported, e.g., so that online functionalities are used whenever a client device 106 is in communication with an online service, while offline functionalities are used when a connection cannot be established.
[0021] In other implementations, different actions or action domains may be assigned to online and offline functionalities, while in still other implementations, online functionalities may only be used when offline functionalities are unable to adequately handle a particular speech input. However, in other implementations, complementary online functionalities may not be used.
[0022] In various implementations, the personal assistant module 107 and / or the personal assistant engine 120 may store a transcript of messages and / or other data exchanged between the user and the personal assistant module 107 for later use, e.g., as a persistent message exchange thread. For example, the personal assistant module 107 and / or the personal assistant engine 120 may also store messages themselves, e.g., in index 121. In some implementations, these messages may be annotated, e.g., with a timestamp, a location where the message was added to a message exchange thread, the subject of the message, etc. These stored messages and annotations (or, as the case may be, metadata) may be used later to enhance the flow of conversation between the user and one or more instances of his / her personal assistant module 107.As used herein, the term "transcript" may refer to a live recording of text, images, sounds, and / or applets being exchanged and / or viewed in a message exchange thread. In some implementations, a transcript of a message exchange thread may be updated in real-time or near-real-time as the user speaks with the one or more instances of the personal assistant module 107.
[0023] Application engine 122 may maintain an index 124 of installed applications or applications otherwise available to client devices 106. For example, application engine 122 may be inherent in, or at least in communication with, a so-called "app store" from which users of client devices 106 download applications (or "apps"). In some implementations, when a user downloads and / or installs an app from application engine 122 (or from an app store in communication with application engine 122), it may be recorded, e.g., in index 124, that the user has installed that application.In some implementations, records may be synchronized regularly with client devices 106 to reflect, for example, when users uninstall apps, when users install apps from sources other than the App Store that are available to the application engine 122, etc. As described below, the application engine 122 is one of several components included in . Fig. 1 that can participate in the process of identifying applications installed on client devices 106 such that appropriate selectable application links can be inserted into transcripts of the message exchange threads played by client devices 106.
[0024] In some implementations, application engine 122 may be accessible to individual users through accounts established by users. For example, a user may have an account on application engine 122 (or on an app store in communication with application engine 122) that the user may access using various credentials (e.g., username / password, retinal scan, fingerprint scan, etc.). Once the user has logged into their account, they may download one or more apps to one or more client devices, forming an ecosystem of client devices operated / owned by the user. In some instances, certain apps may be available for download only if the user purchases the app (or the rights to use the app).When a user acquires an app in some implementations, the user may thereafter have the right to download or install the app on multiple client devices 106 of an ecosystem 108.
[0025] The indexing engine 126 may maintain an index 128 for use by the knowledge system 102. The indexing engine 126 processes documents and updates index entries in the index 128, for example, using conventional and / or other indexing techniques. For example, the indexing engine 126 may crawl one or more resources, such as the World Wide Web or index documents accessible via such crawling. As another example, the indexing engine 126 may obtain information related to one or more documents from one or more resources, such as webmasters, that control such documents and index the documents based on such information. A document is any data associated with a document address.Documents include web pages, word processing documents, Portable Document Format (PDF) documents, images, emails, calendar entries, videos, and web feeds, to name a few. Each document can contain content such as text, images, videos, sounds, embedded information (e.g., metadata and / or hyperlinks), and / or embedded instructions (e.g., ECMAScript implementations such as JavaScript).
[0026] The information engine 130 may maintain another index 132 that includes or enables access to non-document-specific information for use by the knowledge system 102. For example, the knowledge system 102 may be configured to return information in response to search queries that appear to seek specific information. For example, if a user searches for "Ronald Reagan's birthday," the knowledge system 102 may receive the date "February 6, 1911" from the information engine 130. This information may be returned to the user as part of the search results, separate from the documents obtained by the indexing engine 126. In various implementations, the index 132 may itself contain information or link to one or more information sources, such as online encyclopedias, yearbooks, etc.In various implementations, index 128 or index 132 may include a mapping between queries (or query terms) and documents and / or information.
[0027] In this specification, the terms "database" and "index" are used broadly to refer to any collection of data. The data of the database and / or index need not be structured in a particular manner and may be stored on storage devices in one or more geographic locations. Thus, for example, indexes 121, 124, 128, and 132 may contain multiple collections of data, each of which may be organized and accessed in a different manner.
[0028] The ranking engine 134 may use the indices 128 and / or 132 to identify documents and other information related to a search query, for example, using conventional and / or other information retrieval techniques. The ranking engine 134 may calculate ranking results for the documents and other information identified with respect to a search query, for example, using one or more ranking signals. Each ranking signal may provide information about the document or information itself, a relationship between the document or information and the search query, and / or the relationship between the document or information and the user performing the search.
[0029] The alternative query suggestion engine 136 may use one or more signals and / or other information, such as a database of alternative query suggestions (not shown) and / or information about a user of the client device 106 (e.g., search history, GPS location, user attributes), to generate alternative query suggestions to provide along with other search results to the client device 106. As a user types successive characters in the search query, the alternative query suggestion engine 136 may identify alternative queries that are highly likely to return results useful to the user. For example, assume that the client device 106 is located in Chicago and has typed the characters "Restaur."Based on a location signal indicating that client device 106 is located in Chicago and a search history signal indicating that the user has a preference for restaurants with live music, alternative query suggestion engine 136 may suggest the query "Chicago restaurants with live music." As another example, for a user who typed "Ronald Reagan's birth," alternative query suggestion engine 136 may use techniques, such as prefix matching, to determine and suggest alternative suggestions, such as "Ronald Reagan's birthday," Ronald Reagan's birthplace, "Ronald Reagan's position regarding birth control," etc. The alternative query suggestion engine 136 may also provide other suggestions, such as orthographically enhanced versions of a partially formed search query.
[0030] In various implementations, one or more instances of the personal assistant module 107 and / or the personal assistant machine 120 may be configured to detect one or more indicators sent by a messaging thread between the user and one or more instances of the personal assistant module 107. In various implementations, the one or more indicators may trigger the inclusion of one or more selectable links in the messaging thread. Each of the one or more selectable application links may link to an application that is different from the messaging thread and / or the personal assistant module 107.
[0031] In some implementations, clues may originate from the content of the messaging thread. For example, the user mentioning an entity or keyword / keyphrase assigned to one or more applications may constitute a clue to include one or more executable application links to one or more applications in the messaging thread. Another example of a clue is a statement directed by the user to the personal assistant module 107 that matches a pattern or template assigned to an application. In various implementations, the template may be assigned to a specific application. For example, the template may have been generated from a corpus of messages that includes messages from previous messaging threads that result in a user invocation or activation of a specific application.In some implementations, the template may be assigned to a cluster of messages from a corpus that share one or more attributes, such as messages containing the same or similar fixed and "transient" text. In still other implementations, the cues may be more explicit. For example, a user could enter a message into the thread addressed to their personal assistant module, e.g., "Hey BOT, what's the weather like in San Francisco?" This could prompt the personal assistant module 107 to include one or more application links in the transcript of the message exchange thread, such as a link to a weather app already preloaded with San Francisco weather.
[0032] To determine which selectable application links to include in the transcripts of the messaging thread displayed on client devices 106, one or more personal assistant modules 107, and / or the personal assistant engine 120 or the application engine 122 may identify one or more candidate applications installed on the client device 106 operated by a user from the messaging thread. In various implementations, the one or more identified candidate applications may be associated with the content of the messaging thread. In some implementations, the one or more hints discussed above may be associated with one or more applications.
[0033] As an example, if the user mentions music and / or musicians, the one or more candidate applications may be applications associated with playing, recording, or producing music. If the user mentions movies, television, and / or actors / directors, the one or more candidate applications may be associated with playing movies / television programs or with selectable databases of casts associated with movie and television productions. If the user mentions travel, the one or more candidate applications may be associated with making hotel, flight, train, boat, rental car reservations, etc. If the user mentions restaurants, the one or more candidate applications may be associated with making restaurant bookings, restaurant reviews, calling restaurants, etc.
[0034] Once the one or more candidate applications have been identified, the one or more selectable application links (also referred to as "selectable links") may be included in a transcript of the message exchange thread displayed on a graphical user interface of a given client computing device 106 currently operated by the user. In various implementations, each executable link may be user-operable to cause the client device 106 to reveal to the user an interface associated with a corresponding candidate application. For example, if a corresponding candidate application is running in the background (e.g.,which has already been loaded in some form onto volatile memory), then operation of the corresponding selectable link may cause the candidate application to be activated in order to expose the user to the corresponding candidate application and consequently enable the user to interact with an interface (graphical, audible, haptic, etc.) of the corresponding candidate application. If a corresponding application has been installed but is not running in the background, operation of the corresponding selectable link may cause the candidate application to be opened or "launched," e.g., from non-volatile memory.
[0035] Executable application links included in a messaging thread (e.g., in a transcript of the displayed thread from at least one personal assistant module 107) may take various forms. In some implementations, a selectable application link may take the form of a graphical icon or animation associated with the linked application. In some implementations, the executable application link may include text conveying information about the application or an action that can be performed using the application (e.g., "get directions to a location"). In various implementations, the executable link may be rendered as part of the transcript, just like any other message from the messaging thread, e.g.,within a "bubble" whose purpose is to represent a statement made by the personal assistant module 107. As such, the executable application link can "move up" as additional messages are appended to the message exchange thread.
[0036] In some implementations, the knowledge system 102, e.g., as part of the information engine 130 and / or another component, may have a so-called knowledge base containing records about known entities, entity types (e.g., "person," "place," "thing"), and relationships between the known entities. In some implementations, such a knowledge base may be implemented, e.g., in the index 132, as a graph in which nodes represent entities and edges represent relationships between entities and / or entity types, although this is not required. In some such implementations, information about entities from such a knowledge base may be made available to components, such as the personal assistant engine 120 and / or one or more instances of the personal assistant module 107.These components can then use entity information to identify relevant applications, or to pre-populate one or more input fields or other data points that can be used to transition between different states of a state machine assigned to the identified candidate applications, etc.
[0037] In some implementations, the knowledge base may be used, e.g., by one or more of the engines 120, 122, 126, and / or 130, to identify a first entity or a first entity type mentioned in one or more of the messages exchanged between the user and one or more instances of the personal assistant module 107. Information associated with the entity / entity type obtained, e.g., in response to a search query about the entity, may then be used to identify one or more candidate applications. For example, assuming a user sends a message such as "Babe Ruth was the greatest!" as part of a message exchange thread, then "Babe Ruth," for example, mayidentified by information engine 130 based on a knowledge base stored in index 132, along with one or more attributes of Babe Ruth and / or one or more related entities, such as one or more teams he played for (e.g., the New York Yankees), his family members, his teammates, his years of play, his years of life, etc. One or more pieces of information can then be used to identify one or more candidate applications, or application "categories," that may reference or otherwise be relevant when the entity is mentioned. In some implementations, this information can be used to "pre-populate" one or more data points (e.g., input parameters, data entry fields, data points that cause the transition between states of the state machine, etc.) assigned to a linked application.In this way, when the user clicks a selectable application link, the linked application may open in a state in which the one or more data points have already been populated.
[0038] Fig. 2 depicts a first client device 2061 (taking the form of a smartphone or a tablet computer) operated by a user named Sven. Client device 2061 includes a graphical user interface 250 that provides a transcript 252 of a persistent message exchange thread between Sven and one or more instances of a personal assistant module (“PAM” in Fig. 2). The graphical user interface 250 also includes a text input field 254 that Sven can use to enter text (e.g., by typing or speaking) or to enter other content into the message exchange thread, e.g., in response to statements previously made by the personal assistant module. In this example, Sven ("you" in Fig. 2, since this is Sven's client device 2061) indicated that he was hungry. The personal assistant module asks Sven what he would like to eat, and Sven replies, "I like Greek food but not Indian." The personal assistant module responds by suggesting a restaurant called "Hypothetical Cafe."
[0039] At this point in the conversation, mentioning a known entity (hypothetical cafe) can result in a variety of selectable application links 2561-3 being reproduced in transcript 252. In Fig. 2, selectable application links 2561-3 are depicted within the bubble. However, this is not to be understood as limiting. In other implementations, such icons may include graphics and / or animations, and may be displayed outside of a bubble, e.g., as in Fig. 3. Furthermore, selectable links in some implementations may be purely textual hyperlinks.
[0040] The first executable application link 2561 connects to a phone application. If Sven selects this link, an interface of a phone app installed on the client device 206 may be made available to Sven. For example, the phone app may be launched and / or the phone app may be made available to the active window (which, on many mobile devices, is a single window). In some implementations, the phone app may be preselected to call a phone number assigned to the hypothetical cafe. A third selectable application link 2563 connects to a mapping application, e.g., with pre-uploaded directions to the hypothetical cafe.
[0041] The second selectable link 2562 establishes a connection to a "TABLE RESERVATION" that can be operated by Sven to make a reservation at the hypothetical café. If Sven selects this link, an interface (e.g., graphical, with an interactive voice response, haptic, etc.) associated with a "TABLE RESERVATION" application can be made available to Sven. In some implementations, the "TABLE RESERVATION" app can have various data points, such as inputs, pre-populated with data obtained from various sources. In some implementations, the data points can be pre-populated with context-dependent data obtained from the client device 2061 and / or from various components of the knowledge system 102.For example, Global Positioning System (“GPS”) coordinates provided by client device 2061, operated by Sven, may indicate that the hypothetical cafe is nearby.
[0042] Fig. Figure 3 depicts a second client device 2062 (taking the form of a smartwatch) from Sven's ecosystem, which is operated by Sven at a slightly later time. Client device 2062 includes a graphical user interface 260 that displays a transcript 262 of the persistent message exchange thread between Sven and one or more instances of his personal assistant module ("PAM" in Fig. 3). In this example, Sven says: “I need a lunch reservation for three people.” Without the context provided by the previous messages in Fig. 2, such a request may not be resolved by an instance of the personal assistant module operating on the second client device 2062. However, by using the techniques described herein, the instance of the personal assistant module operating on the second client device 2062 may have access to the persistent message exchange thread between Sven and multiple instances of the personal assistant module operating on multiple devices of Sven's ecosystem (see 108 in Fig. 1). The personal assistant module is accordingly able to suggest the hypothetical café again and again displays a variety of selectable application links 2661-3 in transcript 262.
[0043] Users can often have different applications that, as in Fig. 1, are installed on different devices of their ecosystem of devices. This is the case with Sven's first and second client devices 2061 and 2062. The first client device 2061 has a booking application called "TABLE RESERVATION" and the second client device 2062 has an alternative booking application called "LET'S GO EAT." Consequently, the second selectable application link 2562, when displayed on the first client device 2061, as shown in Fig. 2, connects to the locally installed "TABLE RESERVATION" application. However, if the second executable application link 2662, as shown in Fig. 3, is rendered on the second client device 2062, it connects to the locally installed "LET'S GO OUT TO DINNER" application. As described further below, applications installed on client devices in various implementations can dictate which selectable links are included in message exchange threads between users and personal assistant modules.
[0044] An example of an interface 270 assigned to the “LET’S GO OUT TO DINNER” application (which is merely a hypothetical application described herein for demonstrative purposes) that Sven, as in Fig. 4, in response to Sven selecting the selectable application link 2662 from Fig. 3. In this example, the "LET'S GO OUT TO DINNER" interface 270 was rendered on Sven's second client device 2062, with various data points (e.g., input fields) already pre-populated. For example, since Sven mentioned that he needed a booking for three people, the booking for three guests was queued.
[0045] The booking time was pre-filled with 12:00. This could, for example, be because Sven needs enough time to reach the restaurant after discussing lunch with the personal assistant module at 11:30. The booking time could additionally or alternatively have been pre-filled with 12:00, as this is the nearest time people typically eat a meal. For example, if Sven had discussed going out to eat at 3:30 p.m., the booking time would have been pre-filled with a time normally assigned to dinner, such as 6:30 p.m. The booking name is "SVEN" because Sven is the user who interacts with the personal assistant module.
[0046] The example of Fig. 2 - Fig. 4 concerns restaurants, but it should be noted that selectable application links may connect to numerous other application types and, depending on the type of application, may also include other types of preloaded data. Suppose a user operating a client device asks their personal assistant module to order a taxi. In various implementations, an executable application link connecting to a transportation app may be included in the conversation between the user and the personal assistant module. In various implementations, the user's current location (e.g., as determined by the client device's GPS functionality) may be used to pre-populate a "current location" data point associated with the transportation app.If the user also specifies an intended destination, a “destination” field assigned to the transport app can be pre-populated in a similar manner.
[0047] As noted above, one or more selectable application links may be selectively rendered in a transcript displayed by a client device based at least in part on resources available on the client device. For example, in some implementations, only executable application links to installed applications may be displayed on a client device. Fig. 5 forms various components of the environment, which in Fig. 1, and demonstrates how one or more components inherent in a client device 506 of a user's ecosystem 508 (e.g., software installed thereon, hardware component thereof) can perform the identification of the applications installed on the client device 506. In this example, the first client device 5061 has, among other things, also installed the (hypothetical) booking client application 562 named "TABLE RESERVATION" discussed above. The second client device 5062 has, among other things, another (hypothetical) booking client application 564 named "LET'S GO OUT TO DINNER" installed.
[0048] Suppose the user interacts with the first client device 5061 of the user's ecosystem 508 to talk to a first instance of a personal assistant module 5071. Further assume that the message exchange thread includes, similar to Fig. 2, a discussion about where to eat. Based on this discussion (i.e., one or more clues from the discussion concerning making a booking at a restaurant), an application category of the "BOOKING" application was identified, e.g., by means of a personal assistant machine 120 and / or the application engine 122, and an indication of this category was provided to the first client device 5061.
[0049] Suppose the user later interacts with a second client device 5062 of the user's ecosystem 508 to talk to a second instance of a personal assistant module 5072. Further assume that the message exchange thread includes, similar to Fig. 3 - Fig. 4, a discussion about where to eat. Based on this discussion (i.e., one or more clues from the discussion concerning making a reservation at a restaurant), an application category of the "BOOKING" application was identified, e.g., by means of a personal assistant machine 120 and / or the application engine 122, and an indication of this category was provided to the second client device 5062.
[0050] Upon receiving the personal assistant module 5071-2's indication of the application category "BOOKING," each can identify one or more locally installed applications that match the "BOOKING" category. For example, the first client device 5061 has the "TABLE RESERVATION" client 562 installed, whose first personal assistant module 5071 can be identified as a "BOOKING" application. Consequently, the first personal assistant module 5071 can include a selectable application link to the "TABLE RESERVATION" client 562 in a transcript of the message exchange thread it displays. Similarly, the second client device 5062 has the "LET'S EAT" client 564 installed, whose second personal assistant module 5072 can be identified as a "TABLE RESERVATION" application.Accordingly, the second personal assistant module 5072 may include a selectable application link to the “LET'S GET TO DINNER” client 564 in a transcript of the message exchange thread that it displays.
[0051] In some implementations, the client device may have multiple applications installed on it that correspond to a particular application category. For example, a single client device may have both the "LET'S EAT" client 564 and the "TABLE RESERVATION" client 562, which are described in Fig. 5. In some implementations, executable application links to both applications may be included in the transcript of the message exchange thread on that client device. In some versions, the multiple selectable application links may be presented in an order selected based on a variety of information signals, such as the frequency of use of each client. If the "TABLE RESERVATION" client 562 is used more frequently than the "LET'S GET TO DINNER" client 564, an executable application link to client 562 that is more prominent, prominent, etc., than an executable application link to client 564 may be presented first.
[0052] In some implementations where multiple applications are installed on a single client device that match an application category, a personal assistant module 507 or other component may analyze how frequently these multiple applications are used to determine whether each justifies the inclusion of an eligible application link in a messaging thread transcript. For example, a frequency of use assigned to a corresponding application may need to meet a predetermined threshold, either alone or relative to other matching installed applications, in order to have a corresponding eligible application link included in the messaging thread transcripts. If the application is not used frequently or not at all (e.g.,provided the application was installed by the device manufacturer and never opened by the user), no selectable application link can be included in the transcripts of the message exchange threads.
[0053] Fig. 6 represents an alternative scenario to Fig. 5. Here, the identification of installed applications on client devices 6061-N of the coordinated ecosystem 608 operated by a user may be performed at least partially remotely by the client devices 6061-N. In particular, the application engine 122 (which was described above and which may be inherent in the app store or at least in communication with it) may be configured to determine, based on the records located in index 124, which applications are installed on which of the client devices 606 of the ecosystem 608.
[0054] Assume that the user operating the client devices 606 of the ecosystem 608 in this example has the rights to download and use the applications APP A, APP B, APP C, APP D, and APP E. On a first client device 6061, which may be, for example, the user's mobile phone, the user has installed APP A, APP B, and APP C. APP D and APP E have not been installed on the first client device 6061, as indicated by their placement below the line, although they may be available for download and / or installation because the user has previously acquired the rights to do so. On a second client device 606N, which may be, for example, the user's smartwatch, the user has installed APP A, APP D, and APP E.APP B and APP C are not installed on the second client device 606N, as indicated by their placement below the line, although they may be available for download and / or installation because the user has previously acquired the rights to do so.
[0055] In the example from Fig. 6, the personal assistant machine 120 may establish a connection with the application engine 122 to determine which applications have been installed on which client devices 606. If one or more indications are detected regarding the inclusion of one or more selectable application links in a messaging thread, the personal assistant machine 120 may request that the application engine 122 identify the one or more applications installed on the given client device 606. The personal assistant machine 120 may then be configured to download data indicative of one or more selectable application links to applications installed on the given client device, which are also associated with content of the messaging thread, to the corresponding client device 606.In various implementations, the given client device 606 may automatically include the one or more selectable application links in a transcript of the message exchange thread, or it may selectively include them in the transcript of a subset of the one or more selectable application links in response to one or more signals (e.g., frequency of use of the application to which a link is provided, regardless of whether the application to which a link was provided is still installed, etc.).In some implementations, if a given application has not been installed but is available to a client device (as is the case with APP D and APP E on the first client device 6061), then an application link selectable to fully install the application on the client device 606 may be included in a transcript of the message exchange thread displayed on that client device.
[0056] The examples described above have demonstrated how selectable application links can provide a link to specific applications. However, this is not intended to be limiting. In some implementations, selectable application links can provide links to documents or other online content relevant to the discussion that is accessible using any number of applications. For example, in some implementations, a selectable application link can provide a link to a web address or other online identifier. In some such implementations, operation of the selectable application link on a client device can provide the user with a favorite installed web browser.In various implementations, the web browser may have already uploaded a web page or other content relevant to the content of the message exchange thread, such as an interactive web page with functionality equivalent to the functionality of an application that is not installed on the client device.
[0057] If we now refer to Fig. 7, an exemplary method 700 of selectively including one or more selectable application links that lead directly to a transcript of a message exchange thread between a user and one or more instances of a personal assistant module is described. For ease of reference, the operations of the flowchart are described with reference to a system that performs the operations. This system may include various components of computer systems, including various machines and / or client applications described herein. Moreover, although operations of the method 700 are shown in a particular order, this is not limiting. One or more operations may be reordered, omitted, or added.
[0058] At block 702, the system, and in particular the one or more client devices of a user's ecosystem, may operate an instance of a personal assistant module to serve the user. In various implementations, the personal assistant module instance may have access to a persistent record of the messaging thread between the user and one or more instances of the personal assistant module. For example, the persistent messaging thread may be maintained by the personal assistant machine 120 and made available to all instances of a personal assistant module serving the user (e.g., for synchronization). At block 704, the system may capture one or more indicators emitted by the messaging thread.The one or more hints may trigger inclusion of one or more selectable links to one or more applications other than the personal assistant module in the persistent message exchange thread.
[0059] At block 706, the system may identify one or more candidate applications installed on the client device. As described above, in some implementations, the candidate applications may be those deemed to be reasonably relevant to the content of the message exchange thread. Fig. 2 - Fig. 4 depict examples in which a user discusses dining out with a personal assistant module, and as a result, applications associated with dining out (e.g., a dialer to call a restaurant, a booking application, a mapping application, etc.) are identified. Other examples are also described above. In some implementations, the identifying block 706 may be performed by one or more processors spatially remote from a given client computing device, and data indicative of one or more selectable links may be downloaded to a given client device. In other implementations, the identifying block 706 may be performed by one or more of the processors inherent in the respective client computing device.
[0060] In some scenarios, one or more candidate applications best suited for inclusion may not be installed on a given client computing device. However, some candidate applications (e.g., restaurant / flight booking applications, mapping applications, etc.) may have corresponding websites that include corresponding functionality. For example, a user could navigate a web browser to the "TABLE RESERVATION" web page and make a booking in more or less the same way a user makes a booking using the "TABLE RESERVATION" app. Accordingly, in some implementations, at optional block 708, the system may be configured as a candidate application to include a web browser or other general-purpose application (e.g., a phone dialer, an email application, a social networking application, etc.).) installed on the given computing device in response to a determination that a corresponding application associated with the content of the message exchange thread is not installed on the given client computing device.
[0061] At block 710, the system may include one or more selectable application links in a transcript of the message exchange thread rendered by the client device. In instances where a general-purpose application, such as a web browser, is identified at block 708 in various implementations, the system may include a selectable link to an interactive web page that includes functionality corresponding to the functionality on the given application that was determined not to be installed on the given client computing device. Additionally or alternatively, in various implementations, the system may include a selectable link to download and / or install the application that was determined not to be installed on the given client computing device.
[0062] Fig. 8 is an alternative implementation to the one described in Fig. 2. The same first client device 2061 (taking the form of a smartphone or a tablet computer) is operated by a user named Sven. In this implementation, client device 2061 includes a graphical user interface with two sections: a persistent section 850A, which contains a transcript 252 of a persistent message exchange thread between Sven and one or more instances of a personal assistant module (“PAM” in Fig. 2); and an operable portion 850B including a keyboard and / or other graphical elements operable by Sven to input text or other content into the message exchange thread (e.g., by typing or speaking). In some implementations, the operable portion 850B may be rendered in response to Sven selecting the text input field 254 from Fig. 2 (e.g. touched). In this example, Sven (“you” in Fig. 8, since this is Sven's client device 2061) indicates that he is hungry. The personal assistant module ("PAM") asks Sven what he would like to eat, and Sven replies, "I like Greek food but not Indian." The personal assistant module responds again by suggesting a restaurant called "Hypothetical Cafe;".
[0063] This time, however, the personal assistant module makes the suggestion in a slightly different way than in Fig. 2. In particular, the personal assistant module provides three selectable links 8561-3 in operable section 850B and three selectable links 8564-6 in persistent section 850A. The selectable links 8561-3 included in operable section 850B may be more easily accessible to Sven's fingers because they are closer to the keyboard Sven is operating. However, they were not included in the message exchange thread and therefore do not appear in transcript 252. Consequently, they may not be persistent—if Sven does not select them and the subject of the message exchange between Sven and the personal assistant module changes, the links 8561-3 may not persist (e.g., they may disappear and / or be replaced with selectable links more relevant to the current conversation).
[0064] In comparison, the selectable links 8564-6 are now part of the transcript 252. Accordingly, Sven may come back at a later time, e.g., after the transcript 252 has grown sufficiently, so that selectable links 8561-3 are "moved up" from their visible position in the persistent section 850A, and operate those links. More generally, selectable links that are in a message exchange thread in various implementations described herein (including those from the Fig. 2 - Fig. 4) are included, persist in the thread, so that a user can scroll up later in the thread and click on these links long after they have been included. This can apply to all devices in an ecosystem assigned to a user. For example, Sven can use client device 2062 (smartwatch) included in the Fig. 3 - Fig. 4, and revise a portion of a transcript originally created using client device 2061 and select a selectable link that was earlier included in the message exchange thread.
[0065] With reference to Fig. 8, selectable links in various implementations may be selectively included in the operable portion 850B or the persistent portion 850A based on various signals. In some implementations, a history of interaction between the user and a candidate application linked to by a selectable link may be considered. For example, if six expansive candidate applications are identified (as in Fig. 8 is the case), only links to the n most frequently used applications can be included in one or the other section, e.g., based on user preferences, screen size, etc.
[0066] For example, the Call app (linked by selectable link 8561), the Table Reservation app (linked by selectable link 8562), and the Directions app (linked by selectable link 8563) can be in Fig. 8 may be the three most frequently used applications of the six identified potentially responsive applications and may therefore be included in the operable section 850B in such a way that they are more easily accessible to the user's fingers. The application assigned to the other selectable links 8564-6, on the other hand, may be used less frequently and may therefore be relocated to the persistent section 850A. The selectable links 8561-6 may, of course, also be included in other ways. For example, a user may prefer that the selectable links to the most frequently used apps appear in the persistent section 850A in addition to, or instead of, appearing in the operable section 850B, e.g., so that they can scroll up and access them at a later time.
[0067] Additionally or alternatively, other signals may be considered that selectively include selectable links in an operable section 850B rather than a persistent section 850A. In some implementations, a degree of relevance of a particular candidate application to the current discussion may be considered. For example, selectable links to the most relevant applications may be included in the operable section 850B, while executable links to less relevant applications may be included in the persistent section 850A, or vice versa.In some implementations, selectable links to previously installed applications may be included in operable section 850B, while executable links to a non-installed application and / or web pages with functionality corresponding to a non-installed app may be included in persistent section 850A, or vice versa. In some implementations, selectable links included in persistent section 850A (or operable section 850B, as appropriate) may include links to documents stored both locally and non-locally on the client device, such as payment receipts from a previous visit to a restaurant, links to emails or other correspondence about the restaurant, etc.
[0068] Fig. 9 is a block diagram of an exemplary computer system 910. Computer system 910 typically includes at least one processor 914 that communicates with a number of peripheral devices via bus subsystem 912. These peripheral devices may include a storage subsystem 926, including, for example, a memory subsystem 925 and a file storage subsystem 926, user interface output devices 920, user interface output devices 922, and a network interface subsystem 916. The input and output devices enable user interaction with computer system 910. Network interface subsystem 916 provides an interface to external networks and is coupled to corresponding interface devices in other computer systems.
[0069] The user interface input devices 922 may include a keyboard, pointing devices such as a mouse, a trackball, a touchpad, and / or a graphics tablet, a scanner, a touchscreen integrated into a display, audio input devices such as voice recognition systems, microphones, and / or other types of input devices. In general, the use of the term "input device" is intended to encompass all possible device types and ways of entering information into a computer system 910 or into a communications network.
[0070] User interface devices 920 may include a display subsystem, a printer, a fax machine, a non-visual display such as audio output devices. The display subsystem may include a cathode ray tube (CRT), a flat panel display device such as a liquid crystal display (LCD), a projection device, or other mechanism for creating a visible image. The display subsystem may also provide a non-visual display, such as through audio output devices. In general, the use of the term "output device" is intended to include all possible device types and means of outputting information from a computer system 910 or another machine or computer system.
[0071] Storage subsystem 926 stores programming and data constructs that provide the functionality of some or all of the modules described herein. For example, storage subsystem 926 may include logic to perform selected aspects of method 700, and / or to include one or more of personal assistant module 107, personal assistant engine 120, application engine 122, index engine 126, information engine 130, ranking engine 134, and / or alternative query suggestion engine 136.
[0072] These software modules are generally executed by processor 914 alone or in combination with other processors. The memory 925 used in memory subsystem 926 may include a number of memories, including a main access memory (RAM) 930 for storing instructions and data during program execution and a read-only memory (ROM) 932 in which fixed instructions are stored. A file storage subsystem 926 may provide persistent storage for program and data files and may include a hard disk drive, a floppy disk drive along with associated removable media, a CD-ROM drive, an optical drive, or removable media disks.The modules that implement the functionality of particular implementations may be stored by the file storage subsystem 926 in the memory subsystem 926 or in other machines accessible to the processor 914.
[0073] Bus subsystem 912 provides a mechanism that allows different components and subsystems of computer system 910 to communicate with each other as intended. Although bus subsystem 912 is schematically shown as a single bus, alternative implementations of the bus subsystem may utilize multiple buses.
[0074] Computer system 910 may be of various types, including a workstation, a server, a computer cluster, a blade server, a server farm, and other data processing systems or computing devices. Due to the persistent changes in the field of computers and networks, the description of the computer system 910 described in Fig. 9 is merely a specific example for the purpose of illustrating some implementations. Many other configurations of the computer system 910 may have more or fewer components than the one shown in Fig. 9 depicted computer system.
[0075] In situations where systems described herein collect or utilize personal information about users, users may be provided with control over whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, occupation, a user's preferences, or a user's current geographic location), or they may be provided with control over whether and / or how content that may be more relevant to the user is obtained from the content server. In addition, certain data may be treated in one or more ways before it is stored or used so that personally identifiable information is removed.For example, a user's identity may be treated in such a way that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized, extracting geographic location information (such as a city, ZIP code, or state level) so that a specific geographic location of the user cannot be determined. Therefore, the user may have control over how information about them is collected or used.
[0076] Although various implementations are described and illustrated herein, a variety of other mechanisms and / or structures may be employed to perform the function and / or achieve the results and / or achieve one or more of the advantages described herein, and each such variation and / or modification is intended to be encompassed within the scope of the implementations as described herein. More specifically, any parameters, dimensions, materials, and configurations described herein are to be considered exemplary, and the actual parameters, dimensions, materials, and / or configurations shall depend on the specific application or applications to which the inventive teachings are applied.Those skilled in the art will recognize or be able to devise, using merely routine practice, many equivalents of the specific implementations described herein. It is therefore to be understood that the aforementioned embodiments are presented by way of example only, and that, within the scope of the appended claims and their equivalents, embodiments of the invention may be practiced otherwise than as specifically described and claimed. Implementations of the present description are directed to each individual feature, system, article, material, kit, and / or method described herein.In addition, any combination of two or more such features, systems, articles, materials, kits, and / or methods, provided that such features, systems, articles, materials, kits, and / or methods are not mutually inconsistent, is encompassed within the scope of the present disclosure.
Claims
[1] Computer-implemented method comprising: operating (702), by a client computing device operated by a user, an instance of a personal assistant module to serve the user while operating the client computing device, the instance of the personal assistant module having access to a persistent record of a message exchange thread between the user and one or more instances of the personal assistant module; detecting (704), by the personal assistant module instance, one or more indications sent from the persistent messaging thread, wherein the one or more indications trigger inclusion in the persistent messaging thread of one or more selectable links to one or more applications different from the personal assistant module instance; identifying (706) by the instance of the personal assistant module the one or more candidate applications installed on a client computing device operated by the user, wherein the one or more candidate applications are associated with contents of the message exchange thread; and including (710), by the instance of the personal assistant module, one or more selectable links in a transcript of the message exchange thread displayed in a graphical user interface rendered on the client computing device, each selectable link being operable by the user to cause the client computing device to reveal to the user an interface associated with a corresponding candidate application; wherein identifying (706, 708) comprises identifying, as a candidate application, a web browser installed on the client computing device in response to a determination that a given application associated with contents of the messaging thread is not installed on the given client computing device; and wherein the including (710) comprises including in the transcript a selectable link to an interactive web page, wherein the interactive web page includes functionality corresponding to the functionality of the given application that is not installed on the client computing device, and / or including in the transcript a selectable link to a web page associated with downloading an installer of the corresponding application. [2] The computer-implemented method of claim 1, wherein the client computing device is one of a plurality of client computing devices operated by the user, and each of the plurality of client computing devices is configured to operate a separate instance of the personal assistant module with access to the persistent messaging thread. [3] The computer-implemented method of claim 2, wherein the one or more indications comprise a plurality of messages included in the persistent message exchange thread of different client computing devices of the plurality of client computing devices. [4] A computer-implemented method according to any one of the preceding claims, wherein the identifying is performed by one or more processors spatially remote from the client computing device and data indicative of one or more selectable links is downloaded from the client computing device. [5] The computer-implemented method of claim 4, further comprising selecting a subset of the one or more downloaded or selectable links for display based on the one or more information signals. [6] The computer-implemented method of claim 5, wherein the one or more information signals comprise a frequency of use of the one or more candidate applications. [7] A computer-implemented method according to any one of the preceding claims, wherein the identifying is performed by one or more of the processors inherent in the client computing device. [8] A computer-implemented method according to any preceding claim, wherein the one or more indications are sent from the contents of the message exchange thread. [9] The computer-implemented method of claim 8, wherein the one or more hints include a keyword or key phrase associated with a particular application. [10] A computer-implemented method according to any one of the preceding claims, wherein the graphical user interface includes an operable portion and a persistent portion, wherein the transcript is rendered in the persistent portion and the operable portion includes one or more graphical elements operable to include content in the message exchange thread, and wherein the method further comprises: selectively incorporating, by one or more processors based on the one or more signals, at least one non-persistent selectable link to the operable portion of the graphical user interface based on the one or more signals, wherein the at least one non-persistent selectable link is operable by the user to cause the client computing device to reveal to the user an interface associated with a particular candidate application. [11] The computer-implemented method of claim 10, wherein the one or more signals comprise an interaction history between the user and the particular candidate application. [12] A system comprising one or more processors and a memory storing instructions that, when executed by one or more processors, cause the one or more processors to: Operating (702) an instance of a personal assistant module to serve a user while the user is operating a client computing device, the instance of the personal assistant module having access to a persistent record of a message exchange thread between the user and the one or more instances of the personal assistant module; detecting (704) one or more indications sent by the persistent messaging thread, the one or more indications triggering inclusion in the persistent messaging thread of one or more selectable links to one or more applications different from the instance of the personal assistant module; Identifying (706) one or more candidate applications installed on the client computing device operated by the user, wherein the one or more candidate applications are assigned to contents of the message exchange thread; and including (710) one or more selectable links in a transcript of the message exchange thread displayed on a graphical user interface displayed on the client computing device, each selectable link operable by the user to cause the client computing device to reveal to the user an interface associated with a corresponding candidate application; wherein identifying (706, 708) comprises identifying, as a candidate application, a web browser installed on the client computing device in response to a determination that a given application associated with contents of the messaging thread is not installed on the given client computing device; and wherein the including (710) comprises including in the transcript a selectable link to an interactive web page, wherein the interactive web page includes functionality corresponding to the functionality of the given application that is not installed on the client computing device, and / or including in the transcript a selectable link to a web page associated with downloading an installer of the corresponding application. [13] The system of claim 12, wherein the client computing device is one of a plurality of client computing devices operated by the user, and wherein each of the plurality of client computing devices is configurable to operate a separate instance of the personal assistant module with access to the persistent messaging thread. [14] The system of claim 13, wherein the one or more indications comprise a plurality of messages included in the persistent message exchange thread of different client computing devices of the plurality of client computing devices. [15] The system of any of claims 12-14, wherein the identifying is performed by one or more processors spatially remote from the given client computing device and data indicative of one or more selectable links is downloaded to the respective client computing device. [16] The system of claim 15, further comprising instructions to select a subset of the one or more downloaded or selectable links for display based on the one or more information signals. [17] The system of claim 16, wherein the one or more information signals comprise a frequency of use of the one or more candidate applications. [18] The system of any of claims 12-17, wherein the identifying is performed by one or more of the processors inherent in the respective client computing device. [19] The system of any of claims 12-18, wherein the one or more indications are sent from the contents of the message exchange thread. [20] At least one non-transitory computer-readable medium comprising instructions that, in response to execution of the instructions by a client computing device operated by a user, cause the client computing device to perform the following operations: operating (702) an instance of a personal assistant module to serve the user while the user operates the client computing device, the instance of the personal assistant module having access to a persistent record of a message exchange thread between the user and the one or more instances of the personal assistant module; detecting (704), by the personal assistant module instance, one or more indications sent from the persistent messaging thread, wherein the one or more indications trigger inclusion in the persistent messaging thread of one or more selectable links to one or more applications different from the personal assistant module instance; identifying (706), by the instance of the personal assistant module, the one or more candidate applications installed on a client computing device operated by the user, wherein the one or more candidate applications are associated with the contents of the message exchange thread; and including (710), by the instance of the personal assistant module, one or more selectable links in a transcript of the message exchange thread displayed in a graphical user interface rendered on the client computing device, each selectable link being operable by the user to cause the client computing device to reveal to the user an interface associated with a corresponding candidate application; wherein identifying (706, 708) comprises identifying, as a candidate application, a web browser installed on the client computing device in response to a determination that a given application associated with contents of the messaging thread is not installed on the given client computing device; and wherein the including (710) comprises including in the transcript a selectable link to an interactive web page, wherein the interactive web page includes functionality corresponding to the functionality of the given application that is not installed on the client computing device, and / or including in the transcript a selectable link to a web page associated with downloading an installer of the corresponding application. [21] The at least one non-transitory computer-readable medium of claim 20, including instructions that cause the one or more processors, in response to the one or more processors executing the instructions, to perform the method of any one of claims 2 to 11. [22] Apparatus configured to perform the method according to any one of claims 1 to 11. [23] A computer program comprising machine-readable instructions which, when executed by the computing device, cause the method of any one of claims 1 to 11 to be performed.
Citation Information
Patent Citations
Generic virtual personal assistant platform
US20130152092A1
Virtual Assistant Transfer between Smart Devices
US20140245140A1
Mapping actions and objects to tasks
US20150121216A1
Providing automatic actions for mobile onscreen content
US20160055246A1
Evaluating transcriptions with a semantic parser
US8868409B1