Context Workflow Button
Context-aware buttons in group-based communication systems adapt workflows to user interactions and contexts, improving automation and display element updates, thus enhancing user experience and efficiency.
Patent Information
- Application Number
- JP2024566751
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-05-13
- Filing Date
- 2023-05-11
- Publication Date
- 2025-06-25
- Estimated Expiration
- 2043-05-11
AI Technical Summary
Existing automated workflows in group-based communication systems lack context awareness and dynamic updating of display elements, requiring manual editing for different contexts and failing to adapt to user interactions.
Implement context-aware buttons within the system that collect context parameters and user interactions to trigger workflows, allowing automated actions based on these parameters and dynamically update display elements.
Enables contextually relevant automated workflows and dynamic updates within group-based communication systems, enhancing user interaction and workflow efficiency without manual intervention.
Smart Images

Figure 2025519281000001_ABST
Abstract
Description
Technical Field
[0001] Embodiments of the present invention generally relate to automated workflows. More specifically, embodiments of the present invention relate to buttons for triggering automated workflows within a group-based communication system.
Background Art
[0002] Automated workflows have been used, for example, to perform various action steps within a group-based communication system. However, these workflows are not contextually applied based on the context in which the workflow was initiated. Therefore, the workflows may need to be manually edited before being applied to different contextual locations within the group-based communication system. Additionally, existing workflows lack the ability to dynamically update various display elements within the group-based communication system. Thus, what is needed is a way to apply workflow steps based on context parameters.
Summary of the Invention
[0003] Embodiments of the present invention address the above needs by providing a medium, method, and system for context automation within a group-based communication system, in which buttons are added to a virtual space within the group-based communication system. The buttons obtain context parameters associated with the virtual space and user interactions that are passed to the automated workflows initiated by each button. Thus, the steps performed by the automated workflows can be contextually performed based on the context parameters collected by the buttons.
[0004] In some aspects, the technology described herein, when executed by at least one processor, is one or more non-transitory computer-readable media storing computer-executable instructions for performing a method of context automation within a group-based communication system, the method comprising causing a display of a workflow button within a virtual space of the group-based communication system to a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space, receiving an activation of the workflow button from the user, receiving, in response to the activation of the workflow button, a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space, starting an associated workflow associated with the workflow button to perform one or more automated actions based on the plurality of context parameters, receiving a response indicating completion of the associated workflow, and updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow, relating to one or more non-transitory computer-readable media.
[0005] In some aspects, the technology described herein is one or more non-transitory computer-readable media, the method further comprising starting an additional workflow for performing one or more additional actions in response to performing one of the one or more automated actions, receiving a completion confirmation associated with the additional workflow, and performing a further one of the one or more automated actions that depends on the completion confirmation associated with the additional workflow, relating to one or more non-transitory computer-readable media.
[0006] In some embodiments, the technology described herein is one or more non-transitory computer-readable media, and the method is to cause the display of a new workflow button in a virtual space in response to performing one of one or more automated operations, the new workflow button being configured to initiate an additional workflow, further comprising, relating to one or more non-transitory computer-readable media.
[0007] In some embodiments, the technology described herein is one or more non-transitory computer-readable media, and the method is to create a second virtual space based on a plurality of context parameters in the virtual space in response to performing one of one or more automated operations, the second virtual space including direct messages, channels, collaborative documents, or collaboration sessions, further comprising, relating to one or more non-transitory computer-readable media.
[0008] In some embodiments, the technology described herein is one or more non-transitory computer-readable media, and the method is to cause the display of a workflow button in a second virtual space for a second user of a group-based communication system, at least one display parameter of the workflow button in the second virtual space being different from at least one display parameter in the virtual space, and in response to the activation of the workflow button in the second virtual space, obtaining a plurality of context parameters associated with the activation of the workflow button, including a second user identifier associated with the second user and a second context identifier indicating the second virtual space, and determining a second workflow for the workflow button based on the workflow button and the plurality of context parameters, the second workflow being different from the associated workflow, and starting the second workflow, further comprising, relating to one or more non-transitory computer-readable media.
[0009] In some aspects, the technology described herein is one or more non-transitory computer-readable media, and a method further includes storing, in a storage location determined based on a second context parameter among a plurality of context parameters, information indicating the first context parameter among the plurality of context parameters, in response to performing one of the one or more automated operations, and relates to one or more non-transitory computer-readable media.
[0010] In some aspects, the technology described herein is one or more non-transitory computer-readable media, and a method further includes updating a virtual space to reflect actuation by a user of a workflow button, in response to performing one of the one or more automated operations, and relates to one or more non-transitory computer-readable media.
[0011] In some aspects, the technology described herein is a method for context automation within a group-based communication system. The method includes causing a display of a workflow button within a virtual space of the group-based communication system to a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space; receiving an actuation of the workflow button from the user; receiving, in response to the actuation of the workflow button, a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space; initiating an associated workflow associated with the workflow button to perform one or more automated operations based on the plurality of context parameters; receiving a response indicating completion of the associated workflow; and updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow.
[0012] In some embodiments, the techniques described herein respond to performing one of one or more automated operations by initiating an additional workflow to perform one or more additional operations, receiving a completion confirmation associated with the additional workflow, and performing further ones of the one or more automated operations that depend on the completion confirmation associated with the additional workflow.
[0013] In some embodiments, the techniques described herein respond to performing one of one or more automated operations by causing the display of a new workflow button within a virtual space, the new workflow button being configured to initiate an additional workflow.
[0014] In some embodiments, the techniques described herein respond to performing one of one or more automated operations by creating a second virtual space based on a plurality of context parameters within a virtual space, the second virtual space including direct messages, channels, co-authored documents, or collaboration sessions.
[0015] In some aspects, the techniques described herein cause a display of workflow buttons in a second virtual space for a second user of a group-based communication system, wherein at least one display parameter of the workflow buttons in the second virtual space is different from at least one display parameter in the virtual space, and in response to an activation of a workflow button in the second virtual space, obtaining a plurality of context parameters associated with the activation of the workflow button, the plurality of context parameters including a second user identifier associated with the second user and a second context identifier indicating the second virtual space, and determining a second workflow for the workflow button based on the workflow button and the plurality of context parameters, the second workflow being different from the associated workflow, and further including starting the second workflow.
[0016] In some aspects, the techniques described herein further include storing information indicating a first context parameter of a plurality of context parameters at a storage location determined based on a second context parameter of the plurality of context parameters in response to performing one of one or more automated operations.
[0017] In some aspects, the techniques described herein further include updating a virtual space to reflect an activation of a workflow button by a user of the workflow button in response to performing one of one or more automated operations.
[0018] In some aspects, the technology described herein is a system that includes at least one processor and at least one non-transitory memory storing computer-executable instructions that, when executed by the at least one processor, perform a method for context automation within a group-based communication system. The method includes causing a display of a workflow button within a virtual space of the group-based communication system to a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space; receiving an activation of the workflow button from the user; receiving, in response to the activation of the workflow button, a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space; starting an associated workflow associated with the workflow button to perform one or more automated actions based on the plurality of context parameters; receiving a response indicating completion of the associated workflow; and updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow.
[0019] In some aspects, the technology described herein is a system, and the method further includes starting an additional workflow for performing one or more additional actions in response to performing one of the one or more automated actions; receiving a completion confirmation associated with the additional workflow; and performing a further one of the one or more automated actions that depends on the completion confirmation associated with the additional workflow.
[0020] In some aspects, the technology described herein is a system, and the method is to cause the display of a new workflow button in a virtual space in response to performing one of one or more automated operations, the new workflow button being configured to initiate an additional workflow, further including a system related thereto.
[0021] In some aspects, the technology described herein is a system, and the method is to create a second virtual space based on a plurality of context parameters in the virtual space in response to performing one of one or more automated operations, the second virtual space including direct messages, channels, collaborative documents, or collaboration sessions, further including a system related thereto.
[0022] In some aspects, the technology described herein is a system, and the method is to cause the display of a workflow button in a second virtual space for a second user of a group-based communication system, at least one display parameter of the workflow button in the second virtual space being different from at least one display parameter in the virtual space, and in response to the activation of the workflow button in the second virtual space, obtaining a plurality of context parameters associated with the activation of the workflow button, including a second user identifier associated with the second user and a second context identifier indicating the second virtual space, determining a second workflow for the workflow button based on the workflow button and the plurality of context parameters, the second workflow being different from the associated workflow, and starting the second workflow, further including a system related thereto.
[0023] In some aspects, the technology described herein is a system, and the method further includes storing, in a storage location determined based on a second context parameter among a plurality of context parameters, information indicating a first context parameter among the plurality of context parameters, in response to performing one of one or more automated operations. This relates to a system.
[0024] This summary is provided to introduce, in a simplified form, various concepts that will be further described in the following detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Other aspects and advantages of the present invention will become apparent from the following detailed description of the embodiments and the accompanying drawings.
[0025] Embodiments of the present invention are described in detail below with reference to the accompanying drawings.
Brief Description of the Drawings
[0026]
Figure 1
[0027]
Figure 2A
[0028]
Figure 2B
[0029]
Figure 2C
[0030]
Figure 2D
[0031]
Figure 3A
[0032]
Figure 3B
[0033]
Figure 3C
[0034]
Figure 4A
[0035]
Figure 4B
[0036]
Figure 4C
[0037]
Figure 5A
[0038]
Figure 5B
[0039]
Figure 5C
[0040]
Figure 5D
[0041]
Figure 6A
[0042]
Figure 6B
[0043]
Figure 6C
[0044]
Figure 6D
[0045]
Figure 6E
[0046]
Figure 7A
[0047]
Figure 7B
[0048]
Figure 7C
[0049]
Figure 7D
[0050]
Figure 8
[0051]
Figure 9A
[0052]
Figure 9B
DETAILED DESCRIPTION OF THE INVENTION
[0053] The drawings do not limit the present invention to the specific embodiments disclosed and described herein. The drawings are not necessarily to scale, but rather emphasis is placed on clearly showing the principles of the present invention.
[0054] Some embodiments of the present invention relate to implementing context buttons within a group-based communication system such that when a button is actuated by a user or some other triggering event, one or more automated workflows are initiated. The automated workflows may be configured to perform one or more automated actions either internally within the group-based communication system or externally, for example, within a third-party application. In some embodiments, various means for accessing and configuring the buttons from within the group-based communication system are contemplated. For example, in some embodiments, a button directory may be included to enable a user to curate a list of available buttons that are shared and posted within the group-based communication system. Additionally, in some embodiments, a user may be able to manually configure various button parameters such as which workflow is initiated by a given button.
[0055] In some embodiments, a button can obtain one or more context parameters associated with the context of the group-based communication system. These context parameters can be passed to the initiated workflow such that the automated actions can be contextually performed at least in part based on the one or more context parameters. In some such embodiments, the context parameters can include an indication of the user who selected the button, as well as an indication of the context of the button within the group-based communication system such as which channel or other virtual space the button was actuated in. Accordingly, the workflow can be executed at least in part based on the context in which the button was actuated. As such, at least a portion of the workflow's actions can be performed differently based on who selected the button and where the button was selected.
[0056] In the following detailed description of embodiments of the present invention, reference is made to the accompanying drawings that show specific embodiments in which the invention may be practiced. The embodiments are intended to describe aspects of the invention in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized and changes may be made without departing from the scope of the present invention. Accordingly, the following detailed description should not be construed in a limiting sense. The scope of embodiments of the present invention is defined only by the appended claims and the full scope of equivalents to which such claims are entitled.
[0057] As used herein, a reference to "one embodiment," "an embodiment," or "embodiments" means that the feature(s) being referred to are included in at least one embodiment of the technology. Separate references to "one embodiment," "an embodiment," or "embodiments" in this specification are not necessarily to the same embodiment, and, unless so stated and / or readily apparent to one of ordinary skill in the art from the specification, are not mutually exclusive. For example, a feature, structure, or act described in one embodiment may be included in other embodiments but not necessarily included. Thus, the technology may include various combinations and / or integrations of the embodiments described herein.
[0058] [Group-based communication system] FIG. 1 shows an exemplary environment 100 for performing the techniques described herein. In at least one example, the exemplary environment 100 may be associated with a communication platform that utilizes a network-based computing system to enable users of the communication platform to exchange data. In at least one example, the communication platform may be “group-based” such that the platform and associated systems, communication channels, messages, collaborative documents, canvases, audio / video conversations, and / or other virtual spaces have security (which may be defined by permissions) to restrict access to defined groups of users. In some examples, such groups of users may be defined by group identifiers that may be associated with common access credentials, domains, etc., as described above. In some examples, the communication platform may be a hub that provides a secure and private virtual space for users to chat, meet, call, collaborate, transfer files or other data, or otherwise communicate with each other. As described above, each group is associated with a workspace that enables 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, the members of a group, and thus the workspace, may be associated with the same organization. In some examples, the members of a group, and thus the workspace, may be associated with different organizations (e.g., entities having different organization identifiers).
[0059] 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(s) 102 may include one or more servers or other types of computing devices that may be embodied in any number of ways. For example, in the case of servers, functional components and data may be implemented on a single server, a cluster of servers, a server farm or data center, a cloud-hosted computing service, a cloud-hosted storage service, etc., but additionally or alternatively, other computer architectures may be used.
[0060] In at least one example, the server(s) 102 may communicate with the user computing device 104 via one or more networks 106. That is, the server(s) 102 and the user computing device 104 may transmit, receive, and / or store data (e.g., content, information, etc.) using the network(s) 106 as described herein. The user computing device 104 can be any suitable type of computing device, such as portable, semi-portable, semi-fixed, or fixed. Some examples of the user computing device 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 that can communicate and perform functions according to the technology described herein. Although a single user computing device 104 is shown, in practice, the exemplary environment 100 can include multiple (e.g., dozens, hundreds, thousands, millions) of user computing devices. In at least one example, a user computing device such as the user computing device 104 can be operable by a user to access communication services, among other things, via a communication platform. The user can be an individual, a group of individuals, an employer, a company, an organization, and / or the like.
[0061] The network(s) 106 can include, but is not limited to, any type of network known in the art such as a local area network or wide area network, the Internet, a wireless network, a cellular network, a local wireless network, Wi-Fi and / or near field communication, Bluetooth®, Bluetooth Low Energy (BLE), near field communication (NFC), a wired network, or any other such network, or any combination thereof. Components used for such communication can depend at least in part on the type of network, the selected environment, or both. Protocols for communicating via such network(s) 106 are well known and will not be described in detail herein.
[0062] In at least one example, the server(s) 102 can include one or more processors 108, a computer-readable medium 110, one or more communication interfaces 112, and input / output devices 114.
[0063] In at least one example, each processor of processor(s) 108 can be a single processing unit or multiple processing units, and can include single or multiple computing units or multiple processing cores. Processor(s) 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 operates on signals based on operational instructions. For example, processor(s) 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(s) 108 can be configured to fetch and execute computer-readable instructions stored in a computer-readable medium that can program the processor(s) to perform the functions described herein.
[0064] Computer-readable medium 110 can include volatile and non-volatile memory and / or removable and non-removable media implemented with any type of technology for storing data such as computer-readable instructions, data structures, program modules, or other data. Such computer-readable medium 110 can include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory 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 can be accessed by a computing device. Depending on the configuration of server(s) 102, computer-readable medium 110 can be a type of computer-readable storage medium, and / or, where mentioned, a tangible non-transitory medium, provided that non-transitory computer-readable media exclude media such as energy, carrier signals, electromagnetic waves, and signals themselves.
[0065] The computer-readable medium 110 can be used to store any number of functional components executable by the processor(s) 108. In many implementations, these functional components are executable by the processor(s) 108 and, when executed, include instructions or programs that specifically configure the processor(s) 108 to perform the operations attributed to the server(s) 102 above. The functional components stored on the computer-readable medium can optionally include a messaging component 116, an audio / video component 118, a workspace management component 120, an operating system 122, and a data store 124.
[0066] 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 send that message as an incoming message to a second user computing device 104. The message can include a direct message sent from the sending user to one or more specified users, and / or a communication channel message sent from the sending user to one or more users associated with the communication channel via the communication channel. Additionally, the message can be sent in relation to a collaborative document, a canvas, or other collaborative workspace. In at least one example, the canvas can include a flexible canvas for curating, organizing, and sharing a collection of information among users. In at least one example, the collaborative document can be associated with a document identifier (such as a virtual space identifier, a communication channel identifier, etc.) configured to enable the messaging function to originate from a virtual space (such as a communication channel) within the collaborative document. That is, the collaborative document can be treated as a virtual space, such as a communication channel, and can include functions associated therewith. The virtual space, i.e., the communication channel, can be a data path used to exchange data between systems and devices associated with the communication platform.
[0067] In at least one example, the messaging component 116 can establish a communication path between various user computing devices, enabling the user computing devices to communicate with each other and share data. In at least one example, the messaging component 116 can manage such communication and / or data sharing. In some examples, data associated with a virtual space, such as a collaborative document, can be presented via a user interface. Additionally, metadata associated with each message transmitted via the virtual space, such as a timestamp, sender user identifier, recipient user identifier, conversation identifier, and / or root object identifier (e.g., a conversation associated with a thread and / or root object), can be stored in association with the virtual space.
[0068] In various examples, the messaging component 116 can receive messages sent in relation to a virtual space (e.g., a direct message instance, a communication channel, a canvas, a collaborative document, etc.). In various examples, the messaging component 116 can identify one or more users associated with the virtual space and cause the rendering of a message in relation to an instance of the virtual space on each user computing device 104. In various examples, the messaging component 116 can identify a message as an update to the virtual space and, based on the identified update, associate a notification associated with the update with a sidebar of a user interface associated with one or more of the users associated with the virtual space and present it. For example, the messaging component 116 can receive a message sent in relation to a virtual space from a first user account. In response to receiving the message (e.g., interaction data associated with an interaction between the first user and 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 messaging component 116 can cause a notification of an update to the virtual space to be presented via a sidebar of a user interface associated with the second user's second user account. In some examples, the messaging component 116 can 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 affordances associated with the virtual space. In such examples, the notification can be presented in relation to the affordances associated with the virtual space.
[0069] In various examples, the messaging component 116 can be configured to identify mentions or tags associated with messages sent in relation to a virtual space. In at least one example, a mention or tag can include an @mention (or other special character) of a user identifier associated with a communication platform. The user identifier can include a username, real name, or other unique identifier associated with a particular user. In response to identifying a mention or tag of a user identifier, the messaging component 116 can cause a notification to be presented on a user interface associated with the user identifier, such as in a sidebar of a user interface associated with a virtual space related to an affordance associated with a particular user, and / or in a virtual space associated with mentions and reactions. That is, the messaging component 116 can be configured to alert a particular user that they have been mentioned in a virtual space.
[0070] In at least one example, the audio / video component 118 can be configured to manage audio and / or video communication between users. In some examples, the audio and / or video communication can be associated with an audio and / or video conversation. In at least one example, the audio and / or video conversation can include an individual identifier configured to uniquely identify the audio and / or video conversation. In some examples, the audio and / or video component 118 can store user identifiers associated with user accounts of members of a particular audio and / or video conversation, such as for identifying the user(s) having appropriate permissions to access a particular audio and / or video conversation.
[0071] In some examples, communications associated with an audio and / or video conversation (a "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 during a period, and after the first period, a third user (e.g., a member of the conversation) associated with the conversation can contribute to the conversation. The audio / video component 118 can be configured to store audio and / or video data associated with the conversation, for example, to enable a user with appropriate permissions to listen to and / or view the audio and / or video data.
[0072] In some examples, the audio / video component 118 can be configured to generate a transcript of the conversation and 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 use known speech recognition techniques to generate the transcript. In some examples, the audio / video component 118 can generate the transcript concurrently with or substantially concurrently with the conversation. That is, in some examples, the audio / video component 118 can be configured to generate a text representation of the conversation while the conversation is occurring. In some examples, the audio / video component 118 can generate the transcript after receiving an indication that the conversation has completed. The indication that the conversation has completed can include an indication that the host or an associated administrator has stopped the conversation, an indication that an associated interface has been closed by a threshold number of meeting attendees, and / or the like. That is, the audio / video component 118 can identify the completion of the conversation and, based on the completion, generate an associated transcript.
[0073] In at least one example, the audio / video component 118 can be configured to cause the presentation of a transcript in relation to a virtual space associated with an audio and / or video conversation. For example, a first user can initiate an audio and / or video conversation in relation to a communication channel. The audio / video component 118 can process audio and / or video data among the participants of the audio and / or video conversation and can generate a transcript of the audio and / or video data. In response to the generation of the transcript, the audio / video component 118 can cause the transcript to be presented publicly or otherwise 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, for example, to enable members of the communication channel to comment on or otherwise contribute to the conversation. In some examples, the audio / video component 118 can update the transcript based on comments.
[0074] In at least one example, the audio / video component 118 can manage one or more audio and / or video conversations in relation to a virtual space associated with a group (e.g., an organization, a team, etc.) management or command center. 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 transmit communications in relation to other virtual spaces associated with the virtual headquarters in cooperation with the messaging component 116 and / or other components of the server(s) 102. That is, the messaging component 116 can transmit data (e.g., messages, images, drawings, files, etc.) associated with one or more communication channels, direct messaging instances, collaborative documents, canvases, etc. associated with the virtual headquarters. In some examples, the communication channel(s), direct messaging instance(s), collaborative document(s), canvas(es), etc. can be 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 the virtual headquarters may be further associated with or independent of one or more other virtual spaces of the virtual headquarters.
[0075] In at least one example, the workspace management component 120 can manage workspaces. That is, in at least one example, the communication platform can be partitioned into different workspaces that can be associated with different groups of users as described above. As described above, each workspace is associated with a group identifier, and one or more user accounts are mapped to or otherwise associated with the group identifier. The user(s) corresponding to such user account(s) can be "members" of the group.
[0076] In some examples, the workspace management component 120 can manage the membership of a workspace. That is, the workspace management component 120 can receive requests to associate users with individual workspaces, and the workspace management component 120 can associate the user accounts associated with such users with group identifiers associated with individual workspaces. For example, in response to receiving a request to add a user to a workspace, the workspace management component 120 can associate the user's user account with the group identifier of the workspace. The workspace management component 120 can, for example, disassociate the association between the user account and the group identifier when the user is removed from the workspace.
[0077] In at least one example, the workspace management component 120 may manage cross-workspace data integration as described herein. For example, the workspace management component 120 may be able to detect updates to data associated with a workspace and integrate such updated data into a user interface (or user interfaces) presented via a user computing device (or user computing devices) of the user (or users) associated with the workspace. Such data integration may be a “cross-workspace” such that the user can receive updated data associated with each of the workspaces of which the user is a member and / or access data associated with each of the workspaces of which the user is a member (pending permissions, as described below), regardless of which workspace the user is logged into. That is, the workspace management component 120 may be able to detect updates to data associated with a workspace and integrate such updated data into a user interface (or user interfaces) presented via a user computing device (or user computing devices) of the user (or users) associated with the workspace. Similarly, the workspace management component 120 may facilitate cross-workspace operations. For example, the workspace management component 120 may facilitate messages between workspaces, searches across multiple workspaces or across multiple workspaces. Further details of the operations that may be performed by the workspace management component 120 are described below.
[0078] In at least one example, the operating system 122 may manage the processor(s) 108, computer-readable medium 110, hardware, software, etc. of the server(s) 102.
[0079] In at least one example, the data store 124 can be configured to store accessible, manageable, and updatable data. In some examples, the data store 124 can be integrated with the server(s) 102, as shown in FIG. 1. In other examples, the data store 124 can be located remotely from the server(s) 102 and can be accessible to user devices(s) such as the server(s) 102 and / or the user device 104. The data store 124 can include a plurality of databases that can include user / organization data 126 and / or virtual space data 128. Additional or alternative data can be stored in the data store and / or one or more other data stores.
[0080] In at least one example, the user / organization data 126 can include data associated with users of the communication platform. In at least one example, the user / organization data 126 can include one or more user identifiers associated with a plurality of different organizations or entities with which the user is associated, one or more communication channel identifiers associated with communication channels to which the user has access permission, 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 channel, 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., and can store data in a user profile (which can also be referred to as a "user account") that can store data associated with the user, including but not limited to these.
[0081] In at least one example, the user / organization data 126 may include permission data associated with the permissions of individual users of the communication platform. In some examples, the permissions may be set automatically or by the administrator of the communication platform, an employer, company, organization, or other entity that uses the communication platform, a team leader, group leader, or other entity that uses the communication platform to communicate with team members, group members, etc., or an individual user. The permissions associated with an individual user may be mapped to an account or profile within the user / organization data 126 or otherwise associated. In some examples, the permissions may indicate which users can communicate directly with other users, which channels a user is permitted to access, restrictions on individual channels, which workspaces a user is permitted to access, restrictions on individual workspaces, etc. In at least one example, the permissions may support the communication platform by maintaining security to limit access to defined user groups. In some examples, such users may be defined by common access credentials, group identifiers, etc., as described above.
[0082] In at least one example, the user / organization data 126 may include data associated with one or more organizations of the communication platform. In at least one example, the user / organization data 126 can store data in an organization profile, and the organization profile may include one or more user identifiers associated with the organization, one or more virtual space identifiers associated with the organization (e.g., workspace identifier, communication channel identifier, direct message instance identifier, collaborative document identifier, canvas identifier, audio / video conversation identifier, etc.), an organization identifier associated with the organization, one or more organization identifiers associated with other organizations whose communication with the organization is authorized, etc., and can store data associated with the organization, but is not limited thereto.
[0083] In at least one example, the virtual space data 128 may include data associated with one or more virtual spaces associated with the communication platform. The virtual space data 128 may include text data, audio data, video data, images, files, and / or any other type of data configured to be transmitted in relation to the virtual space. Non-limiting examples of virtual spaces include workspaces, communication channels, direct messaging instances, collaborative documents, canvases, and audio and / or video conversations. In at least one example, the virtual space data can store data associated with individual virtual spaces separately, such as based on individual identifiers associated with each virtual space. In some examples, a first virtual space may be associated with a second virtual space. In such examples, the first virtual space data associated with the first virtual space may be stored in association with the second virtual space. For example, data associated with a collaborative document generated in relation to a communication channel may be stored in relation to the communication channel. In other examples, data associated with an audio and / or video conversation conducted in relation to a communication channel may be stored in relation to the communication channel.
[0084] As described above, in each virtual space of the communication platform, separate identifiers that uniquely identify the virtual space can be assigned. In some examples, the virtual space identifier associated with a virtual space can include a physical address within the virtual space data 128 where data related to that virtual space is stored. The virtual space can be "public" which can allow any user within an organization (e.g., associated with an organization identifier) to participate in data sharing through the virtual space, or the virtual space can be "private" which can restrict data communication within the virtual space to specific users or users with appropriate permissions to view. In some examples, the virtual space can be "shared", whereby users associated with different organizations (e.g., entities associated with different organization identifiers) can participate in data sharing through the virtual space and be enabled to do so. A shared virtual space (e.g., a shared channel) can be public such that any user of any organization can access it, or can be private such that access is restricted to specific users (e.g., users with appropriate permissions) of both organizations.
[0085] In some examples, the data store 124 can be partitioned into separate data items (e.g., data shards) that can be individually accessed and managed. Data shards can simplify many technical tasks such as data retention, deployment (e.g., detecting that message content includes links, crawling link metadata, and determining a uniform summary of the metadata), and integration settings. In some examples, data shards can be associated with an organization, a group (e.g., a workspace), a communication channel, a user, etc.
[0086] In some examples, individual organizations may be associated with a database shard within a data store 124 that stores data related to a particular organizational identification. For example, the database shard may store electronic communication data associated with members of a particular organization, which enables members of that particular organization to communicate and exchange data with other members of the same organization in real-time or near real-time. In this example, the organization itself may be the owner of the database shard and controls where and how the related data is stored. In some examples, the database shard may store data related to two or more organizations (such as in a shared virtual space).
[0087] In some examples, individual groups may be associated with a database shard within a data store 124 that stores data related to a particular group identification (such as a workspace). For example, the database shard may store electronic communication data associated with members of a particular group, which enables members of that particular group to communicate and exchange data with other members of the same group in real-time or near real-time. In this example, the group itself may be the owner of the database shard and controls where and how the related data is stored.
[0088] In some examples, a virtual space may be associated with a database shard within a data store 124 that stores data related to a particular virtual space identification. For example, the database shard may store electronic communication data associated with the virtual space, which enables members of that particular virtual space to communicate and exchange data with other members of the same virtual space in real-time or near real-time. As described above, communication via the virtual space can be synchronous and / or asynchronous. In at least one example, a group or organization may be the owner of the database shard and controls where and how the related data is stored.
[0089] In some examples, an individual user may be associated with a database shard within the data store 124 that stores data related to a particular user account. For example, the database shard may store electronic communication data associated with an individual user, which enables the user to communicate and exchange data with other users of the communication platform in real-time or near real-time. In some examples, the user themselves may be the owner of the database shard and control where and how the associated data is stored.
[0090] The communication interface(s) 112 may include one or more interfaces and hardware components to enable communication with various other devices (e.g., the user computing device 104), such as via the network(s) 106 or directly. In some examples, the communication interface(s) 112 may facilitate communication via a web socket, an application programming interface (API) (e.g., using API calls), a hypertext transfer protocol secure (HTTPS), etc.
[0091] The server(s) 102 may further include various input / output devices 114 (e.g., I / O devices). Such I / O devices 114 may include a display, various user interface controls (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.
[0092] In at least one example, the user computing device 104 may include one or more processors 130, a computer-readable medium 132, one or more communication interfaces 134, and input / output devices 136.
[0093] In at least one example, each processor of processor(s) 130 can be a single processing unit or multiple processing units and can include single or multiple computing units or multiple processing cores. Processor(s) 130 can include any of the types of processors described above with reference to processor(s) 108 and can be the same as or different from processor(s) 108.
[0094] Computer-readable medium 132 can include any of the types of computer-readable media 132 described above with reference to computer-readable medium 110 and can be the same as or different from computer-readable medium 110. The functional components stored on the computer-readable medium can optionally include at least one application 138 and an operating system 140.
[0095] In at least one example, application 138 can be a mobile application, a web application, or a desktop application that can be provided by a communication platform or can be a dedicated application in some other way. In some examples, the individual user computing devices associated with environment 100 can have an instance or a version-managed instance of application 138, which can be downloaded from an application store, accessible via the Internet, or otherwise executable by processor(s) 130 to perform operations as described herein. That is, application 138 can be an access point that enables user computing device 104 to interact with server 102 to access and / or use communication services available via the communication platform. In at least one example, application 138 can facilitate the exchange of data between various other user computing devices, for example, via server(s) 102. In at least one example, 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, audio input, or any other type of input.
[0096] A non-limiting example of the user interface 142 is shown in FIG. 1. As shown in FIG. 1, the user interface 142 can present data associated with one or more virtual spaces that can include one or more workspaces. That is, in some examples, the user interface 142 enables a user (e.g., of the user computing device 104) to access and / or interact with data associated with a plurality of workspaces with which the user is associated and / or otherwise communicate with other users associated with the plurality of workspaces, and thus can integrate data from the plurality of workspaces into a single user interface. In some examples, the user interface 142 can include a first region 144, i.e., a pane, that includes one or more indicators (e.g., one or more user interface elements or objects) associated with the workspace(s) associated with the user (e.g., the user's account). In some examples, the user interface 142 can include a second region 146, i.e., a pane, that includes one or more indicators (e.g., one or more user interface elements, affordances, objects, etc.) representing data associated with the workspace(s) associated with the user (e.g., the user's account). In at least one example, the second region 146 can represent a sidebar of the user interface 142. Further details regarding the second region 146 and the one or more indicators are described below.
[0097] In at least one example, the user interface 142 can include a third region 148, i.e., a pane, that can be associated with a data feed (or “feed”) that shows messages and / or actions posted to one or more communication channels and / or other virtual spaces to facilitate communication (e.g., a virtual space associated with direct message communication(s), a virtual space associated with event(s) and / or action(s), etc.), as described herein. In at least one example, the data associated with the third region 148 can be associated with the same or different workspaces. That is, in some examples, the third region 148 can present data associated with the same or different workspaces via an integrated feed. In some examples, the data can be organized and / or sortable by workspace, time (e.g., when the associated data was posted or when the associated action was otherwise performed), type of action, communication channel, user, etc. In some examples, such data can be associated with indications of which user (e.g., a member of a communication channel) posted the message and / or performed the action. In examples where the third region 148 presents data associated with multiple workspaces, at least some of the data can be associated with indications of which workspace the data is associated with.
[0098] In at least one example, the operating system 140 can manage the processor(s) 130, computer-readable medium 132, hardware, software, etc. of the server(s) 102.
[0099] The communication interface(s) 134 can include one or more interfaces and hardware components to enable communication with various other devices (e.g., user computing device 104) via the network(s) 106 or directly, etc. In some examples, the communication interface 134 can facilitate communication via a web socket, an API (e.g., using an API call), HTTPS, etc.
[0100] The user computing device 104 can further include various input / output devices 136 (e.g., I / O devices). Such I / O devices 136 can include a display, various user interface controls (e.g., buttons, joysticks, keyboards, mice, touchscreens, etc.), audio speakers, connection ports, etc.
[0101] The techniques described herein are described as being performed by the messaging component 116, the audio / video component 118, the workspace management component 120, and the application 138, but the techniques described herein can be performed by the server(s) 102, the user computing device 104, or any other component or combination of components associated therewith.
[0102] [User Interface for a Group-Based Communication System] FIG. 2A shows a user interface 200 of a group-based communication system that is useful for showing the operation of various embodiments, as will be described in further detail below. 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 examples, the communication data may include data associated with a user, such as a user identifier, channels the user has access to, groups the user is associated with, permissions, and other user-specific information.
[0103] The user interface 200 includes a plurality of objects such as panes viewable by a user of the group-based communication system, text input fields, buttons, messages, or other user interface components. As shown, the user interface 200 includes a title bar 202, a workspace pane 204, a navigation pane 206, a synchronous multimedia collaboration session pane 216, a channel pane 218, and a thread pane 230.
[0104] In some embodiments, the title bar 202 includes a search bar 220. The search bar 220 can enable a user to search for content located within the current workspace of a group-based communication system, such as files, messages, channels, members, commands, features, etc. The user can refine the search by attributes such as content type, content author, etc., and by users associated with the content. The user may optionally search within a specific workspace, channel, direct message conversation, or document. In some embodiments, the title bar 202 includes navigation commands that enable the user to move back and forth between different panes and to view the history of accessed content. The title bar 202 may include additional resources such as links to assist with documents and user configurations.
[0105] In some embodiments, a group-based communication system can include a plurality of distinct workspaces, each workspace being associated with a different group of users and channels. Each workspace is associated with a group identifier, and one or more user identifiers are 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 embodiments, the user interface 200 includes a workspace pane 204 for navigating between, adding, or deleting various workspaces within the group-based communication system. For example, a user may be part of an Acme workspace, and the user may be an Acme employee or otherwise affiliated with Acme. The user may also be a member of a volunteer organization in the area that also uses the group-based communication system for collaboration. To navigate between two groups, the user can use the workspace pane 204 to change from the Acme workspace to the volunteer organization workspace. A workspace can include one or more channels that are specific to that workspace and / or one or more channels that are shared between one or more workspaces. For example, Acme may have workspaces for Acme projects such as Project Zen, for social discussions, and for additional company matters. In some embodiments, an organization such as a particular company can have a plurality of workspaces, and a user can be associated with one or more workspaces belonging to the organization. In still other embodiments, a particular workspace can be associated with one or more organizations or other entities associated with the group-based communication system.
[0106] In some embodiments, the navigation pane 206 enables a user to navigate among virtual spaces such as pages, channels 208, collaborative documents 210 (such as those described in FIG. 2D), applications 214, and direct messages 212 within a group-based communication system. For example, the navigation pane 206 may include indicators representing virtual spaces where a user can aggregate data associated with multiple virtual spaces that the user is a member of. 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 activation mechanism (e.g., an affordance) such that when activated, it can cause the user interface 200 to present data associated with the corresponding virtual space. In at least one example, the virtual space may be associated with all unread data associated with each of the workspaces that the user is associated with. That is, in some examples, if a user requests access to a virtual space associated with "unread", all data not read (e.g., not viewed) by the user may be presented, for example, within a feed. In such examples, different types of events and / or actions associated with different virtual spaces may be presented via the same feed. In some examples, such data may be organized and / or classifiable by the associated virtual space (e.g., the virtual space where the communication was sent), time, type of action, user, and / or the like. In some examples, such data may be associated with indications of which user (e.g., a member of the associated virtual space) posted the message and / or performed the action.
[0107] In some examples, virtual spaces can be associated with the same type of events and / or actions. For example, a "thread" can be associated with messages posted to a thread in response to a message posted to the virtual space, files, etc., and "mentions and reactions" can be associated with messages or threads that a user has been mentioned in (e.g., via a tag) or to which other users have reacted (e.g., via an emoji, reaction, etc.) to a message or thread posted by the 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. Similar to the "unread" virtual space, data associated with such virtual spaces can be organized and / or classifiable by virtual space, time, type of action, user, and / or the like.
[0108] In some examples, virtual spaces can be associated with facilitating interactions between users of a communication platform and other users. For example, "connect" can be associated with enabling a user to generate an invitation to communicate with one or more other users. In at least one example, in response to receiving an indication of selection of the "connect" indicator, the communication platform can present a connection interface.
[0109] In some examples, the virtual space can be associated with one or more boards or collaborative documents associated with the user. In at least one example, the document can include a collaborative document configured to be accessed and / or edited by two or more users having appropriate permissions (e.g., view permissions, edit permissions, etc.). In at least one example, if a user is required to access a virtual space associated with one or more documents associated with the user, the one or more documents can be presented via the user interface 200. In at least one example, the 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 granted access rights to the document) for allowing, for example, a user of a communication platform to create, interact with, and / or view data associated with such a document as described herein. In some examples, the collaborative document can be a virtual space, board, canvas, page, etc. for collaborative communication and / or data compilation within a communication platform. In at least one example, the collaborative document can support editable text and / or objects that can perform ordering, addition, deletion, modification, etc. In some examples, the collaborative document can be associated with permissions that define which users of the communication platform can view and / or edit the document. In some examples, the collaborative document may be associated with a communication channel, and members of the communication channel can view and / or edit the document. In some examples, the collaborative document can be shareable such that data associated with the document is accessible and / or interactable by members of multiple communication channels, workspaces, organizations, etc.
[0110] In some examples, the virtual space may be associated with the headquarters (e.g., management center or command center) of a group (e.g., an organization, a team, etc.). In at least one example, the group headquarters may include a virtual or digital headquarters for management or command functions associated with a group of users. For example, "HQ" may be associated with an interface that includes a list of indicators associated with a virtual space configured to enable associated members to communicate. In at least one example, a user can associate one or more virtual spaces with the "HQ" virtual space via, for example, a drag-and-drop operation. That is, the user can determine relevant virtual space(s) for association with a virtual or digital headquarters, such as associating virtual space(s) important to the user.
[0111] Although not shown, in some examples, the virtual space may be associated with one or more boards or collaborative documents associated with the user. In at least one example, the document may include a collaborative document configured to be accessed and / or edited by two or more users having appropriate permissions (e.g., view permissions, edit permissions, etc.). In at least one example, if a user is required to access a virtual space associated with one or more documents associated with the user, the one or more documents may be presented via the user interface 200. In at least one example, the document may be associated with an individual (e.g., the 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 granted access to the document) for allowing, for example, a user of a communication platform to create, interact with, and / or view data associated with such a document as described herein. In some examples, the collaborative document may be a virtual space, board, canvas, page, etc. for collaborative communication and / or data compilation within the communication platform. In at least one example, the collaborative document can support editable text and / or objects that can perform ordering, addition, deletion, modification, etc. In some examples, the collaborative document may be associated with permissions that define which users of the communication platform can view and / or edit the document. In some examples, the collaborative document may be associated with a communication channel, and members of the communication channel can view and / or edit the document. In some examples, the collaborative document may be shareable such that data associated with the document is accessible and / or interactable by members of multiple communication channels, workspaces, organizations, etc.
[0112] Further, although not shown, in some examples, the virtual space can be associated with one or more canvases associated with the user. In at least one example, the canvas can include a flexible canvas for curating, organizing, and sharing a collection of information among users. That is, the canvas can be configured to be accessed and / or modified by two or more users having appropriate permissions. In at least one example, the canvas can be configured to enable sharing of text, images, videos, GIFs, drawings (e.g., user-generated drawings via a canvas interface), game content (e.g., where the user operates game controls synchronously or asynchronously), and / or the like. In at least one example, modifications to the canvas can include adding, deleting, and / or modifying previously shared (e.g., sent, presented) data. In some examples, the content associated with the canvas can be shareable via other virtual spaces such that the data associated with the canvas is accessible to and / or interactable with members of the virtual space.
[0113] The navigation pane 206 may further include indicators representing communication channels. 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, and the like. 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, if the communication channel is cross-workspace (e.g., associated with different workspaces), the user may be associated with both workspaces or only with one of the workspaces. In some examples, the represented communication channels may be associated with a combination of a communication channel associated with a single workspace and a communication channel associated with a different workspace.
[0114] In some embodiments, the navigation pane 206 may indicate all communication channels that the user has access to (e.g., as determined by access data), or a subset of all communication channels. In such examples, the communication channels may be arranged alphabetically based on the most recent interaction, based on the frequency of interaction, based on the communication channel type (e.g., public, private, shared, cross-workspace, etc.), based on the workspace, within a user-specified section, etc. In some examples, the navigation pane 206 can indicate all communication channels that the user is a member of, or a subset of all communication channels, and the user can interact with the user interface 200 to browse or view other communication channels that the user is not a member of but are not currently displayed in the navigation pane 206. In some examples, different types of communication channels (e.g., public, private, shared, cross-workspace, etc.) may be within different sections of the navigation pane 206, or may have their own sub-regions or sub-panes within the user interface 200. In some examples, communication channels associated with different workspaces can be within different sections of the navigation pane 206, or may have their own regions or panes within the user interface 200.
[0115] In some examples, an indicator can be associated with a graphical element that visually differentiates the type of communication channel. For example, project_zen is associated with a lock graphical element. As a non-limiting example, for the purposes of this description, the lock graphical element indicates that the associated communication channel, namely project_zen, is private and access to it is restricted, while another communication channel, namely 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 shared communication channels, communication channels associated with different workspaces, communication channels used regardless of whether the user is a current member or not, and / or the like.
[0116] In at least one example, the navigation pane 206 can include an indicator representing communication with an individual user or a plurality of designated users (e.g., all members of an organization or not just a subset of members). Such communication can be referred to as a "direct message". The navigation pane 206 can include an indicator representing a virtual space associated with a private message between one or more users.
[0117] The direct message 212 may be a communication between a first user and a second user, or may be a plurality of direct messages between a first user and two or more second users. The navigation pane 206 may be sorted and organized into hierarchies or sections according to user preferences. In some embodiments, all of the channels that the user has been granted access to may appear in the navigation pane 206. In other embodiments, the user may choose to hide a certain channel or fold a section that includes a certain channel. Items within the navigation pane 206 may indicate when a new message or update has been received or is currently unread, such as by bolding the text associated with the channel in which the unread message is placed, or by adding an icon or badge to the channel name (e.g., along with the number of unread messages). In some embodiments, 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 a 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, restrictions on individual channels, which workspaces a user is permitted to access, and restrictions on individual workspaces.
[0118] Furthermore, although not shown, the navigation pane 206 may include subsections that are personalized subsections associated with teams that the user is a member of. That is, the "Teams" subsection may include affordances of one or more virtual spaces associated with the team, such as communication channels, collaborative documents, direct messaging instances, audio or video synchronous or asynchronous meetings, and / or equivalents. In at least one example, the user can associate a selected virtual space with the Teams subsection by dragging and dropping, pinning, or otherwise associating the selected virtual space with the Teams subsection.
[0119] [Channels within a Group-Based Communication System] In some embodiments, the group-based communication system is a channel-based messaging platform, as shown in FIG. 2A. Within the group-based communication system, communications can be organized into channels, each dedicated to a particular topic and a set of users. A channel is generally a virtual space associated with a particular topic that includes messages and files posted by the members of the channel.
[0120] For the purposes of this discussion, a "message" can refer to any electronically generated digital object that is provided by a user using a user computing device 104 and that is configured to be displayed within a communication channel and / or other virtual space (such as, for example, a virtual space associated with direct message communication(s)) as described herein to facilitate communication. A message can 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 that includes text, as well as an image and a video, as message content. In such an example, the text, image, and video constitute the message. Each message sent or posted to a communication channel of a communication platform can include metadata that includes, for example, a sender user identifier, a message identifier, message content, a group identifier, a communication channel identifier, and the like. In at least one example, each of the aforementioned identifiers can include American Standard Code for Information Interchange (ASCII) text, a pointer, a memory address, and the like.
[0121] Channel discussions can persist for days, months, or years and can provide a historical log of user activity. Members of a particular channel can post messages visible to other members of that channel, along with other messages within the channel. A user can select channels to view only messages relevant to the topic of that channel without viewing messages posted to other channels about different topics. For example, a software development company can have different channels for each software product under development, and developers working on each specific project can converse about generally a single topic (e.g., the project) without noise from unrelated topics. Channels are generally persistent and targeted at a particular topic or group, so users can quickly and easily refer back to previous exchanges for reference. In some embodiments, the channel pane 218 can display information about the channel selected by the user within the navigation pane 206. For example, a user can select the project_zen channel and discuss the ongoing software development effort for Project Zen. In some embodiments, the channel pane 218 can include a header containing information about the channel, such as the channel name, a list of users within the channel, and other channel controls. A user can pin items to the header and add bookmarks to the header for later access. In some embodiments, a link to a collaborative document may be included in the header. In further embodiments, each channel can have a corresponding virtual space that includes channel-related information such as a summary of the channel, tasks, bookmarks, pinned documents, and other channel-related links that can be editable by the members of the channel.
[0122] 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 data and / or content associated with messages. For example, non-limiting examples of additional data that can be presented via the channel pane 218 of the user interface 200 include collaborative documents (e.g., documents that can be edited jointly, in real-time, or near real-time), audio and / or video data associated with 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 (e.g., data that can be jointly edited by one or more members of a communication channel near real-time) added to and / or removed from a communication channel, descriptions added to, changed in, and / or removed from a communication channel, changes to properties of a communication channel, and the like.
[0123] Channel pane 218 may include messages such as message 222, which is content posted to the channel by a user. The user may post text, an image, a video, an audio, or any other file as message 222. In some embodiments, a specific identifier (in the message or otherwise) may be indicated by prefixing it with a predetermined character. For example, the channel may be prefixed with the character "#" (such as #project_zen), and the username may be prefixed with the character "@" (such as @austin_a). Messages such as message 222 may include an indication of which user posted the message and the time the message was posted. In some embodiments, the user may react to a message such as message 222 by selecting a reaction button 224. The reaction button 224 enables the user to select an icon such as a thumbs up (which may also be referred to as reactji in this context) to be associated with the message. The user may respond to a message such as message 222 with a new message such as message 222 to another user's message. In some embodiments, such conversations within the channel may be further split into threads. A thread may be used to aggregate messages regarding a particular conversation together to more easily follow and reply to the conversation without cluttering the main channel discussion. A thread reply preview 226 appears below the message that starts the thread. The thread reply preview 226 may show information about the thread, such as the number of replies and the members who replied. 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 within the channel pane 218.
[0124] In some embodiments, one or both of the channel pane 218 and the thread pane 230 may include a compose pane 228. The compose pane 228 enables a user to create a message 222 and send it to the members of the channel or, when the message is sent in a thread, to the members of the channel following the thread. The compose pane 228 may have text editing features such as bold, strikethrough, italic, etc. Also, the compose pane 228 may enable the user to format their message or attach files such as a collaborative document, an image, a video, or any other file for sharing with other members of the channel. In some embodiments, the compose pane 228 can enable additional formatting options such as numbered or bulleted lists, either via a user interface or an API. The compose pane 228 may function as a workflow trigger for starting a workflow related to the channel or message. In further embodiments, a link or document sent via the compose pane 228 may include expansion instructions regarding how the content should be displayed.
[0125] [Synchronous Multimedia Collaboration Session] FIG. 2B shows a synchronous multimedia collaboration session triggered from a channel, as shown in pane 216. The synchronous multimedia collaboration 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 synchronous multimedia collaboration sessions at any time without interrupting the synchronous multimedia collaboration sessions for other users. In some embodiments, the synchronous multimedia collaboration session may be based on a particular topic, a particular channel, a particular direct message or multiple direct messages, or a set of users, and in other embodiments, the synchronous multimedia collaboration session may exist without being associated with any channel, topic, or set of users.
[0126] The synchronous multimedia collaboration session pane 216 can be associated with sessions conducted for multiple users in a channel, users in a multi-person direct message conversation, or users in a direct message conversation. Thus, a synchronous multimedia collaboration session can 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 can initiate a synchronous multimedia collaboration session in that channel as a means of interacting with other members of the 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 synchronous multimedia collaboration session can be initiated with one or more other users of a group-based communication system through direct messaging. In some embodiments, the viewers of a synchronous multimedia collaboration session can be determined based on the context in which the synchronous multimedia collaboration session was initiated. For example, initiating a synchronous multimedia collaboration session within a channel can automatically invite attendance by the entire channel. As another example. Initiating a synchronous multimedia collaboration session enables a user to initiate an immediate audio and / or video conversation with other members of the channel without the need to schedule or initiate the communication session via a third-party interface. In some embodiments, a user may be directly invited to attend a synchronous multimedia collaboration session via a message or notification.
[0127] A synchronous multimedia collaboration session can be a short, temporary session where data is not persisted. Alternatively, in some embodiments, a synchronous multimedia collaboration session may be recorded, transcribed, and / or summarized for later review. In other embodiments, the content of a synchronous multimedia collaboration session may be automatically persisted within a channel associated with the synchronous multimedia collaboration session. Members of a particular synchronous multimedia collaboration session can post messages that are visible to other members of that synchronous multimedia collaboration session within a messaging thread associated with that synchronous multimedia collaboration session, along with other messages within that thread.
[0128] The multimedia in a synchronous multimedia collaboration session can include collaboration tools such as any or all of audio, video, screen sharing, co-authoring documents, whiteboards, co-programming, or any other form of media. A synchronous multimedia collaboration session can also enable a user to share the user's screen with other members of the synchronous multimedia collaboration session. In some embodiments, members of a synchronous multimedia collaboration session can markup, comment on, draw on, or otherwise annotate the shared screen. In further embodiments, such annotations may be saved and persisted after the synchronous multimedia collaboration session has ended. A canvas can be created directly from a synchronous multimedia collaboration session to further enhance collaboration among users.
[0129] In some embodiments, the user may initiate a synchronous multimedia collaboration session via a toggle within the synchronous multimedia collaboration session pane 216 shown in FIG. 2B. When the synchronous multimedia collaboration session is initiated, the synchronous multimedia collaboration session pane 216 expands to provide information about the synchronous multimedia collaboration session, such as how many members are present, which users are currently speaking, which users are sharing the user's screen, and / or a screen sharing preview 231. In some embodiments, users of the synchronous multimedia collaboration session may be displayed with an icon indicating that they are participating in the synchronous multimedia collaboration session. In further embodiments, the expanded view of the participants may indicate which users are active and which are not in the synchronous multimedia collaboration session. The screen sharing preview 231 may depict the user's screen, or the desktop view of the user sharing a particular application or presentation. Changes to the user's screen, such as the user advancing to the next slide in a presentation, are automatically shown in the screen sharing preview 231. In some embodiments, the screen sharing preview 231 may be actuated to expand such that the screen sharing preview 231 is displayed as its own pane within the group-based communication system. The synchronous multimedia collaboration session pane 216 may include tools for the synchronous multimedia collaboration session that enable the user to mute the user's microphone or invite other users. In some embodiments, the synchronous multimedia collaboration session pane 216 may include a screen sharing button 232. The screen sharing button 232 may enable the user to share the user's screen with other members of the synchronous multimedia collaboration session pane 216. In some embodiments, the screen sharing button 232 may provide additional controls to the user while screen sharing is in progress.For example, additional screen sharing controls may be provided for a user sharing a user's screen to specify which screen to share, annotate the shared screen, or save the shared screen. When the synchronous multimedia collaboration session is not active, the synchronous multimedia collaboration session pane 216 may be associated with the currently selected channel, direct message, or group direct message such that the synchronous multimedia collaboration session is started and associated with the currently selected channel, direct message, or group direct message. Similarly, when the synchronous multimedia collaboration session is active, the synchronous multimedia collaboration session pane 216 may be associated with the channel on which the synchronous multimedia collaboration session was started. In some embodiments, the synchronous multimedia collaboration session pane 216 may instead not be associated with any channel, group direct message, or direct message.
[0130] The list of synchronous multimedia collaboration sessions may include one or more active synchronous multimedia collaboration sessions selected for recommendation. For example, the synchronous multimedia collaboration session may be selected from a plurality of currently active synchronous multimedia collaboration sessions. Further, the synchronous multimedia collaboration session may be selected based in part on user interaction with the session, or some association of the present user with the session or with users participating in the session. For example, the recommended synchronous multimedia collaboration sessions may be displayed based in part on the present user who has been invited to each synchronous multimedia collaboration session or who has previously collaborated with the user in the recommended synchronous multimedia collaboration sessions. In some embodiments, the list of synchronous multimedia collaboration sessions further includes additional information for each synchronous multimedia collaboration session, such as an indication of the participating users or the number of participating users, the topic of the synchronous multimedia collaboration session, and / or a related group-based communication channel, a multi-person direct message conversation, or an indication of a direct message conversation.
[0131] In some embodiments, the list of recommended active users may include a plurality of group-based communication system users recommended based on at least one of user activity, user interaction, or other user information. For example, the list of recommended active users may be selected based on the active status of users within the group-based communication system, past, recent, or frequent user interactions with the present user (such as interacting within a group-based communication channel), or similarity between the recommended user and the present user (such as determining that the recommended user shares a common membership with the present user within a channel). In some embodiments, machine learning techniques such as cluster analysis can be used to determine the recommended users. The list of recommended active users may include user status information for each recommended user, such as whether the recommended user is active, in a meeting, idle, in a synchronous multimedia collaboration session, or offline. In some embodiments, the list of recommended active users, when selected, may further include a plurality of actionable buttons corresponding to some or all of the recommended users (such as recommended users having a status indicating responsiveness) configured to initiate at least one of a text-based communication session (such as a direct message conversation) or a synchronous multimedia collaboration session.
[0132] In some embodiments, one or more recommended asynchronous multimedia collaboration sessions or meetings are displayed in an asynchronous meeting section. In contrast to the synchronous multimedia collaboration sessions (described above), asynchronous multimedia collaboration sessions enable each participant to collaborate at a time convenient for themselves. This collaboration participation is then recorded for later consumption by other participants who can generate additional multimedia replies. In some embodiments, the replies are aggregated into a multimedia thread (e.g., a video thread) corresponding to the asynchronous multimedia collaboration session. For example, an asynchronous multimedia collaboration session can be used for an asynchronous meeting where a topic is posted as a message at the start of the meeting thread and participants in the meeting can reply by posting messages or video responses. The resulting thread includes any documents, videos, or other files related to the asynchronous meeting. In some embodiments, a preview of a portion of a video reply can be shown within the asynchronous collaboration session or thread. This allows, for example, a user to jump to relevant segments of an asynchronous multimedia collaboration session or pick up where they previously left off.
[0133] In some embodiments, a group-based communication system may include one or more canvases (or one or more links to canvases). A canvas may include a flexible workspace for curating, organizing, and sharing collections of information among users. Such a canvas may be associated with a synchronous multimedia collaboration session, an asynchronous multimedia collaboration session, a channel, a group direct message conversation, or a direct message conversation. Alternatively, or additionally, a user may have one or more private canvases that are not associated with other users. A shared canvas may be configured to be accessed and / or modified by two or more users with appropriate permissions. In some embodiments, a canvas may be configured to enable sharing of content including, but not limited to, text, images, videos, GIFs, drawings (e.g., user-generated drawings via a drawing interface), or game content. In some embodiments, a user accessing a canvas may add new content or delete (or modify) previously added content. In some embodiments, 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 a canvas in view-only mode, while other users may be able to access the canvas in an edit mode that may allow those users to add or modify the content. In some examples, a canvas may be shared via messages within a channel, group direct messages, or direct messages such that data associated with the canvas is accessible to and / or interactive for members of the channel or recipients of the group direct messages or direct messages.
[0134] [Connecting within a Group-Based Communication System] FIG. 2C is a diagram showing a user interface 200 that displays a connections pane 252. The connections pane 252 provides tools and resources for a user to connect across different organizations, where each organization may have its own (usually private) instance of a group-based communication system or may not yet belong to a group-based communication system. For example, a first software company may have a joint venture with a second software company that wants to collaborate on jointly developing a new software application. The connections pane 252 can enable a user to determine which other users and organizations are already within a group-based communication system and invite users and organizations that are currently outside the group-based communication system to participate.
[0135] The connections pane 252 may include a connections search bar 254, recent contacts 256, connections 258, a channel creation button 260, and a direct message start button 262. The connections search bar 254 enables a user to search for users within a group-based communication system. In some embodiments, only users from organizations connected to the user's organization are shown in the search results. In other embodiments, users from any organization that uses a group-based communication system may be displayed. In yet other embodiments, users from organizations that do not yet use group-based communication may also be displayed, enabling the searching user to invite them to participate in the group-based communication system. In some embodiments, a user may be searched for via a username or email address of the group-based communication system. In some embodiments, email addresses may be proposed or auto-completed based on an external source of data such as an email directory or the contacts list of the searching user.
[0136] In some embodiments, in response to a user search, external organizations as well as individual users may be presented. Since search results may include organizations that have not yet participated in the group-based communication system, external organizations may be matched based on organization name or Internet domain (similar to the search and matching of specific users described above). External organizations may be ranked based in part on how many users from the user's organization are connected to the external organization's users. In response to the selection of an external organization in the search results, the searching user may be able to invite the external organization to connect via the group-based communication system.
[0137] In some embodiments, the recent contacts 256 may display the users the present user has most recently interacted with. The recent contacts 256 may display the name, company, and status display of the users. The recent contacts 256 may be ordered based on the contacts the present user interacts with most frequently or based on the contacts the present user interacted with most recently. In some embodiments, each recent contact of the recent contacts 256 may be an actionable control that enables the present user to quickly initiate a direct message conversation with the recent contact, invite the recent contact to a channel, or take any other appropriate user action with respect to the recent contact.
[0138] In some embodiments, the connections 258 may display a list of companies (e.g., organizations) the user has interacted with. For each company, the name of the company may be displayed along with the company's logo and an indication of how many times the user has interacted with that company, e.g., the number of conversations. In some embodiments, each connection of the connections 258 may be an actionable control that enables the present user to quickly invite an external organization to a shared channel, display the most recent connection with that external organization, or take any other appropriate organizational action for that connection.
[0139] In some embodiments, the channel creation button 260 enables a user to create a new shared channel between two different organizations. By selecting the channel creation button 260, the user may further be enabled to name the new connected channel and enter a description of the connected channel. In some embodiments, the user may select one or more external organizations or one or more external users to add to the shared channel. In other embodiments, the user may add an external organization or external user to the shared channel after the shared channel has been created. In some embodiments, the user may select whether to make the connected channel private (i.e., accessible only by invitation from the current members of the private channel).
[0140] In some embodiments, the direct message start button 262 enables the user to quickly initiate a direct message (or group direct message) with an external user in an external organization. In some embodiments, the external user identifier in the external organization may be provided by the user as the group-based communication system username of the external user or as the email address of the external user. In some embodiments, the analysis of the email domain of the external user's email address may affect the messages between the user and the external user. For example, the external user identifier may indicate (e.g., based on the email address domain) that the user's organization and the external user's organization are already connected. In some such embodiments, the email address may be converted to a group-based communication system username. Alternatively, the external user identifier may indicate that the external user's organization belongs to the group-based communication system but is not connected to the user's organization. In some such embodiments, an invitation to connect to the 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.
[0141] [Collaborative Document] Figure 2D shows a user interface 200 that displays a collaboration document pane 264. The collaborative document can be of any file type such as a PDF, video, audio, word processing document, etc., and is not limited to word processing documents or spreadsheets. The collaborative document can be modified and edited by two or more users. The collaborative document may be associated with different user permissions so that, based on a user's permissions for the document (or a section of the document as described below), the user can optionally be permitted to view, edit, or comment on the collaborative document (or a section of the collaborative document). Thus, users among a group of users having access to the document can have various permissions to view, edit, comment on, or otherwise interface with the collaborative document. The collaborative document can enable users to create and modify the document simultaneously or asynchronously. The collaborative document may be integrated with a group-based communication system and can be used both to initiate a workflow and to store the results of the workflow, which will be further described below with respect to FIGS. 3A and 3B. The collaboration document pane 264 can include a collaboration document toolbar 266 and a collaboration document 268. In some embodiments, the collaboration document toolbar 266 can provide the ability to make text bold, italic, underlined, or otherwise formatted, the ability to undo or redo an action, the ability to insert and format photos and shapes, or any other word processing functionality for modifying the content within the collaboration document 268.
[0142] In some embodiments, a collaborative document can include free-form unstructured sections and workflow-related structured sections. In some embodiments, the unstructured sections can include areas of the document where a user can freely modify the collaborative document without constraints. For example, a user can freely type text to describe the purpose of the document. In some embodiments, a user can add a workflow or a structured workflow section by typing (or otherwise mentioning) the name of the workflow. In further embodiments, typing an "at" mark (@), a previously selected symbol, or a predetermined special character or symbol can provide the user with a list of workflows that the user can choose to add to the document. For example, a user can type "!Marketing Approval" to indicate that a marketing team member needs to sign off on a proposal, thereby starting a workflow to the marketing team member who approves the proposal. Placing an exclamation mark before the group name "Marketing Approval" initiates a requirement for a specification action, in this case, routing and sending the approval proposal. In some embodiments, the structured sections can include text inputs, selection menus, tables, checkboxes, tasks, calendar events, or any other document section. In further embodiments, the structured sections can include text input spaces that are part of a workflow. For example, a user can enter text detailing the reason for approval in a text input space and then select a submit button to advance the workflow to the next step of the workflow. In some embodiments, a user may be able to add, edit, or delete structured sections of the document that make up the workflow components.
[0143] In an embodiment, sections of a collaborative document may have individual permissions associated with them. For example, a collaborative document having sections with individual permissions may provide a first user with permissions to view, edit, or comment on a first section, while a second user does not have permissions to view, edit, or comment on the first section. Alternatively, a first user may have permissions to view a first section of a collaborative document, while a second user may have permissions to both view and edit the first section of the collaborative document. Permissions associated with a particular section of a document may be assigned by a first user via various methods, including manual selection of a particular section of the document by the first user or another user having the authority to assign permissions, typing or selecting an "assignment" indicator such as an "@" mark, or selection of a section by the name of the section. In a further embodiment, permissions may be assigned to multiple collaborative documents in a single instance via these methods. For example, multiple collaborative documents each have a section titled "Group Information," and a first user having the authority to assign permissions desires that an entire user group access information within the "Group Information" sections of the multiple collaborative documents. In an embodiment, the first user may select the multiple collaborative documents and the "Group Information" section to cause permissions (such as to access (or view, edit, etc.)) the "Group Information" section of each of the multiple collaborative documents to be created for the entire user group. In some embodiments, a collaborative document includes one or more tasks 270 along with one or more corresponding assignment options 272, as illustrated. In some embodiments, an assignment drop-down menu 274 may be displayed in response to a user selecting one of the one or more assignment options 272.
[0144] [Automation in a Group-Based Communication System] FIG. 3A shows a user interface 300 for automation in a group-based communication system. The automation, also referred to as a workflow, enables a user to automate functions within the group-based communication system. A workflow builder 302 is illustrated that enables a user to create new workflows, modify existing workflows, and review workflow activities. The workflow builder 302 may include a workflow tab 304, an activity tab 306, and a settings tab 308. In some embodiments, the workflow builder may include a publish button 314 that permits a user to publish a new or modified workflow.
[0145] The workflow tab 304 can be selected to allow a user to create a new workflow or modify an existing workflow. For example, a user may wish to create a workflow that automatically welcomes new users joining a channel. The workflow can include workflow steps 310. The workflow steps 310 include at least one trigger to start the workflow and at least one function to perform an action when the workflow is triggered. For example, the workflow may be triggered when a user joins a channel, and the function of the workflow may be to post in the channel to welcome the new user. In some embodiments, the workflow can be triggered from user actions such as a user reacting to a message, joining a channel, or collaborating in a collaborative document, from a scheduled date and time, or from a web request from a third-party application or service. In further embodiments, the workflow function can include sending a message or form to a user, channel, or any other virtual space, modifying a collaborative document, or interfacing with an application. The workflow function can include workflow variables 312. For example, a welcome message may include the name of the user via a variable to allow for a customized message. The user may edit existing workflow steps or add new workflow steps according to the desired workflow function. When the workflow is complete, the user can publish the workflow using the publish button 314. The published workflow waits until it is triggered, at which point the function is executed.
[0146] The Activity tab 306 can display information related to the activities of the workflow. In some embodiments, the Activity tab 306 can indicate how many times the workflow has been executed. In further embodiments, the Activity tab 306 can include information related to each workflow execution, including status, last activity date, execution time, the user who started the workflow, and other relevant information. The Activity tab 306 can allow the user to sort and filter workflow activities to find useful information.
[0147] The Settings tab 308 can allow the user to modify the settings of the workflow. In some embodiments, the user can change the title or icon associated with the workflow. The user can also manage the collaborators associated with the workflow. For example, the user can add additional users as collaborators to the workflow so that the additional users can modify the workflow. In some embodiments, the Settings tab 308 can also allow the user to delete the workflow.
[0148] Figure 3B shows elements related to a workflow in a group-based communication system, and is generally referred to by reference numeral 316. In various embodiments, the trigger 318 is configured to call the execution of the function 336 in response to a user command. The trigger can take the form of a schedule 320, a webhook 322, a shortcut 324, or a slash command 326. In some embodiments, the schedule 320 operates like a timer so that the trigger can be scheduled to occur periodically or once at a predetermined future point in time. In some embodiments, an end user of an event-based application can set any schedule for triggering the trigger, such as once an hour or at 9:15 am every day.
[0149] Additionally, the trigger 318 can take the form of a webhook 322. A webhook 322 is a software component that listens for a webhook URL and port. In some embodiments, when an appropriate HTTP request is received at the webhook URL and port, the trigger is issued. In some embodiments, the webhook 322 requires appropriate authentication, such as a bearer token. In other embodiments, the trigger depends on the content of the payload.
[0150] Another source of one of the triggers 318 is a shortcut among the shortcuts 324. In some embodiments, the shortcut 324 is global to a group-based communication system and not specific to a group-based communication system channel or workspace. A global shortcut can trigger a function that can be executed without the context of a specific group-based communication system message or group-based communication channel. In contrast, a message-based or channel-based shortcut is specific to a group-based communication system message or channel and operates in the context of a group-based communication system message or group-based communication channel.
[0151] A further source of one of the triggers 318 can be provided by the slash command 326. The slash command 326 can function as an entry point for group-based communication system functionality, integration with external services, or group-based communication system message responses. In some embodiments, the slash command 326 can be input by a user of the group-based communication system to trigger the execution of an application function. The slash command can be followed by slash command line parameters that can be passed to any group-based communication system function that is called in relation to triggering a group-based communication system function, such as one of the functions 336.
[0152] An additional way in which a function is called is when an event (such as one of event 328) matches one or more pre-determined conditions within a subscription (such as subscription 334). Event 328 may be subscribed to by any number of subscriptions 334, and each subscription may specify different conditions and trigger different functions. In some embodiments, the event is implemented as a group-based communication system message received in one or more group-based communication system channels. For example, all events may be posted as non-user visible messages within an associated channel monitored by subscription 334. App event 330 may be a group-based communication system message with associated metadata created by an application within a group-based communication system channel. Event 328 may be a direct message received by one or more group-based communication system users who may be technical users such as an actual user or a bot. A bot is a technical user of a group-based communication system used to automate tasks. A bot can be programmatically controlled to perform various functions. A bot can assist in monitoring and processing group-based communication system channel activities, post messages within the group-based communication system channel, and react to in-channel activities of members. A bot can post messages, upload files, and can be invited or removed from both public and private channels within the group-based communication system.
[0153] Event 328 may be any event related to a group-based communication system. Such group-based communication system events 332 include events related to the creation, modification, or deletion of user accounts in a group-based communication system, or events related to messages in a group-based communication system channel, such as creating a message, editing a message, or deleting a message, or reacting to a message. Event 328 may also relate to the creation, modification, or deletion of a group-based communication system channel, or the channel membership. Event 328 may also be related to the modification of a user profile or the creation, maintenance, or deletion of a group.
[0154] As described above, subscription 334 indicates one or more conditions that trigger a function when matched by an event. In some embodiments, when an event occurs, a set of event subscriptions is maintained in relation to a group-based communication system such that information about the event is compared against the set of subscriptions to determine which function(s) 336, if any, should be invoked. In some embodiments, the events that a particular application can subscribe to are managed by an authorization framework. In one embodiment, the event types that match a subscription are governed by an OAuth scope that may be maintained by an administrator of a particular group-based communication system.
[0155] Function 336 is triggered by trigger 318 and event 328 whose function has been subscribed to. Function 336 receives zero or more inputs, performs processing (including potentially accessing external resources), and returns zero or more results. Function 336 can be implemented in various forms. First, there is a built-in 338 of the group-based communication system associated with the core functions of a specific group-based communication system. Some examples include creating group-based communication system users or channels. Second, there is a no-code builder function 340 that can be developed by users of the group-based communication system in relation to an automation user interface such as a workflow builder user interface. Third, there is a hosted code function 342 implemented by a group-based communication system application developed as software code in relation to a software development environment.
[0156] These various types of functionality 336 can be integrated with the API 344 in turn. In some embodiments, the API 344 is associated with a third - party service that is used to provide a custom integration between the functionality 336 and a 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 examples, one of the triggers 318 is the slash command 326 that is used to trigger the hosted code functionality 342, and the hosted code functionality makes an API call to a third - party video conferencing provider via one of the APIs 344. As shown in Figure 3B, the APIs 344 can themselves be the source of any number of triggers 318 or events 328. Continuing with the above example, the normal completion of a video conference triggers one of the functionality 336, and the functionality 310 sends a message to the third - party video conferencing provider that initiates further API calls to download and archive the video conference recording and store it in the group - based communication system channel.
[0157] In addition to integrating with API 344, functionality 336 can persist and access data within table 346. In some embodiments, table 346 is implemented in relation to a database environment associated with a serverless execution environment in which a particular event-based application is running. In one embodiment, table 346 may be provided in relation to a relational database environment. In other embodiments, table 346 is provided in relation to a database mechanism that does not use relational database technology. As shown in FIG. 3B, in some embodiments, the reading or writing of specific data for one or more of tables 346, or data within a table that meets a predetermined condition, is itself a source of some triggers 318 or events 328. For example, if table 346 is used to maintain ticket issuance data in an incident management system, a count of public tickets exceeding a predetermined threshold can trigger a message to be posted to an incident management channel in a group-based communication system.
[0158] Figure 3C shows an exemplary block diagram 350 according to some embodiments of the present invention. In some embodiments, block diagram 350 includes a button 352 as shown. In some embodiments, button 352 includes a visual representation that is displayed within a user interface, such as within a virtual space 354 of a group-based communication system 356 as shown. In some embodiments, button 352 can be actuated by a user 358 of the group-based communication system. For example, in some embodiments, button 352 may be displayed in the context of a group-based communication system 356, such as within virtual space 354, so that user 358 can select button 352 from the user interface. In some embodiments, virtual space 354 includes a channel, a direct message channel, a collaborative document environment, a synchronous multimedia collaboration session, or any other suitable context of a group-based communication system. It should be understood that in some embodiments, button 352 may include one or more actionable options. For example, in some embodiments, button 352 includes a plurality of selectable options such that user 358 can actuate button 352 by selecting any one of the options. Thus, button 352 can initiate different actions based on which particular option is selected, as described in further detail below. Alternatively, in some embodiments, the button may include a single selectable option.
[0159] In some embodiments, when button 352 is actuated, it initiates workflow 360. In some such embodiments, workflow 360 can be initiated and executed from within group-based communication system 356. Further, embodiments are contemplated where workflow 360 is initiated within group-based communication system 356 but is at least partially executed within one or more external applications 362. In some embodiments, workflow 360 may be associated with webhook 364. For example, webhook 364 can be used to provide communication between group-based communication system 356 and one or more external applications 362. In some embodiments, one or more operations of workflow 360 can be executed by submitting an HTTP request via webhook 364. Further, embodiments are contemplated where workflow 360 can be initiated externally. For example, actuation of button 352 may cause an HTTP request to be sent to initiate workflow 360 within one or more external applications 362. In some embodiments, workflow 360 may provide one or more return values to button 352. For example, workflow 360 may send a confirmation response to button 352 verifying that workflow 360 has completed successfully. Alternatively, or additionally, in some embodiments, the return value sent from workflow 360 can include any of a confirmation response, an error display, or various additional information such as information obtained from one or more external applications 362. In some embodiments, button 352 may be updated at least partially based on these return values. In some embodiments, the state of button 352 or virtual space 354 may be changed based on the execution of workflow 360 or webhook 364. For example, button 352 may be visually and / or functionally altered based on the execution of workflow 360, as described in further detail below.
[0160] In some embodiments, it should be understood that the button 352 may initiate multiple workflows and functions. For example, in some embodiments, the button may be configured to initiate a first workflow that, upon completion, calls a second workflow. Alternatively, embodiments are contemplated where the actuation of the button initiates two or more workflows simultaneously. Thus, embodiments are contemplated where the button can be used to initiate any number of workflows either simultaneously or sequentially. In some embodiments, as described herein, the button 352 may include any of a graphical element, an image, a photograph, an icon, text, a video, additional selectable items, and the like. Further, in some embodiments, the actions described herein with respect to the button 352 may be performed using a separate interface object that is not included within the button, such as any of a graphical element, an image, a picture, an icon, text, a video, and a selectable item, as well as other interface objects.
[0161] In some embodiments, button-based initiation of Workflow 360 enables one or more context variables to be considered when starting and / or executing Workflow 360. For example, in some embodiments, when button 352 is actuated, it passes one or more context parameters to Workflow 360 so that at least one action of Workflow 360 can be contextually executed based on the context of button 352. In some embodiments, the context parameters include, for example, the display of virtual space 354 such as a channel identifier, a co-authoring document identifier, or a session identifier, and the display of one or more users such as the user identifier of user 358 who actuated button 352, or in some cases, the user identifier of the user who created or posted button 352 within virtual space 354. Thus, Workflow 360 can inherit the context of button 352 and be contextually executed based on this context. In some embodiments, one or more actions of Workflow 360 can be executed differently based on the context received from button 352. Therefore, starting a workflow using a button can provide multiple benefits such as performing the workflow contextually by considering the context parameters of the group-based communication system. However, it should be understood that button-based initiation of Workflow 360 is merely an example, and Workflow 360 may be initiated by any of a variety of other triggers as described above with respect to FIG. 3B.
[0162] [Button within Channel] Figure 4A shows a user interface 400 for an exemplary scenario according to some embodiments of the present invention. In some embodiments, the user interface 400 may be similar to the user interface 200 as described above and may include similar elements as shown. Further, in some embodiments, the user interface 400 may be displayed to a first user. In one example, the first user desires to generate a request button that is posted within a channel of a group-based communication system. Thus, the first user may generate the request button, for example, by typing in the compose pane 228 as shown. In some embodiments, the first user may use slash commands, shortcuts, and other suitable techniques not explicitly described herein to generate the request button. In some embodiments, the first user may begin typing the word "request" in the compose pane 228, which results in the display of a suggestion menu including a request creation shortcut.
[0163] In some embodiments, a request generation modal 402 including a text input 404 for adding a description to the request may be generated for display within the user interface 200 as shown. In some embodiments, the text input 404 includes a multi-line input that enables the user to input multiple lines of text, variables, or other characters, and combinations thereof. Further, in some embodiments, the request generation modal 402 includes an execute actuator 406 configured to activate the generated request button and a cancel actuator 408 configured to end the creation of the request button. In some embodiments, selection of the cancel actuator 408 closes the request generation modal 402 and returns to the previous page of the user interface 400. In some embodiments, selection of the execute actuator 406 posts a button associated within the context of a group-based communication system, such as within a channel.
[0164] Figure 4B shows a user interface 400 for a continuation of the exemplary scenario described above in connection with some embodiments of the present invention. In some embodiments, a user interface 400 as shown in Figure 4B may be presented to one or more other users, for example, after a first user selects the execution actuator 406 shown in Figure 4A. In some embodiments, the request button 410 may be posted within the channel as shown. Here, the request button 410 includes a description 412 of the request that may correspond to the text input 404 of Figure 4A. Further, in some embodiments, the description 412 further includes an indication of which user generated the request button 410 as shown. Further, in some embodiments, the request button 410 includes an approval option 414 and a rejection option 416. In some embodiments, the approval option 414 and the rejection option 416 may be presented only to one or more users having a particular approval authority. For example, an embodiment where only an administrator user can approve or reject a generated request is contemplated. In some embodiments, each of the approval option 414 and the rejection option 416 of the request button 410 is configured to initiate a workflow. For example, the approval option 414 may initiate an approval workflow, and the rejection option 416 may initiate a rejection workflow.
[0165] In some embodiments, the request button 410 may be associated with an external request application configured to handle request-related matters such as tracking the status of multiple requests. For example, a group-based communication system may interface with an external request application via an API that provides two-way communication between the group-based communication system and the external request application. Here, a request table that stores information about various requests and their statuses may be generated and updated by the external request application based on activities within the group-based communication system, such as when a user approves a request by selecting the approval option 414 of the request button 410. Alternatively, embodiments are conceivable in which the request table may be natively hosted by the group-based communication system. In some embodiments, the request table may be updated by a workflow initiated by the actuation of the request button 410, such as when a user selects either the approval option 414 or the rejection option 416.
[0166] Figure 4C shows a user interface 400 for an exemplary scenario of a further continuation described above in connection with some embodiments of the present invention. In some such embodiments, the request button 410 may be replaced with a request message 420, as shown. In some embodiments, the request message 420 may be generated at least partially based on information associated with the request button 410. For example, the request message 420 may include an indication of the user who submitted the button, as well as an indication of the user who pressed the button. For example, the request message 420 may replace the request button 410 within the channel after a second user selects the approval option 414. Thus, the request message 420 may include an indication of the second user, as well as an indication of the option selected by the second user.
[0167] In some embodiments, replacing the request button 410 with the request message 420 is an operation of the workflow initiated by the selection of the request button 410. For example, when the user selects the approval option 414, the approval workflow is initiated, the request button 410 is removed, and the request message 420 is generated based on the context information received from the request button 410.
[0168] [Button in the collaborative document] FIG. 5A shows an exemplary user interface 500 of a group-based communication system according to some embodiments of the present invention. In some embodiments, the user interface 500 includes a collaborative document 268 as shown. In one exemplary scenario, the collaborative document 268 is a new blank document edited via a group-based communication system interface. Thus, the user can start creating a button by using a slash command or, in some embodiments, by entering a comment 502 into the collaborative document 268 and typing an "@" within the collaborative document 268 as shown. Here, a shortcut menu 504 including a plurality of options for the user to select can be generated for display within the user interface 500. In some embodiments, the plurality of options of the shortcut menu 504 may include a workflow button option 506 for starting the creation of a workflow button within the collaborative document 268 as shown. Alternatively, or additionally, in some embodiments, the user can start creating a button using various other means. For example, in some embodiments, the button can be posted into the group-based communication system by copying and pasting, a drag-and-drop function, or other suitable posting methods. In some embodiments, the button may be included within a message posted in any of a channel, a direct message channel, or the collaborative document.
[0169] Figure 5B shows an exemplary user interface 500 for the above-described exemplary scenario according to some embodiments of the present invention. In some embodiments, selection of the workflow button option 506 causes the display of the button configuration modal 510, as shown. However, it should be understood that many other means of accessing the button configuration modal 510 are possible. For example, in some embodiments, the button configuration modal 510 may be accessed from a settings menu, a workflow builder tool, or other appropriate section of a group-based communication system.
[0170] In some embodiments, the button configuration modal 510 includes a workflow selection input 512, as shown, to enable the user to select a workflow associated with the button. In some embodiments, the workflow may be referenced using a webhook URL corresponding to the workflow. Alternatively, or additionally, in some embodiments, the workflow may be referenced using a workflow identifier for the workflow. In some embodiments, the button configuration modal 510 further includes a button label input 514, as shown, to receive the button label of the button. In some embodiments, the button label may be used as a button identifier to reference the button within a group-based communication system.
[0171] In some embodiments, the button configuration modal 510 further includes one or more workflow variable inputs 516, as shown. In some such embodiments, the workflow variable inputs 516 may enable the button to reference one or more variables associated with the workflow. In some embodiments, the button configuration modal 510 further includes one or more variable inputs 518, as shown. Here, the variable input 518 may enable the user to select a value corresponding to the selected workflow variable. Thus, the value may be passed between the button and the workflow, and vice versa. For example, the button may be configured to collect one or more variables associated with the context of the button or one or more user selections passed to the workflow such that the workflow can be executed based on the value received from the button. In some embodiments, the button configuration modal 510 includes any number of additional features or inputs for configuring the button.
[0172] The button configuration process has been described above using the exemplary button configuration modal 510, but it should be understood that in some embodiments, various other means of button configuration are also contemplated. For example, in some embodiments, button configuration may be accessed via a settings menu, a separate button configuration page, or a window displayed within the user interface 500 of a group-based communication system. In some embodiments, at least some of the inputs of the button configuration modal 510 may be automatically filled based on previous user selections. In some embodiments, the user can finalize the creation of the button by selecting a save option included within the button configuration modal 510.
[0173] In some embodiments, the button may be configured to include additional button parameters. For example, in some embodiments, the button may be associated with a predetermined expiration time. Here, a predetermined period may be set until the button posted in the group-based communication system becomes invalid. In one example, the button may be posted to a channel having a predetermined expiration time of 1 hour. Thus, the button remains in the channel for 1 hour after being posted. In this example, the button expires after 1 hour and can be automatically deleted. It should be understood that 1 hour is merely an example, and many other expiration times, such as 1 minute, 15 minutes, 1 day, 1 month, or any other period, are also conceivable. In some embodiments, the button may be manually deleted. For example, the user who posted the button or another user can select the button and select the delete option to delete the button from the context where the button was posted. In some embodiments, the delete option may be accessed, for example, by right-clicking on the button. However, various other operations may be performed to delete the button. Additionally, in some embodiments, the button may be generated or appear based on one or more given criteria within the group-based communication system, or other parameters such as the context parameters described herein. In some embodiments, additional button options are also conceivable. For example, in some such embodiments, the user may be able to selectively edit various parameters of the appearance and / or function of a given button. Further, the button may be permanent so that it does not expire after any period. In some embodiments, the user may be able to configure a predetermined period or set the button to be permanent. Further, in some embodiments, the button may be pinned within a channel, canvas, collaborative document, or other context of the group-based communication system so that it is not deleted. In some embodiments, the button may be configured to be deleted based on some event rather than a period.For example, the button may be configured to be deleted after being selected. In some embodiments, it should be understood that deleting the button refers to removing the button from the virtual space within the group-based communication system. However, the button may still be saved for later use such that it can be reposted to the same virtual space or within another context. Further, in some embodiments, a button that triggers the deletion of other linked or grouped buttons is contemplated. For example, in some embodiments, a first button may be associated with one or more other buttons within the group-based communication system. Here, the workflow may start from the first button that deletes one or more associated buttons. In one example, groups of buttons may be related, such as a group of buttons where each button contains mutually exclusive selection options for the user. Thus, when the user selects one of the buttons, all of the associated buttons may be automatically deleted so that the user cannot select two or more of the associated buttons.
[0174] One advantage of the buttons and workflows described herein is that the user can generate and configure them without having to hard-code various functions and parameters. For example, using the button configuration modal 510 or a similar builder tool interface, details about how the buttons and workflows are implemented within the group-based communication system can be selected. Thus, the user can configure the parameters of the buttons and associated workflows without code. However, it should be understood that in some embodiments, developer users may be able to configure the buttons and workflows using any combination of code and builder tools. Thus, both advanced developer users and standard users may be able to configure the buttons.
[0175] FIG. 5C shows a user interface 500 related to the exemplary scenario described above in connection with some embodiments of the present invention. In some embodiments, after a user configures a button, for example, by selecting a save option of the button configuration modal 510, a button 520 may be generated for display within the user interface 500 as shown. In some embodiments, button 520 may include the selected button label as shown. In this exemplary scenario, button 520 is a template construction button associated with a template construction workflow. For example, the template construction workflow may be a workflow previously configured to generate a particular type of document template within the collaborative document 268. In some embodiments, such a workflow may be associated with button 520 using the workflow webhook URL of the workflow. In some embodiments, button 520 may be inserted into the collaborative document 268 at a position corresponding to the comment 502 inserted by the user as shown.
[0176] Figure 5D shows a user interface 500 for an exemplary scenario described above in connection with some embodiments of the present invention. Here, after activation of button 520, as illustrated, a document template 530 may be automatically generated within the collaborative document 268. In some embodiments, various values of the document template 530 may be automatically filled based on data associated with the button selection. For example, in some embodiments, context values including the context position of button 520 within a group-based communication system, as well as additional values indicating the user who created the button and / or the user who selected button 520, may be collected as data values associated with the button. For example, in some embodiments, when a second user selects button 520, as illustrated, a document template 530 for the second user including the second user's username 532 may be automatically generated. Further, in some embodiments, the workflow associated with button 520 may be configured to automatically obtain one or more additional values 534 associated with the user using the user's user identifier. Thus, the values may be obtained from within a group-based communication system or from any number of external data sources.
[0177] The exemplary scenario described above refers to posting a button in a blank document to execute a workflow for generating a document template, but it should be understood that, for example, buttons can also be added to an existing document to automatically modify the document or automatically fill one or more input fields of a form. Further, buttons for reformatting a document or generating a copy of an existing document are contemplated. Further, in some embodiments, buttons for updating the state of an existing document are contemplated. For example, a button may initiate a workflow that updates the state of a document from an initial state to a document review state. Here, in some cases, the document review state provides review-related features such as track changes and review comments.
[0178] [Button within the resource channel] Figure 6A shows an exemplary user interface 600 of a group-based communication system according to some embodiments of the present invention. In some embodiments, the exemplary user interface 600 includes a resource channel page 602, as illustrated. Here, the resource channel page 602 may correspond to a specific channel of the group-based communication system. In some such embodiments, the channel may be a resource channel rather than a communication channel, as described above. Here, the resource channel may be configured to access one or more resources referenced within the group-based communication system. For example, in some embodiments, the resource channel page 602 includes one or more document buttons 604, as illustrated. In some such embodiments, each of the one or more document buttons 604 corresponds to a workflow for accessing or generating its respective associated document. For example, a career development button for generating or accessing an existing career development document may be included.
[0179] In the exemplary scenario of Figure 6A, the user selects one of the document buttons 604 from the resource channel page 602. For example, the user may select the career development button to generate a career development document template using the associated document template workflow. In some embodiments, selecting one of the document buttons 604 initiates document creation using a document template or accesses an existing document, as described in further detail below.
[0180] Figure 6B shows the user interface 600 for the following exemplary scenario as described above in connection with some embodiments of the present invention. Here, the document selection modal 610 can be generated for display within the exemplary user interface 600 as shown. Thus, the document selection modal 610 can include each of a new creation option 612 and an option 614 to search for all copies. In some such embodiments, the new creation option 612 may be configured to generate a new document template, while the option 614 to search for all copies may be configured to access one or more existing documents. Continuing with the above example, the selection of the career development button can provide the user with an option to generate a new career development document based on a document template or to access one or more previously created career development documents. Thus, embodiments are contemplated where the resource channel page 602 provides an environment for one or more users to access a plurality of related resources. For example, an administrator user can utilize the resource channel page 602 to compile a plurality of documents and other resources related to a particular user of a group-based communication system.
[0181] Figure 6C shows the user interface 600 for the following exemplary scenario as described above in connection with some embodiments of the present invention. Here, the document template settings modal 620 can be generated for display within the user interface 600 as shown. In some embodiments, the document template settings modal 620 may be displayed in response to the user selecting one of the document buttons 604 and further selecting the new creation option 612. In some embodiments, the document template settings modal 620 includes an employee selection input 622 for receiving an employee indicator and a team selection input 624 for receiving a team indicator. In some embodiments, the document template can be generated at least in part based on selections made within the document template settings modal 620.
[0182] In some embodiments, the document template setting modal 620 further includes a list of shortcuts details 626 corresponding to buttons and related workflows. In some embodiments, the list of shortcuts details 626 includes one or more details related to various operations of the workflow, as illustrated. For example, the list of shortcuts details 626 may include a description of one or more steps of the workflow, as well as other variables of the workflow. In some embodiments, the user can edit the workflow parameters within the document template setting modal 620. For example, the user may add, edit, or delete workflow steps, as well as set and change various other workflow variables. Further, when the user finishes editing the document template setting modal 620, the user can select the submit option of the document template setting modal 620. In some embodiments, the selection of the submit option initiates the execution of the workflow within the group-based communication system, as described in more detail below.
[0183] FIG. 6D shows a user interface 600 for a subsequent exemplary scenario described above in connection with some embodiments of the present invention. In some embodiments, after selecting the submit option from the document template setting modal 620, the workflow causes a document to be generated and posted within a specific communication channel of the group-based communication system. For example, in some embodiments, a document link 632 associated with the generated document may be automatically posted along with a message 634 within a direct message communication channel 630 with the user referenced within the employee selection input 622, as illustrated. In some embodiments, a document preview 636 can be generated for display on the user interface 600, showing a preview associated with the generated document.
[0184] FIG. 6E shows a user interface 600 for a continuation of the exemplary scenario described above in connection with some embodiments of the present invention. Here, an exemplary document 640 can be automatically generated based on a document template associated with a selected document button 604, as illustrated. For example, a corresponding workflow can include one or more steps for generating the document 640 and automatically populating various fields within the document 640. In some embodiments, the document 640 can be a collaborative document similar to that described above with respect to the collaborative document 268 such that the document 640 can be edited in real time by one or more separate users within a group-based communication system.
[0185] The exemplary document 640 can include any number of document components, such as an automatically generated data table 642, as illustrated. For example, the data table 642 can include user information obtained from a group-based communication system or from one or more external sources, such as an employee data application. For example, the workflow can be configured to obtain user information associated with a selected employee from WORKDAY or other external employee record services. In some embodiments, the document 640 further includes a self-assessment section 644, as illustrated. In some embodiments, the self-assessment section 644 enables a user to fill out and submit a self-assessment form. Embodiments are contemplated in which the generated document 640 includes one or more buttons. For example, in some embodiments, the self-assessment section 644 can be incorporated as one or more buttons linked to additional workflows for generating and submitting the self-assessment form.
[0186] In some embodiments, exemplary document 640 may further include a career goals section 646 that enables a user to input various different types of career goals, such as short-term, medium-term, and long-term goals, as illustrated. In some embodiments, career goals section 646 may be incorporated as a button that enables the generation of a career goals form for submission by the user to an external application such as WORKDAY. Further, exemplary document 640 may include an action plan section 648 that enables the user to define an action plan for achieving the user's selected career goals.
[0187] In some embodiments, each of the components and features within the automatically generated document 640 may be created by a workflow initiated by document button 604. For example, in some embodiments, as shown in FIG. 6A, each document button 604 is associated with a different workflow for generating a particular type of document. Accordingly, the corresponding workflow may include instructions for generating each respective document. For example, the career development document button may include instructions for generating each of data table 642, self-assessment section 644, career goals section 646, and action plan section 648.
[0188] It should be understood that the above examples of career development are merely examples, and for further embodiments of the present invention, various other types of buttons and documents are contemplated and considered. For example, document templates may be generated based on any combination of user-defined parameters. Accordingly, embodiments are contemplated in which users of a group-based communication system can create custom user-defined buttons and workflows for performing various operations within the group-based communication system as well as within other external applications.
[0189] [RSVP button] Figure 7A shows an exemplary user interface 700 according to some embodiments of the present invention. In some embodiments, the user interface 700 includes a channel pane 218 that includes any number of messages 222, reactions and reaction buttons 224, and thread reply previews 226, as illustrated. In one exemplary scenario, an RSVP button 702 is posted to the channel, as illustrated. Here, the RSVP button 702 may include a button message 704 that includes an explanation of the RSVP button 702. In some embodiments, the RSVP button 702 includes an acceptance option 706 and a decline option 708 that enable a user to accept an RSVP to an associated event from within the channel pane 218. In one example, a first user accepts an RSVP by selecting the acceptance option 706 of the RSVP button 702. In some embodiments, the RSVP button 702 may be posted in the channel using any of the techniques described herein for adding buttons, as well as various other suitable button generation techniques not explicitly described herein.
[0190] FIG. 7B shows a user interface 700 for a continuation of the above-described exemplary scenario according to some embodiments of the present invention. Here, in response to receiving a selection from a first user of the RSVP button 702, a replacement button 710 may be generated for display within the user interface 700. For example, the first user may select the acceptance option 706 and replace the RSVP button 702 with the replacement button 710, as illustrated. In some embodiments, the replacement button 710 includes a button message 712 that prompts the user to select from one or more button options 714, as illustrated. In this example, each of the button options 714 corresponds to an item of a corporate event associated with RSVP. Thus, after accepting RSVP, the user may be prompted to select an item to bring to the event. In some embodiments, as illustrated, certain button options may be grayed out to indicate that other users have already selected to bring those items. In some embodiments, the data table may be updated based on responses received from the RSVP button 702 and the replacement button 710, as described in further detail below. For example, additional embodiments may be contemplated where the user can select from other options, such as selecting a meal from the event menu. Further, selection options not explicitly described herein may also be contemplated. For example, in some embodiments, the user may be able to create manually customized buttons and workflows to provide various functions both inside and outside of a group-based communication system.
[0191] The replacement button 710 is described herein as replacing the RSVP button 702, although additional embodiments are contemplated where the replacement button 710 could be considered the same button. For example, rather than replacing the button, the state of the button may be changed such that one or more button parameters change. Here, the button may be changed from an initial state to any number of subsequent states. In some embodiments, a single button may have multiple different states based on which user is viewing the button. For example, the button may appear different to a user who has already selected the button compared to a user who has not selected the button. In some embodiments, the state of the button may be changed based on any of a variety of factors such as, for example, a workflow, an external trigger, or the user selecting the button.
[0192] FIG. 7C shows an exemplary data table 720 related to a continuing exemplary scenario described above in connection with some embodiments of the present invention. In some embodiments, the data table 720 may be included natively within a group-based communication system. Alternatively, in some embodiments, the data table 720 may be remotely accessed from one or more external sources. Further, in some embodiments, the data table 720 may be included as a table in a collaborative document such as the collaborative document 268 described above.
[0193] In some embodiments, the data table 720 may be generated and / or updated based on responses and selections received regarding buttons posted within a group-based communication system. For example, the data table 720 may include an RSVP data table corresponding to the corporate event described above. Accordingly, the data table 720 may include a first column 722 including an event identifier, a second column 724 including a guest identifier, a third column 726 including a response status, and a fourth column including an item identifier 728 indicating an item selected by each user to bring in. Thus, embodiments are contemplated in which the data table 720 is automatically generated, for example, by an event creation workflow. In some embodiments, the values within the table may be automatically updated by a workflow corresponding to the RSVP button 702 and the replacement button 710. For example, in some embodiments, the data table 720 may be automatically updated in response to receiving one or more selections from users within a channel. In some such embodiments, the corresponding workflow may be configured to automatically add additional rows to the data table 720 for each respective user.
[0194] Embodiments are conceivable in which buttons can be displayed differently for each user. For example, in some embodiments, the RSVP button 702 may be displayed only for users who have not yet responded. Further, the button options 714 of the replacement button 710 may be updated at least partially based on data from a data table. For example, if a user selects to bring an item by selecting the button option 714, these button options may be removed or grayed out when displayed to subsequent users. Thus, embodiments are conceivable in which button inputs can be configured to receive values from an external or natively stored data table or other data source. Further, embodiments are conceivable in which buttons can be displayed differently for each user based on the role of each user within a group-based communication system. For example, in some embodiments, additional information and button parameters may be visible to administrative users but not to standard users. Further, in some embodiments, actions performed by a related workflow may further depend on the role of the user within the group-based communication system or other user-specific parameters. For example, in some embodiments, the workflow may be enabled to perform an action based on the permissions of the user who selected the associated button. In one example, a button is posted within a channel and the workflow associated with the button is configured to create a new shared channel between the organization of the selecting user and other organizations. Thus, if the user selecting the button does not have the permission to create a shared channel, the workflow likewise cannot create a shared channel. However, if a user with the permission to create a shared channel selects the button, the shared channel is automatically generated. In some embodiments, if the workflow fails to perform an action based on permissions, a notification may be generated for the user.For example, in some embodiments, the button may be replaced with a notification message indicating that the workflow did not create a channel because the user did not have access.
[0195] Embodiments are contemplated that include any number of additional types of data tables. For example, in some embodiments, the button may be associated with a specific data table for recording which user selected the button or, in contrast, which user did not select the button. Thus, in some embodiments, the button may be displayed for each user based on information such as user interactions with the button stored in a data table, data store, or some other storage mechanism.
[0196] FIG. 7D shows an exemplary user interface 700 related to a continued exemplary scenario described above in connection with some embodiments of the present invention. In some embodiments, after the user responds to the RSVP, the RSVP button 702 and the replacement button 710 may be replaced with a response message 730. Here, the response message 730 may be generated for each user such that different response messages are displayed for each respective user, based at least in part on the user's response to the RSVP. For example, the response message 730 may include a description 732 indicating the user's response (accept or decline) to the RSVP. In some embodiments, as shown, an RSVP edit button 734 may be included within the user interface 700, enabling the user to edit their response after it has been submitted. For example, the user may initially accept the RSVP but, based on a scheduling conflict, change their response to decline. In some such embodiments, the RSVP edit button 734 enables the user to update and change values stored within the data table 720. For example, the user may change their response or change the item selected.
[0197] [Button Directory] Figure 8 shows an exemplary user interface 800 associated with a button directory according to some embodiments of the present invention. In some embodiments, the user interface 800 may include a button page 802 that can be generated for display as part of the user interface 800, as shown. In some embodiments, the button directory can be used for any of constructing new buttons, editing existing buttons, importing existing buttons, or selecting buttons to be posted or placed at various locations and contexts within a group-based communication system. Further, in some embodiments, the button directory provides a space for the user to curate a list of available buttons.
[0198] In some embodiments, the user interface 800 includes an available buttons tab 804 and a button template tab 806, as shown. Here, the available buttons tab 804 may be used for the user to select and edit existing available buttons. For example, the user may select the available buttons tab 804 that generates a list of available buttons 808 available for user selection or editing, as shown. In some embodiments, the available buttons 808 may include, for example, buttons described herein such as the RSVP button 702, the template construction button 520, and the request button 410, as well as any combination of other buttons not explicitly described herein. For example, in some embodiments, a message post button for automatically posting a message within a certain channel when pressed may be included. It should be understood that any number of additional buttons corresponding to custom workflows and pre-configured workflows are also contemplated.
[0199] Furthermore, in some embodiments, additional buttons such as a help button are envisioned, for example, as shown. In some embodiments, a help button may be posted within the context of a group-based communication system to submit a help request. In some such embodiments, the help button, when selected, may initiate a help request workflow. For example, the help request may be configured to generate a help ticket that can be sent to one or more users such as a customer service representative or an information technology expert. In some embodiments, the help ticket may be supplemented with context information automatically obtained based on the context of the button. For example, if a user selects a help button from within a channel associated with a particular type of project, the help ticket may be routed to appropriate personnel to assist the user with that particular project. In one example, a particular user may be designated as a help source for a particular channel, and help tickets generated from the help button of that channel are routed to that particular user. In some embodiments, the help ticket may be automatically posted as a direct message to a particular user.
[0200] Embodiments that may include shortcut buttons are conceivable. In some such embodiments, the shortcut buttons may be configured to provide access to some type of resource from within a group-based communication system. For example, in some embodiments, the shortcut may be used to provide quick access to a specific channel within a group-based communication system, or some other resource posted within the group-based communication system. Further, embodiments are conceivable in which external resources can be accessed using the shortcut buttons. For example, the button can invoke a workflow for accessing a hyperlink to an external resource such as an external web page, file, or video. In some embodiments, the shortcut buttons may include a preview associated with the corresponding resource.
[0201] Furthermore, embodiments can be contemplated in which buttons may be included to update a channel or create a new channel within a group-based communication system. For example, a copy channel button for generating a new copy channel based on an existing template channel can be contemplated. Here, the copy channel button may be posted within a channel that is desired to be copied and used as a template. Thus, the button obtains the context of a template channel that includes various channel parameters such as the channel owner, members of the channel, and the organization of the channel. In some embodiments, the channel parameters are automatically applied within the newly created channel generated in response to the activation of the button. In some embodiments, the user who selects the button can be automatically set as the channel owner. Alternatively, in some embodiments, existing channel members from the template channel can automatically receive an invitation to the newly created channel. Furthermore, in some embodiments, the copy channel button may be converted to a join channel button that enables a user to join the new channel after the new channel is created. Additionally, in some embodiments, such buttons may be displayed or activated only by a certain user. For example, in some embodiments, the button can be activated only by a user who has the right to create a new channel. Thus, buttons can be contemplated that obtain various additional context parameters and pass these additional context parameters to one or more initiated workflows. For example, it should be understood that additional buttons can be contemplated for creating a new virtual space. For example, a button posted within a first virtual space may be associated with a workflow for creating a second virtual space, and the workflow may be any of a direct message, a channel, a co-authoring document, or a collaboration session.
[0202] In some embodiments, the button template tab 806 may be used to access one or more preconfigured button templates. The preconfigured button templates may be used to generate new buttons based on the preset button templates. In some embodiments, a custom button may be added as a template so that the user can select an existing button as a template, fine-tune various parameters for the existing button, and create a new modified button. In some embodiments, the user may be able to edit or modify existing buttons, for example, by changing the workflow associated with each button.
[0203] In some embodiments, the user interface 800 may be configured to display one or more buttons stored in a button directory that includes all buttons associated with the user. For example, in some embodiments, any button used or created within an organization of a given user may be included within the button directory. In some embodiments, the user interface 800 further includes an import option 810 configured to import existing buttons from some external source. For example, the import option 810 may be used to import buttons from other organizations or workspaces. In some embodiments, the user interface 800 further includes a creation option 812 that may be used to create new buttons. In some embodiments, selection of the creation option 812 results in the display of a button configuration modal, such as the button configuration modal 510 shown in FIG. 5B.
[0204] In some embodiments, buttons can be copied and pasted within various contexts of a group-based communication system. For example, a user can copy a button from a button page and paste the button into a channel, a canvas, a collaborative document, or a direct message channel. Further, embodiments are contemplated in which buttons can be directly copied and pasted between two different contexts. For example, a button can be copied from one channel and posted within another channel. Similarly, in some embodiments, a button can be copied from a channel and posted within a collaborative document or any other suitable context within the group-based communication system. Further, in some embodiments, buttons can be dragged and dropped into various contexts within the group-based communication system. For example, in some embodiments, a button can be accessed from a shortcut menu or a sidebar and then selected and dragged to a desired context such as a channel or a collaborative document.
[0205] In some embodiments, the button page 802 further enables a user to access and modify the workflow itself. For example, in some embodiments, the button page 802 enables a user to edit, delete, and add workflow steps to the workflow associated with a given button. In some embodiments, by changing a workflow step, a workflow copy of the enhanced workflow can be generated such that the workflow is not affected in other places within the group-based communication system and is changed only with respect to a particular button.
[0206] In some embodiments, the button can be configured immediately before posting within a group-based communication system. Further, in some embodiments, the button can be pre-setup and configured. Accordingly, multiple buttons and button templates can be stored within a button directory as described herein. Further, in some embodiments, the button can be pre-configured, stored in the button directory, and then further edited immediately before being posted. For example, the button configuration modal 510 can be presented to the user before the button is posted such that the user can edit various parameters of the button (and in some embodiments, the associated workflow) before posting.
[0207] In some embodiments, a personalized button directory or button library may be generated for each user of a group-based communication system. Here, the personalized button directory may be automatically generated based on previous user activity or may be manually customized by the user. For example, in some embodiments, the button library may be accessible to each user and may include a list of buttons that each user has recently used. Further, in some embodiments, the user may be able to manually customize the button library by adding and removing buttons. For example, the user may be able to add a button to and / or remove a button from a list of available buttons 808. Thus, embodiments are contemplated where a personally customizable button directory is provided to and stored for each user. For example, in some embodiments, the personalized button directory may be stored within a data store associated with the group-based communication system. In some embodiments, machine learning can be used to propose buttons for placement in a given context from a user's button library. Similarly, machine learning can be employed to propose configuration parameters when constructing the placed buttons based on previous placements of the placed buttons (or other buttons) by the user (or other users).
[0208] [Context Automation] FIG. 9A shows an exemplary method 900A for context automation within a group-based communication system according to some embodiments of the present invention. In some embodiments, any number of the steps described herein may be performed using a variety of different suitable techniques. For example, in some embodiments, one or more steps of method 900A may be performed using a processor to execute computer-readable instructions stored on a computer-readable medium. Further, in some embodiments, the processing may be divided, for example, such that a first processor performs a first portion of the step and a second processor performs a second portion of the step.
[0209] In step 902, a button creation input is received. In some embodiments, the button creation input may be received within the virtual space of the group-based communication system. For example, the button creation input may be received within the context of a particular channel or a particular collaborative document. In some embodiments, the button creation input includes user selection, for example, the user typing a slash command, selecting a button from a shortcut menu, or selecting a button from within a button directory. However, it should be understood that many additional means of receiving the button creation input are also conceivable. In some embodiments, various parameters of the button may be configured as part of the button creation input. For example, the user may select one or more workflows associated with the button, as well as other button parameters such as values passed to the workflow.
[0210] In step 904, based on the received button creation input, buttons can be displayed within the virtual space. In some embodiments, displaying buttons within the virtual space includes displaying buttons within a specific channel, a collaborative document, or other suitable context within a group-based communication system. In some embodiments, the buttons may be posted and displayed within any of a channel, a document, a direct message, a canvas, or a communication session. For example, in some embodiments, the buttons may be shared and persisted within the context of a synchronous multimedia collaboration session such that users participating in the synchronous multimedia collaboration session can select the buttons.
[0211] In some embodiments, the buttons can be displayed at least partially based on the context of the virtual space. Further, in some embodiments, the buttons can be displayed at least partially based on the associated workflow tied to the buttons. Thus, embodiments are contemplated where at least one display parameter of the buttons is determined based on data received from the context of the virtual space and the associated workflow. For example, in some embodiments, based on the channel where the button is posted, a button display theme can be selected for the button. Thus, the theme of the button can be configured to reflect the theme of the context in which the button is persisted within the group-based communication system. In some embodiments, such a theme can determine display parameters such as, for example, the border size, border shape, and border color for the button, as well as the font, font size, and font color. Further, embodiments are contemplated where one or more selection options of the buttons can be determined based on the context of the virtual space. For example, in some embodiments, a monthly outstanding employee voting button is contemplated. Here, the voting button can be configured to automatically obtain and display each of the channel member names as selection items for the voting button.
[0212] Additional buttons that can be displayed based on specific context parameters are conceivable. In some embodiments, the selection options for the buttons can be determined and displayed based on channel parameters such as, for example, the associated location. For example, if a specific channel is associated with the geographical location of a physical office, the selection options can be determined based on the geographical location. Thus, in some embodiments, a lunch vote button that automatically provides selection options for caterers near the geographical location associated with a specific channel of a group-based communication system is conceivable.
[0213] In some embodiments, one or more display parameters of the buttons may be determined based at least in part on the associated workflow of the buttons. For example, in some embodiments, the display of the buttons may change according to the progress of the associated workflow. Here, the initial display of the buttons may be updated during the execution of the workflow or may be updated again after the workflow is completed. Further, embodiments are conceivable in which the markers of the workflow can be displayed together with the buttons in the virtual space.
[0214] In step 906, the activation of the button is received. In some embodiments, the activation is received from the user, for example, by the user clicking, tapping, or otherwise selecting a button in the virtual space. It should be understood that the buttons described herein can include multiple components. For example, in some embodiments, the button can include any combination of button descriptions with various selectable options. Further, in some embodiments, the button may be extensible such that various additional information and selection options are presented after the activation of the button or the interaction with the button.
[0215] Further embodiments are contemplated in which the button can be automatically actuated. For example, the button can be actuated using a workflow. In some embodiments, the button can be actuated based on any number of internal and external triggers. For example, an external application can use a webhook or API to actuate a button within a group-based communication system. Further, the button can be actuated by triggering an event from within a group-based communication system, such as by any combination of user interaction or automation. For example, embodiments are contemplated in which the button is actuated based on a user viewing a button within a display associated with a group-based communication system. Further, in some embodiments, the button can be actuated based on, for example, a user sending a message or some other internal event within a group-based communication system.
[0216] In step 908, one or more context parameters are obtained. In some embodiments, the context parameters can be obtained in response to receiving the actuation of the button. In some embodiments, the context parameters include a user identifier associated with a particular user and a context identifier associated with the virtual space in which the button persists. Further, in some embodiments, more than one user identifier may be obtained. For example, the user identifier of the user who actuated the button, as well as the user identifier of the user who created or posted the button within the virtual space, may be obtained.
[0217] In step 910, a workflow related to the button is started. In some embodiments, the workflow may be started in response to the activation of the button. Further, in some embodiments, the workflow may be executed contextually such that at least one workflow operation is performed based on one or more context parameters. For example, in some embodiments, the workflow operation may be executed based on the obtained user identifier and / or context identifier. In one example, a channel identifier associated with the channel where the button was posted is passed to the workflow and may be used within at least one step of the workflow. For example, the workflow may be configured to post a message within that channel or share a document link within the channel to an automatically generated document associated with the workflow. It should be understood that this is only one example of a use case for a context workflow and that various other context applications are also possible. For example, the workflow may be configured to perform operations based on a specific user identifier associated with the button.
[0218] Furthermore, embodiments are also contemplated where additional information can be obtained based on context parameters. For example, user information may be obtained based on the user identifier from various internal or external data sources. In one example, the workflow may be configured to obtain user information associated with the user who clicked a button within a virtual space and add this user information to a document or data table.
[0219] In some embodiments, the operation of the workflow may include any combination of internal operations and external operations. The internal operations include steps performed within a group-based communication system, and the external operations include steps performed on one or more external applications or services. For example, a single workflow may include a first portion of steps performed natively within a group-based communication system and a second portion of steps performed within an external application. Further, workflows that are fully hosted within a group-based communication system or fully executed on one or more external sources may be included. In one example, a workflow may be initiated from within a group-based communication system, for example, by a user selecting a button, but the operation of the workflow may be performed elsewhere on an external application, such as updating values in an external remote data table. In some embodiments, enabling the workflow to be implemented both internally and externally allows users to achieve various functions without having to incorporate or create a dedicated application. For example, in some cases, when a dedicated application is used to perform an action based on information received from a group-based communication system, the combination of the button and the workflow may be sufficient to achieve the same function without the need to generate a completely separate application. Further, by using context buttons to trigger the workflow, it becomes possible for users to trigger activities outside of the group-based communication system interface without having to exit the group-based communication system interface.
[0220] Figure 9B shows an exemplary continuation method 900B according to some embodiments of the present invention. In some embodiments, the steps of method 900B may optionally be included after method 900A described above. For example, in some embodiments, after starting a workflow at step 910, a completion confirmation can be received at step 912. In some such embodiments, the completion confirmation may be associated with the completion of the started workflow. For example, the completion confirmation may be submitted in response to a determination that one or more operations of the workflow have been executed successfully.
[0221] At step 914, the button can be updated within the virtual space. In some embodiments, updating the button may include, as described above, replacing the button with a message or another button, removing the button, or changing various aspects of the button based on a completion confirmation from the workflow. For example, in some embodiments, the description or selection options of the button may be automatically changed based on the workflow or other external information. For example, in some embodiments, the selection options of the button may be updated based on information from a data table stored natively or externally.
[0222] Embodiments are contemplated in which a user may be able to share a workflow by posting a button within a group-based communication system. For example, if a first user wishes to share a given workflow with a second user, the first user may paste a button associated with the workflow within a direct message to the second user. Thus, the second user can copy and paste the button for later use or select the button to activate the workflow. Alternatively, if the first user wishes to share the workflow with a plurality of other users, the button may be posted within a channel of the group-based communication system. Thus, the button provides an additional means of sharing the workflow within the group-based communication system.
[0223] Although various embodiments of the invention have been described, what is desired to be claimed as new and protected by letters patent is what is recited in the claims.
Claims
1. One or more non-transitory computer-readable media storing computer-executable instructions that, when executed by at least one processor, perform a method of context automation within a group-based communication system, the method comprising: causing a display of a workflow button within a virtual space of the group-based communication system for a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space; receiving an activation of the workflow button from the user; receiving a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space, in response to the activation of the workflow button; initiating an associated workflow associated with the workflow button to perform one or more automated actions based on the plurality of context parameters; receiving a response indicating completion of the associated workflow; updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow. One or more non-transitory computer-readable media.
2. The method further comprises: initiating an additional workflow for performing one or more additional actions in response to performing one of the one or more automated actions; receiving a completion confirmation associated with the additional workflow; performing further ones of the one or more automated actions that depend on the completion confirmation associated with the additional workflow. The one or more non-transitory computer-readable media of claim 1.
3. The method further comprises: In response to performing one of the one or more automated operations, causing a new workflow button to be displayed within the virtual space, the new workflow button being further configured to initiate an additional workflow. One or more non-transitory computer-readable media according to claim 1. **Claim 4** The method comprises: In response to performing one of the one or more automated operations, creating a second virtual space based on the plurality of context parameters within the virtual space, the second virtual space including a direct message, a channel, a co-authored document, or a collaboration session. One or more non-transitory computer-readable media according to claim 1. **Claim 5** The method comprises: Causing the workflow button to be displayed within the second virtual space to a second user of the group-based communication system, at least one display parameter of the workflow button within the second virtual space being different from the at least one display parameter within the virtual space. In response to the actuation of the workflow button within the second virtual space, obtaining the plurality of context parameters associated with the actuation of the workflow button, including a second user identifier associated with the second user and a second context identifier indicating the second virtual space. Determining a second workflow for the workflow button based on the workflow button and the plurality of context parameters, the second workflow being different from the associated workflow. Initiating the second workflow. One or more non-transitory computer-readable media according to claim 1. **Claim 6** The method comprises: In response to performing one of the one or more automated operations, storing information indicating a first context parameter among the plurality of context parameters at a storage location determined based on a second context parameter among the plurality of context parameters. One or more non-transitory computer-readable media according to claim 1. **Claim 7** The method comprises further updating the virtual space to reflect the actuation by the user of the workflow button in response to performing one of the one or more automated operations One or more non-transitory computer-readable media according to claim 1. **Claim 8** A method for context automation within a group-based communication system, the method comprising: causing a display of a workflow button within a virtual space of the group-based communication system for a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space; receiving an actuation of the workflow button from the user; receiving a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space, in response to the actuation of the workflow button; initiating an associated workflow associated with the workflow button to perform one or more automated operations based on the plurality of context parameters; receiving a response indicating completion of the associated workflow; updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow. **Claim 9** initiating an additional workflow for performing one or more additional operations in response to performing one of the one or more automated operations; receiving a completion confirmation associated with the additional workflow; performing a further one of the one or more automated operations that depends on the completion confirmation associated with the additional workflow. The method according to claim 8. **Claim 10** In response to performing one of the one or more automated operations, causing a new workflow button to be displayed within the virtual space, wherein the new workflow button is configured to initiate an additional workflow, further comprising The method according to claim 8.
11. In response to performing one of the one or more automated operations, creating a second virtual space based on the plurality of context parameters within the virtual space, wherein the second virtual space includes direct messages, channels, collaborative documents, or collaboration sessions, further comprising The method according to claim 8.
12. Causing the workflow button to be displayed within the second virtual space to a second user of the group-based communication system, wherein at least one display parameter of the workflow button within the second virtual space is different from the at least one display parameter within the virtual space, and In response to the actuation of the workflow button within the second virtual space, obtaining the plurality of context parameters associated with the actuation of the workflow button, including a second user identifier associated with the second user and a second context identifier indicating the second virtual space, and Based on the workflow button and the plurality of context parameters, determining a second workflow for the workflow button, wherein the second workflow is different from the associated workflow, and Initiating the second workflow, further comprising The method according to claim 8.
13. In response to performing one of the one or more automated operations, storing information indicating a first context parameter among the plurality of context parameters at a storage location determined based on a second context parameter among the plurality of context parameters, further comprising The method according to claim 8.
14. In response to performing one of the one or more automated operations, further comprising updating the virtual space to reflect the actuation of the workflow button by the user, The method according to claim 8.
15. A system comprising at least one processor and at least one non-transitory memory storing computer-executable instructions that, when executed by the at least one processor, perform a method for context automation within a group-based communication system, the method comprising: causing a display of a workflow button within a virtual space of the group-based communication system to a user of the group-based communication system, wherein at least one display parameter of the workflow button is determined based on a context associated with the virtual space; receiving an activation of the workflow button from the user; receiving a plurality of context parameters associated with the workflow button, including a user identifier associated with the user and context data associated with the virtual space, in response to the activation of the workflow button; initiating an associated workflow associated with the workflow button to perform one or more automated actions based on the plurality of context parameters; receiving a response indicating completion of the associated workflow; updating the workflow button within the virtual space of the group-based communication system based on the received response indicating completion of the associated workflow. System.
16. The method further comprises: initiating an additional workflow for performing one or more additional actions in response to performing one of the one or more automated actions; receiving a completion confirmation associated with the additional workflow; performing a further action of the one or more automated actions that depends on the completion confirmation associated with the additional workflow. The system according to claim 15, further comprising:
17. The method further comprises: In response to performing one of the one or more automated operations, causing a display of a new workflow button in the virtual space, the new workflow button being configured to initiate an additional workflow, further comprising The system of claim 15. **Claim 18** The method comprises In response to performing one of the one or more automated operations, creating a second virtual space based on the plurality of context parameters in the virtual space, the second virtual space including direct messages, channels, co-authored documents, or collaboration sessions, further comprising The system of claim 15. **Claim 19** The method comprises Causing a display of the workflow button in a second virtual space to a second user of the group-based communication system, at least one display parameter of the workflow button in the second virtual space being different from the at least one display parameter in the virtual space, and In response to the actuation of the workflow button in the second virtual space, obtaining the plurality of context parameters associated with the actuation of the workflow button, including a second user identifier associated with the second user and a second context identifier indicating the second virtual space, and Based on the workflow button and the plurality of context parameters, determining a second workflow for the workflow button, the second workflow being different from the associated workflow, and Initiating the second workflow, and further comprising The system of claim 15. **Claim 20** The method comprises In response to performing one of the one or more automated operations, storing information indicating a first context parameter of the plurality of context parameters at a storage location determined based on a second context parameter of the plurality of context parameters, further comprising The system of claim 15.