Group chat with chat robot
By integrating chatbots into group chat systems, generating and storing chatbot messages, and utilizing personas to generate responses, the problem of inefficient content generation and sharing in group chats is solved. This achieves the persistence and contextual integrity of chatbots in multi-user group dialogues, improving the integration and usefulness of chatbots.
Patent Information
- Application Number
- CN202480026220.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2024-03-20
- Filing Date
- 2024-04-17
- Publication Date
- 2025-12-23
AI Technical Summary
Existing group chat systems lack robust tools that enable users to easily generate and share content during group chats. Chatbots lack integration in group conversations among multiple real users, resulting in inefficiency. Furthermore, chatbot contributions lack persistence and full context across groups.
By integrating chatbots into group chat systems, generating and storing chatbot mention and response messages, generating responses using personas, providing chatbot notifications in user systems, supporting the deletion and context maintenance of chatbot mention messages, and enabling coordination and content sharing between chatbots and multiple users.
It improves the efficiency of content generation and sharing in group chats, enhances the persistence and contextual integrity of chatbot contributions in group dialogues, and promotes the integration and usefulness sharing of chatbots in multi-user group dialogues.
Smart Images

Figure CN121195488A_ABST
Abstract
Description
[0001] Priority Statement
[0002] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 460,194, filed April 18, 2023, and U.S. Patent Application No. 18 / 611,225, filed March 20, 2024, each of which is incorporated herein by reference in its entirety. Technical Field
[0003] This disclosure generally relates to interactive platforms, and more particularly to providing interactive interfaces to users of interactive platforms. Background Technology
[0004] Users enjoy accessing the interactive platform to share content with other users. Additionally, users enjoy chatting with chatbots. Attached Figure Description
[0005] In accompanying drawings that are not necessarily drawn to scale, the same reference numerals can describe similar parts in different views. To facilitate identification of any discussion of a particular element or action, one or more of the highest digits in the reference numerals indicate the drawing number in which the element was first introduced. Some non-limiting examples are shown in the accompanying drawings:
[0006] Figure 1 It is a diagrammatic representation of a networked environment in which the content of this disclosure can be deployed, based on some examples.
[0007] Figure 2 It is a graphical representation of a messaging system with both client-side and server-side functionality, based on some examples.
[0008] Figure 3A This is a block diagram based on some example chatbot systems.
[0009] Figure 3B It is a flowchart of the chatbot interaction process between a user and a chatbot system, based on some examples.
[0010] Figure 4A It is a deployment diagram of the components of a group chat system during a group chat session between two or more users and a chatbot, based on some examples.
[0011] Figure 4B It is a collaboration diagram based on some examples of interactions between components of an interactive platform during a group chat session.
[0012] Figure 4C It is a flowchart of the processing of a group chat session based on some examples.
[0013] Figure 4D and Figure 4E These are illustrations of the user interface during a group chat session, based on some examples.
[0014] Figure 5 The machine learning pipeline is shown based on some examples.
[0015] Figure 6 The training and use of machine learning programs are illustrated using some examples.
[0016] Figure 7 It is a graphical representation based on examples such as data structures maintained in a database.
[0017] Figure 8 It is a graphical representation based on some example messages.
[0018] Figure 9 This is a flowchart illustrating access restriction processing based on some examples.
[0019] Figure 10 It is a graphical representation of a machine in the form of a computer system, based on some examples, within which a set of instructions can be executed to cause the machine to perform any or more of the methods discussed herein.
[0020] Figure 11 This is a block diagram illustrating a software architecture based on some examples. Detailed Implementation
[0021] Interactive platforms (e.g., social platforms, social media platforms, extended reality (XR) platforms, applications, messaging platforms, XR applications, operating systems, game systems or applications, systems with which users interact, interactive systems, etc.) provide users with ways to interact with other users. For some users, interaction with interactive platforms can be enhanced through chatbots that allow them to interact with the platform. Chatbots can be used for a variety of purposes, including providing users with ways to generate content for publication on interactive platforms, edit existing content, and receive suggestions in the form of posts published on interactive platforms.
[0022] Group chat enables multiple users to communicate in real time via messaging. However, current group chat systems have some limitations. One problem is the lack of robust tools that allow users to easily generate and share content during group chats. For example, if a user wants to create a meme or other image to share with the group, they typically need to exit the chat app, use a separate image editing app, and then re-enter the chat to share the meme or other image. This disrupts the real-time flow of the conversation.
[0023] Chatbots operate independently in one-on-one conversations with a single user. They lack integration with ongoing group conversations between multiple real users. This is inefficient because chatbots have useful features, such as generating content or providing information, that could benefit the entire group conversation, not just a single user.
[0024] While chatbots can have useful features, they primarily operate in one-on-one conversations with a single user. This model is inefficient for group conversations between multiple real users for several reasons. First, the entire group does not benefit from the chatbot's functionality. For example, if a chatbot provides useful information to one user, other users in the group chat do not have access to that information. Second, the chatbot's contribution lacks persistence across the group. For instance, if a chatbot has a relevant conversation with one user, the context and content of that conversation are not maintained for the rest of the group. Third, there is no coordination of the chatbot experience in group chat settings, where multiple users may interact with the chatbot in an overlapping or redundant manner without centralized coordination. Finally, the lack of a complete context in the group conversation limits the chatbot's ability to add value without visibility into the entire discussion flow and the interests of all users. Overall, the one-on-one chatbot model introduces fragmentation, prevents usefulness from being shared, and inhibits integration into group conversations.
[0025] In some examples, the group chat system receives chatbot mention messages from the user systems of users in the group chat session, where the chatbot mention messages include chatbot tips created by the users. The group chat system uses the chatbot mention messages to generate tips and uses those tips to generate chatbot response messages. The group chat system then provides the chatbot response messages to one or more other user systems of one or more other users in the group chat session.
[0026] In some examples, the group chat system stores one or more stored chatbot mention messages and one or more stored chatbot response messages associated with a user, and uses one or more stored chatbot mention messages to generate context for the prompts.
[0027] In some examples, in response to the group chat system determining that the chatbot mention message is the first chatbot mention message in the group chat session, the group chat system provides a chatbot notification describing the chatbot's actions to one or more users in the group chat session.
[0028] In some examples, group chat systems use chatbot personas to generate responses.
[0029] In some examples, in response to a deletion message request received by the group chat system from a user, one or more stored chatbot mention messages and one or more stored chatbot response messages are deleted.
[0030] In some examples, deleting one or more stored chatbot mention messages and one or more stored chatbot tip messages includes: immediately deleting one or more stored chatbot mention messages and one or more stored chatbot tip messages from short-term data storage using a message deletion policy, and deleting one or more stored chatbot mention messages and one or more stored chatbot tip messages from long-term data storage.
[0031] In some examples, one or more stored chatbot mention messages and one or more stored chatbot response messages are associated with two or more users in a group chat session. The group chat system uses one or more stored chatbot mention messages and one or more stored chatbot response messages to generate context for each user in the group chat session.
[0032] Other technical features will be readily apparent to those skilled in the art from the following figures, description and claims.
[0033] Networked computing environment
[0034] Figure 1 This is a block diagram illustrating an example interactive platform 100 for facilitating interactions on a network, such as exchanging text messages, making text audio and video calls, or playing games. The interactive platform 100 includes multiple user systems 102, each hosting multiple applications including an interactive client 104 and other applications 106. Each interactive client 104 is communicatively coupled to other instances of the interactive client 104 (e.g., hosted on corresponding other user systems 102), an interactive server system 110, and a third-party server 112 via one or more communication networks including a network 108 (e.g., the Internet). The interactive client 104 can also communicate with the locally hosted applications 106 using an application programming interface (API).
[0035] Each user system 102 may include multiple user devices, such as mobile devices 114, head-mounted devices 116, and computer client devices 118, which are communicatively connected to exchange data and messages.
[0036] Interactive client 104 interacts with other interactive clients 104 and with interactive server system 110 via network 108. The data exchanged between interactive clients 104 (e.g., interaction 120) and between interactive client 104 and interactive server system 110 includes functions (e.g., commands for activating functions) and payload data (e.g., text, audio, video, or other multimedia data).
[0037] Interactive server system 110 provides server-side functionality to interactive client 104 via network 108. While some functions of interactive platform 100 are described herein as being performed by interactive client 104 or interactive server system 110, the location of certain functions within interactive client 104 or interactive server system 110 may be a design choice. For example, it may be technically preferred that specific technologies and functions are initially deployed within interactive server system 110, but later migrated to interactive client 104 of user system 102 with sufficient processing power.
[0038] The interactive server system 110 supports various services and operations provided to the interactive client 104. Such operations include sending data to and receiving data from the interactive client 104, and processing data generated by the interactive client 104. This data may include message content, client device information, geolocation information, media enhancements and overlays, message content persistence conditions, interactive platform information, and live event information. Data exchange within the interactive platform 100 is activated and controlled via functions available through the user interface (UI) of the interactive client 104.
[0039] Specifically, turning to interactive server system 110, application programming (API) server 122 is coupled to interactive server 124 and provides it with a programming interface, making the functionality of interactive server 124 accessible to interactive client 104, other applications 106, and third-party server 112. Interactive server 124 is communicatively coupled to database server 126, thereby facilitating access to database 128, which stores data associated with the interactions processed by interactive server 124. Similarly, web server 130 is coupled to interactive server 124 and provides a web-based interface to interactive server 124. To this end, web server 130 handles incoming network requests via Hypertext Transfer Protocol (HTTP) and several other related protocols.
[0040] API server 122 receives and sends interactive data (e.g., command and message payloads) between interactive server 124 and user system 102 (as well as interactive client 104 and other applications 106) and third-party server 112. Specifically, API server 122 provides a set of interfaces (e.g., routines and protocols) that interactive client 104 and other applications 106 can call or query to activate the functionality of interactive server 124. API server 122 exposes various functions supported by interactive server 124, including account registration; login functionality; sending interactive data from one interactive client 104 to another interactive client 104 via interactive server 124; transferring media files (e.g., images or videos) from interactive client 104 to interactive server 124; setting media data sets (e.g., stories); retrieving the friend list of users in user system 102; retrieving information and content; adding and deleting entities (e.g., friends) against an entity graph (e.g., a social graph); locating friends within the social graph; and opening (e.g., application events associated with interactive client 104).
[0041] Interactive server 124 hosts multiple systems and subsystems, as shown below. Figure 2 Describe it.
[0042] Application of links
[0043] Returning to interactive client 104, the features and functionality of external resources (e.g., linked application 106 or applet) become available to the user via the interface of interactive client 104. In this context, "external" refers to the fact that application 106 or applet is outside of interactive client 104. External resources are typically provided by third parties, but may also be provided by the creator or provider of interactive client 104. Interactive client 104 receives user selections regarding options for launching or accessing the features of such external resources. External resources may be application 106 installed on user system 102 (e.g., a "local app"), or hosted on user system 102 or located remotely on user system 102 (e.g., in...). Figure 1 A smaller version of the application (e.g., a "mini-program") is hosted on a third-party server 112. The smaller version of the application includes a subset of the application's features and functionalities (e.g., a full-scale local version of the application) and is implemented using markup language documentation. In some examples, the smaller version of the application (e.g., a "mini-program") is a web-based markup language version of the application and is embedded in the interactive client 104. Besides using markup language documentation (e.g., ... In addition to files, mini-programs can include scripting languages (e.g., (files or .json files) and stylesheets (e.g., document).
[0044] In response to receiving a user selection of an option for launching or accessing an external resource, interactive client 104 determines whether the selected external resource is a web-based external resource or a locally installed application 106. In some cases, application 106, locally installed on user system 102, can be launched independently of and separately from interactive client 104, for example, by selecting the icon corresponding to application 106 on the home screen of user system 102. A smaller version of such an application can be launched or accessed via interactive client 104, and in some examples, no part of the smaller application can be accessed outside of interactive client 104, or only a limited portion of the smaller application can be accessed outside of interactive client 104. A smaller application can be launched by receiving, for example, markup language documents associated with the smaller application from third-party server 112 and processing such documents via interactive client 104.
[0045] In response to determining that the external resource is a locally installed application 106, the interactive client 104 instructs the user system 102 to launch the external resource by executing locally stored code corresponding to the external resource. In response to determining that the external resource is a web-based resource, the interactive client 104 communicates with a third-party server 112 (e.g.) to obtain a markup language document corresponding to the selected external resource. The interactive client 104 then processes the obtained markup language document to present the web-based external resource within the user interface of the interactive client 104.
[0046] Interactive client 104 can notify users of user system 102 or other users (e.g., "friends") associated with such users of one or more external resources of ongoing activity. For example, interactive client 104 can provide participants in a conversation (e.g., a chat session) within interactive client 104 with notifications related to external resources currently or recently used by one or more members of a group of users. One or more users can be invited to join an active external resource or to activate a recently used but currently inactive external resource (within the group of friends). External resources can provide participants in the conversation, each using their respective interactive client 104, with the ability to share items, conditions, states, or locations within the external resource with one or more members of a group of users during the chat session. Shared items can be interactive chat cards that chat members can use to interact with, for example, activate the corresponding external resource, view specific information within the external resource, or take chat members to a specific location or state within the external resource. Within a given external resource, response messages can be sent to users on interactive client 104. Based on the current context of the external resource, the external resource can selectively include different media items in the response.
[0047] Interactive client 104 can present a list of available external resources (e.g., application 106 or mini-program) to the user to launch or access a given external resource. This list can be presented as a context-sensitive menu. For example, the icons representing different applications (or mini-programs) of application 106 (or mini-program) can change based on how the user launches the menu (e.g., from a conversational interface or from a non-conversational interface).
[0048] System Architecture
[0049] Figure 2 This is a block diagram illustrating further details of interactive platform 100 according to some examples. Specifically, interactive platform 100 is shown as including interactive client 104 and interactive server 124. Interactive platform 100 includes multiple subsystems, which are supported on the client side by interactive client 104 and on the server side by interactive server 124. Example subsystems will be discussed below.
[0050] The image processing system 202 provides various functions that enable users to capture and enhance (e.g., enhance or otherwise modify or edit) media content associated with a message.
[0051] The camera device system 204 includes (e.g., in a camera device application) control software that (e.g., directly or via an operating system) interacts with and controls the camera device hardware of the user system 102 to modify and enhance real-time images captured and displayed via the interactive client 104.
[0052] Enhancement system 206 provides images captured in real time by the camera device of user system 102 or from ( Figure 1 The enhancement system 206 is responsible for generating and publishing enhancements (e.g., media overlays) of images retrieved from the memory of the user system 102. For example, the enhancement system 206 is operable to select, present, and display media overlays (e.g., image filters or image lenses) for the interactive client 104 to enhance real-time images received via the camera device system 204 or stored images retrieved from the memory of the user system 102. These enhancements are selected and presented to the user of the interactive client 104 by the enhancement system 206 based on some inputs and data, such as:
[0053] • The geographical location of user system 102; and
[0054] • User interactive platform information for users in user system 102.
[0055] Enhancements may include audio and visual content and visual effects. Examples of audio and visual content include images, text, logos, animations, and sound effects. Examples of visual effects include color overlays. Audio and visual content or visual effects may be applied to media content items (e.g., photos or videos) at user system 102 for transmission in messages, or to video content such as video content streams or feeds sent from interactive client 104. Therefore, image processing system 202 can interact with and support various subsystems of communication system 208, such as messaging system 210 and video communication system 212.
[0056] Media overlays may include text or image data that can be superimposed on photographs taken by user system 102 or video streams produced by user system 102. In some examples, media overlays may be location overlays (e.g., Venice Beach), names of live events, or names of businesses (e.g., beach cafes). In other examples, image processing system 202 uses the geolocation of user system 102 to identify media overlays that include the names of businesses located at the geolocation of user system 102. Media overlays may include additional tags associated with businesses. Media overlays may be stored in database 128 and accessed through database server 126.
[0057] Image processing system 202 provides a user-based publishing platform that allows users to select a geographic location on a map and upload content associated with that location. Users can also specify which media overlays should be provided to other users. Image processing system 202 generates a media overlay that includes the uploaded content and associates it with the selected geographic location.
[0058] The augmented reality creation system 214 supports augmented reality developer platforms and includes applications for content creators (e.g., artists and developers) to create and publish interactive clients 104, such as augmented reality experiences. The augmented reality creation system 214 provides content creators with a library of built-in features and tools, including, for example, custom shaders, tracking technologies, and templates.
[0059] In some examples, enhancement creation system 214 provides a merchant-based publishing platform that enables merchants to select specific enhancements associated with geolocation via a bidding process. For example, enhancement creation system 214 associates the media overlay of the highest bidder with a corresponding geolocation for a predefined amount of time.
[0060] Communication system 208 is responsible for enabling and processing various forms of communication and interaction within interactive platform 100, and includes messaging system 210, chatbot system 232, audio communication system 216, and video communication system 212. Messaging system 210 is responsible for enabling temporary or time-limited access to content by interactive client 104. Messaging system 210 includes multiple timers within a short-lived timer system (not shown) that selectively enable access (e.g., for presentation and display) of messages and associated content via interactive client 104 based on duration and display parameters associated with a message or set of messages (e.g., a story). Further details regarding the operation of the short-lived timer system are provided below. Audio communication system 216 enables and supports audio communication (e.g., real-time audio chat) between multiple interactive clients 104. Similarly, video communication system 212 enables and supports video communication (e.g., real-time video chat) between multiple interactive clients 104. Chatbot system 232 is responsible for generating responses to prompts received from users and conveying those responses.
[0061] User management system 218 is operationally responsible for managing user data and profiles, and includes entity relationship system 220, which maintains interactive platform information related to the relationships between entities using interactive platform 100.
[0062] The collection management system 222 is operationally responsible for managing groups or collections of media (e.g., collections of text, images, video, and audio data). Collections of content (e.g., messages, including images, videos, text, and audio) can be organized into "event galleries" or "event stories." Such collections can be made available for a specified time period (e.g., the duration of the event to which the content relates). For example, content related to a concert can be available as a "story" for the duration of the concert. The collection management system 222 can also be responsible for publishing icons that notify the user interface of the interactive client 104 of the availability of specific collections. The collection management system 222 includes curation functions that enable collection managers to manage and curate specific content collections. For example, a curation interface enables event organizers to curate collections of content related to a specific event (e.g., removing inappropriate content or redundant messages). Additionally, the collection management system 222 employs machine vision (or image recognition technology) and content rules to automatically curate content collections. In some examples, users may be compensated for including user-generated content in a collection. In such cases, the collection management system 222 operates to automatically pay such users for using their content.
[0063] Map system 224 provides various geolocation functions and supports the presentation of map-based media content and messages by interactive client 104. For example, map system 224 enables the display (e.g., stored in profile data 702) of user icons or avatars on a map to indicate the current or past locations of the user's "friends" within the context of the map, as well as media content generated by such friends (e.g., a collection of messages including photos and videos). For example, on the map interface of interactive client 104, messages posted by a user from a specific geolocation to interactive platform 100 can be displayed to the specific user's "friends" within the context of that specific location on the map. Users can also share their location and status information with other users of interactive platform 100 via interactive client 104 (e.g., using an appropriate status avatar), where the location and status information is similarly displayed to selected users within the context of the map interface of interactive client 104.
[0064] Game system 226 provides various game functions within the context of interactive client 104. Interactive client 104 provides a game interface that offers a list of available games that can be initiated by a user within the context of interactive client 104 and played with other users on interactive platform 100. Interactive platform 100 also enables specific users to invite other users to participate in specific games by sending invitations from interactive client 104. Interactive client 104 also supports sending and receiving audio, video, and text messages (e.g., chat) within the context of playing the game, provides leaderboards for the game, and also supports providing in-game rewards (e.g., game currency and items).
[0065] External resource system 228 provides interactive client 104 with an interface to communicate with remote servers (e.g., third-party server 112) to launch or access external resources (i.e., applications or applets). Each third-party server 112 hosts applications or smaller versions of applications (e.g., game applications, utility applications, payment applications, or ride-sharing applications) based on markup languages (e.g., HTML5). Interactive client 104 can launch web-based resources (e.g., applications) by accessing HTML5 files from the third-party server 112 associated with the web-based resource. The application hosted by the third-party server 112 is programmed in JavaScript using a software development kit (SDK) provided by interactive server 124. The SDK includes application programming interfaces (APIs) with functionality that can be called or activated by the web-based application. Interactive server 124 hosts a JavaScript library that provides access to a given external resource for specific user data of interactive client 104. HTML5 is an example of a technology used for programming games, but applications and resources programmed using other technologies can be used.
[0066] To integrate the SDK's functionality into the web-based resource, the third-party server 112 downloads the SDK from the interactive server 124, or the third-party server 112 otherwise receives the SDK. Once downloaded or received, the SDK is included as part of the application code of the web-based external resource. The code of the web-based resource can then call or activate certain functions of the SDK to integrate the features of the interactive client 104 into the web-based resource.
[0067] The SDK stored on the interactive server system 110 effectively bridges the gap between external resources (e.g., application 106 or applet) and the interactive client 104. This provides users with a seamless experience communicating with other users on the interactive client 104 while preserving the appearance of the interactive client 104. To bridge communication between the external resources and the interactive client 104, the SDK facilitates communication between the third-party server 112 and the interactive client 104. The WebViewJavaScriptBridge running on the user system 102 establishes two unidirectional communication channels between the external resources and the interactive client 104. Messages are sent asynchronously between the external resources and the interactive client 104 via these communication channels. Each SDK function activation is sent as a message and callback. Each SDK function is implemented by constructing a unique callback identifier and sending a message with that callback identifier.
[0068] By using the SDK, not all information from the interactive client 104 is shared with the third-party server 112. The SDK limits which information is shared based on the needs of the external resources. Each third-party server 112 provides the interactive server 124 with an HTML5 file corresponding to the web-based external resource. The interactive server 124 can add a visual representation (e.g., box design or other graphics) of the web-based external resource to the interactive client 104. Once the user selects the visual representation or instructs the interactive client 104 to access the features of the web-based external resource through the interactive client 104's GUI, the interactive client 104 obtains the HTML5 file and instantiates the resource for accessing the features of the web-based external resource.
[0069] Interactive client 104 presents a graphical user interface (GUI) for an external resource (e.g., a login page or title screen). During, before, or after presenting the login page or title screen, interactive client 104 determines whether the initiated external resource has previously been authorized to access user data of interactive client 104. In response to determining that the initiated external resource has previously been authorized to access user data of interactive client 104, interactive client 104 presents another GUI for the external resource, including its functionality and characteristics. In response to determining that the initiated external resource has not previously been authorized to access user data of interactive client 104, after displaying the login page or title screen of the external resource for a threshold time period (e.g., 3 seconds), interactive client 104 slides up a menu (e.g., animates the menu to appear from the bottom of the screen to the middle of the screen or other parts) to authorize the external resource to access user data. This menu identifies the type of user data authorized for use by the external resource. In response to receiving a user selection of the accept option, interactive client 104 adds the external resource to the list of authorized external resources and allows the external resource to access user data from interactive client 104. External resources are authorized by the interactive client 104 to access user data under the OAuth 2 framework.
[0070] Interactive client 104 controls the type of user data shared with external resources based on the type of authorized external resource. For example, it provides access to a first type of user data (e.g., two-dimensional avatars of users with or without different avatar characteristics) to external resources including full-scale applications (e.g., application 106). As another example, it provides access to a second type of user data (e.g., payment information, two-dimensional avatars of users, three-dimensional avatars of users, and avatars with various avatar characteristics) to external resources including smaller versions of applications (e.g., web-based versions of applications). Avatar characteristics include different ways of customizing the appearance of an avatar (e.g., different poses, facial features, clothing, etc.).
[0071] The advertising system 230 is operationally designed to enable third parties to purchase advertisements to be presented to end users via the interactive client 104, and also handles the delivery and presentation of these advertisements.
[0072] Figure 3A This is a block diagram of a chatbot system 300 that implements chatbot 344 based on some examples. Figure 3B This is a flowchart illustrating the processing of chatbot methods based on some examples. The interactive platform uses a chatbot system 300 to implement a chatbot 344, which interacts with a user 342 on the interactive platform and can be configured by the user 342 to personalize the chatbot 344.
[0073] In some examples, the chatbot system 300 is a software platform designed to simulate human conversation through voice commands or text chat. The chatbot system 300 can employ natural language processing (NLP) and machine learning (ML) / artificial intelligence methods to understand and interpret the input of user 342 and generate responses 316.
[0074] In some examples, the chatbot architecture includes one or more Natural Language Understanding (NLU) components (e.g., NLU component 320) and one or more dialogue management components (e.g., dialogue management component 318). NLU component 320 is responsible for understanding the intent 328 of user 342 and extracting relevant information (e.g., cue 310) from the user's input. This is achieved by analyzing the cue 310 and mapping it to the intent. NLU component 320 can use various methods to understand the user's input, such as rule-based systems, statistical models, large language models (LLMs), neural networks, etc. Dialogue management component 318 generates a response 316 to the user input. Dialogue management component 318 uses the intent 328 and any information extracted from NLU component 320 to determine the appropriate response 316. This can be accomplished using rule-based systems, decision trees, statistical models, LLMs, neural networks, etc. In some examples, NLU component 320 and dialogue management component 318 are a single component.
[0075] Once the NLU component 320 extracts relevant information from the cue 310 as the user 342's intent 328, the dialogue management component 318 generates an appropriate response 316. The dialogue management component 318 can generate responses in a human-like manner using methods such as, but not limited to, text generation and machine learning models.
[0076] In some examples, the NLU component 320 or the dialogue management component 318 may use a generative AI model 340 (e.g., LLM, etc.) to improve their natural language understanding and dialogue management capabilities. For example, the NLU component 320 uses the generative AI model 340 to analyze user input and extract relevant information, such as the user's and entity's intent. The dialogue management component 318 may also use the generative AI model 340 to identify and extract important information from unstructured text, such as the user's questions or requests. This can be accomplished using methods such as named entity recognition, part-of-speech tagging, sentiment analysis, etc. In some examples, the NLU component 320 directly passes a cue 310 to the generative AI model 340. The generative AI model 340 receives the cue 310 and generates a response 316. In a similar case, the dialogue management component 318 may receive an intent 328 and generate a generative AI model cue that is passed to the generative AI model 340. The generative AI model 340 receives the generative AI model cue and generates a response 316.
[0077] In operation 302, the chatbot system 300 receives a prompt 310 from the user system 314 during an interactive session. For example, the user 342 uses the user system 314 to access an interactive server hosting the chatbot system 300. The user 342 inputs a prompt, such as prompt 310, into the user system 314, and the user system 314 transmits prompt 310 to the chatbot system 300. In some examples, prompt 310 may include other types of data as well as text, such as, but not limited to, image data, video data, audio data, electronic documents, links to data stored on the Internet or on the user system 314, etc. Additionally, prompt 310 may include media, such as, but not limited to, audio media, image media, video media, text media, etc. Regardless of the data type of prompt 310, keyword attributes and extensions can be used to automatically generate clusters of keywords or attributes associated with the received prompt 310. For example, image recognition can be deployed to identify objects and locations associated with visual media and image data, and generate keyword clusters or clouds that are then associated with image-based prompts.
[0078] Furthermore, prompts can be received through any number of interfaces and I / O components (e.g., I / O component 1008) of the user system 102. These include gesture-based input from biometric components and input received via a brain-computer interface (BCI).
[0079] In some examples, the chatbot system 300 is integrated into various platforms (such as, but not limited to, websites, messaging applications, and mobile applications), enabling users to interact with the chatbot system via text or voice commands.
[0080] In operation 304, the chatbot system 300 uses user cues 310 to determine the intent 328 of user 342. For example, the NLU component 320 receives cues 310 and any user feedback 324, including follow-up messages from user 342, and uses an intent processing pipeline to determine intent 328. This pipeline uses Natural Language Processing (NLP) methods to map grouped conversations to a set of intent keywords and concepts. In addition to the keywords used in the original cues 310, stemmed keywords and expanded concepts are generated. The platform also assigns weights to each concept based on the importance of those concepts in the conversation. These keywords and concepts are aggregated and mapped to user 342 as part of an intent profile or intent vector with keywords and concepts weighted based on the importance of those keywords in the conversation.
[0081] In some examples, the chatbot system 300 associates a time factor with keywords or concepts, where the time factor decays over time. For instance, the chatbot system 300 attaches a time factor to keywords and concepts, indicating how fresh the concept should be for targeting and bidding. For example, "hotels in Cancun for spring vacations" and "wedding plans for next year" would have two different decay factors. In some examples, the chatbot system 300 applies a time factor to the conversation state.
[0082] In some examples, various signals or data are used to construct the user's overall intent. These signals or data include, for example, user demographics, location, device, engagement with the organic surface of the user interface and the characteristics of services provided by the interactive platform, consumption patterns, and overall friend graph proximity carrier signals or data that can be discerned from the user's affiliation with the interactive platform.
[0083] In some examples, the intent vector is an additional dimension used to refresh and update the intent profile stored in the user profile 322.
[0084] In some examples, the chatbot system 300 uses a user profile 322, which includes one or more data stores of the user 342's interactions with the interactive platform.
[0085] In some examples, the NLU component 320 uses artificial intelligence methods, including machine learning (ML) models, to generate intent 328. The chatbot system 300 uses data about the user's intent and the context of the conversation to improve its responsiveness and optimization capabilities over time by ingesting feedback. The chatbot system 300 collects user 342's engagement with advertisements, the organic surface of the interactive platform system (the user interface and services provided to the user by the interactive platform), and responses to the chatbot system 300 itself, and feeds this data into the NLU component 320. Therefore, the chatbot system 300 can fine-tune or further pre-train the ML model of the NLU component 320 to consider not only the user's intent but also subsequent actions to fine-tune the user intent reasoning model.
[0086] In some examples, the chatbot system 300 collects a set of cues during an interactive session. The chatbot system 300 maps this set of cues to a set of keywords and / or concepts, including an intent vector, as illustrated by the keywords and concepts. The chatbot system 300 assigns weights to keywords within this set of keywords and / or concepts based on a conversational importance score for the keywords and / or concepts, and determines the user's intent based on the intent vector including the weighted keywords and / or concepts.
[0087] In some examples, the chatbot system 300 stores the conversation state in a user profile 322 as part of a user database of a series of interactive sessions, allowing the chatbot system 300 to have context of conversations that occur in multiple interactive sessions.
[0088] In some examples, the knowledge base of chatbot system 300 includes a set of information that the chatbot can use to understand and respond to user input. This includes, but is not limited to, a predefined set of intents, entities, responses, and external information sources (such as databases or APIs). In some examples, intent information of one or more of user 342's friends can be used to understand, notify, and / or respond to the user's intents.
[0089] In operation 306, the chatbot system 300 uses a dialogue management component 318 to generate a response 316 using intent 328. For example, the dialogue management component 318 receives intent 328 and passes intent 328 as a generative AI model cue to generative AI model 340. Generative AI model 340 receives the generative AI model cue and generates response 316. Generative AI model 340 passes response 316 to dialogue management component 318. Dialogue management component 318 receives response 316 and passes response 316 to response filter component 312 for further processing. In some examples, dialogue management component 318 uses a set of additional services 332 (e.g., but not limited to an image generation system) to generate response 316. Dialogue management component 318 uses intent 328 to generate service request 334 and passes service request 334 to additional services 332. Additional services 332 use service request 334 to generate request response 336 and pass request response 336 to dialogue management component 318. The dialogue management component 318 uses request response 336 to generate response 316.
[0090] In some examples, the chatbot system 300 uses a response filter component 312 to filter the raw responses 326 generated by the dialogue management component 318. For instance, the dialogue management component 318 passes the raw responses 326 to the response filter component 312, and the response filter component 312 filters the raw responses 326 based on a set of filtering criteria to remove specified content from the raw responses 326, such as vulgar words or concepts, or content that some people might consider harmful. In some examples, the response filter component 312 generates a tailored intent 330 based on the filtered raw responses 326, and the dialogue management component 318 uses the tailored intent 330 to generate additional raw responses 326.
[0091] In some examples, the generative AI model 340 and additional services 332 are hosted on the same system that hosts other components of the chatbot system 300. In some examples, the generative AI model 340 and additional services 332 are hosted on a separate server system from the system hosting the chatbot system 300, and the chatbot system 300 communicates with the generative AI model 340 and additional services 332 over a network. For example, the chatbot system 300 receives a prompt 310 and forwards the prompt 310 to the generative AI model 340 residing on a separate server system. The generative AI model 340 receives the prompt 310 and generates an initial response 326. The generative AI model 340 then forwards the initial response 326 to the chatbot system 300. The chatbot system 300 receives the response for subsequent processing as described herein.
[0092] In some examples, as part of response 316, the chatbot system 300 generates a set of chatbot system prompts displayed by the user system 314 to the user 342, prompting the user 342 to interact with the chatbot system 300. The chatbot system prompts generated by the chatbot system 300 may include chat information, such as, but not limited to, context-sensitive material, instructions to the user 342, possible conversation topics, etc. In some examples, the chatbot system 300 uses chatbot system prompts to suggest conversation topics to the user 342 or to guide the user 342 through dialogue, such as providing guidance material on various topics. In some examples, the chatbot system prompts include suggestions of dialogue or questions designed to request the user 342 to input prompts from the user 342. The suggested chat is intended to help the user 342 obtain the information they need, but provides the beneficial side effect of generating additional user interactions with the chatbot system 300. These additional user interactions improve the chatbot system 300's ability to determine user intent by providing additional context and information to the chatbot system 300.
[0093] In some examples, the chatbot system 300 determines the personality or tone of responses generated by the chatbot system 300. For example, the chatbot system 300 stores the conversational state of user 342 as part of a user profile stored in user profile 322. The chatbot system 300 uses the conversational state of user 342 and demographic or other information to determine the personality or tone of user 342, for example by using a formal tone with older users and a more informal tone with younger users.
[0094] In some examples, user 342 specifically changes the "persona" interacting with the chatbot system by interacting with chatbot agent configuration component 338 and specifically requesting chatbot system 300 to respond or act in a specific way (e.g., "become more interesting", "answer with a riddle", etc.). In addition to modifying the personality or tone of the response, the visual interface presented by chatbot system 300 can also be changed to reflect the specific "persona" of chatbot system 300. In some examples, a swipe switch can be presented so that user 342 can select between menus of persona traits (e.g., "cheeky", "wry", "cute", etc.).
[0095] In operation 308, the chatbot system 300 transmits response 316 to the user system 314. The user system 314 receives response 316 and provides response 316 to the user 342.
[0096] In some examples, the system hosting the chatbot system 300 may not be a component of an interactive platform, but rather another interactive system that provides services and information to user groups, such as, but not limited to, a platform providing enterprise-wide connectivity to user groups such as company employees, clients of businesses providing professional services, and educational institutions. In some of these examples, the content provided to users may not be advertisements, but other types of useful information, such as company policies, project status messages, newsworthy events, etc.
[0097] In some examples, the chatbot system 300 uses additional services such as 332 to operatively connect to an Internet search engine, and users can use the chatbot system 300 as an intelligent search engine to search the Internet.
[0098] In some examples, the chatbot system 300 is operatively connected to a dedicated database via an additional service 332, and the user can use the chatbot system 300 as an intelligent search assistant for searching the dedicated database.
[0099] In some examples, the machine learning components of the NLU component 320, the dialogue management component 318, and the generative AI model 340 are continuously retrained or fine-tuned based on the user's interaction with the response 316. For example, the user's interaction with the response 316 is stored in an analytics database (not shown). Then, when the dialogue management component 318 provides a sequence of responses that generate a successful intent 328 and thus produce an appropriately oriented response 316, the metric of the interaction is used to reinforce the dialogue management component 318.
[0100] In some examples, the chatbot system 300 uses conversations between users and other chatbots as input to the NLU component 320 and / or the conversation management component 318. Other chatbots may be sponsored chatbots, custom chatbots created by users from self-service tools / templates, etc.
[0101] In some examples, the information extracted from the conversation by the chatbot system 300 focuses on the user's intent. Additionally, the chatbot system 300 facilitates the conversation by knowing the user's intent (e.g., if a user asks about good hotels in Cancun, the chatbot system 300 responds with, "Here's a list of hotels. I also know of a hotel with a great promotion, would you like to check it out?"). This provides the ability to extract the user's intent, match that intent with other content, and embed that content into the response 316. In some examples, a text component with additional content is used to fine-tune the response to the intent 328 determined by the NLU component 320 and / or the response 316 generated by the conversation management component 318. This improves the suggestions provided by the chatbot system 300 and enhances user engagement.
[0102] Figure 4A It is a deployment diagram of the components of a group chat system during a group chat session between two or more users and a chatbot, based on some examples. Figure 4B It is a collaboration diagram based on some examples of interactions between components of an interactive platform during a group chat session. Figure 4C It is based on some example group chat session processing flowcharts, and Figure 4D and Figure 4E This is an illustration of a user interface during a group chat session, based on some examples. Group chat system 400a enables two or more users (e.g., user 418 and user 422) to access interactive server system 110 and engage in a group chat session using their respective user systems (e.g., user system 416 and user system 420). During the group chat session, one or more users can invite chatbot 344 to join the group chat session. Interactive server system 110 implements chatbot 344 using chatbot system 300 of interactive platform 100. Chatbot system 300 joins the group chat session using messaging system 424 of interactive server system 110.
[0103] In operation 402, the user system (e.g., user system 416) detects a request from a user in the group chat session to include chatbot 344 in the group chat session. For example, user system 416 detects that a user has already included chatbot 344 in the group chat session. Figure 4D Chatbot mention 436 is entered into the group chat chatbot user interface 438 of the user system. In response to detecting chatbot mention 436, the interaction server system 110 determines whether chatbot 344 is already part of the group chat session. In response to determining that chatbot 344 is not yet part of the group chat session, the interaction server system 110 interprets chatbot mention 436 as a request from the user to include chatbot 344 in the group chat session.
[0104] In some examples, the interaction server system 110 enables users to control the inclusion of chatbots in group chat sessions based on the consent of all other participants. When the user system 416 detects a user's chatbot mention in the group chat session, the interaction server system 110 checks whether the user has specified that chatbot inclusion requires consent before generating a chatbot mention message.
[0105] If consent is required, the interaction server system 110 prompts other participants in the group chat session for approval to include the chatbot via the user system 416. The interaction server system 110 processes the chatbot mention message only if explicit consent has been received from all participants.
[0106] In some examples, users can pre-specify the consent requirement when creating a group chat. In this case, the interaction server system 110 checks that all participants have consented to the potential chatbot inclusion when joining the group chat. If all have consented, the interaction server system 110 will automatically process the chatbot mention message without additional prompts when it detects a chatbot mention. If consent is not required, the interaction server system 110 processes the chatbot mention message directly without confirmation from other users. This allows the requesting user to unilaterally include the chatbot.
[0107] In operation 404, user system 416 uses ( Figure 4D The chatbot mention 436 and chatbot prompt 440 generate a mention message 426 and transmit the mention message 426 to the messaging system 424, thereby indicating that the user has requested the chatbot to join the group chat session. For example, the user system 416 uses the fact that the chatbot 344 was mentioned by the user during the group chat session to annotate the mention message 426. In addition, the mention message 426 includes the information entered by the user when the user mentions the chatbot 344. Figure 4D The chatbot prompt 440. In some examples, the mention message 426 includes the user ID of the user who mentioned the chatbot 344. The user system 420 uses the application programming interface (API) of the interaction server system 110 to send the mention message 426 to the message sending and receiving system 424.
[0108] In operation 406, the chatbot system 300 generates a response to the chatbot prompt 440 in the mention message 426. For example, the messaging system 424 receives the mention message 426 and uses the mention message 426 to invoke the chatbot backend 430.
[0109] In some examples, mention message 426 includes an enabled @mention tag, and message sending and receiving system 424 stores a tag indicating that the message is @mentioned. In some examples, message sending and receiving system 424 stores one or more mention messages 426 in an indexable data store, allowing other components of interactive server system 110 to perform queries against the stored one or more mention messages 426.
[0110] The chatbot backend 430 uses the mention message 426 input by the user and the chatbot tip 440 to generate tip 432. Tip 432 includes the chatbot tip 440.
[0111] In some examples, the chatbot backend 430 provides additional contextual information to the chatbot prompts 440. For instance, the chatbot backend 430 stores various input and output parameters in short-term and long-term storage, which are useful for training generative AI models to improve the responses of the chatbot system 300 over time.
[0112] In some examples, the chatbot backend 430 receives new requests forwarded by the messaging system 424, tracks the group chat session history, and formulates prompts to be sent to the chatbot system 300.
[0113] In some examples, the chatbot backend 430 stores all chatbot mention messages, the corresponding user who initiated the chatbot mention message, and the corresponding chatbot response messages during the group chat session. The chatbot backend 430 uses each user's chatbot mention messages and corresponding chatbot response messages to generate context for each user's interaction with the chatbot 344 during the group chat session.
[0114] In some examples, one or more users in a group chat session personify chatbot 344 by defining personas for chatbot 344, such as Figure 3A As described in [the document]. Additionally, each chatbot mention message includes a user identifier of the user who initiated the chatbot mention message. The chatbot backend 430 uses the user identifier to determine the persona defined by the initiator of the chatbot mention message for chatbot 344. The chatbot backend 430 transmits the persona to the chatbot system 300, and the chatbot system 300 further uses the persona defined by the user who initiated the chatbot mention message to generate a response 428.
[0115] In some examples, the chatbot backend 430 uses short-term storage to store group chat session data, such as, but not limited to: user identifiers for each user in the group chat session; each message received and sent; timestamps for each message; metadata related to the models and parameters used to generate responses; and keywords extracted from each message that can help determine the context of the conversation.
[0116] In some examples, after a message is no longer relevant to the current conversation, the chatbot backend 430 moves the data to long-term storage in a location that facilitates offline processing of the data. In some examples, short-term and long-term storage are used as data sources for pre-training and fine-tuning generative AI models for the chatbot system 300.
[0117] In some examples, the stored data is used for: ingestion by the user profile service to enhance the platform's understanding of user interests; use by the discovery or monetization platform to help with ranking; and to learn user interests and preferences from previous conversations and leverage them in future conversations to make the chatbot system 300 more personalized.
[0118] In some examples, when a user sends a chatbot mention message, the chatbot backend 430 performs keyword detection on any topics that the platform deems sensitive, as an initial filter. In some examples, the chatbot backend 430 includes a set of platform policies for content filtering based on geographic and / or local legal systems.
[0119] In some examples, the chatbot backend 430 does not store conversations about a specified topic.
[0120] In some examples, the chatbot backend 430 attaches metadata to chatbot prompts or chatbot system 300 responses. For example, a specified number of previous messages from the conversation can be sent to chatbot system 300 as part of a user prompt. This provides chatbot system 300 with context related to the "follow-up" question as a previous topic. For example, if a user asks about restaurants in LA and then says "how are the bars?", chatbot system 300 uses location data from previous questions to suggest bars in LA.
[0121] In some examples, the chatbot system 300 generates stateful conversations based on conversation history stored in short-term and long-term storage. Much like how a real user's conversation history becomes visible to a real user when they type a message to a friend, the chatbot system 300 accesses previous messages in the conversation to understand the context of the latest message.
[0122] Any conversation history collected by the chatbot system 300 is captured and stored only with user approval and deleted upon user request. Furthermore, such data can be used for very limited purposes, such as prompting generative AI models. To ensure limited and authorized use of the conversation history data, access to it is restricted to authorized personnel (if applicable). Any use of the conversation history data can be strictly limited to the designated purpose, and the data will not be shared or sold to any third party without the user's explicit consent. Additionally, appropriate technical and organizational measures are implemented to ensure the security and confidentiality of this sensitive information.
[0123] In some examples, the chatbot system 300 enables multiple users in a group chat session to interact with the chatbot within the contextual flow of the group chat's dialogue. For instance, a first user can generate an initial prompt to the chatbot by mentioning it in the group chat. The chatbot system 300 uses natural language processing to create a response to this initial prompt. A second user can then follow up by mentioning the chatbot again and providing a second prompt, which is built upon the context of the dialogue history established by the first prompt and response. When generating a response to this second prompt, the chatbot system 300 backreferences the stored dialogue history from the first prompt and response, enabling it to create responses that understand the dialogue flow across multiple users. In this way, even when different users mention the chatbot and contribute prompts in a collaborative, interactive manner, the chatbot system 300 maintains contextual and stateful dialogue throughout the group chat session. Using the context created based on the chat history of all users across the group, the chatbot's responses remain consistent and are part of a continuous dialogue.
[0124] In some examples, the chatbot system 300 may not be retrained based on previous conversations. Thus, if the conversation is set to be deleted after being viewed by the user, the chatbot system 300 does not "remember" previous messages from the conversation.
[0125] In some examples, to replicate the "memory" concept of 300, the chatbot system 300 retains a copy of each message, regardless of the message deletion policy applied to the conversation. For example, the chatbot system 300 retains a specified number of messages, or retains messages based on a specified time period (e.g., 10 messages and / or a 30-minute conversation).
[0126] In some examples, the group chat system 400a establishes a history of mentioned messages across all users in a group chat session.
[0127] In some examples, the interactive server system 110 pre-trains the chatbot system 300 based on details of the interactive server system 110.
[0128] In some examples, chatbot 344 was pre-trained to behave like a real user in how it "reads" chat messages and displays presence and typing indicators when interacting with users on the platform.
[0129] In operation 406, the chatbot system 300 uses prompt 432 to generate response 428. For example, the chatbot backend 430 sends prompt 432 to the chatbot system 300. See reference... Figure 3A As described, the chatbot system 300 receives a prompt 432 and generates a response 428. The chatbot system 300 transmits the response 428 to the chatbot backend 430, and the chatbot backend 430 receives the response 428.
[0130] In some examples, the chatbot backend 430 logs mention message 426 and response 428 to short-term data storage. In some examples, the stored data for response 428 includes a source column that identifies that the stored response 428 comes from a mention in a group chat session, rather than a 1:1 conversation between the user and chatbot 344.
[0131] In some examples, the chatbot backend 430 sends prompt 432 and response 428 to the monetization component of the interaction server system 110.
[0132] In operation 408, the chatbot backend 430 uses mention message 426 and / or response 428 to determine whether the current mention of chatbot 344 is the first mention of chatbot 344 during the group chat session. For example, the chatbot backend 430 stores the incoming mention message 426 and the corresponding outgoing response 428 in a short-term data store during the group chat session. The chatbot backend 430 consults the short-term data store to determine whether the current mention message 426 and / or the current response 428 is the first mention message 426 and / or response 428 in the group chat session.
[0133] In response to determining that the current mention of chatbot 344 is the first mention of chatbot 344, in operation 410, the chatbot backend 430 provides a chatbot notification message to the users of the group chat session. For example, the chatbot backend 430 generates a chatbot notification message indicating that chatbot 344 is about to enter the group chat session, and transmits the chatbot notification message via message sending and receiving system 424 to the user systems (e.g., user system 416 and user system 420) of all users participating in the group chat session (e.g., user 418 and user 422).
[0134] In some examples, the group chat system 400a provides users with an option to opt out, allowing them to leave the group chat session. In some examples, the opt-out option includes an option that allows the user to prevent their personal information from being transmitted to the chatbot system 300 during the group chat session.
[0135] In some examples, the chatbot notification message includes information about what chatbot 344 is, how chatbot 344 behaves, and how the interaction server system 110 uses user data. In some examples, the chatbot backend 430 tracks whether any @mentions have occurred and whether each user has seen the chatbot notification message. In some examples, the chatbot backend 430 tracks the delivery of chatbot notification messages based on each group chat session. In some examples, the delivery of chatbot notification messages is tracked on a per-user basis. When based on a per-user basis, the chatbot backend 430 tracks each user in each group chat session because a user can be added to a group chat session at any point in time and may never see the chatbot notification message for that conversation.
[0136] When the chatbot notification to the user is complete, chatbot backend 430 transitions to operation 412.
[0137] In operation 408, in response to determining that the current mention of chatbot 344 is not the first mention of chatbot 344, chatbot backend 430 transitions to operation 412.
[0138] In operation 412, the chatbot backend 430 provides a response 428 to the users in the group chat session. For example, the chatbot backend 430 uses the response 428 to generate a response message 434. The chatbot backend 430 transmits the response message 434 to the messaging system 424. The messaging system 424 receives the response message 434 and transmits it to each user in the group chat session, such as user 418 and user 422. The user's corresponding user system (e.g., user system 416 of user 418 and user system 420 of user 422) receives the response message 434 and displays it in the group chat chatbot user interface (e.g., ...). Figure 4D The response message 434 is provided to the corresponding user in the group chat chatbot user interface 438. The response message 434 is provided together with a chatbot presence indicator 452 indicating that the chatbot 344 has entered the group chat session.
[0139] In operation 414, the user system (e.g., user system 416 or user system 420) determines whether one of the users has made a follow-up mention of chatbot 344 in the group chat session. In response to detecting a follow-up mention of chatbot 344, group chat system 400a continues with the operation at 404.
[0140] For example, refer to Figure 4E In a group chat session, the user system (e.g., user system 416) of a user (e.g., user 418) detects the initial chatbot mention 450 and chatbot prompt 442, such as... Figure 4C As described in operation 402. In response, group chat system 400a generates an initial chatbot response 448 and provides the initial chatbot response 448 to users in the group chat session, such as Figure 4C As described in operations 404, 406, 408, 410, and 412. In response to the detection of a subsequent chatbot mention 454 and a subsequent chatbot prompt 444, the user system 416 generates a subsequent mention message and transmits it to the message transceiver system 424. The message transceiver system 424 receives the subsequent mention message and uses it to invoke the chatbot system 300, as described in reference [reference missing]. Figure 4C As described. The chatbot backend 430 receives follow-up mention messages, generates follow-up prompts, and sends the follow-up prompts to the chatbot system 300, as shown in the reference. Figure 4C As described. The chatbot system 300 receives subsequent prompts, generates a subsequent chatbot response 446, and returns the subsequent chatbot response 446 to the chatbot backend 430, such as... Figure 4C As described in [the document]. The chatbot backend 430 receives subsequent chatbot responses 446, generates a subsequent response message, and provides the subsequent response message to the user systems of the users participating in the group chat session (e.g., user system 416 and user system 420), such as [example message]. Figure 4C As described in [the original text]. The user system receives subsequent response messages and provides subsequent chatbot responses 446 to users in the group chat session in the display of the group chat chatbot user interface 456, such as [example message]. Figure 4C As described in [the text].
[0141] In some examples, if a user explicitly deletes a message from the chat (via long press, etc.), the group chat system 400a removes the message from the conversation history because the user has instructed the group chat system 400a to delete the message.
[0142] In some examples, group chat system 400a provides ephemeral message storage in a short-term database, and the messages are automatically deleted by group chat system 400a after a period of time. In some implementations, group chat system 400a stores messages in long-term data storage unless the user specifically requests deletion. In some examples, when a user deletes a message in long-term data storage, the message is also deleted from short-term data storage.
[0143] In some examples, chatbot mentions and corresponding chatbot responses are stored in long-term data storage and keyed by user identifiers, and deleting chatbot mentions and responses is straightforward; however, deleting chatbot mentions and related chatbot responses from message sending and receiving data storage is more difficult because chatbot mentions and responses may be scattered across a set of stored messages throughout a user's message history. In some examples, group chat system 400a deletes all chatbot mentions and all chatbot responses across all conversations with a user in both short-term and long-term storage. In some examples, group chat system 400a implements a message deletion policy where all conversations with chatbot 344 are deleted except for saved messages. In response to receiving an explicit deletion request from a user, group chat system 400a deletes all chatbot mentions and responses from long-term storage and from short-term message storage according to the message deletion policy. For example, by default, all text chats will expire in 24 hours if all participants have read the message, and all text chats will expire in 30 days regardless of whether participants have read the message, unless any user has saved the message. In some examples, the group chat system 400a allows users to delete their own chatbot mentions and corresponding chatbot responses based on each chatbot mention and each chatbot response. In some examples, the group chat system 400a allows users to delete all chatbot mentions and chatbot responses, where the chatbot mentions and responses are no longer visible to any user.
[0144] Machine Learning Pipeline
[0145] Figure 6 This is a flowchart depicting a machine learning pipeline 600 based on some examples. The machine learning pipeline 600 can be used to generate a trained machine learning model 602, for example ( Figure 3A NLU component 320, ( Figure 3A The dialogue management component 318 and ( Figure 3A Generative AI model 340 is used to perform operations associated with search and query responses.
[0146] Overview
[0147] In a broad sense, machine learning can involve using computer algorithms to automatically learn patterns and relationships in data, potentially without explicit programming. Machine learning algorithms can be divided into three main categories: supervised learning, unsupervised learning, and reinforcement learning.
[0148] Supervised learning involves training a model using labeled data to predict outputs for new, unseen inputs. Examples of supervised learning algorithms include linear regression, decision trees, and neural networks.
[0149] Unsupervised learning involves training a model on unlabeled data to find hidden patterns and relationships within the data. Examples of unsupervised learning algorithms include clustering, principal component analysis, and generative models such as autoencoders.
[0150] Reinforcement learning involves training a model to make decisions in dynamic environments by receiving feedback in the form of rewards or penalties. Examples of reinforcement learning algorithms include Q-learning and policy gradient methods.
[0151] Examples of specific machine learning algorithms that can be deployed include logistic regression, a type of supervised learning algorithm for binary classification tasks. Logistic regression models the probability of a binary response variable based on one or more predictor variables. Another example type of machine learning algorithm is Naive Bayes, another supervised learning algorithm for classification tasks. Naive Bayes is based on Bayes' theorem and assumes that the predictor variables are independent of each other. Random forests are another type of supervised learning algorithm used for classification, regression, and other tasks. Random forests build an ensemble of decision trees and combine their outputs to make predictions. Further examples include neural networks, which consist of interconnected layers of nodes (or neurons) that process information based on input data and make predictions. Matrix factorization is another type of machine learning algorithm used for recommendation systems and other tasks. Matrix factorization decomposes a matrix into two or more matrices to discover hidden patterns or relationships in the data. Support Vector Machines (SVMs) are a type of supervised learning algorithm used for classification, regression, and other tasks. SVMs find hyperplanes that separate different classes in the data. Other types of machine learning algorithms include decision trees, k-nearest neighbors, clustering algorithms, and deep learning algorithms such as convolutional neural networks (CNNs), recurrent neural networks (RNNs), and transformer models. The choice of algorithm depends on the nature of the data, the complexity of the problem, and the performance requirements of the application.
[0152] The performance of a machine learning model is typically evaluated on a separate test dataset that was not used during training to ensure that the model can generalize to new, unseen data.
[0153] While this article discusses several specific examples of machine learning algorithms, the principles discussed can be applied to other machine learning algorithms as well. Deep learning algorithms, such as convolutional neural networks, recurrent neural networks, and transformers, as well as more traditional machine learning algorithms, such as decision trees, random forests, and gradient boosting, can be used in a variety of machine learning applications.
[0154] In machine learning, there are three types of example problems: classification, regression, and generation. Classification problems (also known as categorization problems) aim to classify an item into one of several category values (e.g., is the object an apple or an orange?). Regression algorithms aim to quantify some items (e.g., by providing values as real numbers). Generation algorithms aim to produce new examples similar to those provided for training. For example, a text generation algorithm is trained on many text documents and configured to generate new, coherent text with similar statistical properties to the training data.
[0155] Training phase
[0156] Generating a trained machine learning model 602 may include multiple stages forming part of a machine learning pipeline 600, said multiple stages including, for example... Figure 5 The following stages are shown:
[0157] • Data Collection and Preprocessing 502: This stage may include acquiring and cleaning data to ensure it is suitable for use in machine learning models. This stage may also include removing duplicates, handling missing values, and transforming the data into a suitable format.
[0158] • Feature construction 504: This stage may include selecting and transforming training data 606 to create features useful for predicting the target variable. Feature construction may include (1) receiving features 608 (e.g., as structured or labeled data in supervised learning) and / or (2) identifying features 608 in the training data 606 (e.g., unstructured or unlabeled data in unsupervised learning).
[0159] • Model Selection and Training 506: This stage may include selecting an appropriate machine learning algorithm and training it on preprocessed data. This stage may also include splitting the data into training and test sets, using cross-validation to evaluate the model, and tuning hyperparameters to improve performance.
[0160] • Model Evaluation 508: This stage may include evaluating the performance of the trained model (e.g., a trained machine learning model 602) on a separate test dataset. This stage can help determine whether the model is overfitting or underfitting, and whether the model is suitable for deployment.
[0161] • Prediction 510: This stage involves using a trained model (e.g., a trained machine learning model 602) to generate predictions for new, unseen data.
[0162] • Validate, refine, or retrain 512: This stage may include updating the model based on feedback generated from the prediction stage, such as new data or user feedback.
[0163] • Deployment 514: This phase may include integrating the trained model (e.g., a trained machine learning model 602) into a wider system or application (e.g., a web service, mobile application, or IoT device). This phase may involve installing the API, building the user interface, and ensuring the model is scalable and can handle large amounts of data.
[0164] Figure 6 Further details of two example phases are shown: training phase 604 (e.g., part of model selection and training 506) and prediction phase 610 (part of prediction 510). Prior to training phase 604, feature construction 504 is used to identify features 608. This can include identifying informative, distinctive, and independent features for effectively operating the trained machine learning model 602 in pattern recognition, classification, and regression. In some examples, training data 606 includes labeled data known for the pre-identified features 608 and one or more outcomes. Each of the features 608 can be a variable or attribute, such as a specific measurable characteristic of a process, item, system, or phenomenon represented by the dataset (e.g., training data 606). By way of example only, features 608 can also be of different types, such as numerical features, strings, and graphs, and can include one or more of content 612, concepts 614, attributes 616, historical data 618, and / or user data 620.
[0165] In the training phase 604, the machine learning pipeline 600 uses the training data 606 to find the correlations between features 608 that affect the prediction results or the prediction / inference data 622.
[0166] The trained machine learning model 602 is trained during the training phase 604 of the machine learning program training 624 using training data 606 and identified features 608. The machine learning program training 624 evaluates the value of feature 608 as it relates to the training data 606. The result of the training is the trained machine learning model 602 (e.g., a trained or learned model).
[0167] Furthermore, the training phase 604 may involve machine learning, where the training data 606 is structured (e.g., labeled during preprocessing). The trained machine learning model 602 implements a neural network 626 capable of performing operations such as classification and clustering. In other examples, the training phase 604 may involve deep learning, where the training data 606 is unstructured, and the trained machine learning model 602 implements a deep neural network 626 capable of performing both feature extraction and classification / clustering operations.
[0168] In some examples, neural network 626 can be generated during training phase 604 and implemented within a trained machine learning model 602. Neural network 626 includes a hierarchical (e.g., layered) organization of neurons, where each layer consists of multiple neurons or nodes. Neurons in the input layer receive input data, while neurons in the output layer produce the network's final output. Between the input and output layers, there may be one or more hidden layers, each consisting of multiple neurons.
[0169] Each neuron in a neural network 626 can operationally compute a function, such as an activation function, which takes as input a weighted sum of the outputs of neurons in the previous layer and a bias term. The output of this function is then passed as input to neurons in the next layer. If the output of the activation function exceeds a certain threshold, the output is passed from that neuron (e.g., a firing neuron) to connected neurons (e.g., receiving neurons) in the next layer. Connections between neurons have associated weights that define the influence of the input from the firing neuron to the receiving neuron. During the training phase, these weights are adjusted by a learning algorithm to optimize the network's performance. Different types of neural networks can use different activation functions and learning algorithms, thus affecting their performance on different tasks. The hierarchical organization of neurons and the use of activation functions and weights enable neural networks to model complex relationships between inputs and outputs and to generalize to new inputs not seen during training.
[0170] In some examples, and by way of example only, neural network 626 can also be one of several different types of neural networks, such as a single-layer feedforward network, a multilayer perceptron (MLP), an artificial neural network (ANN), a recurrent neural network (RNN), a long short-term memory network (LSTM), a bidirectional neural network, a symmetric connection neural network, a deep belief network (DBN), a convolutional neural network (CNN), a generative adversarial network (GAN), an autoencoder neural network (AE), a restricted Boltzmann machine (RBM), a Hopfield network, a self-organizing map (SOM), a radial basis function network (RBFN), a spiking neural network (SNN), a liquid state machine (LSM), an echo state network (ESN), a neural Turing machine (NTM), or a transformer network.
[0171] In addition to the training phase 604, a validation phase can be performed on a separate dataset called the validation dataset. The validation dataset is used to tune the model's hyperparameters, such as the learning rate and regularization parameters. Tuning the hyperparameters improves the model's performance on the validation dataset.
[0172] Once the model is fully trained and validated, the testing phase allows it to be tested on a new dataset. The test dataset is used to evaluate the model's performance and ensure that it has not overfitted the training data.
[0173] In the prediction phase 610, the trained machine learning model 602 uses features 608 to analyze the query data 628 to generate inferences, results, or predictions, as examples of the prediction / inference data 622. For example, during the prediction phase 610, the trained machine learning model 602 generates outputs. In response to receiving the query data 628, the query data 628 is provided as input to the trained machine learning model 602, and the trained machine learning model 602 generates the prediction / inference data 622 as output.
[0174] In some examples, the trained machine learning model 602 can be a generative AI model. Generative AI is a term that can refer to any type of artificial intelligence that can create new content from training data 606. For example, generative AI can produce text, images, videos, audio, code, or synthetic data that are similar to but not identical to the original data.
[0175] Some techniques that can be used in generative AI are:
[0176] • Convolutional Neural Networks (CNNs): CNNs can be used for image recognition and computer vision tasks. For example, a CNN can be designed to extract features from an image by using filters or kernels that scan the input image and highlight important patterns.
[0177] • Recurrent Neural Networks (RNNs): For example, RNNs can be used to process sequential data such as speech, text, and time series data. RNNs employ feedback loops that allow them to capture temporal dependencies and remember past inputs.
[0178] Generative Adversarial Networks (GANs): A GAN can consist of two neural networks: a generator and a discriminator. The generator network attempts to create realistic content that can "fool" the discriminator network, while the discriminator network tries to distinguish between real and fake content. The generator and discriminator networks compete with each other and improve over time.
[0179] Variational Autoencoders (VAEs): VAEs encode input data into a latent space (e.g., a compressed representation) and then decode it back to output data. The latent space can be manipulated to generate new variations in the output data. VAEs can use self-attention mechanisms to process input data, allowing them to handle long sequences of text and capture complex dependencies.
[0180] Transformer Models: Transformer models use attention mechanisms to learn relationships between different parts of input data (such as words or pixels) and generate output data based on these relationships. Transformer models can handle sequential data such as text or speech, as well as non-sequential data such as images or code.
[0181] In the generative AI example, query data 628 may include text, audio, images, videos, digital or media content cues, and output prediction / inference data 622 may include text, images, videos, audio, code or synthetic data.
[0182] Data Architecture
[0183] Figure 7 This is a schematic diagram illustrating a data structure 700 that can be stored in a database 704 of an interactive server system 110, according to certain examples. Although the contents of the database 704 are shown as including multiple tables, it will be appreciated that the data can be stored in other types of data structures (e.g., as an object-oriented database).
[0184] Database 704 includes message data stored in message table 706. For any given message, this message data includes at least message sender data, message receiver (or recipient) data, and payload. See below for reference. Figure 7 Further details are provided regarding information that can be included in the message and is contained within the message data stored in message table 706.
[0185] Entity table 708 stores entity data and (for example, links to entity diagram 710 and profile data 702). Entities for which records are maintained in entity table 708 can include individuals, company entities, organizations, objects, locations, events, etc. Regardless of entity type, any entity for which the interactive server system 110 stores data can be an identified entity. Each entity is assigned a unique identifier and an entity type identifier (not shown).
[0186] Entity Graph 710 stores information about the relationships and associations between entities. As an example only, such relationships can be social or professional relationships based on interests or activities (e.g., working in a common company or organization). Some relationships between entities can be one-way, such as an individual user subscribing to digital content from a commercial or publishing user (e.g., a newspaper or other digital media export or brand). Other relationships can be two-way, such as the "friendship" relationships between various users of Interactive Platform 100.
[0187] Certain permissions and relationships can be attached to each relationship, and also to each direction of the relationship. For example, a two-way relationship (e.g., a friend relationship between individual users) can include authorization for the posting of digital content items between the individual users, but certain restrictions or filters can be imposed on the posting of these digital content items (e.g., based on content characteristics, location data, or time of day data). Similarly, a subscription relationship between an individual user and a business user can impose varying degrees of restrictions on the posting of digital content from the business user to the individual user, and can significantly restrict or prevent the posting of digital content from the individual user to the business user. A specific user, as an example of an entity, can (e.g., through privacy settings) record certain restrictions in the records of that entity within entity table 708. Such privacy settings can be applied to all types of relationships in the context of interactive platform 100, or selectively applied to only certain types of relationships.
[0188] Profile data 702 stores various types of profile data about a specific entity. Based on privacy settings specified by the specific entity, profile data 702 can be selectively used and presented to other users of interactive platform 100. In the case of an individual, profile data 702 includes, for example, a username, phone number, address, settings (e.g., notification and privacy settings), and an avatar representation (or a set of such avatar representations) selected by the user. The specific user can then selectively include one or more of these avatar representations within the content of messages transmitted via interactive platform 100 and on a map interface displayed to other users by interactive client 104. The set of avatar representations may include “status avatars,” which present a graphical representation of a status or activity that the user can choose to transmit at a specific time.
[0189] In the case that the entity is a group, in addition to the group name, members and various settings for the relevant group (e.g., notifications), the profile data 702 for the group may similarly include one or more avatars associated with the group.
[0190] Database 704 also stores enhancement data, such as overlays or filters, in enhancement table 712. Enhancement data is associated with and applied to videos (video data is stored in video table 714) and images (image data is stored in image table 716).
[0191] In some examples, filters are displayed as overlays on images or videos during presentation to the message recipient. Filters can be of various types, including user-selected filters from a set of filters presented to the message sender by the interactive client 104 while the message sender is composing a message. Other types of filters include geolocation filters (also known as geographic filters), which can be presented to the message sender based on geographic location. For example, geolocation filters specific to nearby or particular locations can be presented by the interactive client 104 within the user interface based on geolocation information determined by the Global Positioning System (GPS) unit of the user system 102.
[0192] Another type of filter is a data filter, which can be selectively presented to the message sender by the interactive client 104 based on other inputs or information collected by the user system 102 during the message creation process. Examples of data filters include the current temperature at a specific location, the current speed of the message sender, the battery life of the user system 102, or the current time.
[0193] Other augmented data that can be stored in image table 716 includes, for example, augmented reality content items corresponding to an applied lens or augmented reality experience. Augmented reality content items can be real-time special effects and sounds that can be added to images or videos.
[0194] As described above, augmented data includes augmented reality (AR), virtual reality (VR), and mixed reality (MR) content items, overlays, image transformations, images, and modifications that can be applied to image data (e.g., video or images). This includes real-time modifications that modify images as they are captured by the device sensors (e.g., one or more cameras) of user system 102, and then display the modified images on the screen of user system 102. This also includes modifications to stored content (e.g., video clips that can be modified in a collection or group). For example, in user system 102, which has access to multiple augmented reality content items, a user can use a single video clip with multiple augmented reality content items to see how different augmented reality content items will modify the stored clip. Similarly, real-time video capture can be modified to show how the video image currently captured by the sensors of user system 102 will modify the captured data. Such data can simply be displayed on the screen without being stored in memory, or the content captured by the device sensors can be recorded and stored in memory with or without modification (or both). In some systems, a preview feature can simultaneously show how different augmented reality content items will look in different windows on the display. For example, this allows multiple windows with different pseudo-random animations to be viewed on the monitor simultaneously.
[0195] Therefore, using augmented reality content items' data and various systems, or other such transformation systems that use that data to modify the content, can involve: the detection of objects (e.g., faces, hands, bodies, cats, dogs, surfaces, objects, etc.) in video frames; tracking such objects as they leave, enter, and move around within the field of view; and modifying or transforming such objects while tracking them. In various examples, different methods can be used to implement such transformations. Some examples may involve: generating 3D mesh models of one or more objects; and using transformations of the models and animated textures within the video to implement the transformations. In some examples, tracking points on the objects can be used to place images or textures (which can be two-dimensional or three-dimensional) at the tracked locations. In yet another example, neural network analysis of video frames can be used to place images, models, or textures within the content (e.g., images or video frames). Thus, augmented reality content items involve both images, models, and textures used to create transformations within the content, and the additional modeling and analysis information required to implement such transformations using object detection, tracking, and placement.
[0196] Real-time video processing can be performed using any type of video data (e.g., video streams, video files, etc.) stored in the memory of any type of computerized system. For example, a user can load video files and store them in the device's memory, or the device's sensors can be used to generate video streams. Furthermore, computer-animated models can be used to process any object, such as a human face and parts of the human body, animals, or inanimate objects (e.g., chairs, cars, or other objects).
[0197] In some examples, when a specific modification is selected along with the content to be transformed, the element to be transformed is identified by the computing device and then detected and tracked if the element to be transformed exists in a frame of the video. The elements of the object are modified according to the modification request, thereby transforming the frames of the video stream. Different methods can be used to transform the frames of the video stream for different kinds of transformations. For example, for frame transformations that primarily involve changing the form of elements of an object, (e.g., using an Active Shape Model (ASM) or other known methods) characteristic points are calculated for each element of the object. A characteristic point-based mesh is then generated for each element of the object. This mesh is used in subsequent stages of tracking the elements of the object in the video stream. During tracking, the mesh for each element is aligned with the position of each element. Additional points are then generated on the mesh.
[0198] In some examples, transforming certain regions of an object using its elements can be performed by calculating characteristic points for each element of the object and generating a mesh based on those calculated characteristic points. Points are generated on the mesh, and then various regions are generated based on these points. The elements of the object are then tracked by aligning the regions of each element with the positions of at least one of the elements, and the properties of the regions can be modified based on modification requests, thereby transforming frames of the video stream. Depending on the specific requirements of the modification, the properties of the mentioned regions can be transformed in different ways. Such modifications can involve: changing the color of the region; removing portions of the region from frames of the video stream; including new objects in regions based on modification requests; and modifying or distorting elements of the region or object. Any combination of such modifications or other similar modifications can be used in various examples. For certain models to be animated, some characteristic points can be selected as control points for the entire state space to determine the options for model animation.
[0199] In some examples of computer animation models that use face detection to transform image data, a specific face detection algorithm (e.g., Viola-Jones) is used to detect faces in the image. The Active Shape Model (ASM) algorithm is then applied to the facial regions of the image to detect facial feature reference points.
[0200] Other methods and algorithms suitable for face detection can be used. For example, in some examples, landmarks are used to locate features, representing distinguishable points present in most of the images considered. For example, for a face landmark, the location of the left pupil could be used. If the initial landmark is not identifiable (e.g., if the person is wearing an eye patch), secondary landmarks can be used. Such a landmark identification process can be used for any such object. In some examples, a set of landmarks forms a shape. The shape can be represented as a vector using the coordinates of the points in the shape. One shape is aligned with another shape using a similarity transformation (allowing translation, scaling, and rotation) that minimizes the average Euclidean distance between the points of the shapes. The mean shape is the average of the aligned training shapes.
[0201] The transformation system can capture image or video streams on a client device (e.g., user system 102) and perform complex image manipulations locally on user system 102 while maintaining an appropriate user experience, computation time, and power consumption. Complex image manipulations can include size and shape changes, mood shifts (e.g., changing a face from frowning to smiling), state shifts (e.g., aging a subject, reducing apparent age, changing gender), style shifts, application of graphical elements, and any other suitable image or video manipulation implemented by a convolutional neural network that has been configured to perform effectively on user system 102.
[0202] In some examples, a computer animation model for transforming image data can be used by a system in which a user can capture an image or video stream (e.g., a selfie) using a user system 102 that operates as part of an interactive client 104 operating on the user system 102. A transformation system operating within the interactive client 104 determines the presence of faces within the image or video stream and provides a modification icon associated with the computer animation model to transform the image data, or the computer animation model can be presented in association with the interface described herein. This modification icon will be included as part of the modification operation, serving as a basis for modifying the user's face within the image or video stream. Once a modification icon is selected, the transformation system initiates a process to transform the user's image to reflect the selected modification icon (e.g., generating a smiley face on the user). Once the image or video stream is captured and the specified modification is selected, the modified image or video stream can be presented in a graphical user interface displayed on the user system 102. The transformation system can implement a complex convolutional neural network on a portion of the image or video stream to generate and apply the selected modification. In other words, users can capture image or video streams, and once an edit icon has been selected, the modified result can be presented in real-time or near real-time. Furthermore, while a video stream is being captured, the modifications can be persistent, and the selected edit icon continues to be toggled. Machine-trained neural networks can be used to achieve such modifications.
[0203] The graphical user interface (GUI) presenting the modifications performed by the transformation system can provide users with additional interactive options. Such options can be based on the interface used to initiate the selection and content capture of a specific computer animation model (e.g., initiated from a content creator user interface). In various examples, the modifications can be persistent after an initial selection of the modification icon. Users can turn modifications on or off by tapping or otherwise selecting the face modified by the transformation system and save them for later viewing or browsing to other areas of the imaging application. In cases where multiple faces are modified by the transformation system, users can globally turn modifications on or off by tapping or selecting a single face modified and displayed within the GUI. In some examples, individual faces within a set of multiple faces can be modified separately, or such modifications can be toggled by tapping or selecting a single face or a series of individual faces displayed within the GUI.
[0204] Story table 718 stores data about collections of messages and associated image, video, or audio data, compiled into collections (e.g., stories or galleries). The creation of a specific collection can be initiated by a specific user (e.g., each user for whom records are maintained in entity table 708). A user can create a "personal story" in the form of a collection of content that has been created and sent / broadcast by that user. For this purpose, the user interface of interactive client 104 can include user-selectable icons that allow message senders to add specific content to their personal stories.
[0205] Collections can also constitute "live stories," which are collections of content from multiple users created manually, automatically, or using a combination of manual and automatic methods. For example, a "live story" can constitute a curated stream of user-submitted content from different locations and events. Users whose client devices have location services enabled and who are at a co-located event at a specific time can be presented with the option to contribute content to a specific live story, for example, via the user interface of interactive client 104. Live stories can be identified to a user by interactive client 104 based on their location. The end result is a "live story" told from a collective perspective.
[0206] Another type of content collection is called a "location story," which allows users of user system 102 located in a specific geographic location (e.g., on a college or university campus) to contribute to a specific collection. In some examples, contributing to a location story may require secondary authentication to verify that the end user belongs to a specific organization or other entity (e.g., is a student on a university campus).
[0207] As mentioned above, video table 714 stores video data, which in some examples is associated with messages for which records are maintained within message table 706. Similarly, image table 716 stores image data associated with messages whose message data is stored in entity table 708. Entity table 708 can associate various enhancements from enhancement table 712 with various images and videos stored in image table 716 and video table 714.
[0208] Database 704 also includes entity relationship information collected by the interactive platform 100. Entity relationship information may include, but is not limited to, relationship and communication data of users of the interactive platform. Entity relationship information can be used to group two or more users and provide additional functionality to the interactive platform 100. Examples of relationships include, but are not limited to: best-friend relationships where two or more users are identified as mutual best friends based on the frequency of their interactions; users with shared interests in current events; users sharing contacts through social clubs or charitable organizations, etc. Examples of communication include, but are not limited to, chat, private and public messaging, and the exchange of media such as images, videos, and recordings.
[0209] Data communication architecture
[0210] Figure 8 This is a schematic diagram illustrating the structure of message 800 according to some examples, generated by interactive client 104 for transmission to another interactive client 104 via interactive server 124. The content of a particular message 800 is used to populate message table 706 within database 704 accessible by interactive server 124. Similarly, the content of message 800 is stored in memory as "in-transit" or "in-flight" data for user system 102 or interactive server 124. Message 800 is shown to include the following example components:
[0211] • Message Identifier 802: A unique identifier that identifies message 800.
[0212] • Message text payload 834: The text to be generated by the user via the user interface of user system 102 and included in message 800.
[0213] • Message image payload 804: Image data captured by the camera device component of user system 102 or retrieved from the memory component of user system 102 and included in message 800. The image data for the sent or received message 800 can be stored in image table 806.
[0214] • Message video payload 808: Video data captured by the camera device component or retrieved from the memory component of the user system 102 and included in message 800. The video data for the sent or received message 800 can be stored in video table 810.
[0215] • Message audio payload 812: Audio data captured by the microphone or retrieved from the memory component of the user system 102 and included in message 800.
[0216] • Message enhancement data 814: Enhancement data (e.g., filters, labels, or other annotations or enhancements) representing enhancements to be applied to the message image payload 804, message video payload 808, or message audio payload 812 of message 800. Enhancement data for the sent or received message 800 can be stored in enhancement table 816.
[0217] • Message duration parameter 818: A parameter value, in seconds, indicating the amount of time that the content of the message (e.g., message image payload 804, message video payload 808, message audio payload 812) will be presented to the user or accessible to the user via the interactive client 104.
[0218] • Message geolocation parameter 820: Geolocation data (e.g., latitude and longitude coordinates) associated with the message's content payload. Multiple message geolocation parameter 820 values may be included in the payload, each of which is associated with a content item included in the content (e.g., a specific image within the message image payload 804 or a specific video within the message video payload 808).
[0219] • Message Story Identifier 822: An identifier value that identifies one or more sets of content (e.g., “Stories” identified in Story Table 824) associated with a specific content item in the message image payload 804 of message 800. For example, the identifier value can be used to associate multiple images within the message image payload 804 with multiple sets of content, respectively.
[0220] • Message Tag 826: Each message 800 can be labeled with multiple tags, each of which indicates the subject of the content included in the message payload. For example, in the case where a specific image in the message image payload 804 depicts an animal (e.g., a lion), a tag value can be included within the message tag 826 indicating the relevant animal. Tag values can be manually generated based on user input, or can be automatically generated using, for example, image recognition.
[0221] • Message sender identifier 828: An identifier (e.g., message sending system identifier, email address, or device identifier) indicating the user of the user system 102 on which message 800 is generated and from which message 800 is sent.
[0222] • Message receiver identifier 830: An identifier (e.g., message sending and receiving system identifier, email address, or device identifier) indicating the user of the user system 102 to which message 800 is addressed.
[0223] The content (e.g., values) of each component of message 800 can be pointers to locations in tables where the content data values are stored. For example, the image value in message image payload 804 can be a pointer (or address) to a location in image table 806. Similarly, the value in message video payload 808 can point to data stored in video table 810, the value in message enhancement data 814 can point to data stored in enhancement table 816, the value in message story identifier 822 can point to data stored in story table 824, and the values in message sender identifier 828 and message receiver identifier 830 can point to user records stored in entity table 832.
[0224] Figure 9 This is a schematic diagram illustrating an access restriction process 900, in which access to content (e.g., a short message 902 and associated multimedia data payload) or a collection of content (e.g., a short message group 904) can be time-restricted (e.g., so that it is short).
[0225] A brief message 902 is shown as associated with a message duration parameter 906, the value of which determines the amount of time the interactive client 104 displays the brief message 902 to the receiving user. In some examples, depending on the amount of time specified by the message sender using the message duration parameter 906, the receiving user may view the brief message 902 for up to 10 seconds.
[0226] Message duration parameter 906 and message receiver identifier 908 are shown as inputs to message timer 910, which is responsible for determining the amount of time for which the brief message 902 is shown to a specific receiving user identified by message receiver identifier 908. Specifically, the brief message 902 is shown to the relevant receiving user for the time period determined by the value of message duration parameter 906. Message timer 910 is shown as providing an output to a more generalized messaging system 912, which is responsible for the overall timing of displaying content (e.g., brief message 902) to receiving users.
[0227] exist Figure 9The short message 902 is shown as being included within a short message group 904 (e.g., a collection of messages in a personal story or event story). The short message group 904 has an associated group duration parameter 914, the value of which determines the duration for which the short message group 904 is presented and accessible to a user of the interactive platform 100. The group duration parameter 914 could, for example, be the duration of a concert, where the short message group 904 is a collection of content about that concert. Alternatively, the user (owner user or curator user) can specify the value of the group duration parameter 914 when setting up and creating the short message group 904.
[0228] Furthermore, each short message 902 within a short message group 904 has an associated group participation parameter 916, the value of which determines the duration for which the short message 902 is accessible within the context of the short message group 904. Therefore, a particular short message group 904 can "expire" and become inaccessible within its context before the short message group 904 itself expires according to the group duration parameter 914. The group duration parameter 914, the group participation parameter 916, and the message receiver identifier 908 each provide input to a group timer 918, which first operationally determines whether a particular short message 902 of the short message group 904 is displayed to a specific receiving user, and if so, determines for how long. Note that the short message group 904 can also identify the specific receiving user due to the message receiver identifier 908.
[0229] Therefore, the group timer 918 operatively controls the associated transient message group 904 and the overall lifetime of the individual transient messages 902 included within the transient message group 904. In some examples, each transient message 902 within the transient message group 904 remains viewable and accessible for the period specified by the group duration parameter 914. In another example, within the context of the transient message group 904, a particular transient message 902 may expire based on the group participation parameter 916. Note that even within the context of the transient message group 904, the message duration parameter 906 can still determine the duration for which a particular transient message 902 is displayed to the receiving user. Therefore, the message duration parameter 906 determines the duration for which a particular transient message 902 is displayed to the receiving user, regardless of whether the receiving user views the transient message 902 within or outside the context of the transient message group 904.
[0230] Furthermore, the message sending and receiving system 912 can operationally remove a specific transient message 902 from the transient message group 904 based on the determination that a specific transient message 902 has exceeded its associated group participation parameter 916. For example, when the sending user has established a group participation parameter 916 for 24 hours from the date of publication, the message sending and receiving system 912 will remove the relevant transient message 902 from the transient message group 904 after the specified 24 hours. The message sending and receiving system 912 also operates to remove the transient message group 904 when the group participation parameter 916 for each transient message 902 within the transient message group 904 has expired, or when the transient message group 904 itself has expired according to the group duration parameter 914.
[0231] In certain use cases, the creator of a specific ephemeral message group 904 can specify an indefinite group duration parameter 914. In this case, the expiration of the group participation parameter 916 for the last remaining ephemeral message 902 within the ephemeral message group 904 will determine when the ephemeral message group 904 itself expires. In this case, adding a new ephemeral message 902 with a new group participation parameter 916 to the ephemeral message group 904 effectively extends the lifetime of the ephemeral message group 904 to a value equal to the group participation parameter 916.
[0232] In response to message transceiver system 912 determining that ephemeral message group 904 has expired (e.g., is no longer accessible), message transceiver system 912 communicates with interactive platform 100 (and, for example, interactive client 104) to prevent the markers (e.g., icons) associated with the relevant ephemeral message group 904 from being displayed in the user interface of interactive client 104. Similarly, when message transceiver system 912 determines that the message duration parameter 906 of a particular ephemeral message 902 has expired, message transceiver system 912 causes interactive client 104 to stop displaying the markers (e.g., icons or text labels) associated with ephemeral message 902.
[0233] Machine architecture
[0234] Figure 10This is a schematic representation of machine 1000, within which instructions 1002 (e.g., software, programs, applications, applets, or other executable code) can be executed to cause machine 1000 to perform any or more of the methods discussed herein. For example, instructions 1002 can cause machine 1000 to perform any or more of the methods described herein. Instructions 1002 transform the general, unprogrammed machine 1000 into a specific machine 1000 programmed to perform the described and illustrated functions in the described manner. Machine 1000 can operate as a standalone device or can be coupled (e.g., networked) to other machines. In a networked deployment, machine 1000 can operate as a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Machine 1000 may include, but is not limited to: server computers, client computers, personal computers (PCs), tablet computers, laptop computers, netbooks, set-top boxes (STBs), personal digital assistants (PDAs), entertainment media systems, cellular phones, smartphones, mobile devices, wearable devices (e.g., smartwatches), smart home devices (e.g., smart appliances), other smart devices, web devices, network routers, network switches, network bridges, or any machine capable of sequentially or otherwise executing instructions 1002 specifying actions to be taken by machine 1000. Furthermore, while a single machine 1000 is shown, the term "machine" should also be considered as a collection of machines that individually or jointly execute instructions 1002 to perform any or more of the methods discussed herein. For example, machine 1000 may include user system 102 or any of a plurality of server devices forming part of interactive server system 110. In some examples, machine 1000 may also include both client and server systems, wherein some operations of a particular method or algorithm are performed on the server side, and wherein some operations of a particular method or algorithm are performed on the client side.
[0235] Machine 1000 may include a processor 1004, a memory 1006, and an input / output (I / O) unit 1008 that can be configured to communicate with each other via a bus 1010. In the example, processor 1004 (e.g., a central processing unit (CPU), a reduced instruction set computing (RISC) processor, a complex instruction set computing (CISC) processor, a graphics processing unit (GPU), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processors 1012 and 1014 that execute instruction 1002. The term "processor" is intended to include multi-core processors, which may include two or more independent processors (sometimes referred to as "cores") capable of executing instructions simultaneously. Although Figure 10 Multiple processors 1004 are shown, but machine 1000 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiple cores, or any combination thereof.
[0236] Memory 1006 includes main memory 1016, static memory 1018, and storage cells 1020, all of which are accessible by processor 1004 via bus 1010. Main memory 1006, static memory 1018, and storage cells 1020 store instructions 1002 embodying any one or more of the methods or functions described herein. Instructions 1002 may also reside wholly or partially in main memory 1016, in static memory 1018, in machine-readable medium 1022 within storage cell 1020, in at least one processor of processor 1004 (e.g., in the processor's cache memory), or in any suitable combination thereof during execution by machine 1000.
[0237] I / O component 1008 may include various components for receiving input, providing output, generating output, sending information, exchanging information, capturing measurements, etc. The specific I / O component 1008 included in a particular machine will depend on the type of machine. For example, a portable machine such as a mobile phone may include a touch input device or other such input mechanism, while a headless server machine may not include such a touch input device. It will be understood that I / O component 1008 may include... Figure 10Many other components are not shown. In various examples, I / O component 1008 may include user output component 1024 and user input component 1026. User output component 1024 may include visual components (e.g., displays such as plasma display panels (PDPs), light-emitting diode (LED) displays, liquid crystal displays (LCDs), projectors, or cathode ray tube (CRT) displays), acoustic components (e.g., speakers), haptic components (e.g., vibration motors, resistance mechanisms), other signal generators, etc. User input component 1026 may include alphanumeric input components (e.g., keyboards, touchscreens configured to receive alphanumeric input, photoelectric keyboards, or other alphanumeric input components), point-based input components (e.g., mice, touchpads, trackballs, joysticks, motion sensors, or other pointing instruments), haptic input components (e.g., physical buttons, touchscreens that provide position and force for touch or touch gestures, or other haptic input components), audio input components (e.g., microphones), etc.
[0238] In another example, I / O component 1008 may include biometric component 1028, motion component 1030, environmental component 1032, or position component 1034, and various other components. For example, biometric component 1028 includes components for detecting expressions (e.g., hand gestures, facial expressions, vocal expressions, body posture, or eye tracking), measuring biosignals (e.g., blood pressure, heart rate, body temperature, sweating, or brain waves), and recognizing a person (e.g., voice recognition, retinal recognition, facial recognition, fingerprint recognition, or EEG-based recognition). Motion component 1030 includes accelerometer components (e.g., accelerometers), gravity sensor components, and rotation sensor components (e.g., gyroscopes). Biometric component may include a brain-computer interface (BMI) system that allows communication between the brain and external devices or machines. This can be achieved by recording brain activity, converting the brain activity into a format that can be understood by a computer, and then using the resulting signals to control the device or machine.
[0239] Examples of BMI technology types include:
[0240] • BMI based on electroencephalography (EEG) uses electrodes placed on the scalp to record electrical activity in the brain.
[0241] • Invasive BMI, which involves surgically implanting electrodes directly into the brain.
[0242] • Optogenetics BMI uses light to control the activity of specific nerve cells in the brain.
[0243] • BMI based on functional magnetic resonance imaging (fMRI) uses magnetic fields to measure blood flow in the brain, which can be used to infer brain activity.
[0244] Any BMI data collected by the interactive platform is captured and stored only with user approval and is deleted upon user request. Furthermore, such data may be used for very limited purposes, such as authentication or user input. To ensure restricted and authorized use of BMI data and other personally identifiable information (PII), access to the BMI data is limited to authorized personnel (if applicable). Any use of the BMI data may be strictly limited to the designated purpose, and the BMI data may not be shared or sold to any third party without the user's explicit consent. In addition, appropriate technical and organizational measures have been implemented to ensure the security and confidentiality of this sensitive information.
[0245] The environmental component 1032 includes, for example, one or more camera devices (with still image / photograph and video capabilities), lighting sensor components (e.g., a photometer), temperature sensor components (e.g., one or more thermometers for detecting ambient temperature), humidity sensor components, pressure sensor components (e.g., a barometer), acoustic sensor components (e.g., one or more microphones for detecting background noise), proximity sensor components (e.g., an infrared sensor for detecting nearby objects), gas sensors (e.g., gas detection sensors for detecting the concentration of hazardous gases for safety purposes or for measuring pollutants in the atmosphere), or other components that can provide indications, measurements, or signals corresponding to the surrounding physical environment.
[0246] Regarding the camera device, user system 102 may have a camera device system including, for example, a front-facing camera on the front surface of user system 102 and a rear-facing camera on the rear surface of user system 102. The front-facing camera may be used, for example, to capture still images and videos (e.g., “selfies”) of the user of user system 102, which can then be enhanced with the enhancement data (e.g., filters) described above. For example, the rear-facing camera may be used to capture still images and videos in a more conventional camera device mode, wherein these images are similarly enhanced with enhancement data. In addition to the front-facing and rear-facing cameras, user system 102 may also include a 360° camera for capturing 360° photos and videos.
[0247] Furthermore, the camera system of user system 102 may include dual rear cameras (e.g., a main camera and a depth-sensing camera), or even triple, quadruple, or quintuple rear camera configurations on the front and rear sides of user system 102. For example, these multiple camera systems may include wide-angle cameras, ultra-wide-angle cameras, telephoto cameras, macro cameras, and depth sensors.
[0248] The position component 1034 includes a positioning sensor component (e.g., a GPS receiver component), an altitude sensor component (e.g., an altimeter or barometer that detects air pressure to obtain altitude), an orientation sensor component (e.g., a magnetometer), etc.
[0249] Various technologies can be used to achieve communication. I / O component 1008 also includes a communication component 1036 operable to couple machine 1000 to network 1038 or device 1040 via a corresponding coupling or connection. For example, communication component 1036 may include a network interface component or another suitable device that interfaces with network 1038. In other examples, communication component 1036 may include a wired communication component, a wireless communication component, a cellular communication component, a near field communication (NFC) component, or Bluetooth. ® Components (e.g., Bluetooth) ® Low energy consumption), Wi-Fi ® Components, and other communication components for providing communication via other modes. Device 1040 can be any peripheral device from another machine or various peripheral devices (e.g., a peripheral device coupled via USB).
[0250] Furthermore, the communication component 1036 may detect identifiers or include components operable to detect identifiers. For example, the communication component 1036 may include a radio frequency identification (RFID) tag reader component, an NFC smart tag detection component, an optical reader component (e.g., an optical sensor for detecting one-dimensional barcodes such as Universal Product Code (UPC) barcodes, multi-dimensional barcodes such as Quick Response (QR) codes, Aztec codes, Data Matrix, Dataglyph, MaxiCode, PDF417, UltraCode, UCC RSS-2D barcodes, and other optical codes), or an acoustic detection component (e.g., a microphone for identifying audio signals from the tag). Additionally, various information can be obtained via the communication component 1036, such as location obtained via Internet Protocol (IP) geolocation, location obtained via Wi-Fi® signal triangulation, location obtained by detecting NFC beacon signals that can indicate a specific location, etc.
[0251] Various memories (e.g., main memory 1016, static memory 1018, and the memory of processor 1004) and storage units 1020 may store one or more sets of instructions and data structures (e.g., software) embodied or used by any one or more of the methods or functions described herein. These instructions (e.g., instruction 1002) cause various operations to implement the disclosed examples when executed by processor 1004.
[0252] Instruction 1002 can be sent or received over network 1038 via a transmission medium using a network interface device (e.g., a network interface component included in communication component 1036) and using any of several known transmission protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, instruction 1002 can be sent or received via a transmission medium through a coupling to device 1040 (e.g., peer-to-peer coupling).
[0253] Software Architecture
[0254] Figure 11 This is a block diagram 1100 illustrating a software architecture 1102 that can be installed on any or more of the devices described herein. The software architecture 1102 is supported by hardware such as a machine 1104 including a user CU 1106, memory 1108, and I / O components 1110. In this example, the software architecture 1102 can be conceptualized as a stack of layers, where each layer provides specific functionality. The software architecture 1102 includes layers such as an operating system 1112, libraries 1114, frameworks 1116, and applications 1118. Operationally, application 1118 activates API calls 1120 via the software stack and receives messages 1122 in response to API calls 1120.
[0255] Operating system 1112 manages hardware resources and provides public services. Operating system 1112 includes, for example, a kernel 1124, services 1126, and drivers 1128. Kernel 1124 serves as an abstraction layer between hardware and other software layers. For example, kernel 1124 provides memory management, processor management (e.g., scheduling), component management, network and security settings, and other functions. Services 1126 can provide other public services to other software layers. Drivers 1128 are responsible for controlling or interfacing with the underlying hardware. For example, drivers 1128 may include display drivers, camera drivers, BLUETOOTH® or BLUETOOTH® low-power drivers, flash memory drivers, serial communication drivers (e.g., USB drivers), Wi-Fi® drivers, audio drivers, power management drivers, etc.
[0256] Library 1114 provides common low-level infrastructure used by application 1118. Library 1114 may include system library 1130 (e.g., the C standard library), which provides functions such as memory allocation, string manipulation, and mathematical functions. Additionally, library 1114 may include API library 1132, such as media libraries (e.g., libraries for supporting the rendering and manipulation of various media formats, such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Picture Experts Group (JPEG or JPG), or Portable Web Graphics (PNG)), graphics libraries (e.g., the OpenGL framework for rendering graphic content on a display in two-dimensional (2D) and three-dimensional (3D) formats), database libraries (e.g., SQLite, which provides various relational database functions), web libraries (e.g., WebKit, which provides web browsing capabilities), and so on. Library 1114 may also include various other libraries 1134 to provide many other APIs to application 1118.
[0257] Framework 1116 provides common high-level infrastructure for use by application 1118. For example, framework 1116 provides various graphical user interface (GUI) functions, advanced resource management, and advanced location services. Framework 1116 can provide a wide range of other APIs that can be used by application 1118, some of which may be specific to a particular operating system or platform.
[0258] In the example, application 1118 may include home application 1136, contact application 1138, browser application 1140, book reader application 1142, location application 1144, media application 1146, messaging application 1148, game application 1150, and a wide variety of other applications such as third-party application 1152. Application 1118 is a program that performs the functions defined in the program. One or more applications 1118 can be created using various programming languages, such as object-oriented programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a particular example, third-party application 1152 (e.g., an application developed by an entity other than a platform-specific vendor using the Android™ or iOS™ Software Development Kit (SDK)) may be mobile software that runs on mobile operating systems such as iOS™, Android™, Windows® Phone, or other mobile operating systems. In this example, a third-party application 1152 can activate API call 1120 provided by the operating system 1112 to facilitate the functionality described herein.
[0259] Additional examples include:
[0260] Example 1 is a method comprising: receiving a chatbot mention message from a user's user system in a group chat session by one or more processors, the chatbot mention message including a chatbot prompt created by the user; generating a prompt using the chatbot mention message by one or more processors; generating a chatbot response message using the prompt by one or more processors; and providing the chatbot response message to one or more other user systems of one or more other users in the group chat session by one or more processors.
[0261] Example 2 is the method of Example 1, and further includes: storing one or more stored chatbot mention messages and one or more stored chatbot response messages associated with a user by one or more processors; and using one or more stored chatbot mention messages and one or more stored chatbot response messages to generate context for the prompt.
[0262] Example 3 is a method of any one of Examples 1 to 2, further comprising: in response to receiving a delete message request from a user by one or more processors, deleting one or more stored chatbot mention messages and one or more stored chatbot response messages.
[0263] Example 4 is a method of any one of Examples 1 to 3, wherein deleting one or more stored chatbot mention messages and one or more chatbot prompt messages includes: immediately deleting one or more stored chatbot mention messages and one or more chatbot prompt messages from short-term data storage using a message deletion policy, and deleting one or more stored chatbot mention messages and one or more chatbot prompt messages from long-term data storage.
[0264] Example 5 is a method of any one of Examples 1 to 4, wherein one or more stored chatbot mention messages and one or more stored chatbot response messages are associated with two or more users in a group chat session, and wherein the method further includes: for each user in the group chat session, generating a context for the prompt by one or more processors using one or more stored chatbot mention messages and one or more stored chatbot response messages.
[0265] Example 6 is a method of any one of Examples 1 through 5, further comprising: in response to one or more processors determining that the chatbot mention message is the first chatbot mention message in a group chat session, providing a chatbot notification describing the operation of the chatbot to one or more users in the group chat session.
[0266] Example 7 is a method of any of Examples 1 through 6, where generating a response includes generating a response using a chatbot persona.
[0267] Example 8 is at least one machine-readable medium including instructions that, when executed by a processing circuitry system, cause the processing circuitry system to perform operations for implementing any one of Examples 1 through 7.
[0268] Example 9 is a device that includes means for implementing any one of Examples 1 through 7.
[0269] Example 10 is a system for implementing any one of Examples 1 through 7.
[0270] in conclusion
[0271] Changes and modifications may be made to the disclosed examples without departing from the scope of this disclosure. Such changes and other modifications are intended to be included within the scope of this disclosure.
[0272] Glossary
[0273] "Carrier signal" refers to any intangible medium capable of storing, encoding, or carrying instructions to be executed by a machine, and includes digital or analog communication signals or other intangible media to facilitate the communication of such instructions. Instructions can be sent or received over a network using a transmission medium via a network interface device.
[0274] "Client device" refers to any machine that interfaces with a communication network to obtain resources from one or more server systems or other client devices. Client devices can be, but are not limited to, mobile phones, desktop computers, laptop computers, portable digital assistants (PDAs), smartphones, tablet computers, ultrabooks, netbooks, multiple laptops, multiprocessor systems, microprocessor-based or programmable consumer electronics, game consoles, set-top boxes, or any other communication device that a user can use to access the network.
[0275] "Communications network" refers to one or more parts of a network, which may be an ad hoc network, intranet, extranet, virtual private network (VPN), local area network (LAN), wireless LAN (WLAN), wide area network (WAN), wireless WAN (WWAN), metropolitan area network (MAN), the Internet, a part of the Internet, a part of the Public Switched Telephone Network (PSTN), a Common Old-Style Telephone Service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, a network or part of a network may include a wireless network or a cellular network, and the coupling may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile Communications (GSM) connection, or other types of cellular or wireless coupling. In this example, coupling can enable any data transmission technology of various types, such as single-carrier radio transmission technology (1xRTT), evolved data optimization (EVDO) technology, general packet radio service (GPRS) technology, enhanced data rate GSM evolution (EDGE) technology, the 3rd Generation Partnership Project (3GPP) including 3G, fourth-generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High-Speed Packet Access (HSPA), Global Microwave Access Interoperability (WiMAX), Long Term Evolution (LTE) standards, other data transmission technologies defined by various standards setting organizations, other long-distance protocols, or other data transmission technologies.
[0276] A “component” refers to a device, physical entity, or logic having boundaries defined by function or subroutine calls, branch points, APIs, or other technologies provided for partitioning or modularizing specific processing or control functions. A component can be combined with other components via its interface to perform machine processing. A component can be an encapsulated functional hardware unit designed for use with other components and can be part of a program that typically performs a specific function within a related function. A component can constitute a software component (e.g., code embodied on a machine-readable medium) or a hardware component. A “hardware component” is a tangible unit capable of performing certain operations and can be configured or arranged in some physical manner. In various examples, one or more computer systems (e.g., standalone computer systems, client computer systems, or server computer systems) or one or more hardware components (e.g., processors or processor groups) of a computer system can be configured by software (e.g., an application or application portion) to operate to perform certain operations as described herein. Hardware components can also be implemented mechanically, electronically, or in any suitable combination thereof. For example, a hardware component can include a dedicated circuit system or logic permanently configured to perform certain operations. Hardware components can be dedicated processors, such as field-programmable gate arrays (FPGAs) or application-specific integrated circuits (ASICs). Hardware components can also include programmable logic or circuit systems temporarily configured by software to perform certain operations. For example, a hardware component may include software executed by a general-purpose processor or other programmable processor. Once configured by such software, the hardware component becomes a particular machine (or a specific part of a machine), which is uniquely tailored to perform the configured function and is no longer a general-purpose processor. It will be appreciated that the decision to implement a hardware component mechanically in a dedicated and permanently configured circuit system or in a temporarily configured (e.g., configured by software) circuit system may be made for cost and time considerations. Therefore, the phrase "hardware component" (or "hardware-implemented component") should be understood to include tangible entities, i.e., entities physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain way or perform certain operations described herein. Consider the example of a hardware component being temporarily configured (e.g., programmed), without needing to configure or instantiate each hardware component at any given time. For example, in cases where the hardware components include a general-purpose processor that is configured as a dedicated processor via software, this general-purpose processor can be configured at different times as its own distinct dedicated processor (e.g., including different hardware components). The software accordingly configures one or more specific processors to constitute a specific hardware component at one time and different hardware components at different times. Hardware components can provide information to and receive information from other hardware components.Therefore, the described hardware components can be considered communicatively coupled. In the presence of multiple hardware components, communication can be achieved through signal transmission between or among two or more hardware components (e.g., via appropriate circuitry and buses). In examples where multiple hardware components are configured or instantiated at different times, such communication between hardware components can be achieved, for example, by storing information in a memory structure accessible to the multiple hardware components and retrieving information from the memory structure. For example, a hardware component can perform an operation and store the output of that operation in a memory device communicatively coupled to it. Another hardware component can then access the memory device at a subsequent time to retrieve and process the stored output. Hardware components can also initiate communication with input or output devices and can operate on resources (e.g., collections of information). The various operations of the example methods described herein can be performed, at least in part, by one or more processors configured, either temporarily (e.g., via software) or permanently, to perform the relevant operations. Whether temporarily or permanently configured, such processors can constitute processor-implemented components that operate to perform one or more operations or functions described herein. As used herein, "processor-implemented component" refers to a hardware component implemented using one or more processors. Similarly, the methods described herein can be implemented at least in part by processors, where a particular processor or one or more processors are examples of hardware. For example, at least some of the operations of the methods can be executed by one or more processors or processor-implemented components. Furthermore, one or more processors can operate to support the execution of related operations in a “cloud computing” environment or as “Software as a Service” (SaaS). For example, at least some of the operations can be executed by a group of computers (as an example of a machine including processors), where these operations are accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., APIs). The execution of some operations can be distributed among processors, residing not only within a single machine but also deployed across multiple machines. In some examples, the processor or processor-implemented component may reside in a single geographic location (e.g., within a home environment, office environment, or server cluster). In other examples, the processor or processor-implemented component may be distributed across multiple geographic locations.
[0277] "Machine-readable storage medium" refers to both machine storage media and transmission media. Therefore, these terms encompass both storage devices / media and carrier / modulated data signals. The terms "computer-readable medium," "machine-readable medium," and "device-readable medium" refer to the same thing and can be used interchangeably in this disclosure.
[0278] A "brief message" is a message that can be accessed for a limited time. Brief messages can be text, images, videos, etc. The access time for a brief message can be set by the message sender. Alternatively, the access time can be a default setting or a setting specified by the recipient. Regardless of the setting method, the message is temporary.
[0279] "Machine storage medium" refers to one or more storage and media (e.g., centralized or distributed databases, and associated caches and servers) that store executable instructions, routines, and data. Therefore, this term should be considered to include, but is not limited to, solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage media, computer storage media, and device storage media include: non-volatile memory, including, for example, semiconductor memory devices such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage medium," "device storage medium," and "computer storage medium" mean the same thing and may be used interchangeably in this disclosure. The terms "machine storage medium," "computer storage medium," and "device storage medium" expressly exclude carrier waves, modulated data signals, and other such media, at least some of which are covered by the term "signal medium."
[0280] "Non-transitory machine-readable storage medium" refers to a tangible medium capable of storing, encoding, or carrying instructions that can be executed by a machine.
[0281] "Signal medium" means any intangible medium capable of storing, encoding, or carrying instructions executable by a machine, and includes digital or analog communication signals or other intangible media that facilitate the communication of software or data. The term "signal medium" should be considered to include any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal whose characteristics are set or altered in a manner that encodes information in the signal. The terms "transmission medium" and "signal medium" mean the same thing and may be used interchangeably in this disclosure.
[0282] In this disclosure and the appended claims, the terms “a” or “an” are commonly used in patent documents to indicate the inclusion of one or more, and are unrelated to any other use of “at least one” or “one or more.” In this disclosure and the appended claims, unless otherwise indicated, the term “or” is used to mean a non-exclusive “or,” such that “A or B” includes “A but not B,” “B but not A,” and “A and B.” In the appended claims, the terms “including” and “in which” are used as common English equivalents to the corresponding terms “comprising” and “wherein.” Furthermore, in the appended claims, the terms “comprising” and “including” are open-ended; that is, a system, apparatus, article, or process that includes elements other than those listed after such terms in the claims is still considered to fall within the scope of these claims.
Claims
1. A method comprising: One or more processors receive chatbot mention messages from a user's user system in a group chat session, the chatbot mention messages including chatbot prompts created by the user; The one or more processors use the chatbot-mentioned message to generate a prompt; The one or more processors use the prompt to generate a chatbot response message; as well as The chatbot response messages are provided by one or more processors to one or more other user systems of one or more other users in the group chat session.
2. The method according to claim 1, further comprising: The one or more processors store one or more stored chatbot mention messages and one or more stored chatbot response messages associated with the user; as well as Use the one or more stored chatbot mention messages and the one or more stored chatbot response messages to generate context for the prompt.
3. The method according to claim 2, further comprising: In response to receiving a delete message request from the user by one or more processors, delete the one or more stored chatbot mention messages and the one or more stored chatbot response messages.
4. The method according to claim 3, wherein, Deleting one or more stored chatbot mention messages and one or more chatbot prompt messages includes: immediately deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from short-term data storage using a message deletion policy, and deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from long-term data storage.
5. The method according to claim 2, in, The one or more stored chatbot mention messages and the one or more stored chatbot response messages are associated with two or more users in the group chat session, and The method further includes: for each user in the group chat session, the one or more processors generate a context for the prompt using the one or more stored chatbot mention messages and the one or more stored chatbot response messages.
6. The method according to claim 1, further comprising: In response to the one or more processors determining that the chatbot mention message is the first chatbot mention message in the group chat session, a chatbot notification describing the operation of the chatbot is provided to one or more users in the group chat session.
7. The method according to claim 1, wherein, Generating the response includes using the chatbot's persona to generate the response.
8. A machine comprising: One or more processors; as well as One or more memories, said one or more memories storing instructions that, when executed by said one or more processors, cause the machine to perform operations, said operations including: Receive chatbot mention messages from a user's user system in a group chat session, the chatbot mention messages including chatbot prompts created by the user; Use the chatbot to generate a message prompt; Use the prompt to generate a chatbot response message; and The chatbot response message is provided to one or more other user systems of one or more other users in the group chat session.
9. The machine according to claim 8, wherein, The operation also includes: The system stores one or more stored chatbot mention messages and one or more stored chatbot response messages associated with the user; and Use the one or more stored chatbot mention messages and the one or more stored chatbot response messages to generate context for the prompt.
10. The machine according to claim 9, wherein, The operation also includes: In response to receiving a delete message request from the user, delete the one or more stored chatbot mention messages and the one or more stored chatbot response messages.
11. The machine according to claim 10, wherein, Deleting one or more stored chatbot mention messages and one or more chatbot prompt messages includes: immediately deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from short-term data storage using a message deletion policy, and deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from long-term data storage.
12. The machine according to claim 9, in, The one or more stored chatbot mention messages and the one or more stored chatbot response messages are associated with two or more users in the group chat session, and The operation further includes: For each user in the group chat session, the one or more processors generate a context for the prompt using the one or more stored chatbot mention messages and the one or more stored chatbot response messages.
13. The machine according to claim 8, wherein, The operation also includes: In response to determining that the chatbot mention message is the first chatbot mention message in the group chat session, a chatbot notification describing the operation of the chatbot is provided to one or more users in the group chat session.
14. The machine according to claim 8, wherein, Generating the response includes using the chatbot's persona to generate the response.
15. A machine storage medium storing executable instructions, said executable instructions causing the machine to perform operations when executed by a machine, said operations including: Receive chatbot mention messages from a user's user system in a group chat session, the chatbot mention messages including chatbot prompts created by the user; Use the chatbot to generate a message prompt; Use the prompt to generate a chatbot response message; as well as The chatbot response message is provided to one or more other user systems of one or more other users in the group chat session.
16. The machine storage medium according to claim 15, wherein, The operation also includes: The system stores one or more stored chatbot mention messages and one or more stored chatbot response messages associated with the user; and Use the one or more stored chatbot mention messages and the one or more stored chatbot response messages to generate context for the prompt.
17. The machine storage medium according to claim 16, wherein, The operation also includes: In response to receiving a delete message request from the user, delete the one or more stored chatbot mention messages and the one or more stored chatbot response messages.
18. The machine storage medium according to claim 17, wherein, Deleting one or more stored chatbot mention messages and one or more chatbot prompt messages includes: immediately deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from short-term data storage using a message deletion policy, and deleting the one or more stored chatbot mention messages and one or more chatbot prompt messages from long-term data storage.
19. The machine storage medium according to claim 16, in, The one or more stored chatbot mention messages and the one or more stored chatbot response messages are associated with two or more users in the group chat session, and The operation further includes: generating a context for the prompt using the one or more stored chatbot mention messages and the one or more stored chatbot response messages for each user in the group chat session.
20. The machine storage medium according to claim 15, wherein, The operation also includes: In response to determining that the chatbot mention message is the first chatbot mention message in the group chat session, a chatbot notification describing the operation of the chatbot is provided to one or more users in the group chat session.