Construction of global internet message threads
Assigneesalesforce.com, inc.
InventorsNarek Asadorian, Noah William Burbank
Life of this patent
Estimating the term…
Loading patent…
Assigneesalesforce.com, inc.
InventorsNarek Asadorian, Noah William Burbank
Estimating the term…
Methods, systems, and devices supporting global message threads are described. A thread server may receive a communication message associated with a first set of user identifiers (e.g., the author and recipients of the message) and may extract a thread identifier from the message. The thread identifier may associate the message with one or more additional messages (e.g., from the same thread of messages), where the one or more additional messages may be associated with different user identifiers. The thread server may upsert the received communication message to a stored set of messages associated with a root indicating the thread identifier. If the thread server receives a query indicating the thread identifier from a user, the thread server may retrieve all of the messages associated with the thread identifier from persistent memory based on the query, including messages that are not associated with the user identifier for the querying user.
A method for persistent storage of global communication message information, comprising:
An apparatus for persistent storage of global communication message information, comprising:
A non-transitory computer-readable medium storing code for persistent storage of global communication message information, the code comprising instructions executable by a processor to:
Dependencies are inferred from the claim text.
Drawings are temporarily unavailable. Open the PDF at USPTO
From the US filing history. Foreign family members aren’t listed.
Monitoring or handling of messages: handling conversation history, e.g. grouping of messages in sessions or threads
Administration; Management: office automation; Time management
User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail: real-time or…
User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail: unified…
About 13 years 1 month of term left · ends 18 Nov 2039 (estimated)
The present disclosure relates generally to database systems and data processing, and more specifically to construction of global internet message threads.
A cloud platform (i.e., a computing platform for cloud computing) may be employed by many users to store, manage, and process data using a shared network of remote servers. Users may develop applications on the cloud platform to handle the storage, management, and processing of data. In some cases, the cloud platform may utilize a multi-tenant database system. Users may access the cloud platform using various user devices (e.g., desktop computers, laptops, smartphones, tablets, or other computing systems, etc.).
In one example, the cloud platform may support customer relationship management (CRM) solutions. This may include support for sales, service, marketing, community, analytics, applications, and the Internet of Things. A user may utilize the cloud platform to help manage contacts of the user. For example, managing contacts of the user may include analyzing data, storing and preparing communications, and tracking opportunities and sales.
FIG. 1 illustrates an example of a system for persistent storage of global communication message information that supports construction of global internet message threads in accordance with aspects of the present disclosure.
FIG. 2 illustrates an example of a message storing system that supports construction of global internet message threads in accordance with aspects of the present disclosure.
FIG. 3 illustrates an example of a user device including a user interface that supports construction of global internet message threads in accordance with aspects of the present disclosure.
Some cloud platforms may use group (e.g., global) threads to organize (e.g., store, display, etc.) messages. A thread may include messages (e.g., emails, calendar invites, instant messages, text messages, etc.) that are associated with users (e.g., senders, such as the author of the message; recipients, such as users in a recipient list or carbon copied (CC′d) on the message; etc.). In some examples, a first set of messages associated with a thread may be visible to a user, while a second set of messages associated with the thread may not be visible to the user. For example, a message associated with the thread may not be associated with the user (e.g., the user may be removed from the recipients list), and the message may accordingly not be visible to the user (e.g., in an inbox for the user). A message that is not visible to the user may cause the user to miss important information (e.g., a customer purchase) and/or engage in redundant work (e.g., send a duplicate message to a customer). In some cases, a message (e.g., an email) may be interpreted (e.g., classified). Interpreting a message without context may lead to an incorrect or inaccurate interpretation. In some examples, incorrectly or inaccurately interpreting a message may negatively affect individuals and/or organizations. For example, a first user may ask a customer if the customer is satisfied, and a second user may ask the same customer if the customer is not satisfied. The customer may reply to both the first and the second users with a short response message (e.g., “yes” or “no”), which may lead to an incorrect or inaccurate interpretation of the response message (e.g., as the same natural language text in the response messages may have drastically different meanings).
A message threading system may implement global (e.g., group) message threads to organize messages. Global message threads may improve system efficiency, reduce redundant work, improve message interpretation, or a combination thereof. A communication message may be received at a server, and the communication message may include a set of user identifiers. The set of user identifiers may be associated with transmitting the communication message (e.g., a message sender) or receiving the communication message (e.g., a message recipient). A thread identifier may be extracted from the communication message, and the thread identifier may be used in storing the communication message in persistent memory (e.g., a database, a solid state drive, a hard disk drive, etc.). In some examples, the communication message and/or metadata associated with the communication message may be stored in a data structure (e.g., a tree), and the thread identifier may indicate a tree root (e.g., a root node) associated with the message. If a tree root corresponding to the thread identifier is not identified in the persistent memory, a new tree may be created with a root that corresponds to the thread identifier. If a tree root corresponding to the thread identifier is identified, the communication message may be associated with (e.g., inserted into or upserted to) the tree. In some examples, one or more additional communication messages may be stored with the communication message. For example, the one or more additional communication messages may also be associated with the thread identifier, and the threading system may store the communication message with the one or more additional communication messages based on their common thread identifier (e.g., as part of the same data structure).
In some cases, a global message thread may be constructed and/or displayed based on one or more thread identifiers. For example, a query message may be received (e.g., from a user device), and the query message may indicate a thread identifier. In some cases, a data structure may be identified based on the thread identifier. Data (e.g., a communication message, communication message metadata, etc.) may be retrieved from persistent memory based on the thread identifier. In some cases, global message threads and/or the storage of communication messages associated with global message threads may improve system efficiency. For example, a user may efficiently retrieve all communication messages associated with a thread identifier, regardless of whether the user is included on the communication messages (e.g., whether the user is the author or a recipient of any particular message in the thread). Additionally or alternatively, storing communication messages in a graph (e.g., a tree) may support efficient graph operations (e.g., insert, delete, search, iterate, etc.). In some examples, the storage of communication messages in a tree with a root that is associated with a thread identifier may provide logarithmic run-time search complexity (e.g., O(log(n)) with respect to the number of messages stored in the tree. In some additional or alternative cases, global message threads and/or the way in which communication messages are stored may improve message interpretations. For example, storing communication messages based on a thread identifier may provide message context in a comprehensive and efficient manner.