Mention processor configured to process mention identifiers

By introducing mention processors, packaging configurations and side effects, and recording only without sending notifications, the problem of notification object determination in the prior art is solved, the visibility and error analysis capabilities of the system are improved, and the computing burden is reduced.

CN120419151APending Publication Date: 2025-08-01SALESFORCE INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380086697.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-12-27
Filing Date
2023-12-05
Publication Date
2025-08-01

AI Technical Summary

Technical Problem

The prior art is difficult to navigate and error-prone when determining notification objects in a messaging system, and lacks information to provide the cause of the error, resulting in limited system functionality.

Method used

Introducing mention processors, encapsulate all configurations and side effects, logging only without sending notifications immediately, reducing computational burden, and providing log data storage and search tools for ease of error analysis.

Benefits of technology

Improves visibility and information organization of message processing, reduces computational burden, reduces the frequency of errors, and provides insight into notifying errors, helping users prevent future errors.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120419151A_ABST
    Figure CN120419151A_ABST
Patent Text Reader

Abstract

Techniques for identifying a mention identifier within a message using a mention processor are discussed herein. In some examples, a communication platform maintains a mention processor configured to: receive a message including a mention identifier; analyzing the message to determine a type of mention identifier included in the message; identifying a second user account or virtual space referenced by the mention identifier; determining whether a notification should be sent to a second user account or the virtual space; and upon determining that the notification should be sent, sending a notification associated with the message to a second user profile or virtual space. In some examples, an observability class associated with a mention processor allows one or more stored mention identifiers associated with a message and one or more stored notifications queued for the message to be viewed using a mention lookup tool.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross - Reference to Related Applications

[0002] This application claims priority to U.S. Patent Application No. 18 / 089,119, titled "MENTIONS PROCESSOR CONFIGURED TO PROCESS MENTION IDENTIFIERS", filed on December 27, 2022, the entire content of which is incorporated herein by reference. Technical Field

[0003] Various messaging systems can support communication and collaboration among users via an electronic computer - based communication platform. Messages sent via the communication platform are evaluated to determine which users and / or channels to notify of the message. However, many deficiencies and problems are associated with the current processing logic for determining which users and / or channels to notify. For example, the current processing logic may be difficult for users to navigate, error - prone, and / or may not provide the information necessary for users to determine the cause of a messaging error. Thus, such current systems are limited in scope and functionality. Brief Description of the Drawings

[0004] The detailed description is described with reference to the accompanying drawings. In the drawings, the left - most digit of the reference numeral identifies the drawing in which the reference numeral first appears. The same reference numerals are used in different drawings to indicate similar or identical components or features. The drawings are not drawn to scale.

[0005] Figure 1 An exemplary system for performing the techniques described herein is shown.

[0006] Figure 2A A user interface for a group - based communication system for a specific example is shown.

[0007] Figure 2B A user interface for a multimedia collaboration session within a group - based communication system for a specific example is shown.

[0008] Figure 2C A user interface for inter - organizational collaboration within a group - based communication system for a specific example is shown.

[0009] Figure 2D A user interface for a collaborative document within a group - based communication system for a specific example is shown.

[0010] Figure 3A A user interface depicting a workflow within a group - based communication system is shown.

[0011] Figure 3B A block diagram depicting a specific example for implementation as discussed herein is shown.

[0012] Figure 4 An exemplary user interface is shown that presents different types of mention identifiers within a message associated with a communication platform as described herein.

[0013] Figure 5 A schematic flowchart is shown that illustrates an exemplary process for receiving a message that includes a mention identifier, analyzing the message using a mention processor, and sending a notification.

[0014] Figure 6A A user interface is shown that enables a user to search for one or more mention identifiers detected in a message.

[0015] Figure 6B A user interface is shown that enables a user to view stored mention identifiers associated with a message. Detailed Description

[0016] Messages that include mention identifiers (e.g., @name, @channel, @direct message, etc.) sent via a communication platform can be processed by mention processing logic to determine which user or group of users in a virtual space should be notified of the message. As described above, prior art for processing mention identifiers within a message includes processing logic that can be difficult for users to navigate, error-prone, and may not provide users with the information necessary to determine the cause of a notification error. The processing logic in existing systems may not allow verification of the business logic of the code without reprocessing the message and triggering all side effects.

