a mention processor configured to process the mention identifier
The mention processor addresses navigation and error issues in messaging systems by encapsulating side effects and providing tools for introspection, reducing computational load and enhancing user understanding of notification processes.
Patent Information
- Application Number
- JP2025537885
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-12-27
- Filing Date
- 2023-12-05
- Publication Date
- 2026-01-16
AI Technical Summary
Current messaging systems face difficulties in navigating mention identifiers, are prone to errors, and do not provide users with necessary information to determine notification errors, limiting their scope and functionality.
A mention processor encapsulates all configurations and side effects, allowing for record-only processing that records and displays side effects without applying them, improving visibility and reducing computational load, and provides tools for introspection of business logic.
Reduces computational processing, minimizes errors, and enhances user understanding of notification processes by allowing users to view detected mention identifiers and associated notifications, preventing future errors.
Smart Images

Figure 2026501558000001_ABST
Abstract
Description
[Technical Field]
[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims priority to U.S. patent application Ser. No. 18 / 089,119, filed Dec. 27, 2022, entitled "MENTIONS PROCESSOR CONFIGURED TO PROCESS MENTIONS IDENTIFIERS," the entire contents of which are incorporated herein by reference.
[0002] [Technical field] Various messaging systems may support communication and collaboration between users via electronic computer-based communication platforms. Messages sent via the communication platforms are evaluated to determine which users and / or channels the message should be notified to. However, several deficiencies and problems are associated with current processing logic used to determine which users and / or channels should be notified. For example, current processing logic may be difficult for users to navigate, prone to errors, and / or may not provide users with the information necessary to determine how a messaging error occurred. Accordingly, such current systems are limited in scope and functionality. [2a] The abstract of U.S. Patent Publication No. 2013 / 031172 states, "Systems, apparatus, methods, and computer-readable media for communicating feed information to one or more recipients. In some implementations, instructions to communicate information updates to one or more identified first recipients are received. In some cases, additional recipient indicators are identified, and identities of one or more second recipients are generated based on the additional recipient indicators. In some cases, access to the information updates is provided to the one or more second recipients." [2b] Le Petit Tuto d'Anthony, "ACTIVER Notification sur une IDENTIFICATION sur Instagram, January 26, 2019, URL: https: / / www.youtube.com / watch?v=-ccVjd1wCK4 Summary of the Invention
[0003] The invention is set out in the independent claims, with some optional features being set out in the dependent claims. [Brief explanation of the drawings]
[0004] The detailed description will be described with reference to the accompanying drawings. In the figures, the leftmost digit(s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference number in different figures indicates similar or identical components or features. The figures are not drawn to scale. [Figure 1] FIG. 1 illustrates an exemplary system for performing the techniques described herein.
[0005] [Figure 2A] FIG. 1 illustrates a user interface for a group-based communication system for a particular example.
[0006] [Figure 2B] 1 illustrates a user interface for a multimedia collaborative session within a group-based communication system for a particular example.
[0007] [Figure 2C] FIG. 1 illustrates a user interface for inter-organizational collaboration within a group-based communication system for a particular example.
[0008] [Figure 2D] FIG. 1 illustrates a user interface for a collaborative document within a group-based communication system for a particular example.
[0009] [Figure 3A] FIG. 1 illustrates a user interface for a workflow within a group-based communication system.
[0010] [Figure 3B] FIG. 1 is a block diagram for implementing certain examples discussed herein.
[0011] [Figure 4] 1A-1C illustrate example user interfaces presenting different types of mention identifiers within messages associated with a communications platform as discussed herein.
[0012] [Figure 5]FIG. 1 is a flow diagram illustrating an example process for receiving a message including a mention identifier, analyzing the message using a mention processor, and sending a notification.
[0013] [Figure 6A] FIG. 10 illustrates a user interface that allows a user to search for one or more mention identifiers found in a message.
[0014] [Figure 6B] FIG. 10 illustrates a user interface that allows a user to view stored mention identifiers associated with a message. DETAILED DESCRIPTION OF THE INVENTION
[0015] Messages containing mention identifiers (e.g., @name, @channel, @directmessage, etc.) sent through a communications platform may be processed through mention processing logic to determine which user or group of users in a virtual space should be notified of the message. As described above, existing techniques for processing mention identifiers in messages include processing logic that is difficult for users to navigate, prone to errors, and may not provide users with the information necessary to determine how a notification error occurred. The processing logic in existing systems may not allow validation of the business logic of the code without reprocessing the message and triggering all side effects.
[0016] The technical solutions presented herein can address one or more of the above technical problems. According to aspects of the present disclosure, a mention processor may encapsulate all configurations and side effects within the mention processor. Side effects may include effects observed from outside the function processed within the mention processor. In other words, a function, operation, or expression is said to have a side effect when it changes a non-local state, when its output is not deterministic, or when it modifies some state variable outside the local environment in which the function, operation, or expression is executing. The function associated with a mention identifier in a message is executed through an instance of a mention processor container. A container is a class or data structure configured to store other data items or objects. A container may also be described as a package of software that includes all of the elements necessary to run in any environment (e.g., a private data center, a public cloud, a developer's computing device, etc.). In some cases, the mention processor allows for different application of side effects without having to reimplement the entire business logic each time.
[0017] The technology described herein is also directed to a record-only mentions processor that allows all side effects to be recorded and displayed rather than applied, enabling introspection of business logic without additional processing. A record-only mentions processor may be associated with a mention processor observability class. For example, a record-only mentions processor provides information about which mention identifiers were detected in a message without triggering notifications to be sent to users and / or virtual spaces. Rather than sending one or more notifications, a record-only mentions processor stores information in one or more databases. The stored information may include the detected mention identifiers in a message, the jobs processed, and which subscriptions, if any, occurred for past messages, without the need to resend the message. Thus, a record-only mentions processor improves visibility, organization of information, and reduces computational load. The record-only mention processor is associated with a mention lookup tool that allows a user to review stored information, including which mentions (if any) were detected in a message, as well as what notifications (if any) will be sent for the message based on the mentions in the message.
[0018] The mention processor is configured to parse messages to identify mention identifiers in messages sent via the communication platform. The mention identifiers are used to tag other user accounts or virtual spaces (e.g., channels, feeds, etc.) to draw attention to some information (e.g., messages, documents, keywords, projects, etc.) shared within the communication platform. The mention identifiers may be of various types, including, for example, a keyword mention identifier, a user account mention identifier, a group mention identifier, a channel mention identifier, a virtual space mention identifier, or a document mention identifier. The mention processor may identify a second user profile and / or a virtual space of the communication platform referenced by the mention identifier based at least in part on the type of mention identifier in the message. The mention processor may determine whether a notification should be sent to a particular user account and / or virtual space, and, based on a determination that a notification should be sent, may send the notification based on preference settings associated with the user account and / or virtual space. The notification may include an email, a text message, a pop-up notification, a channel notification, a delayed notification, etc.
[0019] The mention processor may generate log data associated with the mention identifiers and store the log data in one or more databases. The log data may represent a historical record of information and / or data processed by the mention processor (e.g., metadata associated with each message sent through 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 stored mention identifiers associated with a message. For example, a user may enter data associated with a message into the search tool. The data associated with a message may include, for example, a permalink, a message identification code, a team identification code, a channel identification code, or a timestamp. The search tool may be used to view one or more observed mention identifiers in a message without triggering any side effects (e.g., a user may utilize the search tool without triggering the side effect of sending a notification to another user of the communication platform). The search tool may also be used to view which notifications, if any, were sent to the user and / or the virtual space.
[0020] The techniques described herein can reduce the amount of computational processing performed by a computing device when processing mention identifiers in messages and sending notifications via a communication platform. The mention processor allows all side effects to be performed through an instance of the mention processor, reducing the number of computations in existing systems. The techniques described herein enable different application of side effects without having to re-implement the logic of the code in each use case. The techniques described herein also, in some instances, allow side effects to be recorded and displayed via a user interface instead of being applied, which enables introspection of business logic without processing side effects. Furthermore, the techniques described herein can reduce the number of errors that occur when mention identifiers are processed in messages and can also add the benefit of error visibility. Errors resulting from processing mention identifiers require reprocessing of the mention identifiers and the corresponding messages, which causes additional computational processing requirements.
[0021] The techniques described herein provide various benefits to users associated with the communications platform. For example, users have access to tools (e.g., mention lookup tools) that allow users to view which mention identifiers were detected in a message and which notifications were sent in connection with the message. The tools can provide users with insight into how notification errors occurred (e.g., notification errors can occur when a notification is sent to the wrong user, to the wrong virtual space, at the wrong time or day, or when the wrong type of notification is sent, etc.), thereby helping users prevent future notification errors from occurring. In this way, systems configured according to various embodiments of the present disclosure provide specific technical solutions to technical problems, the details of which are described herein.
[0022] The following detailed description of the embodiments refers to the accompanying drawings, which illustrate specific embodiments in which the present technology may be practiced. These embodiments are intended to describe aspects of the systems and methods in sufficient detail to enable those skilled in the art to practice the technology discussed herein. Other embodiments may be utilized, and changes may be made without departing from the scope of the present disclosure. Therefore, the following detailed description is not to be construed in a limiting sense. The scope of the present disclosure is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
[0023] Group-based communication system FIG. 1 illustrates an exemplary environment 100 for implementing the techniques described herein. In at least one example, the exemplary environment 100 can be associated with a communications platform that can leverage a network-based computing system to enable users of the communications platform to exchange data. In at least one example, the communications platform can be “group-based” such that the platform and associated systems, communication channels, messages, collaborative documents, canvases, audio / video conversations, and / or virtual spaces have security (which can be defined by permissions) to limit access to a defined group of users. In some examples, such groups of users can be defined by a group identifier, which, as described above, can be associated with common access credentials, domains, etc. In some examples, the communications platform can be a hub that provides a secure, private virtual space to enable users to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate with each other. As described above, each group can be associated with a workspace, which can enable users associated with the group to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate with each other in a secure and private virtual space. In some examples, members of a group, and therefore members of a workspace, can be associated with the same organization. In some examples, members of a group, and therefore members of a workspace, can be associated with different organizations (e.g., entities with different organization identifiers).
[0024] 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, which may be embodied in any number of ways. For example, in the server example, functional components and data may be implemented in a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, a cloud-hosted storage service, etc., although other computer architectures may additionally or alternatively be used.
[0025] In at least one example, the server 102 can communicate with the user computing devices 104 via one or more networks 106. That is, the server 102 and the user computing devices 104 can transmit, receive, and / or store data (e.g., content, information, etc.) using the networks 106 as described herein. The user computing devices 104 can be any suitable type of computing device, such as portable, semi-portable, semi-stationary, or stationary. Some examples of the user computing devices 104 can include tablet computing devices, smartphones, mobile communication devices, laptops, 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 transmitting communications and performing functions in accordance with the techniques described herein. While a single user computing device 104 is shown, in practice, the exemplary environment 100 can include many (e.g., tens, hundreds, thousands, or millions) of user computing devices. In at least one example, a user computing device, such as user computing device 104, may be operable by a user to, among other things, access communication services via a communication platform. A user may be an individual, a group of individuals, an employer, a business, an organization, etc.
[0026] The network 106 may include any type of network known in the art, such as, but not limited to, a local or wide area network, the Internet, a wireless network, a cellular network, a local wireless network, Wi-Fi and / or near field communication, Bluetooth®, Bluetooth Low Energy (BLE), Near Field Communication (NFC), a wired network, or any other such network, or any combination thereof. The components used for such communication may depend, at least in part, on the type of network, the selected environment, or both. Protocols for communicating over such networks 106 are well known and will not be described in detail herein.
[0027] In at least one example, server 102 may include one or more processors 108 , computer-readable media 110 , one or more communication interfaces 112 and / or input / output devices 114 .
[0028] In at least one example, each processor of processors 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 logic circuits of any suitable type that are 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 on a computer-readable medium, which can program the processor to perform the functions described herein.
[0029] Computer-readable media 110 can include volatile and nonvolatile memory and / or removable and non-removable media implemented in any type of technology for storage of data, such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable media 110 can include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, 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 desired data and that can be accessed by a computing device. Depending on the configuration of server 102, computer-readable media 110 can be a type of computer-readable storage medium and / or can be tangible non-transitory media, to the extent that, when referred to, non-transitory computer-readable media excludes media such as energy, carrier signals, electromagnetic waves, and signals themselves.
[0030] The computer-readable medium 110 can be used to store any number of functional components executable by the processor 108. In many implementations, these functional components include instructions or programs executable by the processor 108 that, when executed, specifically configure the processor 108 to perform the operations described above for the server 102. The functional components stored on the computer-readable medium can optionally include a messaging component 116, including a mention processor 120, an audio / video component 118, an operating system 122, and a data store 124.
[0031] In at least one example, the messaging component 116 can process messages between users. That is, in at least one example, the messaging component 116 can receive an outgoing message from a user computing device 104 and transmit the message as an incoming message to a second user computing device. The messages can include direct messages sent from the originating user to one or more designated users and / or communication channel messages sent from the originating user via a communication channel to one or more users associated with the communication channel. Additionally, messages can be sent in association with a collaborative document, canvas, or other collaborative space. In at least one example, a canvas can include a flexible canvas for curating, organizing, and sharing a collection of information between users. In at least one example, a collaborative document can be associated with a document identifier (e.g., a virtual space identifier, a communication channel identifier, etc.) configured to enable messaging functionality attributable to a virtual space (e.g., a communication channel) within the collaborative document. That is, a collaborative document can be treated as a virtual space like a communication channel and can include functionality associated with a virtual space. A virtual space, i.e., a communication channel, can be a data pathway used to exchange data between systems and devices associated with a communication platform.
[0032] In at least one example, the messaging component 116 can establish communication paths between various user computing devices, enabling the user computing devices to communicate and share data among themselves. In at least one example, the messaging component 116 can manage such communication and / or data sharing. In some examples, data associated with the virtual space, such as collaborative documents, can be presented via a user interface. Additionally, metadata associated with each message sent through the virtual space, such as a timestamp associated with the message, an identifier of the sending user, an identifier of the receiving user, a conversation identifier and / or a root object identifier (e.g., a conversation associated with a thread and / or a root object), etc., can be stored in association with the virtual space.
[0033] In various examples, the messaging component 116 can receive a message (e.g., a direct message instance, a communication channel, a canvas, a collaborative document, etc.) sent in association with the virtual space. In various examples, the messaging component 116 can identify one or more users associated with the virtual space and cause the message to be rendered in association with the instance of the virtual space on each 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, cause a notification associated with the update to be presented in association with a sidebar of a user interface associated with one or more of the users associated with the virtual space. For example, the messaging component 116 can receive a message sent in association with the 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 may cause a notification of an update to the virtual space to be presented via a sidebar of a user interface associated with a second user account of the second user. In some examples, the mention processor 120 of the messaging component 116 may cause the notification to be presented in response to a determination that the sidebar of the user interface associated with the second user account includes an affordance associated with the virtual space. In such examples, the notification may be presented in association with the affordance associated with the virtual space.
[0034] The messaging component 116 may include a mention processor 120. In some examples, the messaging component 116 may include multiple mention processors. For example, the messaging component may include a first mention processor configured to trigger a side effect and a second mention processor (e.g., a record-only mention processor) configured for use during debugging or for testing purposes. In some examples, different mention processors may be used for each specific user and / or virtual space. In some examples, the mention processor 120 may encapsulate all configurations and side effects that occur during mention processing. In some examples, the mention processor 120 may be configured to identify and process all mention identifiers associated with messages sent in connection with the communications platform. In some examples, the mention processor 120 handles metadata associated with the communications platform (e.g., information about mention identifiers in messages, the type of mention identifier, user identification, grouping identification, team identification, channel identification, timestamp, etc.). The mention processor 120 may include a container configured to capture side effects (e.g., notifications) within the mention processor 120.
[0035] In some examples, the mention processor 120 may be configured to identify a mention (or mention identifier) associated with a message sent in connection with the virtual space. In at least one example, the mention identifier (or tag) may include an @mention (or other special character) of a user identifier associated with the communication platform. In some examples, the mention processor 120 may be configured to identify one or more mention identifiers (e.g., @mention) 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 a keyword mention identifier (e.g., @new_project, @new_promotional_materials, @holiday_party_2022, etc.), a user profile mention identifier (e.g., @User_A), a group mention identifier (@Group_1), a channel mention identifier (e.g., @Channel_A), a document mention identifier (e.g., @Document_1), or an application mention identifier (e.g., @application_A) within a message or other communication sent in connection with the virtual space. In some examples, the user profile mention identifier may include a username, real name, or other unique identifier associated with a particular user or user account.
[0036] In response to analyzing the message to determine the type of mention identifier included in the message, the mention processor 120 may identify a user account and / or a virtual space of the communication platform referenced by the mention identifier. 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 based at least in part on notification preference settings associated with the user account and / or virtual space. Additional details of operations that may be performed by the mention processor 120 are described below.
[0037] In at least one example, the audio / video component 118 can be configured to manage audio and / or video communications between users. In some examples, the audio and / or video communications can be associated with audio and / or video conversations. In at least one example, the audio and / or video conversations can include individual identifiers configured to uniquely identify the audio and / or video conversations. In some examples, the audio and / or video component 118 can store user identifiers associated with user accounts of members of particular audio and / or video conversations, such as identifying users with appropriate permissions to access the particular audio and / or video conversations.
[0038] 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 for a period of time, after which a third user associated with (e.g., a member of) the conversation can contribute to the conversation. Audio / video component 118 can be configured to store audio and / or video data associated with a conversation in a manner that enables users with appropriate permissions to listen to and / or view the audio and / or video data.
[0039] In some examples, the audio / video component 118 can be configured to generate a transcript of the conversation and can store the transcript in association with the audio and / or video data. The transcript can include a text representation of the audio and / or video data. In at least one example, the audio / video component 118 can generate the transcript using known speech recognition technology. In some examples, the audio / video component 118 can generate the transcript simultaneously or substantially simultaneously with the conversation. That is, in some examples, the audio / video component 118 can be configured to generate a text representation of the conversation while the conversation is taking place. In some examples, the audio / video component 118 can generate the transcript after receiving an indication that the conversation is complete. The indication that the conversation is complete can include an indication that an associated host or administrator has stopped the conversation, an indication that a threshold number of meeting attendees have closed an associated interface, and / or similar indications. That is, the audio / video component 118 can identify the completion of a conversation and, based on that completion, generate a transcript associated therewith.
[0040] In at least one example, the audio / video component 118 can be configured to cause a transcript to be presented in association with a virtual space with which the audio and / or video conversation is associated. For example, a first user can initiate an audio and / or video conversation in association with a communication channel. The audio / video component 118 can process audio and / or video data between participants in the audio and / or video conversation and generate a transcript of the audio and / or video data. In response to generating the transcript, the audio / video component 118 can cause the transcript 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 sections of the transcript selectable for commenting to enable members of the communication channel to comment on or further contribute to the conversation. In some examples, the audio / video component 118 can update the transcript based on the comments.
[0041] In at least one example, the audio / video component 118 can manage one or more audio and / or video conversations in connection with a virtual space associated with a management or command center of a group (e.g., an organization, a team, etc.). The group management or command center may be referred to herein as a virtual (and / or digital) headquarters associated with the group. In at least one example, the audio / video component 118 can be configured to coordinate with the messaging component 116 and / or other components of the server 102 to send communications in connection with other virtual spaces associated with the virtual headquarters. That is, the messaging component 116 can send data (e.g., messages, images, drawings, files, etc.) associated with one or more communication channels, direct message instances, collaborative documents, canvases, etc. associated with the virtual headquarters. In some examples, the communication channels, direct messaging instances, collaborative documents, canvases, etc. are associated with one or more audio and / or video conversations managed by the audio / video component 118. That is, the audio and / or video conversations associated with a virtual headquarters can be further associated with one or more other virtual spaces of the virtual headquarters or can be independent.
[0042] In some examples, the communication platform can manage communication channels. In some examples, the communication platform can be a channel-based messaging platform, which in some examples can be usable by a group of users. Users of the communication platform can communicate with other users through communication channels. A communication channel, or virtual space, can be a data pathway used to exchange data between systems and devices associated with the communication platform. In some examples, a channel can be a virtual space where people can post messages, documents, and / or files. In some examples, access to a channel can be controlled by permissions. In some examples, a channel can be limited to a single organization, shared between different organizations, public, private, or special channels (e.g., hosted channels with guest accounts where guests can post but cannot perform certain actions such as inviting other users to the channel). In some examples, users can be invited to a channel via email, channel invite, direct message, text message, etc. Examples of channels and associated functionality are discussed throughout this disclosure.
[0043] In at least one example, the operating system 122 may manage the processor 108 , computer-readable medium 110 , hardware, software, etc. of the server 102 .
[0044] In at least one example, data store 124 can be configured to store accessible, manageable, and updatable data. In some examples, data store 124 can be integrated with server 102, as shown in FIG. 1 . In other examples, data store 124 can be located remotely from server 102 and accessible to server 102 and / or user devices, such as user device 104. Data store 124 can comprise multiple databases, which can include user / organization data 126 and / or virtual space data 128. Additional or alternative data can be stored within the data store and / or in one or more other data stores.
[0045] In at least one example, the user / organization data 126 can include data associated with a user of the communications platform. In at least one example, the user / organization data 126 can store data within a user profile (also referred to as a “user account”) that can store data associated with a user, including, but not limited to, one or more user identifiers associated with multiple different organizations or entities with which the user is associated, one or more communication channel identifiers associated with communication channels the user is authorized to access, one or more group identifiers of groups (or organizations, teams, entities, etc.) with which the user is associated, an indication of whether the user is an owner or administrator of any communication channels, an indication of whether the user has any communication channel restrictions, a plurality of messages, a plurality of emojis, a plurality of conversations, a plurality of conversation topics, an avatar, an email address, a real name (e.g., John Doe), a username (e.g., j doe), a password, a time zone, a status, a token, etc.
[0046] In at least one example, user / organization data 126 can include permission data associated with permissions of individual users of the communications platform. In some examples, permissions can be set automatically or by an administrator of the communications platform, an employer, company, organization, or other entity using the communications platform, a team leader, group leader, or other entity using the communications platform to communicate with team members, group members, etc., an individual user, etc. Permissions associated with individual users can be mapped to or otherwise associated with an account or profile in user / organization data 126. In some examples, permissions can indicate which users can communicate directly with other users, which channels the user is authorized to access, restrictions on individual channels, which workspaces the user is authorized to access, restrictions on individual workspaces, etc. In at least one example, permissions can support the communications platform by maintaining security for limiting access to defined groups of users. In some examples, such users can be defined by common access credentials, group identifiers, etc., as described above.
[0047] In at least one example, user / organization data 126 can include data associated with one or more organizations of the communications 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 identifiers, communication channel identifiers, direct message instance identifiers, collaborative document identifiers, canvas identifiers, audio / video conversation identifiers, etc.), organization identifiers associated with the organization, one or more organization identifiers associated with other organizations authorized to communicate with the organization, etc.
[0048] 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, canvases, and audio and / or video conversations. In at least one example, virtual space data 128 can separately store data associated with individual virtual spaces, such as based on a distinct identifier 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. As another example, 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.
[0049] As described above, each virtual space in a communication platform may be assigned an individual identifier that uniquely identifies the virtual space. In some examples, the virtual space identifier associated with a virtual space may include a physical address in the virtual space data 128 where data related to that virtual space is stored. A virtual space may be “public,” allowing any user within an organization (e.g., associated with an organization identifier) to participate in data sharing via the virtual space, or it may be “private,” restricting data communication within the virtual space to specific users or users with appropriate viewing permissions. In some examples, a virtual space may be “shared,” which may allow users associated with different organizations (e.g., entities associated with different organization identifiers) to join and participate in data sharing via the virtual space. A shared virtual space (e.g., a shared channel) may be public, accessible to any user from either organization, or private, restricted to access by specific users from both organizations (e.g., users with appropriate authorization).
[0050] In some examples, the data store 124 can be partitioned into discrete items of data (e.g., data shards) that can be accessed and managed individually. Data shards can simplify many technical tasks, such as data retention, unfurling (e.g., detecting that message content contains links, crawling the link metadata, determining a unified summary of the metadata), and integration configuration. In some examples, data shards can be associated with organizations, groups (e.g., workspaces), communication channels, users, etc.
[0051] In some examples, individual organizations can be associated with database shards in the data store 124 that store data related to a particular organization identity. For example, a database shard may store electronic communication data associated with members of a particular organization, allowing members of that particular organization to communicate and exchange data in real time or near real time with other members of the same organization. In this example, the organization itself can be the owner of the database shard and have control over where and how the associated data is stored. In some examples, a database shard can store data related to two or more organizations (e.g., as in a shared virtual space).
[0052] In some examples, individual groups can be associated with database shards in data store 124 that store data related to a particular group identity (e.g., a workspace). For example, a database shard may store electronic communication data associated with members of a particular group, allowing members of that particular group to communicate and exchange data in real time or near real time with other members of the same group. In this example, the group itself can be the owner of the database shard and have control over where and how associated data is stored.
[0053] In some examples, a virtual space can be associated with a database shard in data store 124 that stores data related to a particular virtual space identification. For example, a database shard may store electronic communication data associated with a virtual space, allowing members of that particular virtual space to communicate and exchange data in real time or near real time with other members of the same virtual space. As described above, communication through a virtual space can be synchronous and / or asynchronous. In at least one example, a group or organization can be the owner of a database shard and have control over where and how associated data is stored.
[0054] In some examples, individual users can be associated with database shards in the data store 124 that store data related to a particular user account. For example, a database shard may store electronic communication data associated with an individual user, which allows members to communicate and exchange data in real time or near real time with other members of the communications platform. In some examples, users themselves can be owners of database shards and have control over where and how associated data is stored.
[0055] 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 a shared channel, it can be encrypted in data store 124 with an encryption key specific to that organization, and the other organization can decrypt the message or file before accessing it. Furthermore, in examples where organizations are in different geographic areas, data associated with a particular organization can be stored in a location corresponding to that organization and temporarily cached in a location closer to the client (e.g., a location associated with the other organization) when such a message or file is accessed. Data can be maintained, stored, and / or deleted in data store 124 according to data governance policies associated with each particular organization.
[0056] The communication interface 112 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device 104), for example, over the network 106 or directly. In some examples, the communication interface 112 may facilitate communication via WebSockets, an application programming interface (API) (e.g., using API calls), Hypertext Transfer Protocol (HTTPs), etc.
[0057] The server 102 may further include various input / output devices 114 (e.g., I / O devices). Such I / O devices 114 may further include a display, various user interface controls (e.g., buttons, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports, etc.
[0058] In at least one example, user computing device 104 may include one or more processors 130 , computer-readable media 132 , one or more communication interfaces 134 , and input / output devices 136 .
[0059] In at least one example, each processor in processors 130 may be a single processing unit or multiple processing units and may include single or multiple computing units or multiple processing cores. Processor 130 may include any of the types of processors described above with respect to processor 108, and may be the same as or different from processor 108.
[0060] Computer readable medium 132 may include any of the types of computer readable medium 132 described above with respect to computer readable medium 110, and may be the same as or different from computer readable medium 110. Functional components stored on the computer readable medium may optionally include one or more applications 138 and an operating system 140.
[0061] In at least one example, the application 138 can be a mobile application, a web application, and / or a desktop application, which can be provided by the communications platform or can be other dedicated applications. In some examples, individual user computing devices associated with the environment 100 can have an instance or versioned instance of the application 138 downloaded from an application store, accessible via the internet, or otherwise executable by the processor 130 to perform operations as described herein. That is, the application 138 can be an access point that allows the user computing device 104 to interact with the server 102 to access and / or use communications services available via the communications platform. In at least one example, the application 138 can facilitate data exchange between 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, a user can interact with the user interface via touch input, keyboard input, mouse input, speech input, or any other type of input.
[0062] A non-limiting example of user interface 142 is shown in FIG. 1. As illustrated in FIG. 1, user interface 142 can present data associated with one or more virtual spaces, which may include one or more workspaces. That is, in some examples, user interface 142 can integrate data from multiple workspaces into a single user interface, such that a user (e.g., of user computing device 104) can access and / or interact with data associated with multiple workspaces with which the user is associated, and / or communicate with other users associated with multiple workspaces. In some examples, user interface 142 can include a first region 144 or pane that includes indicators (e.g., user interface elements or objects) associated with workspaces with which the user (e.g., the user's account) is associated. In some examples, user interface 142 can include a second region 146 or pane that includes indicators (e.g., user interface elements, affordances, objects, etc.) that represent data associated with workspaces with which the user (e.g., the user's account) is associated. In at least one example, second region 146 can represent a sidebar of user interface 142.
[0063] In at least one example, user interface 142 may include a third region 148 or pane that may be associated with a data feed (or “feed”) indicating messages posted and / or actions taken for one or more communication channels and / or other virtual spaces for facilitating communication (e.g., virtual spaces associated with direct messaging, virtual spaces associated with events and / or actions, etc.) as described herein. In at least one example, data associated with third region 148 may be associated with the same or different workspaces. That is, in some examples, third region 148 may present data associated with the same or different workspaces via a unified feed. In some examples, the data may be organized and / or sortable by workspace, time (e.g., when associated data is posted or associated operation is otherwise performed), type of action, communication channel, user, etc. In some examples, such data may be associated with an indication of which users (e.g., members of a communication channel) posted the message and / or performed the action. In examples where third region 148 presents data associated with multiple workspaces, at least some of the data may be associated with an indication of which workspace the data relates to. In some examples, third region 148 may be resized or may pop out as a standalone window.
[0064] In at least one example, operating system 140 may manage processor 130 , computer-readable medium 132 , hardware, software, etc. of server 102 .
[0065] The communications interface 134 may include one or more interfaces and hardware components for enabling communication with various other devices (e.g., the user computing device 104), such as over the network 106 or directly. In some examples, the communications interface 134 may facilitate communication via Websockets, an API (e.g., using API calls), HTTPs, etc.
[0066] The user computing device 104 may further include 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, joystick, keyboard, mouse, touch screen, etc.), audio speakers, connection ports, etc.
[0067] Although the techniques described herein are described as being performed by messaging component 116, audio / video component 118, mention processor 120, and application 138, the techniques described herein can be performed by any other component or combination of components that can be associated with server 102, user computing device 104, or a combination thereof.
[0068] User Interface for Group-Based Communication Systems 2A illustrates a user interface 200 of a group-based communication system, which is useful for illustrating the operation of various embodiments 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, channels the user is authorized to access, groups the user is associated with, permissions, and other user-specific information.
[0069] User interface 200 includes multiple objects, such as panes, text entry fields, buttons, messages, or other user interface components, viewable by a user of the group-based communication system. As shown, user interface 200 includes a title bar 202, a workspace pane 204, a navigation pane 206, channels 208, documents 210 (e.g., collaborative documents), direct messages 212, applications 214, a synchronized multimedia collaborative session pane 216, and a channel pane 218.
[0070] By way of example and not limitation, when a user opens the user interface 200, the user may select a workspace via the workspace pane 204. A particular workspace may be associated with data specific to that workspace and accessible via permissions associated with that workspace. Different sections of the navigation pane 206 may present different data and / or options to the user. Different graphical indicators may be associated with virtual spaces (e.g., channels) to summarize attributes of the channel (e.g., whether the channel is public, private, shared across organizations, locked, etc.). When a user selects a channel, the channel pane 218 may be presented. In some examples, the channel pane 218 may 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 a channel may be able to search within the channel, access content associated with the channel, add other members, post content, etc. In some examples, depending on the permissions associated with the channel, users who are not members of the channel may have limited ability to interact with (or simply view or otherwise access) the channel. As a user navigates within a channel, the user can view messages 222, react to messages (e.g., react 224), reply with threads, start threads, etc. Additionally, the channel pane 218 may include a configuration pane 228 for configuring messages and / or other data associated with the channel. In some examples, the user interface 200 may include a thread pane 230 that provides an additional level of detail for the messages 222. In some examples, different panes may be resized, panes may pop out into separate windows, and / or separate windows may be merged into multiple panes of the user interface 200.In some examples, users may communicate with other users via collaborative pane 216, which may provide synchronous or asynchronous audio and / or video capabilities for communication. Of course, these are exemplary examples, and additional examples of the foregoing features are provided throughout this disclosure.
[0071] In some examples, title bar 202 includes a search bar 220. Search bar 220 may allow a user to search for content located within a current workspace of the group-based communication system, such as files, messages, channels, members, commands, functions, etc. A user may narrow a search by attributes such as content type, content creator, and by the user associated with the content. A user may optionally search within a particular workspace, channel, direct message conversation, or document. In some examples, title bar 202 includes navigation commands that allow a user to move back and forth between different panes and view a history of accessed content. In some examples, title bar 202 may include additional resources, such as links to help documentation and user configuration settings.
[0072] In some examples, the group-based communication system can include multiple separate workspaces, each associated with a different group of users and channels. Each workspace can be associated with a group identifier, and one or more user identifiers can be mapped to or otherwise associated with the group identifier. Users corresponding to such user identifiers may 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 and adding or removing various workspaces. For example, a user may be part of an Acme workspace, in which case the user is an employee of or otherwise affiliated with Acme. The user may also be a member of a local volunteer organization that also uses the group-based communication system for collaboration. To navigate between two groups, the user may use the workspace pane 204 to change from an Acme workspace to a volunteer organization workspace. A workspace may include one or more channels unique to that workspace and / or one or more channels shared between one or more workspaces. For example, Acme Corporation may have a workspace for Acme projects, such as Project Zen, a workspace for social discussions, and an additional workspace for general corporate matters. In some examples, an organization, such as a particular business, may have multiple workspaces, and a user may be associated with one or more workspaces belonging to that organization. In yet other examples, a particular workspace may be associated with one or more organizations or other entities associated with the group-based communication system.
[0073] In some examples, the navigation pane 206 allows a user to navigate among virtual spaces, such as pages, channels 208, collaborative documents 210 (as described in FIG. 2D ), applications 214, and direct messages 212, within the group-based communication system. For example, the navigation pane 206 may include an indicator representing a virtual space that may 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 within the navigation pane 206. In some examples, the indicator may be associated with an actuation mechanism (e.g., an affordance, sometimes referred to as a graphical element) that, when actuated, causes the user interface 200 to present data associated with the corresponding virtual space. In at least one example, a virtual space may be associated with all unread data associated with each of the workspaces with which the user is associated. That is, in some examples, when a user requests access to a virtual space associated with “unreads,” all data that has not been read (e.g., not viewed) by the user may be presented, for example, in a feed. 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 sortable by associated virtual space (e.g., the virtual space through which the communication was transmitted), time, type of action, 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.
[0074] In some examples, virtual spaces can be associated with the same type of events and / or actions. For example, "threads" can be associated with messages, files, etc. posted in threads for messages posted in the virtual space, and "mentions and reactions" can be associated with messages or threads in which a user is mentioned (e.g., via tags) or in which another user has reacted (e.g., via emojis, reactions, etc.) to a message or thread posted by that user. That is, in some examples, the same type of events and / or actions that can be associated with different virtual spaces can be presented via the same feed. As with the "unread" virtual space, data associated with such virtual spaces can be organized and / or sortable by virtual space, time, type of action, user, etc.
[0075] In some examples, the virtual space can be associated with facilitating communication between a user of the communications platform and other users. For example, "connect" can be associated with enabling a user to generate invitations to communicate with one or more other users. In at least one example, in response to receiving an indication of a selection of the "connect" indicator, the communications platform can cause a connection interface to be presented.
[0076] In some examples, a virtual space can be associated with one or more boards or collaborative documents with which a user is associated. 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 permissions, edit permissions, etc.). In at least one example, when a user requests access to a virtual space associated with one or more documents with which the user is associated, the 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 a communication channel who have been granted access permission to the document), such as allowing users of the communication platform to create, interact with, and / or view data associated with such document. In some examples, a collaborative document can be a virtual space, board, canvas, page, etc. for collaborative communication and / or data organization within the communication platform. In at least one example, a collaborative document can support editable text and / or objects that can be ordered, added, deleted, modified, etc. In some examples, a collaborative document can be associated with permissions that define which users of a communication platform can view and / or edit the document. In some examples, a collaborative document can be associated with a communication channel, where 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 to and / or interactive with members of multiple communication channels, workspaces, organizations, etc.
[0077] In some examples, a virtual space can be associated with a headquarters (e.g., an administrative center or command center) for a group (e.g., an organization, a team, etc.). In at least one example, a group headquarters can include a virtual or digital headquarters for management or command functions associated with a group of users. For example, an "HQ" can be associated with an interface that includes a list of indicators associated with virtual spaces configured to allow associated members to communicate. In at least one example, a user can associate one or more virtual spaces with the "HQ" virtual space, such as by dragging and dropping. That is, a user can determine the relevant virtual spaces to associate with the virtual or digital headquarters, such as associating virtual spaces that are important to the user.
[0078] In some examples, a virtual space can be associated with one or more boards or collaborative documents with which a user is associated. 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 permissions, edit permissions, etc.). In at least one example, when a user requests access to a virtual space associated with one or more documents with which the user is associated, the 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 a communication channel who have been granted access permission to the document), such as allowing users of the communication platform to create, interact with, and / or view data associated with such document. In some examples, a collaborative document can be a virtual space, board, canvas, page, etc. for collaborative communication and / or data organization within the communication platform. In at least one example, a collaborative document can support editable text and / or objects that can be ordered, added, deleted, modified, etc. In some examples, a collaborative document can be associated with permissions that define which users of a communication platform can view and / or edit the document. In some examples, a collaborative document can be associated with a communication channel, where 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 to and / or interactive with members of multiple communication channels, workspaces, organizations, etc.
[0079] Additionally or alternatively, in some examples, a virtual space can be associated with one or more canvases with which users are associated. In at least one example, a canvas can include a flexible canvas for curating, organizing, and sharing collections of information among users. That is, a canvas can be configured to be accessed and / or modified by two or more users with appropriate permissions. In at least one example, a canvas can be configured to enable sharing of text, images, videos, GIFs, drawings (e.g., user-generated drawings via a canvas interface), game content (e.g., users synchronously or asynchronously manipulating game controls), and the like. In at least one example, modifications to a canvas can include adding, deleting, and / or modifying previously shared (e.g., transmitted, presented) data. In some examples, content associated with a canvas can be shareable via another virtual space such that data associated with the canvas is accessible to and / or interactable with members of the virtual space.
[0080] The navigation pane 206 may further include indicators representing communication channels (e.g., channels 208). In some examples, the communication channels may include public channels, private channels, shared channels (e.g., between groups or organizations), single workspace channels, cross-workspace channels, combinations of the foregoing, etc. In some examples, the represented communication channels may be associated with a single workspace. In some examples, the represented communication channels may be associated with different workspaces (e.g., cross-workspace). In at least one example, when a communication channel is cross-workspace (e.g., associated with different workspaces), a user may be associated with both workspaces or only one of the workspaces. In some examples, the represented communication channels may be associated with a combination of communication channels associated with a single workspace and communication channels associated with different workspaces.
[0081] In some examples, navigation pane 206 may represent some or all of the communication channels that the user has permission to access (e.g., as determined by permission data). In such examples, the communication channels may be arranged alphabetically based on most recent interaction, based on frequency of interaction, based on type of communication channel (e.g., public, private, shared, cross-workspace, etc.), based on workspace, within user-specified sections, etc. In some examples, navigation pane 206 may represent some or all of the communication channels of which the user is a member, and the user may interact with user interface 200 to browse or view other communication channels of which the user is not a member but which are not currently displayed in 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 navigation pane 206 or may have their own sub-areas or sub-panes within user interface 200. In some examples, communication channels associated with different workspaces may be in different sections of navigation pane 206 or may have their own areas or panes within user interface 200.
[0082] In some examples, the indicator can be associated with a graphical element that visually distinguishes the type of communication channel. For example, project_zen is associated with a lock graphical element. As a non-limiting example, and for purposes of this discussion, the lock graphical element can indicate that the associated communication channel, project_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 can be used to distinguish between shared communication channels, communication channels associated with different workspaces, communication channels in which the user is or is not a current member, etc.
[0083] In at least one example, the navigation pane 206 may include indicators representing communications with an individual user or multiple designated users (e.g., instead of all or a subset of the members of an organization). Such communications may be referred to as “direct messages.” The navigation pane 206 may include indicators representing virtual spaces associated with private messages between one or more users.
[0084] Direct messages 212 may be communications between a first user and a second user, or may be multi-person direct messages between a first user and two or more second users. Navigation pane 206 may be sorted and organized into hierarchies or sections according to user preferences. In some examples, all of the channels a user is authorized to access may appear in navigation pane 206. In other examples, a user may choose to hide certain channels or collapse sections containing certain channels. Items in navigation pane 206 may indicate when new messages or updates have been received or are currently unread, such as by bolding text associated with channels in which unread messages are located or by adding an icon or badge (e.g., with a count of unread messages) to the channel name. In some examples, the group-based communication system may additionally or alternatively store permission data associated with the permissions of individual users of the group-based communication system, indicating which channels the user may view or participate in. Permissions may indicate, for example, which users can communicate directly with other users, which channels a user is permitted to access and restrictions on individual channels, which workspaces a user is permitted to access and restrictions on individual workspaces, etc.
[0085] Additionally or alternatively, navigation pane 206 may include subsections that are personalized subsections associated with teams of which the user is a member. That is, the “team” subsection may include affordances for one or more virtual spaces associated with the team, such as communication channels, collaborative documents, direct messaging instances, audio or video synchronous or asynchronous conferences, etc. In at least one example, a user may associate a selected virtual space with the team subsection, such as by dragging and dropping, pinning, or otherwise associating the selected virtual space with the team subsection.
[0086] Channels in a Group-Based Communication System In some examples, the group-based communication system is a channel-based messaging platform, as shown in Figure 2A. Within a group-based communication system, communications may be organized into channels, each dedicated to a particular topic and set of users. A channel is generally a virtual space related to a particular topic that contains messages and files posted by members of the channel.
[0087] For purposes of this description, a “message” may refer to any electronically generated digital object provided by a user using a user computing device 104 and configured for display within a communication channel and / or other virtual space for facilitating communication (e.g., a virtual space associated with direct messaging communication, etc.), as described herein. A message may include any text, image, video, audio, or combination thereof provided by a user (using a user computing device). For example, a user may provide a message including text as well as images and video as message content within a message. In such an example, the text, image, and video may comprise the message. Each message sent or posted to a communication channel of a communication platform may include metadata including a sending user ID, a message ID, message content, a group ID, a communication channel ID, etc. In at least one example, each of the foregoing identifiers may include ASCII (American Standard Code for Information Interchange) text, a pointer, a memory address, etc.
[0088] Channel discussions may persist for days, months, or years, providing a historical log of user activity. Members of a particular channel can post messages within that channel, which are visible to other members of that channel along with other messages in that channel. Users can select a channel to view to see only those messages related to that channel's topic and not see messages posted in other channels on different topics. For example, a software development company may have a different channel for each software product being developed, allowing developers working on each specific project to generally converse about a single topic (e.g., the project) without the noise of unrelated topics. Because channels are generally persistent and directed toward a specific topic or group, users can quickly and easily refer to previous communications for reference. In some examples, the channel pane 218 may display information related to the channel a user has selected in the navigation pane 206. For example, a user may select the project_zen channel to discuss Project Zen's ongoing software development efforts. In some examples, the channel pane 218 may include a header containing information about the channel, such as the channel name, a list of users in the channel, and other channel controls. Users can pin items to the header for later access and may add bookmarks to the header. In some examples, links to collaborative documents may be included in the header. In a further example, each channel may have a corresponding virtual space that contains channel-related information such as a channel summary, tasks, bookmarks, pinned documents, and other channel-related links that may be editable by members of the channel.
[0089] A communication channel or other virtual space can be associated with data and / or content other than messages or data and / or content associated with messages. For example, non-limiting examples of additional data that may be presented via the channel pane 218 of the user interface 200 include collaborative documents (e.g., documents that may be collaboratively edited in real time or near real time), audio and / or video data related to a conversation, members added to and / or removed from a communication channel, files (e.g., attachments) uploaded to and / or removed from a communication channel, applications added to and / or removed from a communication channel, posts added to and / or removed from a communication channel (data that may be collaboratively edited in near real time by one or members of a communication channel), descriptions added to, modified, and / or removed from a communication channel, changes to characteristics of a communication channel, etc.
[0090] The channel pane 218 may include messages, such as message 222, which are content posted to a channel by a user. A user may post text, images, video, audio, or any other file as message 222. In some examples, specific identifiers (within a message or elsewhere) may be indicated by prefixing the identifier with a predetermined character. For example, a channel may be prefixed with a "#" character (e.g., #project_zen) or a username may be prefixed with an "@" character (e.g., @J_Smith or @User_A). A message, such as message 222, may include an indication of which user posted the message and the time the message was posted. In some examples, a user may react to a message by selecting a reaction button 224. The reaction button 224 allows a user to select an icon, such as a thumbs-up (sometimes referred to in this context as a reaction), that is associated with the message. A user may respond to another user's message, such as message 222, with a new message. In some examples, such conversations within a channel may be further divided into threads. Threads may be used to aggregate messages related to a particular conversation, making it easier to follow and reply to the conversation without cluttering the main channel with discussions. A thread reply preview 226 appears below the message that starts the thread. The thread reply preview 226 may show information related to the thread, such as the number of replies and the members who responded. Thread replies may appear in a thread pane 230, which may be separate from the channel pane 218, and may be viewed by other members of the channel by selecting the thread reply preview 226 in the channel pane 218.
[0091] In some examples, one or both of the channel pane 218 and the thread pane 230 may include a configuration pane 228. In some examples, the configuration pane 228 allows a user to compose and send a message 222 to members of the channel or those members of the channel who are following the thread (when a message is sent in a thread). The configuration pane 228 may have text editing features such as bold, strikethrough, and italics, and / or may allow a user to format their message and attach files, such as collaborative documents, images, videos, or any other files, to share with other members of the channel. In some examples, the configuration pane 228 may allow additional formatting options, such as numbered or bulleted lists, either through the user interface or an API. The configuration pane 228 may also function as a workflow trigger to initiate a workflow related to the channel or message. In a further example, a link or document sent via the configuration pane 228 may include unurl instructions regarding how the content should be displayed.
[0092] Synchronous Multimedia Collaborative Sessions FIG. 2B illustrates a channel-triggered multimedia collaborative session (e.g., a synchronized multimedia collaborative session) as shown in pane 216. A synchronized multimedia collaborative session can 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 synchronized multimedia collaborative sessions at any time without interrupting the synchronized multimedia collaborative sessions for other users. In some examples, a synchronized multimedia collaborative session may be based on a particular topic, a particular channel, a particular direct message or multi-person direct message, or a set of users, while in other examples, a synchronized multimedia collaborative session may exist without being tied to any channel, topic, or set of users.
[0093] The synchronized multimedia collaborative session pane 216 may be associated with a session conducted for multiple users in a channel, users in a multi-person direct message conversation, or users in a direct message conversation. Thus, a synchronized multimedia collaborative session may be initiated for a particular channel, a multi-person direct message conversation, or a direct message conversation by one or more members of that channel or conversation. A user may initiate a synchronized multimedia collaborative session in a channel as a means of communicating with other members of that channel who are currently online. For example, a user may have an urgent decision and desire immediate verbal feedback from other members of the channel. As another example, a synchronized multimedia collaborative session may be initiated via direct messaging with one or more other users of a group-based communication system. In some examples, the audience for a synchronized multimedia collaborative session may be determined based on the context in which the synchronized multimedia collaborative session is initiated. For example, initiating a synchronized multimedia collaborative session on one channel may automatically invite the entire channel to participate. As another example, initiating a synchronized multimedia collaborative session enables a user to initiate an instant audio and / or video conversation with other members of the channel without requiring scheduling or initiating a communication session through a third-party interface. In some examples, users may be directly invited to participate in a synchronized multimedia collaborative session via a message or notification.
[0094] A synchronized multimedia collaborative session may be a short, transient session from which data is not persisted. Alternatively, in some examples, a synchronized multimedia collaborative session may be recorded, transcribed, and / or summarized for later review. In other examples, the content of a synchronized multimedia collaborative session may be automatically persisted within a channel associated with the synchronized multimedia collaborative session. Members of a particular synchronized multimedia collaborative session can post a message within a messaging thread associated with that synchronized multimedia collaborative session, and that message, along with other messages in the thread, is visible to other members of that synchronized multimedia collaborative session.
[0095] The multimedia in a synchronized multimedia collaborative session may include collaborative tools such as any or all of audio, video, screen sharing, collaborative document editing, whiteboarding, collaborative programming, or any other form of media. The synchronized multimedia collaborative session may also allow users to share their screens with other members of the synchronized multimedia collaborative session. In some examples, members of the synchronized multimedia collaborative session may mark up, comment, draw, or otherwise annotate the shared screen. In further examples, such annotations may be saved and persist after the synchronized multimedia collaborative session ends. To further enhance collaboration between users, canvases may be created directly from the synchronized multimedia collaborative session.
[0096] In some examples, a user may start a synchronized multimedia collaborative session via a toggle in the synchronized multimedia collaborative session pane 216 shown in FIG. 2B . Once the synchronized multimedia collaborative session is started, the synchronized multimedia collaborative session pane 216 may expand to provide information about the synchronized multimedia collaborative session, such as how many members are present, which user is currently speaking, which user is sharing their screen, and / or a screen share preview 232. In some examples, users in the synchronized multimedia collaborative session may be displayed with an icon indicating their participation in the synchronized multimedia collaborative session. In a further example, an expanded view of the participants may indicate which users are active and which users are not active in the synchronized multimedia collaborative session. The screen share preview 232 may depict a desktop view of the user sharing their screen, or a particular application or presentation. Changes to a user's screen, such as a user advancing to the next slide in a presentation, are automatically depicted in the screen share preview 232. In some examples, the screen share preview 232 may be launched to expand the screen share preview 232 so that it appears as its own pane within the group-based communication system. In some examples, the screen share preview 232 can be launched to pop out into a separate new window or application separate from the group-based communication system. In some examples, the synchronized multimedia collaborative session pane 216 may include tools for the synchronized multimedia collaborative session that allow a user to mute their microphone or invite other users. In some examples, the synchronized multimedia collaborative session pane 216 may include a screen share button 234 that may allow a user to share their screen with other members of the synchronized multimedia collaborative session pane 216. In some examples, the screen share button 234 may provide a user with additional control during screen sharing.For example, a user sharing their screen may be provided with additional screen sharing controls to specify which screen to share, to annotate the shared screen, or to save the shared screen.
[0097] In some cases, the synchronized multimedia collaborative session pane 216 may persist within the navigation pane 206 regardless of the state of the group-based communication system. In some examples, when a synchronized multimedia collaborative session is not active and / or depending on which item is selected from the navigation pane 206, the synchronized multimedia collaborative session pane 216 may be hidden or removed from being presented via the user interface 200. In some examples, when the pane 216 is active, the pane 216 may be associated with a currently selected channel, direct message, or multi-person direct message such that a synchronized multimedia collaborative session may be initiated and associated with the currently selected channel, direct message, or multi-person direct message.
[0098] The list of synchronized multimedia collaborative sessions may include one or more active synchronized multimedia collaborative sessions selected for recommendation. For example, the synchronized multimedia collaborative session may be selected from multiple currently active synchronized multimedia collaborative sessions. Furthermore, the synchronized multimedia collaborative sessions may be selected in part based on user interaction with the session or some association of an instant user with the session or users involved in the session. For example, recommended synchronized multimedia collaborative sessions may be displayed in part based on instant users who were invited to the respective synchronized multimedia collaborative session or who have previously collaborated with users in the recommended synchronized multimedia collaborative session. In some examples, the list of synchronized multimedia collaborative sessions further includes additional information for each respective synchronized multimedia collaborative session, such as an indication of participating users or the number of participating users, the topic of the synchronized multimedia collaborative session, and / or an indication of associated group-based communication channels, multi-person direct message conversations, or direct message conversations.
[0099] In some examples, the 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 user's active status within the group-based communication system; past, recent, or frequent user interactions with the instant user (e.g., communicating within a group-based communication channel); or similarity between the recommended user and the instant user (e.g., determining that the recommended user shares common membership with the instant user within a channel). In some examples, machine learning techniques such as cluster analysis may be used to determine 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 synchronized multimedia collaborative session, or offline. In some examples, the list of recommended active users further includes multiple actuatable buttons corresponding to some or all of the recommended users (e.g., those recommended users having a status indicating availability), which, when selected, may be configured to initiate at least one of a text-based communication session (e.g., a direct message conversation) or a synchronized multimedia collaborative session.
[0100] In some examples, one or more recommended asynchronous multimedia collaborative sessions or meetings may be displayed in the asynchronous meeting section. In contrast to a synchronous multimedia collaborative session (described above), an asynchronous multimedia collaborative session allows each participant to collaborate at their own convenience. This collaborative participation is then recorded for later consumption by other participants, who may generate additional multimedia responses. In some examples, responses are aggregated into a multimedia thread (e.g., a video thread) corresponding to the asynchronous multimedia collaborative session. For example, an asynchronous multimedia collaborative session may be used for an asynchronous meeting, where a topic is posted in a message at the start of the meeting thread and meeting participants may respond by posting messages or video responses. The resulting thread may include any documents, videos, or other files related to the asynchronous meeting. In some examples, a preview of a subset of the video responses may be shown within the asynchronous collaborative session or thread. This may enable, for example, a user to jump to a relevant segment of the asynchronous multimedia collaborative session or to resume where they previously left off.
[0101] Connections within group-based communication systems 2C shows user interface 200 displaying connection pane 252. Connection pane 252 may provide tools and resources for users to connect across different organizations, where each organization may have its own (usually private) instance of the group-based communication system or may not yet belong to the group-based communication system. For example, a first software company may have a joint venture with a second software company with which it wants to collaborate on jointly developing a new software application. Connection pane 252 may allow users to determine which other users and organizations are already in the group-based communication system and invite those users and organizations that are currently outside the group-based communication system to join.
[0102] The connections pane 252 may include a connections 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 connections search bar 254 may allow a user to search for users within the group-based communication system. In some examples, only users from organizations connected to the user's organization will be displayed in the search results. In other examples, users from any organization using the group-based communication system may be displayed. In still other examples, users from organizations that are not yet using group-based communication may also be displayed, allowing the searching user to invite them to join the group-based communication system. In some examples, users may be searched for via username or email address in the group-based communication system. In some examples, email addresses may be suggested or auto-completed based on external data sources, such as email directories or the searching user's contact list.
[0103] In some examples, external organizations as well as individual users may be displayed in response to a user search. Because search results may include organizations that have not yet joined the group-based communication system (similar to the specific user search and matching described above), external organizations may be matched based on organization name or internet domain. External organizations may be ranked in part based on the number of connections users from the user's organization have with users of the external organizations. In response to selecting an external organization in the search results, the searching user may invite the external organization to connect via the group-based communication system.
[0104] In some examples, recent contacts 256 may display users with whom the instant user has recently interacted. Recent contacts 256 may display the user's name, company, and / or status indication. Recent contacts 256 may be ordered based on contacts with whom the instant user interacts most frequently or based on contacts with whom the instant user most recently interacted. In some examples, each recent contact in recent contacts 256 may be an actuatable control that allows the instant user to quickly start a direct message conversation with the recent contact, invite them to a channel, or take any other appropriate user action with that recent contact.
[0105] In some examples, connections 258 may display a list of businesses (e.g., organizations) with which the user has interacted. For each business, the business name may be displayed along with the business logo and an indication of the number of interactions the user has had with that business, e.g., the number of conversations. In some examples, each connection in connections 258 may be an actuatable control that allows an instant user to quickly invite an external organization to a shared channel, view recent connections with that external organization, or take any other appropriate organizational action for that connection.
[0106] 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 may further allow the user to name the new connection channel and enter a description of the connection channel. In some examples, the user may select one or more external organizations or one or more external users to add to the shared channel. In other examples, the user may add external organizations or external users to the shared channel after the shared channel is created. In some examples, the user may select whether to make the connection channel private (e.g., accessible only by invitation from a current member of the private channel).
[0107] In some examples, the direct message initiation button 262 allows a user to quickly initiate a direct message (or a multi-person direct message) with an external user of an external organization. In some examples, an external user identifier at the external organization may be supplied by the instant user as the external user's group-based communication system username or as the external user's email address. In some examples, analysis of the email domain of the external user's email address may influence messages between the user and the external user. For example, the external user's identifier may indicate that the user's organization and the external user's organization are already connected (e.g., based on the email address domain). In some such examples, the email address may be converted to a group-based communication system username. Alternatively, the external user's identifier may indicate that the external user's organization belongs to the group-based communication system but is not connected to the instant user's organization. In some such examples, an invitation to connect to the instant user's organization may be generated in response. As another alternative, the external user may 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 may be generated in response.
[0108] joint document FIG. 2D illustrates user interface 200 displaying a collaborative document pane 264. A collaborative document may be any file type, such as a PDF, video, audio, word processing document, etc., but is not limited to a word processing document or a spreadsheet. A collaborative document may be modified and edited by two or more users. A collaborative document may also be associated with different user permissions, such that users may be selectively authorized to view, edit, or comment on a collaborative document (or a section of a collaborative document) based on the user's permissions for the document (or a section of a document, as described below). Thus, users within a user set with access to a document may have different permissions to view, edit, comment, or otherwise interface with the collaborative document. In some examples, permissions may be automatically determined and / or assigned based on how the document is created and / or shared. In some examples, permissions may be determined manually. A collaborative document may allow users to create and modify documents simultaneously or asynchronously. Collaborative documents may be integrated with group-based communication systems and may be used to initiate workflows and store the results of workflows, which are further described below with respect to Figures 3A and 3B.
[0109] In some examples, the user interface 200 can include one or more collaborative documents (or one or more links to such collaborative documents). A collaborative document (also called a document or canvas) can include a flexible workspace for managing, organizing, and sharing a collection of information among users. Such documents can be associated with a synchronous multimedia collaborative session, an asynchronous multimedia collaborative session, a channel, a multi-person direct message conversation, and / or a direct message conversation. A shared canvas can be configured to be accessed 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.
[0110] Additionally, a particular document can be referenced within a channel (or other virtual space or document) by @mentioning such document and / or by @mentioning other users within such document. For example, @mentioning a user within a document can provide instructions to the user and / or provide the user with access to the document. In some examples, via @mention, a task can be assigned to the user, and such task can be added to a pane or sidebar associated with the user.
[0111] In some examples, a channel may be associated with a collaborative document 268 such that when a comment is posted to the channel, the comment can be added to the document 268, and vice versa.
[0112] In some examples, when a first user interacts with a collaborative document, the communications platform may identify a second user account associated with the collaborative document and present an affordance (e.g., a graphical element) indicative of the interaction in a sidebar (e.g., navigation pane 206). Additionally, the second user may select an affordance and / or notification associated with or representative of the interaction to access the collaborative document and efficiently access the document and view updates thereto.
[0113] In some examples, when one or more users interact with a collaborative document, indications (e.g., icons or other user interface elements) may be presented via a user interface with the collaborative document to indicate such interactions. For example, if a first instance of a document is currently open on a first user computing device of a first user and a second instance of the document is currently open on a second user computing device of a second user, one or more presence indicators may be presented on the respective user interfaces to indicate various interactions with the document and by which users. In some examples, the presence indicators may have attributes (e.g., appearance attributes) that indicate information about each user, such as, but not limited to, permission level (e.g., edit permission, read-only access, etc.), virtual space membership (e.g., whether a member belongs to a virtual space associated with the document), and the manner in which the user is interacting with the document (e.g., currently editing, viewing, open but not active, etc.).
[0114] In some examples, a preview of a collaborative document can be provided. In some examples, the preview can include a summary of the collaborative document and / or a dynamic preview (e.g., changing text, images, etc.) that displays various content 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 viewed, edited, created by the user, etc.), etc.
[0115] In some examples, collaborative documents can be created independently of or in conjunction with virtual spaces and / or channels. Collaborative documents can be posted to channels and edited or interacted with, along with various affordances or notifications indicating the presence of users associated with the document and / or various interactions, as described herein.
[0116] In some examples, a machine learning model can be used to determine a summary of the channel's content and create a collaborative document that includes the summary for posting to the channel. In some examples, the communications platform can identify users in the virtual space, actions associated with the users, and other contributions to the conversation to generate the summary document. In this manner, the communications platform can enable users to create documents (e.g., collaborative documents) to summarize content and events that occurred in the virtual space.
[0117] In some examples, a document can be configured to allow the 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 the canvas can add new content or delete (or modify) previously added content. In some examples, appropriate permissions may be required for a user to add content or delete or modify content added by a different user. Thus, for example, some users may only be able to access part or all of a document in a view-only mode, while other users may access part or all of the document in an edit mode, allowing those users to add or modify its content. In some examples, a document can be shared via a message in a channel, a multi-person direct message, or a direct message such that data associated with the document is accessible and / or interactable with by members of the channel or recipients of the multi-person direct message or direct message.
[0118] In some examples, collaborative document pane 264 may include a collaborative document toolbar 266 and a collaborative document 268. In some examples, collaborative document toolbar 266 may provide the ability to edit or format a post as described herein.
[0119] In some examples, a collaborative document may include free-form unstructured sections and workflow-related structured sections. In some examples, an unstructured section may include an area of a document where a user can freely modify the collaborative document without constraints. For example, a user may freely type text describing the document's purpose. In some examples, a user may add a workflow or structured workflow section by typing (or otherwise mentioning) the name of a workflow. In a further example, typing the "at" symbol (@), a previously selected symbol, or a predetermined special character or symbol may provide the user with a list of workflows from which the user can select to add to the document. For example, a user may type "!Marketing Approval" to indicate that a marketing team member must agree on a proposal and initiate a workflow until the marketing team member approves the proposal. Placing an exclamation point in front of the "Marketing Approval" group name initiates a specification action request, in this case routing the proposal for approval. In some examples, a structured section may include a text entry, a selection menu, a table, a checkbox, a task, a calendar event, or any other document section. In a further example, a structured section may include a text entry space that is part of a workflow. For example, a user may enter text in the text entry space detailing the reason for approval and then select a submit button that advances the workflow to the next step in the workflow. In some examples, a user may add, edit, or delete structured sections of the document that make up the workflow components.
[0120] In an example, sections of a collaborative document may have individual permissions associated with them. For example, a collaborative document with sections with individual permissions may provide a first user with permission to view, edit, or comment on the first section, but a second user does not have permission to view, edit, or comment on the first section. Alternatively, a first user may have permission to view the first section of the collaborative document, but a second user has permission to both view and edit the first section of the collaborative document. Permissions associated with specific sections of a document may be assigned by a first user through various methods, including manual selection of a specific section of the document by the first user or another user with permission to assign permissions, typing or selecting an “assign” indicator such as an “@” symbol, or selecting the section by its name. In a further example, permissions may be assigned to multiple collaborative documents in a single instance through these methods. For example, multiple collaborative documents each have a section entitled “Group Info,” in which case a first user with permission to assign permissions desires that the entire user group have access to information in the “Group Info” section of the multiple collaborative documents. For example, a first user may select multiple collaborative documents and a "Group Info" section and grant permission to an entire group of users to access (or view, edit, etc.) the "Group Info" section of each of the multiple collaborative documents.
[0121] Automation in group-based communication systems FIG. 3A illustrates a user interface 300 for automation in a group-based communication system. Automation, also referred to as workflow, allows users to automate functionality within the group-based communication system. A workflow builder 302 is shown that allows users to create new workflows, modify existing workflows, and review workflow activity. The workflow builder 302 may include a workflow tab 304, an activity tab 306, and / or a settings tab 308. In some examples, the workflow builder may include a publish button 314 that allows users to publish a new or modified workflow.
[0122] The workflows tab 304 can be selected to allow a user to create a new workflow or modify an existing workflow. For example, a user may want to create a workflow that automatically welcomes new users who join a channel. A workflow may include workflow steps 310. The workflow steps 310 may include at least one trigger that starts the workflow and at least one function that performs an action when the workflow is triggered. A workflow may be triggered, for example, when a user joins a channel, and the workflow's function may be a post in the channel welcoming the new user. In some examples, a workflow may be triggered from a user action, such as a user responding to a message, joining a channel, or collaborating on a collaborative document, from a scheduled date and time, or from a web request from a third-party application or service. In further examples, workflow functionality may include sending a message or form to a user, channel, or any other virtual space, modifying a collaborative document, or interfacing with an application. Workflow functionality may include workflow variables 312. For example, a welcome message may include a username via a variable to allow for a customized message. The user may edit existing workflow steps or add new workflow steps depending on the desired workflow functionality. Once the workflow is complete, the user may publish the workflow using the publish button 314. A published workflow waits until it is triggered, at which point it performs its function.
[0123] The activity tab 306 may display information related to the activities of the workflow. In some examples, the activity tab 306 may indicate how many times the workflow has been executed. In further examples, the activity tab 306 may include information related to each workflow execution, including the status, the last activity date, the time of execution, the user who started the workflow, and other relevant information. The activity tab 306 may allow a user to sort and filter the workflow activities to find useful information.
[0124] The settings tab 308 may allow a user to modify the settings of a workflow. In some examples, a user may change the title or icon associated with a workflow. A user may also manage collaborators associated with a workflow. For example, a user may add additional users to a workflow as collaborators so that the additional users can modify the workflow. In some examples, the settings tab 308 may also allow a user to delete a workflow.
[0125] 3B illustrates elements associated with a workflow in a group-based communication system, generally referred to by reference numeral 316. In various examples, a trigger 318 can be configured to invoke the execution of a function 336 in response to a user command. The trigger initiates the execution of a function and may 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, an end user of an event-based application sets an arbitrary schedule for the firing of the trigger, such as once an hour or at 9:15 AM every day.
[0126] Additionally, trigger 318 may take the form of a webhook 322. Webhook 322 may be a software component that listens on a webhook URL and port. In some examples, the trigger fires when a proper HTTP request is received on the webhook URL and port. In some examples, webhook 322 requires proper authentication, such as with a bearer token. In other examples, the trigger depends on the payload content.
[0127] Another source of a trigger for one of triggers 318 is a shortcut within shortcuts 324. In some examples, shortcuts 324 may be global to the group-based communication system and not specific to a channel or workspace of the group-based communication system. A global shortcut may trigger a function that can be performed without the context of a particular 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 the group-based communication system message or group-based communication channel.
[0128] A further source of triggering one of triggers 318 may be provided by slash command 326. In some examples, slash command 326 may serve as an entry point for a group-based communication system function, integration with an external service, or group-based communication system message response. In some examples, slash command 326 may be entered by a user of the group-based communication system and trigger the execution of an application's functionality. The slash command may be followed by slash command line parameters that may be passed to any group-based communication system function that is invoked in connection with the triggering of the group-based communication system function, such as one of functions 336.
[0129] An additional way a function may be invoked 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 may be subscribed to by any number of subscriptions 334, with each subscription specifying different conditions and triggering different functions. In some examples, events are implemented as group-based communication system messages received on one or more group-based communication system channels. For example, all events may be posted as non-user-visible messages in the associated channels monitored by subscriptions 334. App event 330 may be a group-based communication system message with associated metadata created by an application in a group-based communication system channel. Event 328 may also be a direct message received by one or more group-based communication system users, who may be actual users or technical users such as bots. Bots are technical users of the group-based communication system used to automate tasks. Bots may be programmatically controlled to perform various functions. Bots can monitor and assist in the processing of group-based communication system channel activity, post messages within group-based communication system channels, and react to members' in-channel activity. Bots can be able to post messages and upload files, and can be invited or removed from both public and private channels of the group-based communication system.
[0130] Event 328 may also be any event associated with the group-based communication system. Such group-based communication system events 332 include events related to the creation, modification, or deletion of a user account in the group-based communication system, or events related to messages in a group-based communication system channel, such as creating a message, editing or deleting a message, or reacting to a message. Event 328 may also be related to the creation, modification, or deletion of a group-based communication system channel or channel membership. Event 328 may also be related to modifying a user profile or creating a group, maintaining members, or deleting a group.
[0131] As described above, subscriptions 334 indicate one or more conditions that, when matched with an event, trigger a function. In some examples, a set of event subscriptions is maintained in association with the 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 the functions 336 to invoke. In some examples, the events to which a particular application may subscribe are managed by an authorization framework. In some cases, the event types that are matched with subscriptions are managed by OAuth permission scopes, which may be maintained by an administrator of a particular group-based communication system.
[0132] In some examples, functions 336 can be triggered by triggers 318 and events 328 to which the functions are subscribed. Functions 336 take zero or more inputs, perform processing (potentially including accessing external resources), and return zero or more results. Functions 336 can be implemented in a variety of ways. First, there are group-based communication system built-ins 338, which are associated with the core functionality of a particular group-based communication system. Some examples include creating a group-based communication system user or channel. Second, there are no-code builder functions 340, which can be developed by a group-based communication system user in conjunction with an automated user interface, such as a workflow builder user interface. Third, there are hosted-code functions 342, which are implemented by a group-based communication system application developed as software code in conjunction with a software development environment.
[0133] These various types of functions 336 may be integrated with APIs 344. In some examples, APIs 344 are associated with third-party services that functions 336 use to provide custom integration between a particular third-party service and the group-based communication system. Examples of third-party service integration include video conferencing, sales, marketing, customer service, project management, and engineering application integration. In such an example, one of the triggers 318 is a slash command 326 used to trigger a host code function 342, which makes an API call to a third-party video conferencing provider via one of the APIs 344. As shown in FIG. 3B , the API 344 can itself be the source of any number of triggers 318 or events 328. Continuing with the example above, the successful completion of a video conference triggers one of the functions 336 to send a message that initiates a further API call to a third-party video conferencing provider to download and archive the video conference recording and store it in a group-based communication system channel.
[0134] In addition to integrating with API 344, function 336 may persist and access data in tables 346. In some examples, tables 346 are implemented in association with a database environment associated with the serverless execution environment in which a particular event-based application is running. In some examples, tables 346 may be provided in association with a relational database environment. In other examples, tables 346 are provided in association with a database mechanism that does not use relational database technology. As shown in FIG. 3B , in some examples, reading or writing data to one or more of tables 346, or data in a table matching a predetermined condition, is itself the source of several triggers 318 or events 328. For example, if table 346 is used to maintain ticket data in an incident management system, a count of open tickets exceeding a predetermined threshold may trigger a message being posted to an incident management channel in a group-based communication system.
[0135] 4 illustrates an example user interface 400 that presents different types of mention identifiers in messages associated with a communications platform as described herein. The example user interface 400 may present information associated with a user account 402 (e.g., User_A) and a virtual space 404 (e.g., Channel_A). In a particular example, the user interface 400 includes various types of mention identifiers embedded in messages posted to the virtual space 404. For example, the message may include one or more of a user account mention identifier 406 (or user profile mention identifier) (e.g., @User_C), a document mention identifier 408 (e.g., @Document_1), a keyword mention identifier 410 (e.g., @project_1), a group mention identifier 412 (e.g., @Group_1), a channel mention identifier 414 (e.g., @Channel_B), etc.
[0136] The mention processor 416 may be configured to analyze a message to determine the type of mention identifier included in the message. For example, a user of the communication platform may post or publish a message within a virtual space (e.g., a channel, a direct message, a workspace, etc.) of the communication platform. After the message is posted / published, the mention processor 416 may parse the text of the message (e.g., characters, words, phrases, etc.) to determine whether the user referenced a different user or virtual space (e.g., @user, @channel, @directmessage, @workspace, etc.). Upon determining that the message contains a particular mention identifier, the mention processor 416 may determine whether to notify (e.g., send a notification to the user and / or virtual space) the user or virtual space referenced in the mention identifier (e.g., virtual space 404). Whether the user and / or virtual space receives a notification is based on notification preferences / settings previously determined for the user and / or virtual space.
[0137] The mentions processor 416 (or mentions_log processor) encapsulates all side effects that may be triggered when a message is processed. A function (or operation or expression) generates a side effect if the function changes some state other than its return value. For example, side effects that may be triggered when processing a message may include sending a notification to a user, a group of users, a virtual space (e.g., a channel, a feed, a huddle, etc.), etc. In some examples, a side effect may include sending an error message to a user account and / or a virtual space upon detecting an error. In some examples, a side effect may include sending an email notification, a text message notification, a desktop notification, sending information associated with the message to one or more databases, creating a thread subscription, triggering one or more jobs associated with the message, triggering a workflow, marking the message as unread, updating a mention identifier in the message, generating a pop-up notification, sending a delayed notification, overriding a "do not disturb" or snooze setting associated with the user account or virtual space, etc.
[0138] The determination of whether to trigger a side effect (e.g., providing a notification to the user and / or the virtual space) may be based on one or more factors, including notification preference settings of the user and / or the virtual space, including the type of notification to be sent (e.g., email, text message, indicator associated with the virtual space, etc.), the time the notification is provided, the frequency of the notification, etc. Other factors may include whether the user is actively signed in to the communications platform or whether the user is using the communications platform on a mobile device or a desktop computer. If the user is actively using the communications platform, a notification may be provided, but not if the user is logged out or not accessing the communications platform. Furthermore, if the user is actively accessing the communications platform, a notification may be shown as an indicator associated with the virtual space, but if the user is not currently accessing the communications platform (e.g., logged out, set to away, in a meeting, etc.), an email or text message notification may be sent. Additional factors may include how the user is currently accessing the communications platform. For example, whether to send a notification, the type of notification, the timing of the notification, etc. may be based on whether the user is accessing the communications platform via a web-based application, a desktop application, a website, or a mobile application resident on the user's mobile device (e.g., a mobile phone, a tablet device, etc.).
[0139] The mention processor 416 enables different side effects to be applied without having to modify the business logic associated with the communications platform. The mention processor 416 is configured so that not all side effects are necessarily triggered when a message is processed. The mention processor 416 encapsulates all side effects within the mention processor to enable different application of side effects without implementing the entire business logic each time. The business logic (or domain logic) may include custom rules or algorithms that process the exchange of information (or data) between a database and a user interface associated with the communications platform. In some examples, the communications platform includes multiple mention processors configured to process side effects differently. For example, a first mention processor (e.g., a production mention processor) may store data associated with an observed mention identifier in rows (e.g., a horizontal set of data or components within a record) of one or more databases (i.e., a side effect is storing data in one or more databases). In some examples, a second mention processor (e.g., a test mention processor) may cause the data associated with the mention identifier to be validated in a test or simulation (i.e., return the row that is validated in the test). In some examples, a third mention processor (e.g., a record-only mention processor) may log 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 mention processor may be configured to include one or more of the following functions and / or structures: [Table 1] By way of example and not limitation, "$processor->persist+send notifications" may include the following side effects: [Table 2] Mention processor 416 is the root node of the decision tree. Mention processor 416 may include a production class 418, a test class 420, and an observability class 422. In some examples, production class 418, test class 420, and observability class 422 may be subclasses of mention processor 416. Production class 418, test class 420, and observability class 422 may each have their own implementation of how to handle side effects. For example, production class 418 may handle side effects in the same way as mention processor 416 does, while test class 420 may be configured to process messages in a test environment (e.g., an environment that may not be safe for production but may be useful for discovering and correcting existing and potential errors). In some examples, observability class 422 may process mention identifiers in messages similarly to production class 418, except that observability class 422 records the side effects in a database and does not execute the side effects. The observability class 422 allows users of the communications platform to observe what happens in production without triggering side effects. In some examples, the production class 418 and the test class 420 may be represented in the mention processor as follows: [Table 3] In some examples, production class 418 may be configured to send notifications to user accounts and / or virtual spaces. In some examples, production class 418 may be configured to process information persisted in 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 posted / published within the communications platform, where such logic / computer code can detect any mention identifiers contained within those messages. Instead of having a first set of functions that parse messages to identify mention identifiers that reference users and a different second set of functions that parse messages to identify mention identifiers that reference virtual spaces (e.g., channels, direct messages, etc.), the logic / computer code associated with production class 418 is configured to identify mention identifiers that reference users and / or virtual spaces of the communications platform.
[0140] Test class 420 may be used to process a simulation or test how mention processor 416 detects a mention identifier in a message. In some examples, executing an instance of test class 420 does not trigger one or more side effects (e.g., sending a notification). Furthermore, test class 420 may include logic and / or computer code configured to parse messages posted / published via a virtual space (e.g., virtual space 404) of a communications platform that were previously parsed in association with production class 418. That is, in addition to production class 418 parsing messages to detect mention identifiers contained within the messages, test class 420 may also be used to subsequently parse such messages to identify the mention identifiers. As a result, test class 420 may determine whether production class 418 was able to correctly and accurately detect mention identifiers in messages posted / published within the communications platform. In other embodiments, production class 418 and test class 420 may simultaneously parse messages posted / published within the communications platform to detect whether the messages include a message identifier. In this manner, the mention processor 416 may employ different logic / computer code to determine whether both the production class 418 and the test class 420 of the mention processor 416 correctly and accurately identify message identifiers included in messages posted / published within the communications platform. If so, the mention processor 416 may determine that the mention identifiers have been correctly / accurately identified in these messages. However, the logic / computer code of the production class 418 and / or the test class 420 may be analyzed and potentially modified if some, but not all, mention identifiers are correctly identified. Modifications may also be made if the mention identifiers are correctly identified but the users / virtual spaces referenced by the mention identifiers are incorrectly identified.
[0141] In some examples, the observability class 422 may be used in association with a mention lookup tool. In some examples, the observability class 422 may process messages in the same manner as the production class 418, except that the observability class 422 may store all side effects that may be triggered by a message, as opposed to triggering a side effect. For example, the observability class 422 may parse a message and store identified mention identifiers in a database, rather than sending notifications to the user and / or the virtual space. The observability class 422 may then be used to present the identified mention identifiers to a user via a graphical user interface (GUI) associated with the communications platform, without triggering one or more side effects (e.g., sending notifications to the user and / or the virtual space). For example, a user may want to see which mention identifiers were or will be detected in a particular message. A mention lookup tool associated with the observability class 422 allows a user to see the effect of running a mention processor on permalinks associated with a message. In some examples, the detected mention identifiers may be stored in association with the message in one or more databases. In some cases, a communications platform may fail to send a message to a user account or virtual space due to an error (e.g., an error may occur while processing a mention identifier detected in a message). A user may want to know what caused the error, or how a mention identifier was processed in a message, or whether a mention identifier was detected in a message. For example, upon searching for a detected mention identifier in a message using data associated with the message (e.g., the data may include a permalink, a primary key, a channel ID, a timestamp, etc. associated with the message), a mention lookup tool may present the user with a list of one or more identified mention identifiers in the message, as well as what notifications, if any, were sent in connection with the message.Additional details of the operations that can be performed using the mention lookup tool are described below in conjunction with Figures 6A and 6B.
[0142] FIG. 5 is an illustrated flow diagram showing an exemplary process for receiving a message including a mention identifier, analyzing the message using a mention processor, and sending a notification via a communications platform.
[0143] At operation 502, the communications platform maintains a mention processor configured to identify one or more mention identifiers in messages sent via the communications platform. In some examples, the mention processor is maintained in a messaging component. The mention processor may include a production class configured to trigger one or more side effects and a test class that does not trigger notifications.
[0144] At operation 504, the process may include receiving, via the communication platform, a message including a mention identifier from a first client associated with the first user profile (or first user account). The message may be posted within a virtual space (e.g., a channel), added to a document associated with the communication platform (e.g., a comment within the document), a message to another user account associated with the communication platform, or the like. For example, as shown in FIG. 5 , User_A posted message 506 including a mention identifier 508. In a particular example, the mention identifier is a user account mention identifier: @mentionsUser_B. In some examples, the message may include multiple mention identifiers. For example, the message may include a first mention identifier and a second mention identifier. In some examples, the first mention identifier and the second mention identifier may be the same mention identifier or different mention identifiers (e.g., the first mention identifier may be a user account mention identifier and the second mention identifier may be a channel mention identifier).
[0145] At operation 510, the process includes analyzing the message via a mention processor to determine a type of mention identifier included in the message 506. For example, the type of mention identifier may 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 may 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 a communications platform.
[0146] In some examples, the communications platform may generate log data associated with mention identifiers in messages in a record-only mention processor. The record-only processor may be associated with a database that stores the log data. The log data may represent a historical record of all information processed by the mention processor (e.g., metadata associated with each message sent through 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.). The record-only mention processor may allow a user to review one or more observed mention identifiers in a message. For example, the record-only mention processor may be associated with a search tool (e.g., a mention lookup tool) that allows a user to view how the mention processor parsed the message and what side effects, if any, may have been triggered. That is, instead of a user parsing / viewing code associated with a message that includes a message identifier, the mention processor allows any user to identify mentions contained within a message. In some examples, the mention lookup tool may be used to determine whether one or more notifications have been sent to another user account or virtual space associated with the communications platform. For example, an error may occur while processing a message that includes a mention identifier. In some examples, the error may be that a user account or virtual space did not receive a notification, received the wrong 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 has snoozed notifications), etc. To determine which error occurred while processing a message, a user can utilize a mention lookup tool to see (1) which mention identifiers, if any, were detected in a particular message and (2) which notifications, if any, were sent to which user accounts and / or virtual spaces.
[0147] At operation 514, the process includes identifying a second user account or a virtual space of the communication platform referenced by the mention identifier based at least in part on the type of the mention identifier. The virtual space may include a communication channel, a canvas, a collaborative document, etc. In some examples, the virtual space may be associated with a group of users. In some examples, the mention processor may 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 particular keyword mention identifier is detected in a message (e.g., a virtual space may receive a notification when a keyword is @mentioned). In some examples, one or more user accounts or virtual spaces may be notified based on a particular document mention identifier detected in the message (e.g., when a document is tagged via "@," one or more editors of that document may be notified). In some examples, the process may include identifying, via the mention processor, a third user account (or a third user profile) or a second virtual space associated with the mention identifier based at least in part on the type of the mention identifier. For example, a message may include multiple user account mention identifiers and / or multiple channel mention identifiers.
[0148] At operation 516, the process may include determining, via the mention processor, whether to send a notification to the second user account or virtual space via the communications platform. In some examples, the determination of whether to send a notification is based at least in part on whether the message is processed through a production class or a test class associated with the message processor. For example, a message processed through a test class may not trigger side effects such as a notification. In some examples, upon determining not to send a notification, the messaging component refrains from sending a notification associated with the message and instead displays, via the first client, any notifications that may be associated with the message. In some examples, upon determining not to send a notification, the mention processor may generate log data associated with the mention identifier identified in the message and store the log data in one or more databases.
[0149] In some examples, the determination of whether to send a notification is based at least in part on notification preferences or status associated with the second user account or virtual space. For example, the second user account or virtual space may be associated with a "do not disturb" or snooze status, a preference for receiving pause notifications for a certain period of time, text or email notifications, etc. In some examples, the user account or virtual space may prefer to receive notifications only during working hours (e.g., Monday through Friday, 8:00 AM to 5:00 PM).
[0150] In some examples, each user account and / or each virtual space may be associated with a separate mention processor. In some examples, determining the type of notification to send to a second user account or virtual space is based at least in part on the mention processor being associated with the second user account or virtual space. This allows for more flexibility in selecting side effects to be triggered for a particular user account or virtual space.
[0151] Upon determining at operation 518 that a notification should be sent, the process may include determining a type of notification to send. The type of notification may include email, text message, pop-up notification, channel notification, delayed notification, etc. The determination of the type of notification to send is based at least in part on notification preferences associated with the second user account or the virtual space. For example, a user account may prefer to receive a first type of notification (e.g., text message) from a first user account and a second type of notification (e.g., email) from a second user account; a user account may prefer to receive notifications for a particular type of event (e.g., messages received through a channel) but not for other types of events (e.g., edits to a document); or a user account may prefer to receive notifications associated with a particular user account but not other user accounts. In some examples, the notification preferences associated with the second user account may differ from the notification preferences associated with the virtual space.
[0152] At operation 520, the process may include sending a notification associated with the message to a second user account or virtual space based at least in part on the type of notification.
[0153] 6A-6B illustrate an exemplary user interface that allows a user to search for and view one or more mention identifiers found in a message.
[0154] For example, FIG. 6A shows a user interface 600A that allows a user to search for mention identifiers detected in a message using data associated with the message. The communications platform may maintain a mentions lookup tool 602 associated with a mention processor. In some examples, an observability class of the mention processor is used to implement the mentions lookup tool 602. In some examples, the mentions lookup tool 602 may be associated with a record-only mention processor. In some examples, the mentions lookup tool 602 may be used to determine which mentions have been detected or will be detected in a message. In some examples, the mentions lookup tool 602 may access a database associated with the mention processor. In some examples, the mentions lookup tool 602 may access stored log data associated with mention identifiers identified in the message. The mentions lookup tool 602 allows a user to search for detected mentions in a message using stored data associated with the message. Data associated with a message may include a permalink 604, an individual designation 606 (ID) (e.g., a character-separated team ID, channel ID, and timestamp), or a primary key 608 associated with the message. A permalink 604 (or permanent link) is a unique address (e.g., a uniform resource locator (URL)) that references a particular post, message, website, etc. A primary key 608 is a field or set of fields in a table used to uniquely identify all data residing within the table. The value of the primary key 608 may be used to reference a data record.
[0155] In some examples, a computing device associated with a communications platform generates log data associated with mention identifiers identified or detected in messages in a record mention processor. The computing device may then store the log data in one or more databases associated with the communications platform. The computing device associated with the communications platform may then receive, via a search tool (e.g., a mention lookup tool), an input of first data associated with the messages, the first data input including one of a permalink, a message identification code, a team identification code, a channel identification code, or a timestamp associated with the messages. The computing device associated with the communications platform may then, via the record mention processor, use the log data to identify one or more observed mention identifiers in the messages. The computing device associated with the communications platform may present the one or more observed mention identifiers via a user interface.
[0156] FIG. 6B shows an example user interface 600B that allows a user to view mention identifiers detected in a message. In a particular example, the mention lookup tool 602 was used to view the effect of running a mention processor on a permalink associated with a message. In some examples, the detected mention identifiers may be stored in association with the message. In some cases, the communications platform may fail to send a message to a user account or virtual space due to an error (e.g., an error may occur during processing of a mention identifier detected in a message). A user may want to know what caused the error, how the mention identifier was processed in the message, or whether a mention identifier was detected in the message at all. For example, when searching for a detected mention ID in a message using data associated with the message (e.g., the data may include a permalink, a primary key, a channel ID, a timestamp, etc. associated with the message), the mention lookup tool 602 may present a graphical user interface (GUI) including the data represented in a first and second parts.
[0157] In an example, the first portion of the GUI may include data associated with one or more stored mention identifiers associated with the retrieved message. The stored mention identifiers may include mentions detected from the message. In some examples, the stored mention identifiers may be stored in a mention table. The stored mention identifiers may be organized in the table by type 612 (i.e., the type of mention identifier observed in the message). For example, the type of mention identifier may include a user account mention identifier (e.g., USER_ACCOUNT), a group mention identifier (e.g., USER_GROUP), a word mention identifier (e.g., WORD), a channel mention identifier (e.g., CHANNEL), etc. In some examples, the stored mention identifier may be associated with one of a user ID 614 or a grouping ID 616. In some examples, a mention identifier configured to send a notification to a user account may be associated with a user ID 614. For example, a user account mention identifier or a word mention identifier may be associated with a user ID 614. In some examples, a mention identifier configured to send a notification to a virtual space or multiple user accounts may be associated with the grouping ID 616. For example, a keyword mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier may be associated with the grouping ID 616.
[0158] In some examples, the second portion of the GUI may include data associated with one or more stored notifications 618 enqueued for the retrieved message. In some examples, the enqueued notifications are notifications awaiting processing via a mention processor. In some examples, the enqueued notifications are notifications sent to a user and / or a virtual space. The second portion may include information associated with each individual enqueued notification. This information may include a type of notification, a team ID, a user ID, a channel ID, a timestamp, and / or a do-not-disturb (DND) override associated with each individual enqueued 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 a "do-not-disturb" notification preference associated with a user account or virtual space. For example, a 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 communications platform may override the "do-not-disturb" setting.
[0159] Example section A. A method implemented at least in part by one or more computing devices of a communications platform, the method including: maintaining a mention processor configured to identify mention identifiers within a plurality of messages posted via the communications platform; receiving messages via the communications platform and from a first client associated with a first user profile on the communications platform; parsing text of the messages via the mention processor to identify mention identifiers included within the messages; analyzing the messages via the mention processor to determine a type of mention identifier; identifying a second user profile or a virtual space of the communications platform referenced by the mention identifier based at least in part on the type of mention identifier; determining via the mention processor whether to send a notification to the second user profile or virtual space via the communications platform; and upon determining to send the notification, determining via the mention processor a type of notification to send; and sending a notification associated with the message to the second user profile or virtual space based at least in part on the type of notification.
[0160] B. The method of paragraph A, further comprising: determining that a second message including a second mention identifier has been posted via a communication platform; determining 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 based at least in part on a second type of the second mention identifier; refraining from sending the second notification if determining not to send 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.
[0161] C. The method of either paragraph A or B, wherein determining the type of notification to send to the second user profile or virtual space is based at least in part on a mention processor being associated with the second user profile or virtual space.
[0162] D. The method of any one of paragraphs A-C, wherein the type of 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.
[0163] E. The method of any one of paragraphs A-D, wherein the type of notification includes email, text message, pop-up notification, channel notification, or delayed notification.
[0164] F. The method of any one of paragraphs A-E, further comprising: generating, via a record mention processor, log data associated with mention identifiers 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, a message identification code, a team identification code, a channel identification code, or a timestamp associated with the message; identifying, via the record mention processor and using the log data, one or more observed mention identifiers in the message; and presenting, via a user interface associated with the communications platform, a graphical user interface (GUI) 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 enqueued for the message representing one or more notifications sent via the communications platform.
[0165] G. The method of paragraph F, wherein the second data associated with the one or more stored mention identifiers is organized based at least in part on the types of mention identifiers observed in the message.
[0166] H. The method of any one of paragraphs A-G, further comprising: generating a production class derived from the mention processor, the production class configured to be referenced within code running in association with the communications platform; and generating a test class derived from the mention processor, the test class configured to test data associated with the message.
[0167] I. The method of any one of paragraphs A-H, further comprising: identifying, via a mention processor, a third user profile or a second virtual space associated with the mention identifier based at least in part on the type of the mention identifier; determining, via the mention processor, a type of notification to send to the third user profile or the second virtual space based at least in part on a second notification preference setting associated with the third user profile or the second virtual space, the second notification preference setting being different from the first notification preference setting 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 based at least in part on the type of notification.
[0168] J. The method of any one of paragraphs A-I, wherein determining whether to send a notification to the second user profile or virtual space is based at least in part on notification preference settings associated with the second user profile or virtual space, the notification preference settings including a preferred method of receiving notifications and a preferred time of receiving notifications.
[0169] K. 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 including: maintaining a mention processor configured to identify mention identifiers within a plurality of messages posted via a communications platform; receiving a message via the communications platform and from a first client associated with a first user profile on the communications platform; parsing 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 a type of mention identifier; identifying a second user profile or virtual space of the communications platform referenced by the mention identifier based at least in part on the type of mention identifier; determining via the mention processor whether to send a notification to the second user profile or virtual space via the communications platform; and upon determining to send the notification, determining via the mention processor a type of notification to send; and sending a notification associated with the message to the second user profile or virtual space based at least in part on the type of notification.
[0170] L. The system described in paragraph K, further comprising: determining that a second message including a second mention identifier has been posted via a communication platform; determining 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 based at least in part on a second type of the second mention identifier; refraining from sending the second notification if determining not to send 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.
[0171] M. The system of either paragraph K or L, wherein determining the type of notification to send to the second user profile or virtual space is based at least in part on the mention processor being associated with the second user profile or virtual space.
[0172] N. The system of any one of paragraphs K-M, wherein the type of 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.
[0173] O. The system of any one of paragraphs K through N, wherein the type of notification includes an email, a text message, a pop-up notification, a channel notification, or a delayed notification.
[0174] P. The system of any one of paragraphs K-O, wherein the operations further include: generating, via a record mention processor, log data associated with mention identifiers 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, a message identification code, a team identification code, a channel identification code, or a timestamp associated with the message; identifying, via the record mention processor and using the log data, one or more observed mention identifiers in the message; and presenting, via a user interface associated with the communications platform, a graphical user interface (GUI) 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 enqueued for the message representing one or more notifications sent via the communications platform.
[0175] 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 mention processor configured to identify mention identifiers within a plurality of messages posted via a communications platform; receiving a message via the communications platform from a first client associated with a first user profile on the communications platform; parsing 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 a type of mention identifier; identifying a second user profile or virtual space of the communications platform referenced by the mention identifier based at least in part on the type of mention identifier; determining via the mention processor whether to send a notification to the second user profile or virtual space via the communications platform; and upon determining to send the notification, determining via the mention processor a type of notification to send; and sending a notification associated with the message to the second user profile or virtual space based at least in part on the type of notification.
[0176] R. The one or more non-transitory computer-readable media of paragraph Q, the operations further including: generating a production class derived from the mention processor, the production class configured to be referenced in code executing in association with the communications platform; and generating a test class derived from the mention processor, the test class configured to test data associated with the message.
[0177] S. The one or more non-transitory computer-readable media of any of paragraphs Q or R, wherein the operations further include: identifying, via a mention processor, a third user profile or a second virtual space associated with the mention identifier based at least in part on the type of the mention identifier; determining, via the mention processor, a type of notification to send to the third user profile or the second virtual space based at least in part on a second notification preference setting associated with the third user profile or the second virtual space, wherein the second notification preference setting is different from the first notification preference setting associated with the second user profile or virtual space; and sending a second notification associated with the message to the third user profile or the second virtual space based at least in part on the type of notification.
[0178] T. One or more non-transitory computer-readable media of any one of paragraphs Q-S, wherein the notification preference settings include a preferred method of receiving notifications and a preferred time of receiving notifications.
[0179] Although the exemplary sections above are described with respect to one particular implementation, it should be understood that in the context of this document, the content of the exemplary sections can be implemented via a method, device, system, computer-readable medium, and / or another implementation. Additionally, any of Examples A-T may be implemented alone or in combination with one or more of any other of Examples A-T.
[0180] conclusion Having described one or more examples of the technology described herein, various modifications, additions, permutations and equivalents thereof fall within the scope of the technology described herein.
[0181] In describing the embodiments, reference is made to the accompanying drawings, which form a part of this specification. The accompanying drawings show, for purposes of illustration, specific embodiments of the claimed subject matter. It is understood that other examples may be used and that modifications or variations, such as structural changes, may be made. Such examples, variations, or variations do not necessarily depart from the intended scope of the claimed subject matter. While steps herein may be presented in a certain order, in some cases, the order can be changed so that certain inputs are provided at different times or in a different order without changing the functionality of the systems and methods described. The procedures disclosed may also be performed in a different order. In addition, the various calculations described herein need not be performed in the order disclosed; other examples using alternative orders of calculations may be readily implemented. In addition to being reordered, calculations may also be decomposed into sub-calculations that have the same result.
Claims
1. 1. A method implemented at least in part by one or more computing devices of a communications platform, the method comprising: maintaining a mention processor configured to identify mention identifiers within a plurality of messages posted via the communications platform; receiving a message via the communications platform from a first client associated with a first user profile on the communications platform; parsing the text of the message via the mention processor to identify mention identifiers contained 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 communications platform referenced by the mention identifier based at least in part on the type of the mention identifier; determining, via the mention processor, whether to send a notification to the second user profile or the virtual space via the communication platform; Upon determining to send the notification, determining via the mention processor the type of notification to send; sending a notification associated with the message based at least in part on the type of notification and to the second user profile or the virtual space; A method comprising:
2. determining that a second message including a second mention identifier has been posted via the communications platform; determining 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 based at least in part on a second type of the second mention identifier; When it is determined not to transmit the second notification, refraining from sending the second notification; generating log data associated with the second mention identifier identified in the second message; storing the log data in one or more databases; The method of claim 1 further comprising:
3. determining a type of notification to send to the second user profile or the virtual space is based at least in part on the mention processor being associated with the second user profile or the virtual space; The method of claim 1.
4. the type of mention identifier comprises one of a keyword mention identifier, a user profile mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier; The method of claim 1.
5. The notification type includes email, text message, pop-up notification, channel notification, or delayed notification. The method of claim 1.
6. generating, via a record mention processor, log data associated with the mention identifiers identified in the messages; 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, a message identification code, a team identification code, a channel identification code, or a timestamp associated with the message; identifying, via the record mention processor and using the log data, one or more observed mention identifiers within the message; via a user interface associated with said communications platform; a first portion including a representation of second data associated with one or more stored mention identifiers associated with the message; a second portion including a representation of third data associated with one or more stored notifications enqueued for the message representing one or more notifications sent via the communications platform; presenting a graphical user interface (GUI) including: The method of claim 1 further comprising:
7. the second data associated with the one or more stored mention identifiers is organized based at least in part on types of mention identifiers observed within the message; The method of claim 6.
8. generating a production class derived from the mention processor, the production class configured to be referenced within code executing in association with the telecommunications platform; generating a test class derived from the mention processor, the test class configured to test data associated with the message; The method of claim 1 further comprising:
9. identifying, via the mention processor and based at least in part on the type of the mention identifier, a third user profile or a second virtual space associated with the mention identifier; determining, via the mention processor, a type of notification to send to the third user profile or the second virtual space based at least in part on a second notification preference setting associated with the third user profile or the second virtual space, the second notification preference setting being different from a first notification preference setting associated with the second user profile or the virtual space; sending a second notification associated with the message based at least in part on the type of notification and to the third user profile or the second virtual space; The method of claim 1 further comprising:
10. determining whether to send the notification to the second user profile or the virtual space is based at least in part on notification preference settings associated with the second user profile or the virtual space, the notification preference settings including a preferred method of receiving the notification and a preferred time of receiving the notification; The method of claim 1.
11. 1. A system comprising: one or more processors; When executed, the system: maintaining a mention processor configured to identify mention identifiers within a plurality of messages posted via the communications platform; receiving a message via the communications platform from a first client associated with a first user profile on the communications platform; parsing the text of the message via the mention processor to identify mention identifiers contained 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 communications platform referenced by the mention identifier based at least in part on the type of the mention identifier; determining, via the mention processor, whether to send a notification to the second user profile or the virtual space via the communication platform; Upon determining to send the notification, determining via the mention processor the type of notification to send; sending a notification associated with the message based at least in part on the type of notification and to the second user profile or the virtual space; one or more non-transitory computer-readable media storing instructions for performing operations including: A system comprising:
12. determining that a second message including a second mention identifier has been posted via the communications platform; determining 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 based at least in part on a second type of the second mention identifier; When it is determined not to transmit the second notification, refraining from sending the second notification; generating log data associated with the second mention identifier identified in the second message; storing the log data in one or more databases; The system of claim 11 further comprising:
13. determining a type of notification to send to the second user profile or the virtual space is based at least in part on the mention processor being associated with the second user profile or the virtual space; The system of claim 11.
14. the type of mention identifier comprises one of a keyword mention identifier, a user profile mention identifier, a group mention identifier, a channel mention identifier, or a document mention identifier; The system of claim 11.
15. One or more non-transitory computer-readable media storing processor-executable instructions that, when executed by one or more processors, cause the one or more processors to perform the operations of any one of claims 1 to 14.