[0017] The technical solutions presented herein can address one or more of the above technical problems. According to aspects of the disclosure, a mention processor can encapsulate all configurations and side effects within the mention processor. Side effects can include effects observed from outside the function being processed within the mention processor. In other words, a function, operation, or expression is considered to have a side effect when it changes non-local state, when its output is non-deterministic, or when it modifies some state variable outside of the local environment in which it is executing. Functions related to mention identifiers within a message run through an instance of a mention processor container. A container is a class or data structure that is configured to store other data items or objects. A container can also be described as a software package that contains all the necessary elements to run in any environment (e.g., in a private data center, a public cloud, a developer's computing device, etc.). In some cases, the mention processor allows different applications of side effects without having to re-implement the overall business logic each time.

[0018] The techniques described herein also target a logging-only mention processor that enables logging and displaying rather than applying all side effects, which allows introspection of business logic without additional processing. The logging-only mention processor can be associated with an observability class of mention processors. For example, the logging-only mention processor provides information about what mention identifiers were detected in a message without triggering any notifications that would be sent to a user and / or virtual space. The logging-only mention processor stores the information in one or more databases rather than sending one or more notifications. The stored information can include mention identifiers detected within the message, jobs that have been processed, what subscriptions (if any) occurred for past messages without having to resend the message. Thus, the logging-only mention processor improves visibility, information organization, and reduces the computational burden. The logging-only mention processor is associated with a mention lookup tool that enables a user to review the stored information (including what mentions (if any) were detected in the message and what notifications (if any) would be sent for the message based on the mentions within the message).

[0019] The mention processor is configured to parse messages sent via a communication platform and identify mention identifiers within the messages. Mention identifiers are used to tag other user accounts or virtual spaces (e.g., channels, feeds, etc.) in order to draw attention to some information (e.g., messages, documents, keywords, items, etc.) shared within the communication platform. Mention identifiers can be of various types and can include, for example, keyword mention identifiers, user account mention identifiers, group mention identifiers, channel mention identifiers, virtual space mention identifiers, or document mention identifiers. The mention processor can identify a second user profile and / or virtual space within the communication platform referenced by the mention identifier at least in part based on the type of mention identifier within the message. The mention processor can determine whether a notification should be sent to a particular user account and / or virtual space and, based on determining that a notification should be sent, send a notification based on preference settings associated with the user account and / or virtual space. The notifications can include email, text messages, pop-up notifications, channel notifications, delayed notifications, etc.

[0020] The mentioned processor can generate log data associated with the mentioned identifier and store the log data in one or more databases. The log data can represent a history of information and / or data processed by the mentioned processor (e.g., metadata associated with each message transmitted via the virtual space, such as a timestamp associated with the message, a sending user identifier, a receiving user identifier, a conversation identifier, and / or a root object identifier, errors during processing, etc.). A search tool (i.e., a mention lookup tool) can be used to view the stored mention identifiers associated with the message. For example, a user can input data associated with the message into the search tool. The data associated with the message can include, for example, a permalink, a message identification code, a team identification code, a channel identification code, or a timestamp. The search tool can be used to view one or more observed mention identifiers within the message without triggering all side effects (e.g., a user can utilize the search tool without triggering the side effect of sending a notification to another user of the communication platform). The search tool can also be used to view what notifications (if any) have been sent to the user and / or the virtual space.

[0021] The techniques described herein can reduce the amount of computational processing performed by a computing device when processing mention identifiers within a message and sending notifications via a communication platform. The mention processor enables all side effects to run through an instance of the mention processor and reduces the number of computations in existing systems. The techniques described herein implement different applications of side effects without having to re-implement the logic of the code in each usage scenario. In some cases, the techniques described herein also enable recording and displaying rather than applying side effects via a user interface, thus allowing introspection of business logic without dealing with side effects. Additionally, the techniques discussed herein can reduce the number of errors that occur when processing mention identifiers within a message and increase the benefit of error visibility. Errors caused by processing mention identifiers will require reprocessing the mention identifiers and the corresponding messages, which will result in additional computational processing requirements.

[0022] The techniques described herein provide various benefits to users associated with a communication platform. For example, users can access tools (e.g., mention lookup tools) that enable the users to view what mention identifiers have been detected in a message and what notifications may have been sent in association with the message. The tools can provide users with insights into how notification errors occur (e.g., notification errors may occur when sending a notification to an incorrect user, an incorrect virtual space, at an incorrect time or date, in an incorrect notification type, etc.) and thus help users prevent future notification errors. Accordingly, systems constructed according to various examples of the disclosure provide specific technical solutions to technical problems, details of which are described herein.

[0023] The following detailed description of the examples refers to the accompanying drawings that show specific examples in which the techniques may be practiced. These examples are intended to describe aspects of the systems and methods in sufficient detail so that those skilled in the art can practice the techniques discussed herein. Other examples may be utilized and changes may be made without departing from the scope of the disclosure. Accordingly, the following detailed description should not be construed as limiting. The scope of the disclosure is defined only by the appended claims and the full scope of equivalents to such claims.

[0024] Group-based communication system

[0025] Figure 1 An exemplary environment 100 for performing the techniques described herein is shown. In at least one example, the exemplary environment 100 may be associated with a communication platform that may utilize a network-based computing system to enable users of the communication platform to exchange data. In at least one example, the communication platform may be “group-based” such that the platform and associated systems, communication channels, messages, collaborative documents, canvases, audio / video conversations, and / or other virtual spaces have security (which may be defined by permissions) to limit access to a defined group of users. In some examples, such groups of users may be defined by group identifiers which, as described above, may be associated with common access credentials, domains, etc. In some examples, the communication platform may be a hub that provides a secure and private virtual space for users to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate with each other or among themselves. As described above, each group may be associated with a workspace such that users associated with the group can chat, meet, call, collaborate, transfer files or other data, or otherwise communicate with each other or among themselves in a secure and private virtual space. In some examples, the members of the group and thus the workspace may be associated with the same organization. In some examples, the members of the group and thus the workspace may be associated with different organizations (e.g., entities with different organization identifiers).

[0026] In at least one example, the exemplary environment 100 may include one or more server computing devices (or “servers”) 102. In at least one example, the server 102 may include one or more servers or other types of computing devices that may be embodied in any number of ways. For example, in the case of a server, the functional components and data may be implemented on a single server, a server cluster, a server farm or data center, a cloud-hosted computing service, a cloud-hosted storage service, etc., but other computer architectures may be additionally or alternatively used.

[0027] In at least one example, server 102 can communicate with user computing device 104 via one or more networks 106. That is, server 102 and user computing device 104 can use network 106 to transmit, receive, and / or store data (e.g., content, information, etc.), as described herein. User computing device 104 can be any suitable type of computing device, e.g., portable, semi-portable, semi-fixed, or fixed. Some examples of user computing device 104 can include tablet computing devices, smart phones, mobile communication devices, laptop computers, netbooks, desktop computing devices, terminal computing devices, wearable computing devices, augmented reality devices, Internet of Things (IoT) devices, or any other computing device capable of sending communications and performing functions in accordance with the techniques described herein. Although a single user computing device 104 is shown, in practice, exemplary environment 100 can include multiple (e.g., dozens, hundreds, thousands, millions) user computing devices. In at least one example, among other things, user computing devices (such as user computing device 104) can be operated by a user to access communication services via a communication platform. The user can be an individual, a group of individuals, an employer, a business, an organization, etc.

[0028] Network 106 can include, but is not limited to, any type of network known in the art, such as a local area network or wide area network, the Internet, a wireless network, a cellular network, a local wireless network, Wi-Fi, and / or near field communication, Bluetooth Low Energy (BLE), Near Field Communication (NFC), a wired network, or any such network or any combination thereof. The components for such communication can depend at least in part on the type of network, the selected environment, or both. The protocols for communicating over such network 106 are well known and will not be discussed in detail herein.

[0029] In at least one example, server 102 can include one or more processors 108, a computer-readable medium 110, one or more communication interfaces 112, and / or input / output devices 114.

[0030] In at least one example, each processor in processor 108 can be a single processing unit or multiple processing units, and can include single or multiple computing units or multiple processing cores. Processor 108 can be implemented as one or more microprocessors, microcomputers, microcontrollers, digital signal processors, central processing units (CPUs), graphics processing units (GPUs), state machines, logic circuits, and / or any device that manipulates signals based on operational instructions. For example, processor 108 can be one or more hardware processors and / or any suitable type of logic circuit that is specifically programmed or configured to execute the algorithms and processes described herein. Processor 108 can be configured to fetch and execute computer-readable instructions stored in a computer-readable medium, which can program the processor to perform the functions described herein.

[0031] Computer-readable medium 110 can include volatile and non-volatile memory and / or removable and non-removable media implemented in any type of technology for storing data such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable medium 110 can include, but is not limited to, RAM, ROM, EEPROM, flash memory, or other memory technologies, optical storage, solid-state storage, magnetic tape, magnetic disk storage, RAID storage systems, storage arrays, network-attached storage, storage area networks, cloud storage, or any other medium that can be used to store the desired data and can be accessed by a computing device. Depending on the configuration of server 102, computer-readable medium 110 can be a type of computer-readable storage medium and / or can be a tangible non-transitory medium, to the extent that when mentioned, non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals themselves.

[0032] Computer-readable medium 110 can be used to store any number of functional components that can be executed by processor 108. In many implementations, these functional components include instructions or programs that can be executed by processor 108 and that, when executed, specifically configure processor 108 to perform the actions attributed to server 102 above. The functional components stored in the computer-readable medium can optionally include messaging component 116 (which includes reference to processor 120), audio / video component 118, operating system 122, and data repository 124.

[0033] In at least one example, the messaging component 116 may handle messages between users. That is, in at least one example, the messaging component 116 may receive an outgoing message from a user computing device 104 and may send the message as an incoming message to a second user computing device. Messages may include direct messages sent from an originating user to one or more designated users and / or communication channel messages sent from an originating user via a communication channel to one or more users associated with the communication channel. Additionally, messages may be transmitted in association with a collaborative document, canvas, or other collaborative space. In at least one example, the canvas may include a flexible canvas for curating, organizing, and sharing collections of information among users. In at least one example, a collaborative document may be associated with a document identifier (e.g., a virtual space identifier, a communication channel identifier, etc.), the document identifier being configured to implement messaging functionality within the collaborative document that can be attributed to a virtual space (e.g., a communication channel). That is, the collaborative document may be regarded as a virtual space (such as a communication channel) and include functionality associated with the virtual space (such as a communication channel). The virtual space or communication channel may be a data route for exchanging data between and among systems and devices associated with a communication platform.

[0034] In at least one example, the messaging component 116 may establish communication routes between and among various user computing devices, allowing the user computing devices to communicate and share data with one another. In at least one example, the messaging component 116 may manage such communication and / or data sharing. In some examples, data associated with a virtual space (such as a collaborative document) may be presented via a user interface. Additionally, metadata associated with each message transmitted via the virtual space may be stored in association with the virtual space, such as a timestamp associated with the message, a sending user identifier, a recipient user identifier, a conversation identifier, and / or a root object identifier (e.g., a conversation associated with a thread and / or root object), etc.

[0035] In various examples, the messaging component 116 can receive messages transmitted in association with a virtual space (e.g., a direct message instance, a communication channel, a canvas, a collaborative document, etc.). In various examples, the messaging component 116 can identify one or more users associated with the virtual space and can cause the message to be presented in association with an instance of the virtual space on the respective user computing device 104. In various examples, the messaging component 116 can identify the message as an update to the virtual space and, based on the identified update, can cause a notification associated with the update to be presented in association with a sidebar of the user interface, the user interface being associated with one or more of the users associated with the virtual space. For example, the messaging component 116 can receive a message transmitted in association with a virtual space from a first user account. In response to receiving the message (e.g., interaction data associated with the first user's interaction with the virtual space), the messaging component 116 can identify a second user associated with the virtual space (e.g., another user who is a member of the virtual space). In some examples, the mention processor 120 of the messaging component 116 can cause a notification of an update to the virtual space to be presented via a sidebar of the user interface associated with the second user's second user account. In some examples, the mention processor 120 of the messaging component 116 can cause a notification to be presented in response to determining that the sidebar of the user interface associated with the second user account includes an affordance representation associated with the virtual space. In such examples, the notification can be presented in association with the affordance representation associated with the virtual space.

[0036] The messaging component 116 can include a mention processor 120. In some examples, the messaging component 116 can include multiple mention processors. For example, the messaging component can include a first mention processor configured to trigger side effects and a second mention processor configured for use during debugging or for testing purposes (e.g., a logging-only mention processor). In some examples, different mention processors can be used for individual specific users and / or virtual spaces. In some examples, the mention processor 120 can encapsulate all configurations and side effects that occur during mention processing. In some examples, the mention processor 120 can be configured to identify and process all mention identifiers associated with messages transmitted in association with the communication platform. In some examples, the mention processor 120 processes metadata associated with the communication platform (e.g., information about mention identifiers in the message, the type of mention identifier, user identification, group identification, team identification, channel identification, timestamp, etc.). The mention processor 120 can include a container configured to capture side effects (e.g., notifications) within the mention processor 120.

[0037] In some examples, the mention processor 120 may be configured to identify mentions (or mention identifiers) associated with messages transmitted in association with a virtual space. In at least one example, a mention identifier (or tag) may include an @-mention (or other special character) of a user identifier associated with a communication platform. In some examples, the mention processor 120 may be configured to identify one or more mention identifiers (e.g., @-mentions) embedded within a message. The mention processor 120 may be configured to determine the type of mention identifier embedded within the message. For example, the mention processor 120 may be configured to identify keyword mention identifiers (e.g., @new_item, @new_promotional_material, @holiday_party_2022, etc.), user profile mention identifiers (e.g., @user_A), group mention identifiers (@group_1), channel mention identifiers (e.g., @channel_A), document mention identifiers (e.g., @document_1), or application mention identifiers (e.g., @application_A) within messages or other communications transmitted in association with a virtual space. In some examples, a user profile mention identifier may include a username, real name, or other unique identifier associated with a particular user or user account.

[0038] In response to analyzing a message to determine the type of mention identifier included in the message, the mention processor 120 may identify the user account and / or virtual space referenced by the mention identifier on the communication platform. In response to identifying the user account and / or virtual space, the mention processor 120 of the messaging component 116 may determine whether a notification should be sent to the user account and / or virtual space. For example, the mention processor 120 may determine that a notification should be sent to the user account and / or virtual space at least in part based on notification preferences associated with the user account or virtual space. Additional details of operations that may be performed by the mention processor 120 are described below.

[0039] In at least one example, the audio / video component 118 may be configured to manage audio and / or video communications among and between users. In some examples, the audio and / or video communications may be associated with an audio and / or video conversation. In at least one example, the audio and / or video conversation may include a discrete identifier configured to uniquely identify the audio and / or video conversation. In some examples, the audio / video component 118 may store user identifiers associated with the user accounts of the members of a particular audio and / or video conversation, such as to identify users having appropriate permissions to access the particular audio and / or video conversation.

[0040] In some examples, communications associated with an audio and / or video conversation (“conversation”) can be synchronous and / or asynchronous. That is, a conversation can include a real-time audio and / or video conversation between a first user and a second user over a period of time, and after a first period of time, a third user associated with the conversation (e.g., as a member of the conversation) can contribute to the conversation. The audio / video component 118 can be configured to store audio and / or video data associated with the conversation, such that users with appropriate permissions can listen to and / or view the audio and / or video data.

[0041] In some examples, the audio / video component 118 can be configured to generate a transcription of the conversation and can store the transcription associated with the audio and / or video data. The transcription can include a text representation of the audio and / or video data. In at least one example, the audio / video component 118 can use known speech recognition techniques to generate the transcription. In some examples, the audio / video component 118 can generate the transcription concurrently or substantially concurrently with the conversation. That is, in some examples, the audio / video component 118 can be configured to generate a text representation of the conversation as the conversation is taking place. In some examples, the audio / video component 118 can generate the transcription after receiving an indication that the conversation has been completed. The indication that the conversation has been completed can include an indication that the moderator or administrator associated therewith has stopped the conversation, an indication that a threshold number of meeting attendees have closed the associated interface, etc. That is, the audio / video component 118 can identify the completion of the conversation and can generate a transcription associated therewith based on the completion.

[0042] In at least one example, the audio / video component 118 can be configured to present the transcription associated with a virtual space associated with the audio and / or video conversation. For example, a first user can initiate an audio and / or video conversation associated with a communication channel. The audio / video component 118 can process the audio and / or video data among the attendees of the audio and / or video conversation and can generate a transcription of the audio and / or video data. In response to generating the transcription, the audio / video component 118 can cause the transcription to be published or otherwise presented via the communication channel. In at least one example, the audio / video component 118 can render one or more segments of the transcription as selectable for commentary, such that members of the communication channel can comment on the conversation or further contribute to the conversation. In some examples, the audio / video component 118 can update the transcription based on the commentary.

[0043] In at least one example, the audio / video component 118 may manage one or more audio and / or video conversations associated with a virtual space associated with a group (e.g., an organization, a team, etc.) administrator or a command center. The group administrator or the command center may be referred to herein as the virtual (and / or digital) headquarters associated with the group. In at least one example, the audio / video component 118 may be configured to coordinate with the messaging component 116 and / or other components of the server 102 to transmit communications associated with other virtual spaces associated with the virtual headquarters. That is, the messaging component 116 may transmit data (e.g., messages, images, drawings, files, etc.) associated with one or more communication channels, direct messaging instances, collaborative documents, canvases, etc. associated with the virtual headquarters. In some examples, the communication channels, direct messaging instances, collaborative documents, canvases, etc. may have one or more audio and / or video conversations associated therewith managed by the audio / video component 118. That is, the audio and / or video conversations associated with the virtual headquarters may be further associated with or independent of one or more other virtual spaces of the virtual headquarters.

[0044] In some examples, a communication platform may manage communication channels. In some examples, the communication platform may be a channel-based messaging platform, and in some examples, the platform may be available for use by a user group. Users of the communication platform may communicate with other users via the communication channels. A communication channel or a virtual space may be a data route for exchanging data between and among systems and devices associated with the communication platform. In some examples, a channel may be a virtual space in which people may post messages, documents, and / or files. In some examples, access to a channel may be controlled by permission. In some examples, a channel may be restricted to a single organization, shared between different organizations, may be a public, private, or special channel (e.g., a hosted channel with guest accounts, where guests may post but are blocked from performing certain actions, such as inviting other users to the channel). In some examples, some users may be invited to a channel via email, channel invitation, direct message, text message, etc. Examples of channels and associated functionality are discussed throughout the disclosure.

[0045] In at least one example, the operating system 122 may manage the processor 108, the computer-readable medium 110, the hardware, the software, etc. of the server 102.

[0046] In at least one example, the data repository 124 may be configured to store data that can be accessed, managed, and updated. In some examples, the data repository 124 may be integrated with the server 102, as Figure 1As shown. In other examples, the data repository 124 can be located away from the server 102 and can be accessible by the server 102 and / or a user device (such as the user device 104). The data repository 124 can include multiple databases, and the multiple databases can include user / organization data 126 and / or virtual space data 128. Additional or alternative data can be stored in the data repository and / or one or more other data repositories.

[0047] In at least one example, the user / organization data 126 can include data associated with users of the communication platform. In at least one example, the user / organization data 126 can store data in a user profile (which can also be referred to as a "user account"), and the user profile can store data associated with the user, including but not limited to: one or more user identifiers associated with multiple different organizations or entities to which the user is associated, one or more communication channel identifiers associated with communication channels that the user has been authorized to access, one or more group identifiers of groups (or organizations, teams, entities, etc.) to which the user is associated, an indication of whether the user is an owner or manager of any communication channel, an indication of whether the user has any communication channel constraints, multiple messages, multiple emojis, multiple conversations, multiple conversation topics, an avatar, an email address, a real name (e.g., John Doe), a username (e.g., jdoe), a password, a time zone, a status, a token, etc.

[0048] In at least one example, the user / organization data 126 can include permission data associated with the permissions of individual users of the communication platform. In some examples, the permissions can be set automatically or by an administrator of the communication platform, an employer, a business, an organization, or other entity that uses the communication platform, a team leader, a group leader, or other entity that uses the communication platform to communicate with team members, group members, etc., an individual user, etc. The permissions associated with an individual user can be mapped to an account or profile within the user / organization data 126 or otherwise associated with the account or profile. In some examples, the permissions can indicate which users can communicate directly with other users, which channels a user is permitted to access, constraints on individual channels, which workspaces a user is permitted to access, constraints on individual workspaces, etc. In at least one example, the permissions can support the communication platform by maintaining security to limit access to a defined group of users. In some examples, such users can be defined by a common access credential, a group identifier, etc., as described above.

[0049] In at least one example, user / organization data 126 can include data associated with one or more organizations of a communication platform. In at least one example, user / organization data 126 can store data in an organization profile, which can store data associated with the organization, including but not limited to: one or more user identifiers associated with the organization, one or more virtual space identifiers associated with the organization (e.g., workspace identifier, communication channel identifier, direct message instance identifier, collaborative document identifier, canvas identifier, audio / video conversation identifier, etc.), an organization identifier associated with the organization, one or more organization identifiers associated with other organizations authorized to communicate with the organization, etc.

[0050] In at least one example, virtual space data 128 can include data associated with one or more virtual spaces associated with a communication platform. Virtual space data 128 can include text data, audio data, video data, images, files, and / or any other type of data configured to be transmitted in association with a virtual space. Non-limiting examples of virtual spaces include workspaces, communication channels, direct messaging instances, collaborative documents, canvases, and audio and / or video conversations. In at least one example, virtual space data can store data associated with individual virtual spaces separately, such as based on discrete identifiers associated with each virtual space. In some examples, a first virtual space can be associated with a second virtual space. In such examples, first virtual space data associated with the first virtual space can be stored in association with the second virtual space. For example, data associated with a collaborative document generated in association with a communication channel can be stored in association with the communication channel. Another example is that data associated with an audio and / or video conversation conducted in association with a communication channel can be stored in association with the communication channel.

[0051] As described above, a discrete identifier that uniquely identifies a virtual space can be assigned to each virtual space of a communication platform. In some examples, the virtual space identifier associated with a virtual space can include the physical address in the virtual space data 128 where data related to the virtual space is stored. The virtual space can be "public", which can allow any user within an organization (e.g., associated with an organization identifier) to join and participate in data sharing through the virtual space, or the virtual space can be "private", which can restrict data communication in the virtual space to specific users or users with appropriate viewing permissions. In some examples, the virtual space can be "shared", which can allow users associated with different organizations (e.g., entities associated with different organization identifiers) to join and participate in data sharing through the virtual space. A shared virtual space (e.g., a shared channel) can be public, such that it can be accessed by any user of any organization, or a shared virtual space (e.g., a shared channel) can be private, such that it is restricted to be accessed by specific users (e.g., users with appropriate permissions) of two organizations.

[0052] In some examples, the data repository 124 can be partitioned into discrete data items (e.g., data shards) that can be accessed and managed separately. Data sharding can simplify many technical tasks, such as data retention, expansion (e.g., detecting that the message content includes a link, crawling the metadata of the link, and determining a unified overview of the metadata), and integration settings. In some examples, the data shards can be associated with an organization, a group (e.g., a workspace), a communication channel, a user, etc.

[0053] In some examples, an individual organization can be associated with a database shard in the data repository 124 that stores data related to a specific organization identifier. For example, the database shard can store electronic communication data associated with the members of a specific organization, which enables the members of the specific organization to communicate and exchange data with other members of the same organization in real time or near real time. In an example, the organization itself can be the owner of the database shard and have control over where and how the relevant data is stored. In some examples, the database shard can store data related to two or more organizations (e.g., as in a shared virtual space).

[0054] In some examples, an individual group can be associated with a database shard in the data repository 124 that stores data related to a specific group identifier (e.g., a workspace). For example, the database shard can store electronic communication data associated with the members of a specific group, which enables the members of the specific group to communicate and exchange data with other members of the same group in real time or near real time. In an example, the group itself can be the owner of the database shard and have control over where and how the relevant data is stored.

[0055] In some examples, a virtual space can be associated with a database shard that stores data related to a particular virtual space identifier within the data repository 124. For example, the database shard can store electronic communication data associated with the virtual space, which enables members of a particular virtual space to communicate and exchange data with other members of the same virtual space in real-time or near real-time. As described above, communication via the virtual space can be synchronous and / or asynchronous. In at least one example, a group or organization can be the owner of the database shard and can control where and how the related data is stored.

[0056] In some examples, an individual user can be associated with a database shard that stores data related to a particular user account within the data repository 124. For example, the database shard can store electronic communication data associated with the individual user, which enables the user to communicate and exchange data with other users of the communication platform in real-time or near real-time. In some examples, the user itself can be the owner of the database shard and has control over where and how the related data is stored.

[0057] In some examples, such as when a channel is shared between two organizations, each organization can be associated with its own encryption key. When a user associated with an organization posts a message or file to the shared channel, the message or file can be encrypted in the data repository 124 with the organization-specific encryption key, and the other organization can decrypt the message or file before accessing it. Additionally, in examples where the organizations are located in different geographical regions, data associated with a particular organization can be stored in a location corresponding to the organization and is temporarily cached closer to the client (e.g., associated with another organization) when such a message or file is to be accessed. Data can be maintained, stored, and / or deleted in the data repository 124 according to the data management policies associated with each particular organization.

[0058] The communication interface 112 can include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device 104), such as via the network 106 or directly. In some examples, the communication interface 112 can facilitate communication via WebSocket, application programming interface (API) (e.g., using API calls), hypertext transfer protocol (HTTP), etc.

[0059] The server 102 can also be equipped with various input / output devices 114 (e.g., I / O devices). Such I / O devices 114 can include a display, various user interface controls (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.

[0060] In at least one example, the user computing device 104 can include one or more processors 130, a computer-readable medium 132, one or more communication interfaces 134, and input / output devices 136.

[0061] In at least one example, each of the processors 130 can be a single processing unit or multiple processing units and can include a single or multiple computing units or multiple processing cores. The processors 130 can include any type of processor described above with reference to the processor 108 and can be the same as or different from the processor 108.

[0062] The computer-readable medium 132 can include any type of computer-readable medium 132 described above with reference to the computer-readable medium 110 and can be the same as or different from the computer-readable medium 110. The functional components stored in the computer-readable medium can optionally include at least one application 138 and an operating system 140.

[0063] In at least one example, the application 138 can be a mobile application, a web application, or a desktop application, which can be provided by a communication platform or which can be an additional dedicated application. In some examples, separate user computing devices associated with the environment 100 can have instances or versioned instances of the application 138 that can be downloaded from an app store, accessible via the Internet, or otherwise executable by the processors 130 to perform the operations described herein. That is, the application 138 can be an access point that enables the user computing device 104 to interact with the server 102 to access and / or use communication services available via the communication platform. In at least one example, the application 138 can facilitate data exchange between and among various other user computing devices, e.g., via the server 102. In at least one example, the application 138 can present a user interface as described herein. In at least one example, the user can interact with the user interface via touch input, keyboard input, mouse input, voice input, or any other type of input.

[0064] Figure 1 A non-limiting example of the user interface 142 is shown. As Figure 1As shown, the user interface 142 can present data associated with one or more virtual spaces (which can include one or more workspaces). That is, in some examples, the user interface 142 can integrate data from multiple workspaces into a single user interface such that a user (e.g., of the user computing device 104) can access data associated with, interact with, and / or otherwise communicate with other users associated with the multiple workspaces to which the user is related. In some examples, the user interface 142 can include a first region 144 or pane that includes indicators (e.g., user interface elements or objects) associated with workspaces associated with the user (e.g., the user's account). In some examples, the user interface 142 can include a second region 146 or pane that includes indicators (e.g., user interface elements, affordances, objects, etc.) representing data associated with workspaces associated with the user (e.g., the user's account). In at least one example, the second region 146 can represent a sidebar of the user interface 142.

[0065] In at least one example, the user interface 142 can include a third region 148 or pane that can be associated with a data feed (or "feed") indicating messages posted to one or more communication channels and / or other virtual spaces for facilitating communication (e.g., virtual spaces associated with direct message communication, virtual spaces associated with events and / or actions, etc.) and / or actions taken with respect to one or more communication channels and / or other virtual spaces, as described herein. In at least one example, the data associated with the third region 148 can be associated with the same or different workspaces. That is, in some examples, the third region 148 can present data associated with the same or different workspaces via an integrated feed. In some examples, the data can be organized and / or sorted by workspace, time (e.g., the time the associated data was posted or otherwise the associated operation was performed), type of action, communication channel, user, etc. In some examples, such data can be associated with an indication of which user (e.g., a member of the communication channel) posted the message and / or performed the action. In examples where the third region 148 presents data associated with multiple workspaces, at least some of the data can be associated with an indication of which workspace the data is associated with. In some examples, the third region 148 can be resized or popped up as a separate window.

[0066] In at least one example, the operating system 140 can manage the processor 130, computer-readable medium 132, hardware, software, etc. of the server 102.

[0067] The communication interface 134 may include one or more interfaces and hardware components for facilitating communication with various other devices (e.g., the user computing device 104), such as via the network 106 or directly. In some examples, the communication interface 134 may facilitate communication via WebSocket, API (e.g., using API calls), HTTP, etc.

[0068] The user computing device 104 may also be equipped with various input / output devices 136 (e.g., I / O devices). Such I / O devices 136 may include a display, various user interface controls (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.

[0069] Although the techniques described herein are described as being performed by the messaging component 116, the audio / video component 118, the mentioned processor 120, and the application 138, the techniques described herein may be performed by any other component or combination of components that may be associated with the server 102, the user computing device 104, or a combination thereof.

[0070] User interface for a group-based communication system

[0071] Figure 2A A user interface 200 of a group-based communication system is shown, which will be used to illustrate the operation of various examples discussed herein. The group-based communication system may include communication data such as messages, queries, files, mentions, users or user profiles, interactions, tickets, channels, applications integrated into one or more channels, conversations, workspaces, or other data generated by or shared among users of the group-based communication system. In some cases, the communication data may include data associated with a user, such as a user identifier, the channels the user has been authorized to access, the groups the user is associated with, permissions, and other user-specific information.

[0072] The user interface 200 includes a plurality of objects, such as panes, text input fields, buttons, messages, or other user interface components viewable by a user of the group-based communication system. As shown, the user interface 200 includes a title bar 202, a workspace pane 204, a navigation pane 206, a channel 208, a document 210 (e.g., a collaborative document), a direct message 212, an application 214, a synchronized multimedia collaboration session pane 216, and a channel pane 218.

[0073] By way of example and not limitation, when users open the user interface 200, they can select a workspace via the workspace pane 204. A particular workspace can be associated with workspace-specific data and can be accessible via a permission associated with the workspace. Different sections of the navigation pane 206 can present different data and / or options to the user. Different graphical indicators can be associated with virtual spaces (e.g., channels) to outline the properties of the channels (e.g., the channel is public, private, shared between organizations, locked, etc.). When the user selects a channel, the channel pane 218 can be presented. In some examples, the channel pane 218 can include a header, pinned items (e.g., documents or other virtual spaces), an "about" document providing an overview of the channel, etc. In some cases, members of the channel can search within the channel, access content associated with the channel, add other members, post content, etc. In some examples, users who are not members of the channel can have limited ability to interact with the channel (or even view or otherwise access the channel) according to the permissions associated with the channel. When users navigate within the channel, they can view messages 222 and can react to the messages (e.g., reaction 224), reply in a thread, start a thread, etc. Additionally, the channel pane 218 can include a compose pane 228 to compose messages and / or other data that will be associated with the channel. In some examples, the user interface 200 can include a thread pane 230 that provides additional levels of detail for the messages 222. In some examples, the sizes of different panes can be adjusted, the panes can be popped out into separate windows, and / or separate windows can be merged into multiple panes of the user interface 200. In some examples, users can communicate with other users via the collaboration pane 216, which can provide synchronous or asynchronous voice and / or video capabilities for communication. Of course, these are illustrative examples, and additional examples of the foregoing features are provided throughout the disclosure text.

[0074] In some examples, the title bar 202 includes a search bar 220. The search bar 220 can allow users to search for content located in the current workspace of the group-based communication system, such as files, messages, channels, members, commands, functions, etc. Users can refine their searches by attributes such as content type, content author, and by users associated with the content. Users can optionally search within a particular workspace, channel, direct message conversation, or document. In some examples, the title bar 202 includes navigation commands that allow users to move forward and backward between different panes and view the history of accessed content. In some examples, the title bar 202 can include additional resources, such as links to help documents and user configuration settings.

[0075] In some examples, a group-based communication system can include multiple different workspaces, where each workspace is associated with a different user group and channel group. Each workspace can be associated with a group identifier, and one or more user identifiers can be mapped to the group identifier or otherwise associated with the group identifier. Users corresponding to such user identifiers can be referred to as members of the group. In some examples, the user interface 200 includes a workspace pane 204 for navigating between various workspaces in the group-based communication system, adding or deleting various workspaces. For example, a user can be part of a workspace for Acme, where the user is an employee of Acme or otherwise affiliated with Acme. The user can also be a member of a local volunteer organization that also uses the group-based communication system for collaboration. To navigate between these two groups, the user can use the workspace pane 204 to change from the Acme workspace to the volunteer organization workspace. A workspace can include one or more channels specific to the workspace and / or one or more channels shared between one or more workspaces. For example, Acme Corporation can have a workspace for Acme projects (such as Project Zen), a workspace for social discussions, and additional workspaces for general corporate affairs. In some examples, an organization (such as a particular company) can have multiple workspaces, and a user can be associated with one or more workspaces belonging to the organization. In other examples, a particular workspace can be associated with one or more organizations or other entities associated with the group-based communication system.

[0076] In some examples, the navigation pane 206 allows the user to navigate within a virtual space within the group-based communication system such as pages, channels 208, collaborative documents 210 (such as in Figure 2DNavigate between the applications 214 and direct messages 212 (such as those discussed elsewhere). For example, the navigation pane 206 may include indicators of virtual spaces that can aggregate data associated with multiple virtual spaces of which the user is a member. In at least one example, each virtual space may be associated with an indicator in the navigation pane 206. In some examples, the indicator may be associated with an actuation mechanism (e.g., an affordance, also known as a graphical element) such that when actuated, it may cause the user interface 200 to present data associated with the corresponding virtual space. In at least one example, the virtual space may be associated with all unread data associated with each of the workspaces associated with the user. That is, in some examples, if the user requests access to the virtual space associated with "unread", all data that the user has not yet read (e.g., viewed), such as presented in a feed, may be presented. In such examples, different types of events and / or actions that may be associated with different virtual spaces may be presented via the same feed. In some examples, such data may be organized and / or sorted by the associated virtual space (e.g., the virtual space through which the communication was transmitted), time, action type, user, etc. In some examples, such data may be associated with an indication of which user (e.g., a member of the associated virtual space) posted the message and / or performed the action.

[0077] In some examples, the virtual space may be associated with the same type of events and / or actions. For example, "threads" may be associated with messages, files, etc. posted in a thread to messages posted in a virtual space, and "mentions and reactions" may be associated with messages or threads in which the user has been mentioned (e.g., via tagging) or another user has reacted to a message or thread posted by the user (e.g., via an emoji, reaction, etc.). That is, in some examples, the same type of events and / or actions that may be associated with different virtual spaces may be presented via the same feed. Similar to the "unread" virtual space, the data associated with such virtual spaces may be organized and / or sorted by virtual space, time, action type, user, etc.

[0078] In some examples, the virtual space may be associated with facilitating communication between the user and other users of the communication platform. For example, "contacts" may be associated with enabling the user to generate an invitation to communicate with one or more other users. In at least one example, in response to receiving an indication of a selection of the "contacts" indicator, the communication platform may cause a connection interface to be presented.

[0079] In some examples, a virtual space can be associated with one or more boards or collaborative documents associated with a user. In at least one example, a document can include a collaborative document configured to be accessed and / or edited by two or more users having appropriate permissions (e.g., view permission, edit permission, etc.). In at least one example, if a user requests access to a virtual space associated with one or more documents associated with the user, one or more documents can be presented via user interface 200. In at least one example, as described herein, a document can be associated with an individual (e.g., a user's private document), a group of users (e.g., a collaborative document), and / or one or more communication channels (e.g., members of the communication channel are granted access permissions to the document), such that users of the communication platform can create data associated with such a document, interact with such a document, and / or view data associated with such a document. In some examples, a collaborative document can be a virtual space, board, canvas, page, etc. for collaborative communication and / or data organization within a communication platform. In at least one example, a collaborative document can support editable text and / or objects that can be sorted, added, deleted, modified, etc. In some examples, a collaborative document can be associated with permissions that define which users of the communication platform can view and / or edit the document. In some examples, a collaborative document can be associated with a communication channel, and members of the communication channel can view and / or edit the document. In some examples, a collaborative document can be shareable such that data associated with the document is accessible and / or interactive to members of multiple communication channels, workspaces, organizations, etc.

[0080] In some examples, a virtual space can be associated with a group (e.g., an organization, a team, etc.) headquarters (e.g., an administrator or a command center). In at least one example, a group headquarters can include a virtual or digital headquarters for an administrator or command function associated with a group of users. For example, "HQ" can be associated with an interface that includes a list of indicators associated with a virtual space configured such that associated members can communicate. In at least one example, a user can associate one or more virtual spaces with the "HQ" virtual space, such as via a drag-and-drop operation. That is, a user can determine the relevant virtual spaces to be associated with the virtual or digital headquarters, such as to associate virtual spaces important to the user therewith.

[0081] In some examples, the virtual space can be associated with one or more boards or collaborative documents associated with a user. In at least one example, a document can include a collaborative document configured to be accessed and / or edited by two or more users with appropriate permissions (e.g., view permission, edit permission, etc.). In at least one example, if a user requests access to a virtual space associated with one or more documents associated with the user, one or more documents can be presented via the user interface 200. In at least one example, as described herein, a document can be associated with an individual (e.g., a user's private document), associated with a group of users (e.g., a collaborative document), and / or associated with one or more communication channels (e.g., members of the communication channel are given access permissions to the document), such that users of the communication platform can create data associated with such a document, interact with such a document, and / or view data associated with such a document. In some examples, a collaborative document can be a virtual space, board, canvas, page, etc. for collaborative communication and / or data organization within a communication platform. In at least one example, a collaborative document can support editable text and / or objects that can be sorted, added, deleted, modified, etc. In some examples, a collaborative document can be associated with permissions that define which users of the communication platform can view and / or edit the document. In some examples, a collaborative document can be associated with a communication channel, and members of the communication channel can view and / or edit the document. In some examples, a collaborative document can be shareable such that data associated with the document is accessible and / or interactive for members of multiple communication channels, workspaces, organizations, etc.

[0082] Additionally or alternatively, in some examples, the virtual space can be associated with one or more canvases associated with a user. In at least one example, a canvas can include a flexible canvas for curating, organizing, and sharing collections of information among users. That is, the canvas can be configured to be accessed and / or modified by two or more users with appropriate permissions. In at least one example, the canvas can be configured to enable sharing of text, images, videos, GIFs, drawings (e.g., user-generated drawings via the canvas interface), game content (e.g., users manipulating game controls synchronously or asynchronously), etc. In at least one example, modifications to the canvas can include adding, deleting, and / or modifying previously shared (e.g., transmitted, presented) data. In some examples, content associated with the canvas can be shareable via another virtual space such that data associated with the canvas can be accessed by members of the virtual space and / or rendered to be interactive by members of the virtual space.

[0083] The navigation pane 206 may also include an indicator representing a communication channel (e.g., channel 208). In some examples, the communication channel may include a public channel, a private channel, a shared channel (e.g., between groups or organizations), a single workspace channel, a cross-workspace channel, a combination of the foregoing channels, etc. In some examples, the represented communication channel may be associated with a single workspace. In some examples, the represented communication channel may be associated with different workspaces (e.g., cross-workspace). In at least one example, if the communication channel is cross-workspace (e.g., associated with different workspaces), the user may be associated with both workspaces or may be associated with only one of these workspaces. In some examples, the represented communication channel may be associated with a combination of the communication channels associated with a single workspace and the communication channels associated with different workspaces.

[0084] In some examples, the navigation pane 206 may depict some or all of the communication channels to which the user has access permissions (e.g., as determined by permission data). In such examples, the communication channels may be arranged alphabetically, based on the most recent interaction, based on the frequency of interaction, based on the communication channel type (e.g., public, private, shared, cross-workspace, etc.), based on the workspace, in a user-specified section, etc. In some examples, the navigation pane 206 may depict some or all of the communication channels of which the user is a member, and the user may interact with the user interface 200 to browse or view other communication channels of which the user is not a member but are not currently displayed in the navigation pane 206. In some examples, different types of communication channels (e.g., public, private, shared, cross-workspace, etc.) may be in different sections of the navigation pane 206 or may have their own sub-regions or sub-panes in the user interface 200. In some examples, the communication channels associated with different workspaces may be in different sections of the navigation pane 206 or may have their own regions or panes in the user interface 200.

[0085] In some examples, the indicator may be associated with a graphical element that visually differentiates the type of communication channel. For example, item_zen is associated with a lock graphical element. As a non-limiting example and for the purposes of this discussion, the lock graphical element may indicate that the associated communication channel (item_zen) is private and access to it is restricted, while another communication channel (general) is public and access to it is available to any member of the organization with which the user is associated. In some examples, additional or alternative graphical elements may be used to differentiate between shared communication channels, communication channels associated with different workspaces, communication channels of which the user is or is not a current member, etc.

[0086] In at least one example, the navigation pane 206 can include indicators representing communications with individual users or multiple designated users (e.g., rather than all members or a subset of an organization). Such communications can be referred to as "direct messages". The navigation pane 206 can include indicators representing virtual spaces associated with private messages between one or more users.

[0087] A direct message 212 can be a communication between a first user and a second user, or they can be a group direct message between a first user and two or more second users. The navigation pane 206 can be sorted and organized hierarchically or segmented according to user preferences. In some examples, all channels that a user has been authorized to access can appear in the navigation pane 206. In other examples, a user can choose to hide a specific channel or collapse a segment containing a specific channel. Items in the navigation pane 206 can indicate when a new message or update has been received or that a new message or update is currently unread, such as by bolding text associated with the channel in which the unread message is located or adding an icon or badge to the channel name (e.g., with a count of unread messages). In some examples, a group-based communication system can additionally or alternatively store permission data associated with the permissions of individual users of the group-based communication system, indicating which channels a user can view or join. Permissions can, for example, indicate which users can communicate directly with other users, which channels a user is granted access to, constraints on individual channels, which workspaces a user is granted access to, and constraints on individual workspaces.

[0088] Additionally or alternatively, the navigation pane 206 can include sub-segments that are personalized sub-segments associated with teams of which the user is a member. That is, the "team" sub-segment can include an enabling representation of one or more virtual spaces associated with the team (such as communication channels, collaborative documents, direct messaging instances, audio or video synchronous or asynchronous meetings, etc.). In at least one example, a user can associate a selected virtual space with a team sub-segment, such as by drag-and-drop, setting a pin, or otherwise associating the selected virtual space with the team sub-segment.

[0089] Channels within a group-based communication system

[0090] In some examples, the group-based communication system is a channel-based messaging platform, as Figure 2A shown. Within the group-based communication system, communications can be organized into channels, each dedicated to a specific topic and set of users. A channel is generally a virtual space associated with a specific topic, including messages and files posted by members of the channel.

[0091] For the purposes of this discussion, a "message" can refer to any electronically generated digital object provided by a user using a user computing device 104 and configured to be displayed within a communication channel as described herein and / or within other virtual spaces for facilitating communication (e.g., a virtual space associated with direct messaging, etc.). A message can include any text, image, video, audio, or combination thereof provided by the user (using the user computing device). For example, a user can provide a message that includes text within the message as well as an image and a video as message content. In such examples, the text, image, and video would comprise the message. Each message sent or posted to a communication channel of a communication platform can include metadata that includes a sending user identifier, a message identifier, message content, a group identifier, a communication channel identifier, etc. In at least one example, each of the foregoing identifiers can include American Standard Code for Information Interchange (ASCII) text, a pointer, a memory address, etc.

[0092] Channel discussions can be persisted for days, months, or years and provide a historical log of user activity. Members of a particular channel can post messages within the channel that are visible to other members of the channel along with the other messages in the channel. A user can select channels to view to only see those messages relevant to the topic of the channel and not see messages posted in other channels about different topics. For example, a software development company can have different channels for each software product being developed, where developers working on each particular project can have a conversation about a generally single topic (e.g., the project) without the noise from unrelated topics. Since channels are typically persistent and relate to a particular topic or group, users can quickly and easily refer back to previous communications for reference. In some examples, the channel pane 218 can display information related to the channel that the user has selected in the navigation pane 206. For example, a user can select the project_zen channel to discuss the software development work being done on Project Zen. In some examples, the channel pane 218 can include a header that includes information about the channel, such as the channel name, a list of users in the channel, and other channel controls. A user can be able to pin items to the header for later access and be able to add bookmarks to the header. In some examples, a link to a collaborative document can be included in the header. In other examples, each channel can have a corresponding virtual space that includes channel-related information, such as a channel overview, tasks, bookmarks, pinned documents, and other channel-related links that can be editable by members of the channel.

[0093] A communication channel or other virtual space can be associated with data and / or content different from the message and / or data and / or content associated with the message. Non-limiting examples of additional data that can be presented via the channel pane 218 of the user interface 200 include collaborative documents (e.g., documents that can be collaboratively edited in real time or near real time, etc.), audio and / or video data associated with a conversation, members added to and / or removed from the communication channel, files (e.g., file attachments uploaded and / or removed from the communication channel), applications added to and / or removed from the communication channel, posts added to and / or removed from the communication channel (data that can be collaboratively and near-real-time edited by one or more members of the communication channel), descriptions added to, modified and / or removed from the communication channel, modifications to the nature of the communication channel, etc.

[0094] The channel pane 218 can include messages such as message 222, which is the content posted by a user to the channel. The user can post text, images, videos, audio, or any other file as message 222. In some examples, a specific identifier (in a message or elsewhere) can be represented by prefixing it with a predetermined character. For example, a channel can be prefixed with the '#' character (as in #project_zen), and a username can be prefixed with the '@' character (as in @J_Smith or @user_A). A message (such as message 222) can include an indication of which user posted the message and the time the message was posted. In some examples, a user can react to a message by selecting a reaction button 224. The reaction button 224 allows the user to select an icon (sometimes called a reaction emoji in context) associated with the message, such as a like. A user can respond to another user's message (such as message 222) with a new message. In some examples, such conversations in the channel can be further broken down into threads. Threads can be used to aggregate messages related to a specific conversation to make it easier to follow and reply to the conversation without cluttering the main channel with the discussion. Under the message where the thread starts, a thread reply preview 226 appears. The thread reply preview 226 can show information related to the thread, such as the number of replies and the members who have replied. Thread replies can appear in a thread pane 230 that can be separate from the channel pane 218 and can be viewed by other members of the channel by selecting the thread reply preview 226 in the channel pane 218.

[0095] In some examples, one or both of the channel pane 218 and the thread pane 230 may include a compose pane 228. In some examples, the compose pane 228 allows a user to compose a message 222 and transmit it to members of the channel or those members of the channel who are following the thread (when sending a message in a thread). The compose pane 228 may have text editing capabilities such as bold, strikethrough, and italic, and / or may allow the user to format their message or attach files, such as a collaborative document, image, video, or any other file to be shared with other members of the channel. In some examples, the compose pane 228 may implement additional formatting options, such as numbered or bulleted lists, via a user interface or API. The compose pane 228 may also be used as a workflow trigger to initiate a workflow related to the channel or message. In other examples, a link or document sent via the compose pane 228 may include expand instructions related to how the content should be displayed.

[0096] Synchronized multimedia collaboration session

[0097] Figure 2B A multimedia collaboration session (e.g., a synchronous multimedia collaboration session) that has been triggered from a channel is shown, as shown in pane 216. The synchronous multimedia collaboration session may provide ambient ad-hoc multimedia collaboration in a group-based communication system. Users of the group-based communication system can quickly and easily join and leave these synchronous multimedia collaboration sessions at any time without causing other users to interrupt the synchronous multimedia collaboration session. In some examples, the synchronous multimedia collaboration session may be based on a specific topic, a specific channel, a specific direct message or a group direct message, or a set of users, while in other examples, the synchronous multimedia collaboration session may exist without being bound to any channel, topic, or set of users.

[0098] The Synchronous Multimedia Collaboration Session Pane 216 can be associated with sessions for multiple users in a channel, users in a group direct message conversation, or users in a direct message conversation. Thus, a synchronous multimedia collaboration session for a particular channel or conversation can be initiated by one or more members of a particular channel, group direct message conversation, or direct message conversation. A user can initiate a synchronous multimedia collaboration session in a channel as a means of communicating with other currently online members of the channel. For example, a user may have an urgent decision and wish to receive immediate verbal feedback from other members of the channel. Alternatively, a synchronous multimedia collaboration session with one or more other users of a group-based communication system can be initiated via direct messaging. In some examples, the audience for a synchronous multimedia collaboration session can be determined based on the context in which the synchronous multimedia collaboration session is initiated. For example, initiating a synchronous multimedia collaboration session in a channel can automatically invite the entire channel to attend. Alternatively, initiating a synchronous multimedia collaboration session allows a user to start an instant audio and / or video conversation with other members of the channel without having to schedule or initiate a communication session through a third-party interface. In some examples, users can be directly invited to attend a synchronous multimedia collaboration session via a message or notification.

[0099] A synchronous multimedia collaboration session can be a short-lived, transient session that does not persist any data therein. Alternatively, in some examples, a synchronous multimedia collaboration session can be recorded, transcribed, and / or summarized for later review. In other examples, the content of a synchronous multimedia collaboration session can be automatically persisted in the channel associated with the synchronous multimedia collaboration session. Members of a particular synchronous multimedia collaboration session can post messages within the messaging thread associated with the synchronous multimedia collaboration session, and these messages are visible to other members of the synchronous multimedia collaboration session along with the other messages in the thread.

[0100] The multimedia in a synchronous multimedia collaboration session can include collaboration tools such as any or all of audio, video, screen sharing, collaborative document editing, whiteboarding, pair programming, or any other form of media. A synchronous multimedia collaboration session can also allow a user to share the user's screen with other members of the synchronous multimedia collaboration session. In some examples, members of a synchronous multimedia collaboration session can mark, comment on, draw on, or otherwise annotate the shared screen. In other examples, such annotations can be saved and persisted after the synchronous multimedia collaboration session has ended. A canvas can be created directly from the synchronous multimedia collaboration session to further enhance collaboration among users.

[0101] In some examples, a user can via Figure 2BUse the back-and-forth switching key in the synchronous multimedia collaboration session pane 216 shown to start a synchronous multimedia collaboration session. Once the synchronous multimedia collaboration session has started, the synchronous multimedia collaboration session pane 216 can be expanded to provide information about the synchronous multimedia collaboration session (such as how many members there are, which user is currently speaking, which user is sharing the user's screen) and / or a screen sharing preview 232. In some examples, icons indicating that a user is participating in a synchronous multimedia collaboration session can be used to display the users in the synchronous multimedia collaboration session. In other examples, an expanded view of the participants can show which users are active and which users are not active in the synchronous multimedia collaboration session. The screen sharing preview 232 can depict the desktop view of the user sharing the user's screen, or a particular application or presentation. Changes to the user's screen, such as the user advancing to the next slide in a presentation, will be automatically depicted in the screen sharing preview 232. In some examples, the screen sharing preview 232 can be actuated so that the screen sharing preview 232 is enlarged and displayed as its own pane within the group-based communication system. In some examples, the screen sharing preview 232 can be actuated so that the screen sharing preview 232 pops up into a new window or application separate and distinct from the group-based communication system. In some examples, the synchronous multimedia collaboration session pane 216 can include tools for the synchronous multimedia collaboration session that allow the user to mute the user's microphone or invite other users. In some examples, the synchronous multimedia collaboration session pane 216 can include a screen sharing button 234 that can allow the user to share the user's screen with other members of the synchronous multimedia collaboration session pane 216. In some examples, the screen sharing button 234 can provide additional controls to the user during screen sharing. For example, additional screen sharing controls can be provided to the user sharing the user's screen to specify which screen to share, annotate the shared screen, or save the shared screen.

[0102] In some cases, the synchronous multimedia collaboration session pane 216 can be persistently saved in the navigation pane 206 regardless of the state of the group-based communication system. In some examples, the synchronous multimedia collaboration session pane 216 can be hidden or removed from the presentation via the user interface 200 when there is no active synchronous multimedia collaboration session and / or depending on which item is selected from the navigation pane 206. In some cases, when the pane 216 is active, the pane 216 can be associated with the currently selected channel, direct message, or group direct message so that a synchronous multimedia collaboration session can be initiated and associated with the currently selected channel, direct message, or group direct message.

[0103] A list of synchronous multimedia collaboration sessions may include one or more active synchronous multimedia collaboration sessions selected for recommendation. For example, synchronous multimedia collaboration sessions may be selected from among multiple currently active synchronous multimedia collaboration sessions. Additionally, synchronous multimedia collaboration sessions may be selected based in part on user interactions with the sessions or some association of the instant user with the sessions or the users involved in the sessions. For example, recommended synchronous multimedia collaboration sessions may be presented based in part on the instant user having been invited to the corresponding synchronous multimedia collaboration session or having previously collaborated with users in the recommended synchronous multimedia collaboration session. In some examples, the list of synchronous multimedia collaboration sessions also includes additional information for each corresponding synchronous multimedia collaboration session, such as an indication of the participating users or the number of participating users, the topic of the synchronous multimedia collaboration session, and / or an indication of an associated group-based communication channel, multi-person direct message conversation, or direct message conversation.

[0104] In some examples, a list of recommended active users may include multiple group-based communication system users recommended based on at least one of user activity, user interactions, or other user information. For example, the list of recommended active users may be selected based on: the active status of users within the group-based communication system; historical, recent, or frequent user interactions with the instant user (such as communicating within a group-based communication channel); or a similarity between the recommended users and the instant user (such as determining a shared membership in channels among the recommended users and the instant user). In some examples, machine learning techniques (such as clustering analysis) may be used to identify the recommended users. The list of recommended active users may include status user information for each recommended user, such as whether the recommended user is active, in a meeting, idle, in a synchronous multimedia collaboration session, or offline. In some examples, the list of recommended active users also includes multiple actuatable buttons corresponding to some or all of the recommended users (e.g., those recommended users having a status indicating availability), the multiple actuatable buttons being configurable to initiate at least one of a text-based communication session (such as a direct message conversation) or a synchronous multimedia collaboration session when selected.

[0105] In some examples, one or more recommended asynchronous multimedia collaboration sessions or meetings can be displayed in an asynchronous meeting segment. Compared to synchronous multimedia collaboration sessions (as described above), asynchronous multimedia collaboration sessions allow each participant to collaborate at their convenience. The collaboration participation is then recorded for other participants to consume later, and those participants can generate additional multimedia responses. In some examples, the responses are aggregated in a multimedia thread (e.g., a video thread) corresponding to the asynchronous multimedia collaboration session. For example, an asynchronous multimedia collaboration session can be used for an asynchronous meeting where a topic is posted in a message at the start of the meeting thread, and participants in the meeting can respond by posting messages or video responses. The resulting thread then includes any documents, videos, or other files related to the asynchronous meeting. In some examples, a preview of a subset of video responses can be shown in the asynchronous collaboration session or thread. This can allow, for example, a user to jump to a relevant segment of the asynchronous multimedia collaboration session or resume from where they previously left off.

[0106] Contact within a group-based communication system

[0107] Figure 2C A user interface 200 is shown that displays a contact pane 252. The contact pane 252 can provide tools and resources for a user to make contacts across different organizations, where each organization can have its own (usually private) instance of a group-based communication system or may not yet belong to a group-based communication system. For example, a first software company may form a joint venture with a second software company and they wish to collaborate with the latter in co-developing a new software application. The contact pane 252 can enable a user to determine which other users and organizations are already within the group-based communication system and invite those users and organizations currently outside the group-based communication system to join.

[0108] The contact pane 252 can include a contact search bar 254, recent contacts 256, connections 258, a create channel button 260, and / or a start direct message button 262. In some examples, the contact search bar 254 can allow a user to search for users within the group-based communication system. In some examples, only users from organizations that have a connection with the user's organization will be shown in the search results. In other examples, users from any organization that uses the group-based communication system can be shown. In other examples, users from organizations that do not yet use group-based communication can also be shown, thus allowing a user to search for users to invite them to join the group-based communication system. In some examples, users can be searched for via their group-based communication system username or their email address. In some examples, email addresses can be suggested or auto-completed based on an external data source such as an email directory or the user's contact list for searching.

[0109] In some examples, external organizations as well as individual users can be shown in response to a user search. External organizations can be matched based on an organization name or Internet domain, as search results can include organizations that have not joined the group-based communication system (similar to the search and matching for specific users discussed above). External organizations can be ranked, at least in part, based on how many users from the user's organization have contact with users of the external organization. In response to selecting an external organization in the search results, the searching user can be enabled to invite the external organization to communicate via the group-based communication system.

[0110] In some examples, the recent contacts 256 can show the users with whom the instant user has most recently interacted. The recent contacts 256 can show the name, company, and / or status indication of the user. The recent contacts 256 can be sorted based on which contacts the instant user interacts with most frequently or based on which contacts the instant user has most recently interacted with. In some examples, each recent contact in the recent contacts 256 can be an actuatable control that allows the instant user to quickly initiate a direct message conversation with the recent contact, invite them to a channel, or take any other appropriate user action with respect to the recent contact.

[0111] In some examples, the connections 258 can show a list of companies (e.g., organizations) with which the user has interacted. For each company, the name of the company can be shown along with an identification of the company and an indication of how many times the user has interacted with the company (e.g., the number of conversations). In some examples, each connection in the connections 258 can be an actuatable control that allows the instant user to quickly invite an external organization to a shared channel, show the most recent connection with the external organization, or take any other appropriate organizational action with respect to the connection.

[0112] In some examples, the create channel button 260 allows a user to create a new shared channel between two different organizations. Selecting the create channel button 260 can also allow the user to name the new communication channel and enter a description for the communication channel. In some examples, the user can select one or more external organizations or one or more external users to add to the shared channel. In other examples, the user can add an external organization or external user to the shared channel after creating the shared channel. In some examples, the user can select whether to make the communication channel private (i.e., accessible only by invitation from the current members of the private channel).

[0113] In some examples, the start direct message button 262 allows a user to quickly initiate a direct message (or group direct message) with an external user at an external organization. In some examples, the external user identifier at the external organization can be provided by the instant user as the group-based communication system username of the external user or as the email address of the external user. In some examples, the analysis of the email domain of the email address of the external user can affect the message between the user and the external user. For example, the identifier of the external user can indicate (e.g., based on the email address domain) that the user's organization and the external user's organization have communicated. In some such examples, the email address can be converted to a group-based communication system username. Alternatively, the identifier of the external user can indicate that the external user's organization belongs to the group-based communication system but has not communicated with the instant user's organization. In some such examples, an invitation to communicate with the instant user's organization can be generated as a response. As another alternative, the external user can not be a member of the group-based communication system, and an invitation to join the group-based communication system as a guest or member can be generated as a response.

[0114] Collaborative document

[0115] Figure 2D A user interface 200 is shown that displays a collaborative document pane 264. The collaborative document can be of any file type, such as a PDF, video, audio, word processing document, etc., and is not limited to a word processing document or a spreadsheet. The collaborative document can be modified and edited by two or more users. The collaborative document can also be associated with different user permissions such that, based on the user's permission for the document (or a section of the document, as described below), users can be selectively allowed to view, edit, or comment on the collaborative document (or a section of the collaborative document). Thus, users within the set of users who can access the document can have permission to view, edit, comment on, or otherwise hand off changes to the collaborative document. In some examples, the permissions can be automatically determined and / or assigned based on the way the document is created and / or shared. In some examples, the permissions can be determined manually. The collaborative document can allow users to create and modify the document simultaneously or asynchronously. The collaborative document can be integrated with a group-based communication system and can both initiate a workflow and be used to store the results of the workflow, which will be further discussed below with respect to Figure 3A and Figure 3B discussed further.

[0116] In some examples, the user interface 200 may include one or more collaborative documents (or one or more links to such collaborative documents). A collaborative document (also referred to as a document or a canvas) may include a flexible workspace for planning, organizing, and sharing a collection of information among users. Such a document may be associated with a synchronous multimedia collaboration session, an asynchronous multimedia collaboration session, a channel, a multi-person direct message conversation, and / or a direct message conversation. The shared canvas may be configured to be accessed and / or modified by two or more users with appropriate permissions. Alternatively or additionally, a user may have one or more private documents that are not associated with any other user.

[0117] In addition, such a document may be @mentioned so that a specific document can be referenced within a channel (or other virtual space or document) and / or other users can be mentioned within such a document. For example, @mentioning a user within a document may provide an indication to the user and / or may provide access to the document to the user. In some examples, a task may be assigned to a user via @mention, and such a task may be populated in a pane or sidebar associated with the user.

[0118] In some examples, a channel and a collaborative document 268 may be associated such that when a comment is posted in the channel, the comment may be populated into the document 268 and vice versa.

[0119] In some examples, when a first user interacts with a collaborative document, the communication platform may identify a second user account associated with the collaborative document and present an affordance (e.g., a graphical element) indicating the interaction in a sidebar (e.g., the navigation pane 206). Additionally, the second user may select an affordance or notification associated with or representing the interaction with accessing the collaborative document to efficiently access the document and view updates to it.

[0120] In some examples, when one or more users interact with a collaborative document, an indication (e.g., an icon or other user interface element) may be presented via the user interface having the collaborative document to represent such interaction. For example, if a first instance of a document is currently open on a first user's first user computing device and a second instance of the document is currently open on a second user's second user computing device, one or more presence indicators may be presented on the respective user interfaces to show various interactions with the document and the users performing the interactions. In some examples, a presence indicator may have an attribute (e.g., an appearance attribute) indicating information about the respective user, such as but not limited to a permission level (e.g., an edit permission, read-only access, etc.), virtual space membership (e.g., whether the member belongs to the virtual space associated with the document), and the way the user interacts with the document (e.g., currently editing, viewing, open but inactive, etc.).

[0121] In some examples, a preview of a collaborative document can be provided. In some examples, the preview can include an overview of the collaborative document and / or a dynamic preview that shows various content (e.g., as changing text, images, etc.) to allow a user to quickly understand the context of the document. In some examples, the preview can be based on user profile data associated with the user viewing the preview (e.g., permissions associated with the user, content the user has viewed, edited, created, etc.).

[0122] In some examples, a collaborative document can be created independently of or in combination with a virtual space and / or a channel. The collaborative document can be published in a channel and edited or interacted with as described herein, with various affordances or notifications indicating the presence of users and / or various interactions associated with the document.

[0123] In some examples, a machine learning model can be used to determine an overview of the content of a channel, and a collaborative document including the overview can be created for publication in the channel. In some examples, a communication platform can identify users within a virtual space, actions associated with the users, and other contributions to a conversation to generate an overview document. Thus, the communication platform can enable users to create a document (e.g., a collaborative document) for summarizing content and events occurring within the virtual space.

[0124] In some examples, a document can be configured to enable sharing of content, including (but not limited to) text, images, videos, GIFs, drawings (e.g., user-generated drawings via a drawing interface), or game content. In some examples, a user accessing a canvas can add new content or delete (or modify) previously added content. In some examples, a user may need appropriate permissions to add content or to delete or modify content added by a different user. Thus, for example, some users may be able to access some or all of the document only in a view-only mode, while other users may be able to access some or all of the document in an edit mode that allows those users to add or modify its content. In some examples, the document can be shared via a message in a channel, a group direct message, or a direct message, such that data associated with the document can be accessed by members of the channel or recipients of the group direct message or direct message and / or rendered for interaction by members of the channel or recipients of the group direct message or direct message.

[0125] In some examples, the collaborative document pane 264 can include a collaborative document toolbar 266 and a collaborative document 268. In some examples, the collaborative document toolbar 266 can provide the ability to edit or format the publication, as discussed herein.

[0126] In some examples, a collaborative document can include free-form unstructured segments and workflow-related structured segments. In some examples, the unstructured segments can include areas of the document where users can freely modify the collaborative document without any constraints. For example, a user may be able to freely type text to explain the purpose of the document. In some examples, a user can add a workflow or a structured workflow segment by typing the name of the workflow (or otherwise referring to the workflow). In other examples, typing an "at" sign (@) or a previously selected symbol or a predetermined special character or symbol can provide the user with a list of workflows that the user can select to add to the document. For example, a user can indicate that a marketing team member needs to sign a proposal to initiate a workflow that ends when the members of the marketing team approve the proposal by typing "! Marketing Approval". Placing an exclamation point before the group name of "Marketing Approval" initiates a request for a canonical action, which in this case is routing the proposal for approval. In some examples, the structured segments can include text inputs, selection menus, tables, check boxes, tasks, calendar events, or any other document segments. In other examples, the structured segments can include text input spaces as part of a workflow. For example, a user can enter text detailing the reason for seeking approval into a text input space and then select a submit button that will advance the workflow to the next step of the workflow. In some examples, a user may be able to add, edit, or remove structured segments of the document that constitute workflow components.

[0127] In an example, segments of a collaborative document can have separate permissions associated with them. For example, a collaborative document with segments having separate permissions can provide a first user with permission to view, edit, or comment on a first segment, while a second user does not have permission to view, edit, or comment on the first segment. Alternatively, the first user can have permission to view the first segment of the collaborative document, while the second user has permission to view and edit the first segment of the collaborative document. Permissions associated with a specific segment of a document can be assigned by the first user via various methods, including manually selecting a specific segment of the document by the first user or another user having the permission to assign permissions, typing or selecting an "assign" indicator (such as the "@" symbol), or selecting the segment by the name of the segment. In other examples, permissions can be assigned to multiple collaborative documents at a single instance via these methods. For example, multiple collaborative documents each have a segment titled "Group Information", where a first user having the permission to assign permissions desires that the entire user group can access the information in the "Group Information" segments of the multiple collaborative documents. In an example, the first user can select the multiple collaborative documents and the "Group Information" segment to effectuate permission for the entire user group to access (or view, edit, etc.) the "Group Information" segments of each of the multiple collaborative documents.

[0128] Automation in a group-based communication system

[0129] Figure 3A Shown is a user interface 300 for automation in a group-based communication system. Automation, also known as workflow, allows a user to automate functionality within the group-based communication system. A workflow builder 302 is depicted that allows a user to create new workflows, modify existing workflows, and review workflow activities. The workflow builder 302 can include a workflow tab 304, an activity tab 306, and / or a settings tab 308. In some examples, the workflow builder can include a publish button 314 that allows a user to publish a new or modified workflow.

[0130] The workflow tab 304 can be selected to enable a user to create a new workflow or modify an existing workflow. For example, a user may wish to create a workflow to automatically welcome new users joining a channel. A workflow can include workflow steps 310. The workflow steps 310 can include at least one trigger that initiates the workflow and at least one function that takes an action once the workflow is triggered. For example, when a user joins a channel, the workflow can be triggered, and the function of the workflow can be to post a welcome message for the new user in the channel. In some examples, a workflow can be triggered from a user action (such as a user reacting to a message, joining a channel, or collaborating in a co-authored document), from a scheduled date and time, or from a web request from a third-party application or service. In other examples, workflow functionality can include sending a message or form to a user, channel, or any other virtual space, modifying a co-authored document, or interfacing with an application. Workflow functionality can include workflow variables 312. For example, a welcome message can include the name of the user via a variable to enable a customized message. A user can edit existing workflow steps or add new workflow steps according to the desired workflow functionality. Once the workflow is complete, the user can use the publish button 314 to publish the workflow. The published workflow will wait until it is triggered, at which point the function will be executed.

[0131] The activity tab 306 can display information related to the activities of a workflow. In some examples, the activity tab 306 can show how many times a workflow has been executed. In other examples, the activity tab 306 can include information related to each workflow execution, including status, most recent activity date, execution time, the user who initiated the workflow, and other relevant information. The activity tab 306 can allow a user to sort and filter workflow activities to find useful information.

[0132] The Settings tab 308 can allow a user to modify the settings of a workflow. In some examples, the user can change the title or icon associated with the workflow. The user can also manage the collaborators associated with the workflow. For example, the user can add additional users as collaborators to the workflow, such that the additional users can modify the workflow. In some examples, the Settings tab 308 can also allow the user to delete the workflow.

[0133] Figure 3B depicts elements related to a workflow in a group-based communication system and is generally referred to by reference numeral 316. In various examples, the trigger 318 can be configured to invoke the execution of a function 336 in response to a user instruction. The trigger initiates the function execution and can take the form of one or more schedules 320, webhooks 322, shortcuts 324, and / or slash commands 326. In some examples, the schedule 320 operates like a timer such that the trigger can be scheduled to fire periodically or once at a predetermined time in the future. In some examples, the end user of an event-based application sets any schedule for the trigger to fire, such as once an hour or at 9:15 am every day.

[0134] Additionally, the trigger 318 can take the form of a webhook 322. The webhook 322 can be a software component that listens at a webhook URL and port. In some examples, the trigger fires when an appropriate HTTP request is received at the webhook URL and port. In some examples, the webhook 322 requires appropriate authentication, such as via a bearer token. In other examples, the trigger will depend on the payload content.

[0135] Another source of a trigger in the trigger 318 is a shortcut in the shortcut 324. In some examples, the shortcut 324 can be global to the group-based communication system rather than specific to a group-based communication system channel or workspace. A global shortcut can trigger a function that can be executed without the context of a specific group-based communication system message or group-based communication channel. In contrast, a message- or channel-based shortcut is specific to a group-based communication system message or channel and operates in the context of a group-based communication system message or group-based communication channel.

[0136] Another source for one of the triggers in trigger 318 can be provided by slash command 326. In some examples, slash command 326 can be used as an entry point for group-based communication system functionality, integration with external services, or group-based communication system message responses. In some examples, the slash command 326 can be input by a user of the group-based communication system to trigger the execution of application functionality. After the slash command can be slash command line arguments that can be passed to any group-based communication system function called in conjunction with the triggering of a group-based communication system function such as one of functions 336.

[0137] An additional way to invoke a function is when an event (such as one of events 328) matches one or more conditions predetermined in a subscription (such as subscription 334). Event 328 can be subscribed to by any number of subscriptions 334, and each subscription can specify different conditions and trigger different functions. In some examples, the event is implemented as a group-based communication system message received in one or more group-based communication system channels. For example, all events can be published as non-user visible messages in the associated channels monitored by subscription 334. Application event 330 can be a group-based communication system message with associated metadata, which are created by the application in the group-based communication system channel. Event 328 can also be a direct message received by one or more group-based communication system users, which can be an actual user or a technical user such as a bot. A bot is a technical user of the group-based communication system for automating tasks. The bot can be programmatically controlled to perform various functions. The bot can monitor and assist in processing group-based communication system channel activities, as well as post messages in the group-based communication system channel and react to in-channel activities of members. The bot can be able to post messages and upload files, as well as be invited to or removed from public and private channels in the group-based communication system.

[0138] Event 328 can also be any event associated with the group-based communication system. Such group-based communication system (GBCS) events 332 include events related to the creation, modification, or deletion of user accounts in the group-based communication system, or events related to messages in the group-based communication system channel, such as creating a message, editing or deleting a message, or reacting to a message. Event 328 can also involve the creation, modification, or deletion of a group-based communication system channel or channel membership. Event 328 can also involve user profile modification or group creation, member maintenance, or group deletion.

[0139] As described above, subscription 334 indicates one or more conditions that trigger a function when an event matches. In some examples, a set of event subscriptions is maintained in conjunction with a group-based communication system such that when an event occurs, information about the event is matched against the set of subscriptions to determine which, if any, of functions 336 should be invoked. In some examples, an authorization framework manages the events that a particular application can subscribe to. In some cases, OAuth permission scopes manage the types of events that are matched against subscriptions, and the OAuth permission scopes can be maintained by an administrator of a particular group-based communication system.

[0140] In some examples, function 336 can be triggered by triggers 318 and events 328 that the function subscribes to. Function 336 takes zero or more inputs, performs processing (potentially including accessing external resources), and returns zero or more results. Function 336 can be implemented in various forms. First, there is group-based communication system built-in 338, which is associated with the core functionality of a particular group-based communication system. Some examples include creating group-based communication system users or channels. Second, there is a no-code builder function 340, which can be developed by a user of a group-based communication system in conjunction with an automated user interface (such as a workflow builder user interface). Third, there is a managed code function 342, which is implemented by developing a group-based communication system application as software code in conjunction with a software development environment.

[0141] These various types of function 336 can then be integrated with API 344. In some examples, API 344 is associated with third-party services, and function 336 utilizes these third-party services to provide a custom integration between a particular third-party service and the group-based communication system. Examples of third-party service integrations include video conferencing, sales, marketing, customer service, project management, and engineering application integrations. In such examples, one of triggers 318 will be a slash command 326, which is used to trigger managed code function 342, and the managed code function makes an API call to a third-party video conferencing provider via one of the APIs in API 344. As Figure 3B shown, API 344 itself can also be the source of any number of triggers 318 or events 328. Continuing the above example, the successful completion of a video conference will trigger one of the functions in function 336, which sends a message to the third-party video conferencing provider to initiate a further API call to download and archive the recording of the video conference and store it in a group-based communication system channel.

[0142] In addition to integrating with API 344, functionality 336 can persistently store and access data in table 346. In some examples, table 346 is implemented in conjunction with a database environment associated with a serverless execution environment in which a particular event-based application is executing. In some cases, table 346 can be provided in conjunction with a relational database environment. In other examples, table 346 is provided in conjunction with a database mechanism that does not employ relational database technology. As Figure 3B shown, in some examples, reading from or writing to one or more tables 346 with specific data or data in the table matching a predefined condition is itself a source of a number of triggers 318 or events 328. For example, if table 346 is used to maintain billing data in an incident management system, a count of outstanding work orders exceeding a predetermined threshold can trigger the posting of a message in an incident management channel in a group-based communication system.

[0143] Figure 4 Exemplary user interface 400 shows different types of mention identifiers presented within a message associated with a communication platform as described herein. Exemplary user interface 400 can present information associated with user account 402 (e.g., user_A) and virtual space 404 (e.g., channel_A). In a particular example, user interface 400 includes various types of mention identifiers embedded within a message posted in virtual space 404. For example, the message can include one or more of user account mention identifier 406 (or user profile mention identifier) (e.g., @user_C), document mention identifier 408 (e.g., @document_1), keyword mention identifier 410 (e.g., @project_1), group mention identifier 412 (e.g., @group_1), channel mention identifier 414 (e.g., @channel_B), etc.

[0144] Mention processor 416 can be configured to analyze the message to determine the type of mention identifier included in the message. For example, a user of a communication platform can post or publish a message within a virtual space (e.g., channel, direct message, workspace, etc.) of the communication platform. After the message has been posted / published, mention processor 416 can parse the text of the message (e.g., characters, words, phrases, etc.) to determine whether the user has referenced a different user or virtual space (e.g., @user, @channel, @direct message, @workspace, etc.). When it is determined that the message includes a particular mention identifier, mention processor 416 can determine whether to notify the user or virtual space referenced in the mention identifier (e.g., virtual space 404) (e.g., send a notification to the user and / or virtual space). Whether the user and / or virtual space will receive the notification is based on previously determined notification preferences / settings for the user and / or virtual space.

[0145] The mention of the processor 416 (or the mention of the _logging processor) encapsulates all the side effects that may be triggered when processing a message. A function has a side effect if it modifies some state other than its return value. For example, side effects that may be triggered when processing a message can include sending notifications to users, user groups, virtual spaces (such as channels, feeds, live voice discussions, etc.), and so on. In some examples, the side effect can include sending an error message to a user account and / or virtual space when an error is detected. In some examples, the side effect can include sending an email notification, a text message notification, sending a desktop notification, sending information associated with the message to one or more databases, generating a thread subscription, triggering one or more jobs associated with the message, triggering a workflow, marking the message as unread, updating the mention identifier in the message, generating a pop-up notification, sending a delayed notification, overriding the "do not disturb" or pause notification settings associated with the user account or virtual space, etc.

[0146] Determining whether to trigger a side effect (such as providing a notification to a user and / or virtual space) can be based on one or more factors, including the notification preference settings of the user and / or virtual space, including the type of notification to be sent (such as email, text message, indicator associated with a virtual space, etc.), the time at which the notification is to be provided, the frequency of the notification, and so on. Other factors can include whether the user is actively logged in to the communication platform, or whether the user is using the communication platform on their mobile device rather than on a desktop computer. If the user is actively using the communication platform, a notification can be provided, but if the user is logged out or not accessing the communication platform, no notification is provided. Additionally, if the user is actively accessing the communication platform, the notification can be shown as an indicator associated with the virtual space, but if the user is not currently accessing the communication platform (such as logged out, set to away status, in a meeting, etc.), an email or text message notification can be sent. Additional factors can include the way in which the user is currently accessing the communication platform. For example, whether a notification will be sent, the type of notification, the timing of the notification, etc. can be based on whether the user is accessing the communication platform via a web-based application, a desktop application, via a website, or via a mobile application residing on the user's mobile device (such as a mobile phone, tablet device, etc.).

[0147] Mention handler 416 enables the application of different side effects without having to modify the business logic associated with the communication platform. Mention handler 416 is configured so that not all side effects are triggered when processing a message. Mention handler 416 encapsulates all side effects within the mention handler, allowing for different application of side effects without having to implement the overall business logic each time. Business logic (or domain logic) may include customized rules or algorithms that handle the exchange of information (or data) between a database associated with the communication platform and a user interface. In some examples, the communication platform includes multiple mention handlers configured to handle side effects differently. For example, a first mention handler (e.g., a production mention handler) may cause data associated with an observed mention identifier to be stored in a row (e.g., a horizontal set of data or components in a record) in one or more databases (i.e., a side effect would be to store the data in one or more databases). In some examples, a second mention handler (e.g., a test mention handler) may cause the data associated with the mention identifier to be verified in a test or simulation (i.e., return a row to be verified in a test). In some examples, a third mention handler (e.g., a log-only mention handler) may record that the row should have been stored in one or more databases. In some examples, the business logic used to generate the row remains the same. In some examples, the processor may be organized to include one or more of the following functions and / or structures:

[0148] mention_log(mention_handler $handler):no return value {

[0149] mention_log_reg($channel, $message, $handler): no return value

[0150] / / Detection

[0151] / / filter

[0152] / / $processor->persistent save + send notification

[0153] mention_log_group($channel, $message, $handler): no return value

[0154] / / Detection

[0155] / / filter

[0156] / / $processor->persistent save + send notification

[0157] mention_log_im($channel, $message, $handler): no return value

[0158] / / Detection

[0159] / / filter

[0160] / / $Processor -> Persistent Save + Send Notification

[0161] }

[0162] By way of example and not limitation, “$Processor -> Persistent Save + Send Notification” may include the following side effects:

[0163] The abstract class mentions the processor

[0164] Function mentions_store_storage_batch($team, $channel, $message, $user_ids,'mpdm');

[0165] Function mentions_push_check_immediate_single($team, $user_ids, $message,'mpdm').

[0166] It is mentioned that Processor 416 is the root node of a decision tree. Mentioning Processor 416 may include Production Class 418, Test Class 420, and Observability Class 422. In some examples, Production Class 418, Test Class 420, and Observability Class 422 may be subclasses of the mentioned Processor 416. Each of Production Class 418, Test Class 420, and Observability Class 422 may have its own implementation of how to handle side effects. For example, Production Class 418 may handle side effects in the same way as the mentioned Processor 416 would handle side effects, while Test Class 420 may be configured to handle messages in a test environment (e.g., an environment that may be unsafe for production but useful for discovering and correcting existing and potential errors). In some examples, Observability Class 422 may handle the mentioned identifiers within a message similarly to Production Class 418, except that Observability Class 422 records the side effects in a database and does not execute the side effects. Observability Class 422 enables users of the communication platform to observe what is happening in production without triggering any side effects. In some examples, Production Class 418 and Test Class 420 may be represented within the mentioned Processor as follows:

[0167] Production mentions Processor extends Processor

[0168] Dry Run mentions Processor extends Processor

[0169] In some examples, production class 418 can be configured to send notifications to user accounts and / or virtual spaces. In some examples, production class 418 can be configured to process information persistently saved to a database. In some examples, production class 418 includes or is otherwise associated with a container or other type of structure that includes logic and / or computer code for parsing messages published / posted within a communication platform, where such logic / computer code is capable of detecting any mention identifiers included within those messages. Instead of having a first set of functions for parsing messages to identify mention identifiers that refer to users and a different second set of functions for parsing messages to identify mention identifiers that refer to virtual spaces (e.g., channels, direct messages, etc.), the logic / computer code associated with production class 418 is configured to identify mention identifiers that refer to users and / or virtual spaces of the communication platform.

[0170] A test class 420 can be used to process simulations or test the manner in which mention processor 416 detects mention identifiers in messages. In some examples, running an instance of test class 420 does not trigger one or more side effects (e.g., sending notifications). Additionally, test class 420 can include logic and / or computer code configured to parse messages that have previously been parsed in association with production class 418 and published / posted via a virtual space of the communication platform (e.g., virtual space 404). That is, in addition to production class 418 parsing messages to detect mention identifiers included within the messages, test class 420 can also be used to subsequently parse such messages to also identify mention identifiers. As a result, test class 420 can determine whether production class 418 can correctly and accurately detect mention identifiers within messages published / posted within the communication platform. In other embodiments, production class 418 and test class 420 can parse messages published / posted within the communication platform simultaneously in order to detect whether the messages include message identifiers. In this way, mention processor 416 can utilize different logic / computer code in order to determine whether production class 418 and test class 420 of mention processor 416 correctly and accurately identify message identifiers included within messages published / posted within the communication platform. If so, mention processor 416 can determine that mention identifiers have been correctly / accurately identified within those messages. However, if some but not all of the mention identifiers have been correctly identified, then the logic / computer code of production class 418 and / or test class 420 can be analyzed and potentially modified. If mention identifiers have been correctly identified, but the users / virtual spaces referenced within the mention identifiers have not been correctly identified, then modifications can also be made.

[0171] In some examples, the observability class 422 can be used in association with a mention lookup tool. In some examples, the observability class 422 can process messages in the same way as the production class 418, except that the observability class 422 can store all side effects that can be triggered by a message instead of triggering the side effects. For example, the observability class 422 can parse a message and store any identified mention identifiers in a database instead of sending a notification to the user and / or the virtual space. Then, the observability class 422 can be used to present the identified mention identifiers to the user via a graphical user interface (GUI) associated with the communication platform without triggering one or more side effects (e.g., sending a notification to the user and / or the virtual space). For example, a user may wish to view what mention identifiers were detected or will be detected in a particular message. The mention lookup tool associated with the observability class 422 allows the user to view the effect of running the mention processor against a permalink associated with the message. In some examples, the detected mention identifiers can be stored in one or more databases in association with the message. In some cases, the communication platform may be unable to send a message to a user account or the virtual space due to an error (e.g., an error may occur during processing of the mention identifiers detected in the message). A user may wish to know the reason for the error or the way the mention identifiers were processed in the message or whether mention identifiers were detected in the message. For example, when searching for detected mention identifiers in a message using data associated with the message (e.g., the data can include a permalink, a primary key, a channel ID, a timestamp, etc. associated with the message), the mention lookup tool can present the user with a list of one or more identified mention identifiers in the message and what notifications (if any) were sent in association with the message. Additional details regarding Figure 6A and Figure 6B the operations that can be performed using the mention lookup tool are described below.

[0172] Figure 5 FIG. shows a schematic flow chart illustrating an exemplary process for receiving a message including mention identifiers, analyzing the message using a mention processor, and sending a notification via a communication platform.

[0173] At operation 502, the communication platform maintains a mention processor that is configured to identify one or more mention identifiers in a message transmitted via the communication platform. In some examples, the mention processor is maintained within a messaging component. The mention processor can include a production class configured to trigger one or more side effects and a test class that does not trigger notifications.

[0174] At operation 504, the process can include receiving, via a communication platform, a message including a mention identifier from a first client associated with a first user profile (or first user account). The message can be posted within a virtual space (e.g., a channel), added to a document associated with the communication platform (e.g., a comment in a document), or added to a message to another user account associated with the communication platform, etc. For example, as Figure 5 shown, user_A posts message 506 including mention identifier 508. In a particular example, the mention identifier is a user account mention identifier and @mentions user_B. In some examples, the message can include multiple mention identifiers. For example, the message can include a first mention identifier and a second mention identifier. In some examples, the first mention identifier and the second mention identifier can be the same or different mention identifiers (e.g., the first mention identifier can be a user account mention identifier and the second mention identifier can be a channel mention identifier).

[0175] At operation 510, the process includes analyzing the message via a mention processor to determine the type of mention identifier included in message 506. For example, the type of mention identifier can include one of a keyword mention identifier, a user profile mention identifier, a group mention identifier, a channel mention identifier, a document mention identifier, a virtual space mention identifier, a canvas mention identifier, etc. In some examples, the user profile mention identifier can include a username, a real name, or other unique identifier associated with a particular user or user account. In some examples, the group mention identifier includes a group of users or user accounts associated with the communication platform.

[0176] In some examples, a communication platform can generate log data associated with a mention identifier in a message in a mention-only logging processor. The mention-only logging processor can be associated with a database that stores the log data. The log data can represent a history of all information processed by the mention processor (e.g., metadata associated with each message transmitted via a virtual space, such as a timestamp associated with the message, a sending user identifier, a receiving user identifier, a conversation identifier, and / or a root object identifier, errors during processing, etc.). The mention-only logging processor can enable a user to review one or more observed mention identifiers within a message. For example, the mention-only logging processor can be associated with a search tool (e.g., a mention finder tool) that enables the user to view how the mention processor parsed the message and what side effects (if any) may have been triggered. That is, instead of the user having to parse / view code associated with a message that includes a message identifier, the mention processor allows any user to identify mentions included within the message. In some examples, the mention finder tool can be used to determine whether one or more notifications were sent to another user account or virtual space associated with the communication platform. For example, an error may occur during processing of a message that includes a mention identifier. In some examples, the error can be that a user account or virtual space did not receive a notification, received an incorrect type of notification (e.g., received a text message instead of an email), received a notification at an inappropriate time (e.g., when the user had notifications paused), etc. To determine what error occurred during processing of a message, the user can utilize the mention finder tool to view (1) what mention identifiers (if any) were detected in a particular message and (2) what notifications (if any) were sent to which user accounts and / or virtual spaces.

[0177] At operation 514, the process includes identifying, at least in part based on the type of the mention identifier, a second user account or virtual space of the communication platform referenced by the mention identifier. The virtual space can include communication channels, canvases, collaborative documents, etc. In some examples, the virtual space can be associated with a group of users. In some examples, the mention processor can identify, at least in part based on the mention identifier being a keyword mention identifier, one or more user accounts or virtual spaces to be notified when a specific keyword mention identifier is detected in a message (e.g., when an @ mention keyword, the virtual space can receive a notification). In some examples, one or more user accounts or virtual spaces can be notified based on a specific document mention identifier detected in the message (e.g., when a document is tagged via "@", one or more editors of the document can be notified). In some examples, the process can include identifying, via the mention processor and at least in part based on the type of the mention identifier, a third user account (or third user profile) or a second virtual space associated with the mention identifier. For example, the message can include multiple user account mention identifiers and / or multiple channel mention identifiers.

[0178] At operation 516, the process can include determining, via the mention processor, whether a notification should be sent to the second user account or virtual space via the communication platform. In some examples, determining whether a notification should be sent is at least in part based on whether the message is processed by a production or test class associated with the message processor. For example, a message processed by a test class may not trigger side effects such as notifications. In some examples, when it is determined that a notification should not be sent, the messaging component refrains from sending the notification associated with the message and instead displays, via the first client, a potential notification associated with the message. In some examples, when it is determined that a notification should not be sent, the mention processor can generate log data associated with the mention identifier identified in the message and store the log data in one or more databases.

[0179] In some examples, determining whether a notification should be sent is at least in part based on the notification preferences or status associated with the second user account or virtual space. For example, the second user account or virtual space can be associated with a "Do Not Disturb" status or a suspended notification status, a suspension of notifications for a period of time, a preference to receive text or email notifications, etc. In some examples, a user account or virtual space may prefer to receive notifications only during working hours (e.g., Monday through Friday, 8:00 a.m. to 5:00 p.m.).

[0180] In some examples, separate user accounts and / or separate virtual spaces can be associated with separate mention processors. In some examples, determining the type of notification to send to a second user account or virtual space is at least partially based on the mention processor being associated with the second user account or virtual space. This will allow for more flexibility in choosing what side effects to trigger for a specific user account or virtual space.

[0181] At operation 518, when determining that a notification should be sent, the process can include determining the type of notification to send. The type of notification can include an email, a text message, a pop-up notification, a channel notification, a delayed notification, etc. Determining the type of notification to send is at least partially based on the notification preferences associated with the second user account or virtual space. For example, a user account may prefer to receive a first type of notification (e.g., a text message) from a first user account and a second type of notification (e.g., an email) from a second user account, a user account may prefer to receive notifications for a specific type of event (e.g., a message received via a channel) rather than for other types of events (e.g., an edit to a document), or a user account may prefer to receive notifications associated with a specific user account rather than other user accounts. In some examples, the notification preferences associated with a second user account can be different from the notification preferences associated with a virtual space.

[0182] At operation 520, the process can include sending a notification associated with the message to the second user account or virtual space at least partially based on the type of notification.

[0183] Figures 6A to 6B An exemplary user interface is shown that enables a user to search for and view one or more mention identifiers detected in a message.

[0184] For example, Figure 6ADepicts a user interface 600A that enables a user to search for detected mention identifiers within a message using data associated with the message. A communication platform may maintain a mention lookup tool 602 associated with a mention processor. In some examples, the mention lookup tool 602 is run using an observability class of the mention processor. In some examples, the mention lookup tool 602 may be associated with a log-only mention processor. In some examples, the mention lookup tool 602 may be used to determine which mentions are detected or will be detected in a message. In some examples, the mention lookup tool 602 may access a database associated with the mention processor. In some examples, the mention lookup tool 602 may access stored log data associated with the mention identifiers identified in the message. The mention lookup tool 602 enables the user to search for detected mentions in the message using the stored data associated with the message. The data associated with the message may include a permalink 604 associated with the message, a separate designation 606 (ID) (e.g., a team ID, a channel ID, and a timestamp separated by characters), or a primary key 608. The permalink 604 (or permalink) is a unique address (e.g., a Uniform Resource Locator (URL)) that references a specific post, message, website, etc. The primary key 608 is a field or a set of fields in a table that is used to identify all the data that uniquely exists in the table. The value of the primary key 608 may be used to reference a data record.

[0185] In some examples, a computing device associated with the communication platform generates log data associated with the mention identifiers identified or detected in a message in a log mention processor. The computing device may then store the log data in one or more databases associated with the communication platform. The computing device associated with the communication platform may then receive an input of first data associated with the message via a search tool (e.g., the mention lookup tool), the first data input including one of a permalink associated with the message, a message identification code, a team identification code, a channel identification code, or a timestamp. The computing device associated with the communication platform may then identify one or more observed mention identifiers within the message via the log mention processor and using the log data. The computing device associated with the communication platform may then present the one or more observed mention identifiers via a user interface.

[0186] Figure 6BAn exemplary user interface 600B is shown that enables a user to view mention identifiers detected in a message. In a particular example, the mention lookup tool 602 is used to view the effect of running a mention processor against a permalink associated with the message. In some examples, the detected mention identifiers can be stored associated with the message. In some cases, the communication platform may be unable to send a message to a user account or virtual space due to an error (e.g., an error may occur during processing of the mention identifiers detected in the message). The user may want to know the reason for the error or the way the mention identifiers are processed in the message or whether mention identifiers are detected in the message. For example, when searching for detected mention identifiers in a message using data associated with the message (e.g., the data can include a permalink, a primary key, a channel ID, a timestamp, etc. associated with the message), the mention lookup tool 602 can present a graphical user interface (GUI) that includes data represented in a first portion and a second portion.

[0187] In an example, the first portion of the GUI can include data associated with one or more stored mention identifiers associated with the message being searched. The stored mention identifiers can include mentions detected from the message. In some examples, the stored mention identifiers can be stored in a mention table. The stored mention identifiers can be organized in the table by type 612 (i.e., the type of mention identifier observed within the message). For example, the types of mention identifiers can include user account mention identifiers (e.g., user_account), group mention identifiers (e.g., user_group), word mention identifiers (e.g., word), channel mention identifiers (e.g., channel), etc. In some examples, the stored mention identifiers can be associated with either a user ID 614 or a group ID 616. In some examples, mention identifiers configured to send a notification to a user account can be associated with the user ID 614. For example, a user account mention identifier or a word mention identifier can be associated with the user ID 614. In some examples, mention identifiers configured to send a notification to a virtual space or multiple user accounts can be associated with the group ID 616. For example, a keyword mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier can be associated with the group ID 616.

[0188] In some examples, the second part of the GUI may include data associated with one or more stored notifications 618 queued for a message for a search. In some examples, the queued notifications are notifications that will be processed via the mention processor. In some examples, the queued notifications are notifications that have been sent to the user and / or the virtual space. The second part may include information associated with each individual queued notification. The information may include notification type, team ID, user ID, channel ID, timestamp, and / or Do Not Disturb (DND) override associated with each individual queued notification. The type of notification may depend at least in part on the type of mention identifier detected in the message (e.g., a notification may be sent to a user account based on the mention processor detecting a user account mention identifier, a notification may be sent to a user group based on the mention processor detecting a user group mention identifier, a notification may be sent to a channel based on the mention processor detecting a channel mention identifier, etc.). In some examples, the mention processor may override the Do Not Disturb notification preference associated with the user account or the virtual space. For example, the user account may indicate that notifications associated with a particular account or virtual space may override the Do Not Disturb setting. In some examples, an administrator of the communication platform may override the Do Not Disturb setting.

[0189] Exemplary clause

[0190] A: A method at least partially implemented by one or more computing devices of a communication platform, the method comprising: maintaining a mention processor configured to identify mention identifiers in messages posted via the communication platform; receiving, via the communication platform, a message from a first client associated with a first user profile of the communication platform; parsing, via the mention processor, the text of the message to identify mention identifiers included within the message; analyzing, via the mention processor, the message to determine the type of mention identifier; identifying, at least in part based on the type of mention identifier, a second user profile or virtual space of the communication platform referenced by the mention identifier; determining, via the mention processor, whether to send a notification via the communication platform to the second user profile or virtual space; when determining to send a notification, determining, via the mention processor, the type of notification to be sent; and sending, at least in part based on the type of notification, a notification associated with the message to the second user profile or virtual space.

[0191] B: The method according to paragraph A, further comprising: determining that a second message including a second mention identifier has been posted via the communication platform; determining, at least in part based on a second type of the second mention identifier, whether to send a second notification associated with the second message to a third user profile or a second virtual space referenced by the second mention identifier; and when determining not to send the second notification: refraining from sending the second notification; generating log data associated with the second mention identifier identified in the second message; and storing the log data in one or more databases.

[0192] C: A method according to paragraph A or B, wherein determining the type of notification to be sent to a second user profile or virtual space is at least partially based on a reference processor being associated with the second user profile or virtual space.

[0193] D: A method according to any one of paragraphs A to C, wherein the type of reference identifier includes one of a keyword reference identifier, a user profile reference identifier, a group reference identifier, a channel reference identifier, or a document reference identifier.

[0194] E: A method according to any one of paragraphs A to D, wherein the type of notification includes an email, a text message, a pop-up notification, a channel notification, or a delayed notification.

[0195] F: A method according to any one of paragraphs A to E, further comprising: generating, via a logging reference processor, log data associated with the reference identifier identified in the message; storing the log data in one or more databases; receiving, via a search tool, an input of first data associated with the message, the first data input including one of a permalink associated with the message, a message identification code, a team identification code, a channel identification code, or a timestamp; identifying, via the logging reference processor and using the log data, one or more observed reference identifiers within the message; and presenting, via a user interface associated with the communication platform, a graphical user interface (GUI), the graphical user interface including: a first portion that includes a representation of second data associated with one or more stored reference identifiers associated with the message; and a second portion that includes a representation of third data associated with one or more stored notifications queued for the message, the one or more stored notifications representing one or more notifications sent via the communication platform.

[0196] G: A method according to paragraph F, wherein the second data associated with one or more stored reference identifiers is organized at least partially based on the type of observed reference identifier within the message.

[0197] H: A method according to any one of paragraphs A to G, further comprising: generating a production class derived from the reference processor, the production class being configured to be referenced by code executed in association with the communication platform; and generating a test class derived from the reference processor, the test class being configured to test data associated with the message.

[0198] I: The method according to any one of paragraphs A to H further includes: identifying, via the mentioned processor and at least in part based on the type of the mentioned identifier, a third user profile or a second virtual space associated with the mentioned identifier; determining, via the mentioned processor, at least in part based on second notification preference settings associated with the third user profile or the second virtual space, the type of notification to be sent to the third user profile or the second virtual space, wherein the second notification preference settings are different from the first notification preferences associated with the second user profile or the virtual space; and sending, at least in part based on the type of the notification, a second notification associated with the message to the third user profile or the second virtual space.

[0199] J: The method according to any one of paragraphs A to I, wherein determining whether to send a notification to the second user profile or the virtual space is at least in part based on notification preference settings associated with the second user profile or the virtual space, and the notification preference settings include a preferred method of receiving notifications and a preferred time of receiving notifications.

[0200] K: A system includes: one or more processors; and one or more non-transitory computer-readable media that store instructions which, when executed, cause the system to perform operations including: maintaining a mentioned processor configured to identify a mentioned identifier in a message posted via a communication platform; receiving, via the communication platform, a message from a first client associated with a first user profile of the communication platform; parsing, via the mentioned processor, the text of the message to identify the mentioned identifier included in the message; analyzing, via the mentioned processor, the message to determine the type of the mentioned identifier; identifying, at least in part based on the type of the mentioned identifier, a second user profile or a virtual space of the communication platform referred to by the mentioned identifier; determining, via the mentioned processor, whether to send a notification via the communication platform to the second user profile or the virtual space; when determining to send a notification, determining, via the mentioned processor, the type of the notification to be sent; and sending, at least in part based on the type of the notification, a notification associated with the message to the second user profile or the virtual space.

[0201] L: The system according to paragraph K further includes: determining that a second message including a second mentioned identifier has been posted via the communication platform; determining, at least in part based on a second type of the second mentioned identifier, whether to send a second notification associated with the second message to a third user profile or a second virtual space referred to by the second mentioned identifier; and when determining not to send the second notification: refraining from sending the second notification; generating log data associated with the second mentioned identifier identified in the second message; and storing the log data in one or more databases.

[0202] M: A system according to paragraph K or L, wherein determining the type of notification to be sent to a second user profile or virtual space is at least partially based on a reference processor being associated with the second user profile or virtual space.

[0203] N: A system according to any one of paragraphs K to M, wherein the type of reference identifier includes one of a keyword reference identifier, a user profile reference identifier, a group reference identifier, a channel reference identifier, or a document reference identifier.

[0204] O: A system according to any one of paragraphs K to N, wherein the type of notification includes an email, a text message, a pop-up notification, a channel notification, or a delayed notification.

[0205] P: A system according to any one of paragraphs K to O, the operations further comprising: generating, via a logging reference processor, log data associated with the reference identifier identified in the message; storing the log data in one or more databases; receiving, via a search tool, an input of first data associated with the message, the first data input including one of a permalink associated with the message, a message identification code, a team identification code, a channel identification code, or a timestamp; identifying, via the logging reference processor and using the log data, one or more observed reference identifiers within the message; and presenting, via a user interface associated with the communication platform, a graphical user interface (GUI), the graphical user interface including: a first portion including a representation of second data associated with one or more stored reference identifiers associated with the message; and a second portion including a representation of third data associated with one or more stored notifications queued for the message, the one or more stored notifications representing one or more notifications sent via the communication platform.

[0206] Q: One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations including: maintaining a reference processor configured to identify reference identifiers within messages posted via a communication platform; receiving, via the communication platform, a message from a first client associated with a first user profile of the communication platform; parsing, via the reference processor, the text of the message to identify reference identifiers included within the message; analyzing, via the reference processor, the message to determine the type of reference identifier; identifying, at least partially based on the type of reference identifier, a second user profile or virtual space of the communication platform referenced by the reference identifier; determining, via the reference processor, whether to send a notification via the communication platform to the second user profile or virtual space; when determining to send a notification, determining, via the reference processor, the type of notification to be sent; and sending, at least partially based on the type of notification, a notification associated with the message to the second user profile or virtual space.

[0207] R: One or more non-transitory computer-readable media according to paragraph Q, the operations further comprising: generating a production class derived from the mentioned processor, the production class being configured to be referenced by code executed in association with a communication platform; and generating a test class derived from the mentioned processor, the test class being configured to test data associated with a message.

[0208] S: One or more non-transitory computer-readable media according to paragraph Q or R, the operations further comprising: identifying, via the mentioned processor and at least in part based on the type of the mentioned identifier, a third user profile or a second virtual space associated with the mentioned identifier; determining, via the mentioned processor and at least in part based on second notification preferences associated with the third user profile or the second virtual space, the type of notification to be sent to the third user profile or the second virtual space, wherein the second notification preferences are different from first notification preferences associated with the second user profile or virtual space; and sending, at least in part based on the type of the notification, a second notification associated with the message to the third user profile or the second virtual space.

[0209] T: One or more non-transitory computer-readable media according to any one of paragraphs Q to S, wherein the notification preferences include a preferred method of receiving notifications and a preferred time of receiving notifications.

[0210] Although the exemplary clauses described above are described with respect to a particular implementation, it should be understood that, in the context of this document, the content of the exemplary clauses can also be implemented via a method, a device, a system, a computer-readable medium, and / or another implementation. Additionally, any one of Examples A to T can be implemented alone or in combination with any other one or more of Examples A to T.

[0211] Conclusion

[0212] Although one or more examples of the techniques described herein have been described, various changes, additions, permutations, and equivalents are included within the scope of the techniques described herein.

[0213] In the description of the examples, reference is made to the accompanying drawings that form a part of the present invention, which illustrate, by way of example, specific examples of the claimed subject matter. It should be understood that other examples may be used and changes or alterations may be made, such as structural changes. Such examples, changes or alterations do not necessarily depart from the scope of the claimed subject matter relative to the intended one. Although the steps herein may be presented in a particular order, in some cases the ordering may be changed so that a particular input is provided at different times or in a different order without changing the functionality of the described systems and methods. The disclosed programs may also be executed in a different order. Additionally, the various calculations herein need not be performed in the order disclosed, and other examples using alternative calculation orderings can be readily implemented. In addition to being reordered, calculations can also be broken down into sub-calculations that achieve the same result.

Claims

1. A method at least partially implemented by one or more computing devices of a communication platform, the method comprising: Maintaining a mention processor configured to identify mention identifiers in messages posted via the communication platform; Receiving, via the communication platform, a message from a first client associated with a first user profile of the communication platform; Parsing the text of the message via the mention processor to identify mention identifiers included within the message; Analyzing the message via the mention processor to determine the type of the mention identifier; Identifying, at least in part based on the type of the mention identifier, a second user profile or virtual space of the communication platform referenced by the mention identifier; Determining, via the mention processor, whether to send a notification via the communication platform to the second user profile or the virtual space; When determining to send the notification, determining, via the mention processor, the type of the notification to be sent; And Sending, at least in part based on the type of the notification, a notification associated with the message to the second user profile or the virtual space.

2. The method according to claim 1, further comprising: Determining that a second message including a second mention identifier has been posted via the communication platform; Determining, at least in part based on a second type of the second mention identifier, whether to send a second notification associated with the second message to a third user profile or a second virtual space referenced by the second mention identifier; And When determining not to send the second notification: Preventing the sending of the second notification; Generating log data associated with the second mention identifier identified in the second message; and Storing the log data in one or more databases.

3. The method according to claim 1, wherein determining the type of the notification to be sent to the second user profile or the virtual space is at least in part based on the mention processor being associated with the second user profile or the virtual space.

4. The method according to claim 1, wherein the type of the mention identifier includes one of a keyword mention identifier, a user profile mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier.

5. The method according to claim 1, wherein the type of the notification includes an email, a text message, a pop-up notification, a channel notification, or a delayed notification.

6. The method according to claim 1, further comprising: Generating, via a record mention processor, log data associated with the mention identifier identified in the message; Storing the log data in one or more databases; Receiving, via a search tool, an input of first data associated with the message, the first data input including one of a permalink associated with the message, a message identification code, a team identification code, a channel identification code, or a timestamp; Identifying, via the record mention processor and using the log data, one or more observed mention identifiers within the message; And Presenting a graphical user interface (GUI) via a user interface associated with the communication platform, the graphical user interface including: A first portion including a representation of second data associated with one or more stored mention identifiers associated with the message; And A second portion including a representation of third data associated with one or more stored notifications queued for the message, the one or more stored notifications representing one or more notifications sent via the communication platform.

7. The method according to claim 6, wherein the second data associated with the one or more stored mention identifiers is organized at least in part based on the type of observed mention identifier within the message.

8. The method according to claim 1, further comprising: Generating a production class derived from the mention processor, the production class being configured to be referenced by code executed in association with the communication platform; And Generating a test class derived from the mention processor, the test class being configured to test data associated with the message.

9. The method according to claim 1, further comprising: Identifying a third user profile or a second virtual space associated with the mention identifier via the mention processor and at least in part based on the type of the mention identifier; Determining, via the mention processor, at least in part based on second notification preferences associated with the third user profile or the second virtual space, the type of notification to be sent to the third user profile or the second virtual space, wherein the second notification preferences are different from the first notification preferences associated with the second user profile or the virtual space; And Sending a second notification associated with the message to the third user profile or the second virtual space at least in part based on the type of the notification.

10. The method according to claim 1, wherein determining whether to send the notification to the second user profile or the virtual space is at least in part based on notification preferences associated with the second user profile or the virtual space, wherein the notification preferences include a preferred method of receiving the notification and a preferred time of receiving the notification.

11. A system, comprising: One or more processors; And One or more non-transitory computer-readable media storing instructions that, when executed, cause the system to perform operations, the operations including: Maintaining a mention processor configured to identify mention identifiers in messages posted via a communication platform; Receiving a message via the communication platform from a first client associated with a first user profile of the communication platform; Parsing the text of the message via the mention processor to identify mention identifiers included within the message; Analyzing the message via the mention processor to determine the type of the mention identifier; Identifying a second user profile or a virtual space of the communication platform referenced by the mention identifier at least in part based on the type of the mention identifier; Determine, via the mentioned processor, whether to send a notification to the second user profile or the virtual space via the communication platform; When it is determined that the notification is to be sent, determine, via the mentioned processor, the type of the notification to be sent; and Send a notification associated with the message to the second user profile or the virtual space, at least in part based on the type of the notification.

12. The system according to claim 11, further comprising: Determine that a second message including a second mention identifier has been published via the communication platform; Determine, at least in part based on a second type of the second mention identifier, whether to send a second notification associated with the second message to a third user profile or a second virtual space referred to by the second mention identifier; And When it is determined that the second notification is not to be sent: Suppress sending the second notification; Generate log data associated with the second mention identifier identified in the second message; and Store the log data in one or more databases.

13. The system according to claim 11, wherein determining the type of the notification to be sent to the second user profile or the virtual space is at least in part based on the association of the mention processor with the second user profile or the virtual space.

14. The system according to claim 11, wherein the type of the mention identifier includes one of a keyword mention identifier, a user profile mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier.

15. One or more non-transitory computer-readable media that store processor-executable instructions, the processor-executable instructions when executed by one or more processors cause the one or more processors to perform the operations according to any one of claims 1 to 14.