Collaboration Software Development Kit
The integration of a collaboration instance controller with group-based communication systems allows secure access to third-party applications, addressing the limitations of existing systems by enhancing collaboration capabilities and user access control.
Patent Information
- Application Number
- JP2024538730
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-12-31
- Filing Date
- 2022-12-13
- Publication Date
- 2025-01-09
- Estimated Expiration
- 2042-12-13
AI Technical Summary
Existing group-based collaboration systems often restrict access to their tools and features, making it difficult for third-party applications to integrate securely and effectively with these systems, limiting the availability of additional functionalities.
A system and method for integrating third-party applications with group-based communication systems by initializing a collaboration instance controller, determining access rights, and securely transmitting relevant objects based on user permissions, allowing seamless access to group-based communication system objects.
Enables secure and efficient integration of third-party applications within group-based communication systems, providing users with enhanced functionalities and improved collaboration experiences while maintaining data security and user access control.
Smart Images

Figure 2025500539000001_ABST
Abstract
Description
[Background technology]
[0001] Group-based collaboration systems allow users to interact and collaborate to provide high levels of efficiency and creativity. These group-based communication systems provide a variety of tools for synchronous and asynchronous working, enabling organizations to work effectively both in person and remotely. However, these tools may not be accessible to users outside the group-based collaboration system. Additionally, third-party integrations may provide tools not available within the group-based communication system that can benefit from access to objects within the group-based communication system. Thus, there is a need for a method to enable third-party integrations and other third-party applications to securely access objects from the group-based communication system. Summary of the Invention
[0002] Embodiments of the present invention solve the above-mentioned problems by providing a system, method, and computer-readable medium for collaboration in a group-based communication system via third-party integration. In some embodiments, the group-based communication system receives a request from a third party to initialize a collaboration instance controller. The request may include configuration settings and information regarding access rights associated with a user of the group-based communication system, such as login information for the user of the group-based communication system. If the information is accepted, the group-based communication system may initialize the collaboration instance controller and provide it to the third party. Through the collaboration instance controller, the third party may request an object in the group-based communication system. If it is determined that the access rights provide access to the requested object, the object may be sent to the third party.
[0003] A first embodiment of the present invention is directed to one or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via integration, the method including the steps of receiving a first request from an integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the integration via the new collaboration instance controller for one or more group-based communication system objects associated with the user; determining based on the indicia of access rights that the integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the integration.
[0004] A second embodiment of the present invention is directed to a method for collaboration in a group-based communication system via integration, the method including the steps of receiving a first request from an integration to initialize a new collaboration instance controller, the first request including configuration settings and access right indicia to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the integration via the new collaboration instance controller for one or more group-based communication system objects associated with the user; determining based on the access right indicia that the integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the integration.
[0005] A third embodiment of the present invention is directed to a system for collaboration in a group-based communication system via integration, the system comprising a data store associated with the group-based communication system and a processor programmed to execute a method for collaboration in a group-based communication system via integration, the method including the steps of receiving a first request from the integration to initialize a new collaboration instance controller, the first request including configuration settings and an indicia of access rights to objects associated with a user of the group-based communication system, initializing the new collaboration instance controller based on the configuration settings, receiving a second request from the integration via the new collaboration instance controller for one or more group-based communication system objects associated with the user, determining based on the indicia of access rights that the integration has permission to access the one or more group-based communication system objects, and sending the one or more group-based communication system objects to the integration.
[0006] Additional embodiments of the present invention are directed to a machine learning model for determining one or more suggested triggers for a user based on user activity within a group-based communication system, where the machine learning model is trained using historical user data associated with the group-based communication system. In some such embodiments, the training of the machine learning model may be periodically updated based on use of triggers and automated workflows within the group-based communication system such that the accuracy of the suggestions improves over time.
[0007] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the 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. [Brief description of the drawings]
[0008] Embodiments of the present invention are described in detail below with reference to the accompanying drawings. [Figure 1A] 1 illustrates an exemplary hardware platform associated with certain embodiments of the present invention. [Figure 1B] FIG. 1 shows a system diagram including elements for carrying out certain embodiments of the present invention. [Diagram 2] 1 illustrates an example embodiment of a user interface for a group-based communication system for displaying documents. [Diagram 3] 1 illustrates a system architecture associated with some embodiments of the present invention. [Figure 4] 1 illustrates a user interface associated with some embodiments of the present invention. [Diagram 5] 1 shows a flow chart for some embodiments of the present invention. [Figure 6] FIG. 1 illustrates an exemplary system architecture diagram.
[0009] The drawings are not intended to limit the invention to the specific embodiments disclosed and described herein. The drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the invention. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Background and Concept of the Invention As used herein, the term "group-based communication system" refers to a collaborative communication system used within an organization, different from a traditional email system. In some embodiments, the group-based communication system is a channel-based platform. Within a group-based communication system, communications may be organized into "channels," each dedicated to a particular topic or set of users. A channel is generally a long-running, self-sufficient discussion of a particular topic. Members of a particular channel may post messages in that channel that are visible to other members of that channel, along with other messages in that channel. A user may select a channel to browse in order to see only those messages related to that channel's topic, without seeing messages posted in other channels on different topics. For example, a software development company may have different channels for each software product being developed, allowing developers working on each particular project to converse without bothering (or being bothered by) developers working on other projects. Because channels are generally persistent and targeted to a particular topic or group, users can quickly and easily refer to previous communications for reference.
[0011] In some embodiments, the group-based communication system may include synchronous multimedia collaboration sessions. The synchronous multimedia collaboration sessions may provide ambient, ad-hoc multimedia collaboration in the group-based communication system. Users of the group-based communication system may quickly and easily join and leave these synchronous multimedia collaboration sessions at any time without interrupting the synchronous multimedia collaboration session for other users. In some embodiments, the synchronous multimedia collaboration sessions may be centered around a particular topic, a particular channel, or set of users, and in other embodiments, the synchronous multimedia collaboration sessions may exist without being tied to any particular channel, topic, or set of users. The synchronous multimedia collaboration sessions may be short, temporary sessions where no data is persisted. Alternatively, in some embodiments, the synchronous multimedia collaboration sessions may be recorded, transcribed, and / or summarized for later review. Members of a particular synchronous multimedia collaboration session may post messages in a messaging thread associated with that synchronous multimedia collaboration session that are visible to other members of that synchronous multimedia collaboration session along with other messages in that thread. The "multimedia" in a synchronous multimedia collaboration session may include any or all of audio, video, screen sharing, collaborative document editing, whiteboarding, collaborative programming, or any other form of media. A synchronized multimedia collaboration session may be initiated for a particular channel or direct message conversation by one or more members of that channel or direct message conversation. For example, a user may initiate a synchronized multimedia collaboration session in a channel as a means of communicating with other members of that channel who are currently online.A user may make urgent decisions and desire immediate verbal feedback from other members of the channel. By initiating a synchronous multimedia collaboration session, a user can initiate an immediate audio conversation with other members of the channel without the need for scheduling.
[0012] Communication data in the group-based communication system may include messages, queries, files (e.g., documents, spreadsheets, computer code, images, video, audio, and / or electronic contact information), mentions, users or user profiles, interactions (e.g., reactions, edits, deletions, and / or prioritization by pinning or starring, etc.), tickets, channels, applications integrated into one or more channels, conversations (e.g., a group of messages segmented as a single unit), workspaces (e.g., a set of channels, users, projects, tasks within an organization that may have its own set of permissions and in some cases may be organized substantially consistent with an organizational chart), or other data generated by or shared among users of the group-based communication system that are associated with the organization's communication data using the group-based communication system.
[0013] In some instances, the communication data may include data associated with the user (e.g., a user profile), including but not limited to a user identifier, one or more communication channel identifiers associated with communication channels to which the user has been given access, one or more group identifiers for groups (or organizations, teams, entities, etc.) with which the user is associated, an indication of whether the user is an owner or administrator of any communication channels, an indication of whether the user has any communication channel restrictions, messages, emojis, conversations, conversation topics, avatars, email addresses, real names (e.g., Austin Author), usernames (e.g., austin_a), passwords, user preferences and / or settings, time zones, statuses, tokens, and other user-specific information. 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. In some embodiments, the permissions associated with individual users may be mapped or otherwise associated with an account or profile associated with the user data. Permissions may indicate, for example, which users may communicate directly with other users, which channels users are permitted to access, restrictions on individual channels, which workspaces users are permitted to access, and restrictions on individual workspaces. In some embodiments, permissions may support a group-based communication system by maintaining security to limit access to defined groups of users. In some such embodiments, such users may be defined by common access credentials, group identifiers, or other criteria, as described above.
[0014] In some embodiments, the group-based communication system may be partitioned into different workspaces that may be associated with different user groups. Each workspace may be associated with a group identifier, and one or more user identifiers may be mapped to or otherwise associated with the group identifier. A user corresponding to such a user identifier may be referred to as a "member" of the group. A workspace may include one or more channels that are specific to that workspace and / or one or more channels that are shared among one or more workspaces. In some embodiments, a workspace may be associated with one or more organization identifiers, and the organization identifiers may be associated with organizations or other entities associated with the group-based communication system. In some embodiments, such data may be mapped to or otherwise associated with other types of data (e.g., user data, permission data, or channel data).
[0015] The subject matter of the present invention is described in detail below to meet statutory requirements. However, the description itself is not intended to limit the scope of the claims. Rather, the claimed subject matter may be embodied in other ways to include different steps or combinations of steps similar to those described in this document, in conjunction with other current or future technologies. Slight variations from the following description are understood by those skilled in the art and are intended to be captured within the scope of the claimed invention. The terms should not be construed as implying any particular ordering of the various steps described, unless the order of the individual steps is explicitly described.
[0016] The following detailed description of the embodiments of the present invention refers to the accompanying drawings, which show specific embodiments in which the invention may be practiced. The embodiments are intended to describe aspects of the present 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. Therefore, the following detailed description is not to be taken in a limiting sense. The scope of the embodiments of the present invention is defined only by the appended claims, along with the full scope of equivalents to which such claims are entitled.
[0017] In this description, a reference to "one embodiment," "an embodiment," or "embodiments" means that one or more features being referenced are included in at least one embodiment of the technology. Separate references to "one embodiment," "an embodiment," or "embodiments" in this description do not necessarily refer to the same embodiment, nor are they mutually exclusive, unless so stated and / or readily apparent to one of ordinary skill in the art from the description. For example, a feature, structure, or operation described in one embodiment may, but is not necessarily, included in other embodiments. Thus, the technology can include various combinations and / or integrations of the embodiments described herein.
[0018] Operating Environment for the Present Invention FIG. 1A illustrates an exemplary hardware platform for certain embodiments of the present invention. The computer 102 can be a desktop computer, a laptop computer, a server computer, a mobile device such as a smartphone or tablet, or any other form factor of a general purpose or special purpose computing device. For illustrative purposes, several components are shown with the computer 102. In some embodiments, certain components may be located differently or may not be present. Additional components may be present. The computer 102 includes a system bus 104, by which other components of the computer 102 can communicate with each other. In certain embodiments, there may be more than one bus, or the components may communicate directly with each other. A central processing unit (CPU) 106 is connected to the system bus 104. Also attached to the system bus 104 are one or more random access memory (RAM) modules 108. Also attached to the system bus 104 is a graphics card 110. In some embodiments, the graphics card 110 may not be a physically separate card, but rather may be integrated into the motherboard or the CPU 106. In some embodiments, the graphics card 110 has a separate graphics processing unit (GPU) 112 that can be used for graphics processing or general purpose computing (GPGPU). There is also GPU memory 114 on the graphics card 110. A display 116 is connected (directly or indirectly) to the graphics card 110 for user interaction. In some embodiments, a display is not present, while in other embodiments, it is integrated into the computer 102. Similarly, peripherals such as a keyboard 118 and a mouse 120 are connected to the system bus 104. As with the display 116, these peripherals may or may not be integrated into the computer 102. In some embodiments, additional peripherals such as a microphone or video camera may also be present and connected to the system bus 104.In some embodiments, such peripherals may be removably connected to computer 102 via wired or wireless connections. In other embodiments, such as a tablet or smartphone, these peripherals are integrated into computer 102. Also connected to system bus 104 is local storage 122, which may be any form of computer-readable media and may be located inside computer 102 or removably attached externally.
[0019] Computer-readable media includes both volatile and non-volatile media, both removable and non-removable media, and contemplates media that can be read by a database. For example, computer-readable media includes (but is not limited to) RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs), holographic media or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage, and other magnetic storage devices. These technologies can store data either temporarily or permanently. However, unless expressly specified otherwise, the term "computer-readable media" should not be interpreted as including physical but transitory forms of signal transmission, such as radio broadcasts, electrical signals over wires, or light pulses over fiber optic cables. Examples of stored information include computer-usable instructions, data structures, program modules, and other data representations.
[0020] Finally, a network interface card (NIC) 124 is also attached to the system bus 104, enabling the computer 102 to communicate over a network, such as network 126. The NIC 124 can be any form of network interface known in the art, such as Ethernet, ATM, fiber, BLUETOOTH, or Wi-Fi (i.e., the IEEE 802.11 family of standards). The NIC 124 connects the computer 102 to a local network 126, which may also include one or more other computers, such as computer 128, and network storage, such as data store 130. In general, a data store, such as data store 130, may be any repository in which information can be stored and retrieved as needed. Examples of data stores include relational or object-oriented databases, spreadsheets, file systems, flat files, directory services such as LDAP and Active Directory, or email storage systems. The data store may be accessible via a complex API (e.g., a structured query language, etc.), a simple API that provides only read, write, and seek operations, or any level of complexity in between. Additionally, some data stores may provide management functionality for the data sets stored therein, such as backup or version control. A data store may be local to a single computer, such as computer 128, accessible over a local network, such as local network 126, or remotely accessible via the Internet 132. The local network 126 is connected to the Internet 132, which connects many networks, such as local network 126, remote networks 134, or directly connected computers, such as computer 136. In some embodiments, the computer 102 itself may be directly connected to the Internet 132.
[0021] FIG. 1B shows a system diagram including elements of a system 150 for implementing certain embodiments of the present invention. The system 150 comprises any number of client devices, such as client device 152, client device 154, and client device 156. As illustrated in FIG. 1B, the client devices may be any of a desktop computer, a laptop computer, a mobile phone, a tablet, or any other device suitable for allowing a user to access the group-based communication system. A user may switch from one client device to another and may access the group-based communication system via multiple devices simultaneously. The group-based communication system may be accessible via dedicated software on the client device or via a web browser on the client device. In some embodiments, a channel administrator may access the management functions via any client device. In other embodiments, the management functions may be accessible only from a limited subset of client devices (e.g., only via client device 152). In some examples, the group-based communication system is a channel-based platform with multiple messaging channels available to select users.
[0022] The system further comprises a group-based communication system server 158 that serves as a host for the group-based communication system. The group-based communication system server 158 may be a dedicated server, a shared server, or any other form of computing device as described above with respect to FIG. 1A. Although a single group-based communication system server 158 is shown, embodiments having multiple such group-based communication system servers are also contemplated to provide scale, redundancy, and / or isolation between different instances of the group-based communication system. For example, a particular organization that uses a group-based communication system may not want to have its group-based communication system hosted on the same server as a competitor's group-based communication system for security reasons. The group-based communication system server 158 is communicatively coupled to the client devices 152, 154, and 156 via a network 160. The network 160 may be a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), or the Internet. Broadly speaking, any type of network is contemplated for providing communication between the various components of the system 150. The group-based communication system server 158 may provide web server functionality to enable web-based clients and non-web server functionality to enable clients to use dedicated apps. Alternatively, both web-based and dedicated app clients may both use a single web server, or the web server may be a gateway that provides web-based access to the dedicated app server. Other techniques for enabling communication between various types of client applications are also contemplated.
[0023] It should be understood that the group-based communication system referred to herein may provide a communication platform for multiple users. Each user may be associated with a particular organization. The particular organization may be a small business, a corporation, or the like, or any other user group. The group-based communication system is operable to provide communication services to any combination of users. For example, in some embodiments, communication services may be provided to multiple users from multiple organizations as well as multiple users from a single organization. In some embodiments, multiple channels exist within the group-based communication system. Users may be added to each channel such that users in the channel have access to messages and files posted in the channel. Additionally, users in a channel have the ability to post messages and upload files in the channel. In some embodiments, users may be added to a particular channel by an administrator, such as an administrator in a particular organization. Alternatively, in some embodiments, users may be added by any user in the channel. Additionally, in some embodiments, channel parameters, such as who can add users, may be set by the channel creator. For example, channels created by a particular organization may be subject to the security policies of that organization, in which case only administrators may add users to a particular channel.
[0024] The group-based communication system data store 162 is communicatively connected to the group-based communication system server 158. As illustrated, the group-based communication system data store 162 is directly connected to the group-based communication system server 158, although any form of communication connection (e.g., network-attached storage (NAS), network file system (NFS), or cloud-based storage) may be employed. Broadly speaking, the group-based communication system data store 162 stores all information used by the group-based communication system server 158. For example, the group-based communication system data store 162 may store all messages along with their associated channels, documents and images uploaded to a particular channel, channel membership information, and / or user information. As previously mentioned, multiple group-based communication system servers may be present in the system 150. In such an embodiment, each group-based communication system server may have its own copy of the group-based communication system data store 162. Alternatively, multiple group-based communication system servers may share a single networked group-based communication system data store. Alternatively or additionally, in any of these embodiments, data may be shared across multiple group-based communication system data stores.
[0025] The system further comprises a third-party integration server 164 that serves as a host for one or more third-party applications and / or third-party integrations (collectively, for brevity, "third-party integrations"). Although the term "third-party integrations" is used herein for convenience, the third-party integrations may be provided by the same party that provides the group-based communication system. The third-party integration server 164 may be a dedicated server, a shared server, or any other form of computing device as described above with respect to FIG. 1A. Although a single third-party integration server 164 is shown, embodiments having multiple such third-party integration servers are also contemplated to provide scale, redundancy, and / or isolation between different third-party integrations. The third-party integration server 164 is communicatively coupled to the group-based communication system server 158 via the network 160. The third-party integration server 164 may provide web server functionality that enables web-based clients and non-web server functionality that enables clients to use dedicated apps. Alternatively, both the web-based clients and the dedicated app clients may both use a single web server, or the web server may be a gateway that provides web-based access to the dedicated app server. Other techniques for enabling communication between various types of client applications are also contemplated.
[0026] It should be understood that any of the client devices 152, 154, and 156, as well as the group-based communication system server 158, may comprise a processor, such as the CPU 106 described with respect to FIG. 1A. Any of the functions described herein with respect to a processor may be performed by a processor in any of these devices. In some embodiments, for example, a processor in the group-based communication system server may perform a first process step and a processor in the client device performs a second process step.
[0027] 2 illustrates an exemplary embodiment of a user interface for a group-based communication system. A parent window 200 is shown that includes multiple panes. As illustrated, the parent window 200 includes a workspace pane 202, a channel list pane 204 that includes a channel and document list 206 and a direct message list 208, and a document pane 210 that includes a document toolbar 212, document controls 214, and a document display 216. In some embodiments, a user can interact with the panes to navigate and utilize various functions available within the group-based communication system.
[0028] As shown, parent window 200 includes a workspace pane 202 for navigating between various workspaces in the group-based communication system. In some embodiments, the group-based communication system can be partitioned into different workspaces that can be associated with different user groups. Each workspace can be associated with a group identifier, and one or more user identifiers can be mapped to or otherwise associated with the group identifier. A user corresponding to such a user identifier can be referred to as a "member" of the group. For example, a user can be part of a workspace for a job at Acme Software Development. The user can also be a member of a local volunteer organization that uses the group-based communication system for collaboration. To navigate between the two groups, a user can use the workspace pane 202 to change from Acme's workspace to the volunteer organization's 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 Corporation can have a workspace for Acme software development projects, a workspace for human resources, and an additional workspace for general company matters. In some embodiments, a workspace can be associated with one or more organizations or other entities associated with the group-based communication system.
[0029] As shown, the parent window 200 further includes a document pane 210 that contains information related to the currently displayed document. In some embodiments, a group-based communication system channel pane (not shown) is displayed along with the document pane 210. In some embodiments, documents may be modified and edited by one or more users within the group-based communication system. Users with appropriate permissions and access may view, edit, or comment on the document. The document pane 210 may include a document toolbar 212, document controls 214, and a document display 216. The document display 216 may display all content within the document, including an unstructured section 218 and a structured section 220. The functionality of the document editing pane 210 may be provided by the group-based communication system or a third-party integration. Although a word processing document is shown in the document editing pane 210, any type of document is contemplated for use with the present invention, including spreadsheet editing, multimedia editing, image editing, and code editing, and each type of document editing may be provided by a different third-party integration. The channel list pane 204 may contain a list of channels and documents to which the user subscribes or to which the user has been given access or permissions. The user can switch from the currently displayed document to either another document, a channel, or a direct message by selecting another item in the channel list pane 204.
[0030] In some embodiments, the channel list pane 204 further includes a direct message list 208. The direct message list 208 includes a list of messages, called direct messages, sent directly from the user to another user of the group-based communication system and may be displayed in the document pane 210 when selected. A direct message may be sent to at least one other user. For example, a user may have a question for a manager, in which case the user may send a direct message to the manager asking the question. The manager may want to include another member of the group-based communication system in the response, in which case the manager may create a direct message group that includes the user and the other member of the group-based communication system. A direct message may be sent to any number of users as a multi-person direct message. In some embodiments, a direct message may be sent to users within an organization, users outside the organization, users of third-party applications, and / or any variety of users.
[0031] The document pane 210 may include a document toolbar 212 that may display icons and menus that allow for formatting of the document. For example, the document toolbar 212 may provide the user with the ability to bold, italicize, or underline fonts. In some embodiments, the document toolbar 212 may provide the user with the ability to undo and redo actions. In further embodiments, the document toolbar 212 may allow the user to modify the color of text. In further embodiments, the document toolbar 212 may allow the user to insert images, tables, and / or workflows. The document pane 210 may also display metadata for the currently selected document, including the document name. The document pane 210 may include document controls 214 for viewing members that have access to the document, inviting new members to the document, viewing information about the document, or other document-related functions. For example, the document controls 214 may display an icon indicating which user is currently viewing the document. In some embodiments, the document pane 210 may display a workflow status indicating which workflow step the workflow is currently on. For example, the workflow status may indicate that the document is currently in an approval workflow step and that the document is awaiting approval from a particular user. In further embodiments, the workflow status may indicate a summary of the information in the workflow document. For example, the workflow document may include a table into which users insert their shirt sizes, and the workflow status may include a summary of the number of shirts of each size that have been entered into the table.
[0032] The parent window 200 may also include a search pane 222. The search pane 222 may allow a user to search for content located within the current workspace of the group-based communication system. In some embodiments, the content searched may include documents. For example, a user may look for text within documents that the user has previously accessed. In other embodiments, a user may search for meta content within documents, such as the name of a workflow, workflow step, or workflow tag, or the name of the user who created the document. A user may not remember which document the text was in, in which case the user may search for the text within the search pane 222. In some embodiments, a user may only search for documents that the user has permission to view. For example, if a document was not previously shared with the user, the document may not appear in the search results. In a further embodiment, a user may have access to documents in general, but not to one or more specific sections of the document. In this instance, a user may only search based on content within documents to which the user has access permissions. A user is not limited to searching within documents, but may also search for messages, channels, members, etc.
[0033] The document display 216 may display the selected document. In some embodiments, the user of the group-based communication system may edit the document if they have sufficient permissions. In further embodiments, the user of the group-based communication system may leave comments on the document. The document may include a free-form unstructured section 218 and a workflow-related structured section 220. In some embodiments, the unstructured section 218 may include an area of the document where the user is free to modify the document without constraints. For example, the user may freely type text to describe the purpose of the document. In some embodiments, the user may add a workflow by typing or otherwise referring to the name of the workflow. In further embodiments, typing an at sign or a previously selected symbol or a previously determined special character or symbol may provide the user with a list of workflows that the user can select to add to the document. For example, the user may recognize that the marketing team may need to sign off on the proposal and may type "IMarketing Approval" to initiate a workflow that culminates with a member of the marketing team approving the proposal. In some embodiments, the structured section 220 may include a text entry, a selection menu, a table, a checkbox, a task, a calendar event, or any other document section. In further embodiments, the structured section may include a text entry space that is part of a workflow. For example, a user may enter text into the text entry space detailing the reason for approval and then select a submit button that advances the workflow to the next step in the workflow. In some embodiments, a user may be able to add, edit, or delete structured sections of a document that make up a workflow component.
[0034] 3 illustrates a data flow diagram 300 showing an exemplary communication protocol between elements of a system for implementing certain embodiments of the present invention. In some embodiments, the system may include a client 302, a third party integration 304, and a group-based communication system server 306. The client 302 may be a computer, a mobile device, or any other means of accessing servers and applications. In some embodiments, the third party integration 304 may operate within the client 302. In further embodiments, the third party integration 304 may operate remotely (e.g., on a third party server) and communicate with the client over a network, such as the local network 126 or the Internet 132. The group-based communication system server 306 may host a group-based communication system, also as described above with respect to FIG. 2.
[0035] Initially, the authenticated client 302 may send a message 310 including a request to access the third-party integration 304, where an authentication protocol between the client 302 and the group-based communication system server 306 is not shown but may occur before or after the message 310 is sent. The message 310 requests that the third-party integration 304 initiate an integration interface with the group-based communication system server 306. The message 310 may be sent in response to a user selecting to initiate the third-party integration within the group-based communication system server 306. In some embodiments, the user has pre-authorized the third-party integration to access his / her data. For example, the user may have pre-authorized the third-party integration to utilize the user's credentials and thus no additional authorization needs to be provided. In some such embodiments, a long-lived authentication token is persisted by the third-party integration. In other embodiments, the access permissions are stored by the group-based communication system server. In other embodiments, the authorization occurs in response to initiation of an integration controller. Such authorization by the user gives the third-party integration access to some or all group-based communication objects accessible to the user on behalf of the user. In response to the message 310 requesting federated access, the third party integration 304 may reply with a message 315 containing an authentication request. The message 315 may ask the user of the client 302 to confirm that the user has appropriate access rights to the group-based communication system and / or may request an authentication token that enables the third party access to the group-based communication system server 306 on behalf of the user. In some embodiments, the authentication token provides an indication (such as a manifest) of the set of objects to which access should be granted.
[0036] In response to message 315, client 302 may send message 320 including a request for a group-based communication system login token. In some embodiments, the user may include login credentials that the user normally uses to log into the group-based communication system. If message 320 is approved, group-based communication system server 306 may send message 325 including a response with the group-based communication system login token. In some embodiments, message 325 may be approved if group-based communication system server 306 determines that the login credentials correspond to an active user of the group-based communication system. In further embodiments, only selected users of the group-based communication system may be permitted to access objects from within the group-based communication system through specific third-party applications. For example, the group-based communication system may approve requests from specific third-party applications that meet the security criteria of the group-based communication system. In some embodiments, messages 320 and 325 may be omitted and client 302 may be able to generate an authentication token without communicating with group-based communication system server 306.
[0037] In response to receiving the group-based communication system login token, the client 302 may provide an authentication response 330 with the login token to the third-party integration 304. Using the login token, the third-party integration 304 may send a message 335 to the group-based communication system server 306 including a request for the controller to use the login token. The controller may load data from the third-party integration 304 and provide it to the client 302, thereby allowing the client 302 to access the third-party data and UI controls provided by the third-party integration 304 without directly exposing the group-based communication system data. The controller may assist the client 302 in rendering user interface objects associated with the third-party application such that the user interface rendered at the client matches the user interface at the third-party integration. The controller also allows the client to leverage the user interface provided by the third-party application so that the client does not have to implement its own version of the user interface associated with the third-party application. This is beneficial in reducing duplicate code that needs to be updated every time the third-party integration code is updated. The controller may also assist the client 302 in communicating with the third party integration 304, such as assisting with configuration settings such that the configuration of the user interface rendered at the client matches the configuration of the third party application. In some embodiments, the message 335 may originate from the client 302 and be sent to the third party integration 304. In further embodiments, the controller may be stored directly within the client 302. The message 335 may include authentication information of the user of the group-based communication system, requesting access to objects in the group-based communication system to which the user would normally have access and to which the user has granted access.If the group-based communication system approves the request, it sends a message 340 back to the third party integration 304 that includes a response with the controller.
[0038] Once the third-party integration 304 has an initialized controller, the client 302 can proceed to interact with the third-party integration. The client 302 may send a message 345 to the third-party integration 304 that includes the user input to the integration. For example, a user may wish to reference a channel from within the group-based communication system and enter an identifier for the channel into a document on a third-party application. The third-party integration 304 may convert the message 345 that includes the user input to the integration into a message 350 that includes a request for a group-based communication system object that uses the integration controller. For example, the third-party application may send a request for a list of all channels in the group-based communication system that correspond to the user's input and to which the user has access (or has been granted access). Some or all of this list may then be provided in an auto-complete list, as shown below with respect to FIG. 4. The group-based communication system server 306 may send a message 355 that includes a response indicating one or more group-based communication system objects. In some embodiments, the group-based communication system server 306 may directly send one or more group-based communication system objects that correspond to the user's input. In other embodiments, the group-based communication system server 306 may instead send an indicia of the object (e.g., the name of the matching channel). In other embodiments, the group-based communication system may send a renderable surface object to the third party application. For example, a document editing integration may include its own user interface and functionality. By providing the third party application with a renderable surface object, the third party application may be effectively embedded within the group-based communication system without having to re-implement the user interface and functionality within the group-based communication system. The advantage of such an embodiment is that the effort of duplicating code (and the associated risk of introducing new bugs) is avoided.A further advantage is that the third-party server can provide additional functionality such as cloud storage, synchronization, and interoperability with other instances of third-party applications outside the group-based communication system. In further embodiments, only group-based communication system objects to which the user has access may be included. The third-party integration 304 may provide a message 360 as a customized response to the client 302 providing a customized user experience. For example, a JSON object indicating the name of the matching object may be sent for inclusion in a dropdown shown below with respect to FIG. 4. The message 360 may include data, instructions, or any other information required to display or enable interaction with the group-based communication system inside the third-party integration to the user of the client 302. For example, the name of the channel may be displayed, and when the cursor is hovered over it, it provides additional information about the channel, such as the number of users, when the channel was last updated, or any other information about the channel.
[0039] In some embodiments, if the group-based communication system server 306 detects a change to a group-based communication system object previously provided to a third-party application, the group-based communication system server 306 may proactively send a message 365 that includes updates to one or more group-based communication system objects that were previously sent. The message 365 may provide instructions to the third-party integration 304 to update the group-based communication system object for display. For example, the group-based communication system object may be a user and the update may be an indication that the user has changed its status.
[0040] FIG. 4 illustrates a user interface for some embodiments of the present invention. A user interface 400 is shown that includes multiple panes. As illustrated, the user interface 400 includes a channel pane 402 and a third-party integration pane 404. The channel pane 402 includes information related to the currently displayed channel. As described above, in some embodiments, within a group-based communication system, communications may be organized into "channels," with each channel dedicated to a particular topic or set of users. Members of a particular channel may post messages in that channel that are visible to other members of that channel, along with other messages in that channel. A user may select a channel to view in order to see only those messages related to the topic of that channel, without seeing messages posted to other channels on different topics.
[0041] The third party integration pane 404 includes information about a third party integration. In some embodiments, the third party integration may be incorporated into the group-based communication system. In further embodiments, the third party integration may be a separate standalone application. For example, the third party application may be a document editor, a collaborative whiteboard, an infinite canvas design application, a ticketing system, or any other application usable by one or more users of the group-based communication system.
[0042] As discussed above, it is desirable for a third-party integration to be able to provide a customized user experience for the user, so when a user first accesses a third-party integration, a controller may be created as described above with respect to Figure 3. Using that controller, the third-party integration can leverage a group-based set of communication system objects to which the user has access.
[0043] For example, if the third-party integration is a document editing platform (as shown), the third-party application may enable auto-complete functionality for group-based communication system objects. For example, when a user of the third-party application begins to type an identifier for a group-based communication system object (such as a username or channel name, as shown), an auto-complete box 406 may pop up to display options from which the user can select. In some embodiments, a user of the third-party integration may select an option in the auto-complete box 406 to select the group-based communication system object. In further embodiments, only group-based communication system objects for which the user has access permissions may appear in the auto-complete box 406.
[0044] Similarly, a third-party integration may display information from a group-based communication system, such as channels, emojis, files, document workflows, or users. For example, in some embodiments, a third-party application may display information such as a user's username. In some such embodiments, clicking on a channel or user's name in a third-party integration may display a direct messaging interface with that channel or user in the channel pane 402. For example, if the third-party integration is a ticketing system, a user may click on the name of a user reporting a ticket to start a direct messaging conversation with that user. In further embodiments, hovering over a user's name may display the user's status.
[0045] In further embodiments, third party applications may display group-based communication system objects in the same manner as the group-based communication system displays the objects natively. For example, a user may embed a group-based communication system message, thread, or other object into a document being edited. For example, continuing with the above example of a ticketing system, a user may embed a direct messaging conversation with a reporting user directly into a ticket for future reference. As discussed above, the user may be able to continue that conversation directly from a third party integration, if desired. Broadly speaking, embodiments of the present invention contemplate providing third party integration access to any operation of any group-based communication system object.
[0046] FIG. 5 illustrates an exemplary flow chart illustrating the operation of a method 500 for collaboration between a group-based communication system and a third-party application. In some embodiments, the method 500 enables a third-party integration to communicate with the group-based communication system and access objects from within the group-based communication system. At step 502, a request for a collaboration controller is received. In some embodiments, the request may be received at a group-based communication system server and originate from a third-party server corresponding to the third-party integration. For example, the third-party integration may be a web-based application that includes creating and editing documents, and a user of the web-based application may wish to insert information from the group-based communication system into the document. In some embodiments, the request for the collaboration controller may include configuration settings. For example, the request may include information regarding how the collaboration controller should be displayed, such as whether the collaboration controller should be displayed in a light mode, a dark mode, and / or a high contrast mode. In further embodiments, an authorization token may be included in the request. For example, an authenticated user of the group-based communication system may request and receive a login token to the group-based communication system that validates the user, which the user can provide to the third-party server to authorize the third-party server to access the user's objects on the user's behalf.
[0047] At step 504, the collaboration controller is initialized. In some embodiments, the collaboration controller may remain in the third party integration. In further embodiments, the collaboration controller may be sent to the user (e.g., as JavaScript or other client-side code). The collaboration controller may allow the user to obtain information from the group-based communication system. In some embodiments, the collaboration controller may function for a predetermined amount of time, as controlled by an authentication token. In further embodiments, the amount of time the collaboration controller functions may be determined based on the third party integration. For example, the third party integration may be considered more secure such that the group-based communication system allows the collaboration controller to function for a longer period of time. In some embodiments, the collaboration controller may be automatically reset if the user has proper authorization.
[0048] At step 506, a request for a group-based communication system object is received. In some embodiments, the request may be for two or more group-based communication system objects. In some embodiments, a URL or other globally unique identifier for the group-based communication system object is received. In further embodiments, the request may be a partial request for the group-based communication system object. For example, a user may not know the name of the object and may begin typing part of the name hoping that an auto-complete result will be provided. In some embodiments, the request includes information about the user requesting the object. For example, the request may include information about the permissions of the user's account on the group-based communication system. In some embodiments, the request for the object may be sent via a keyboard shortcut.
[0049] At step 508, permissions for a group-based communication system object are determined. In some embodiments, permissions are determined based in part on the group-based communication system account of the user requesting the object. For example, if the user has access to the object on the group-based communication system, the user is given permission to search for the object. In further embodiments, permissions may vary based on how the user is requesting access to the object. For example, a channel in the group-based communication system may contain sensitive information and the channel may be set to not allow sharing to third party integrations.
[0050] At step 510, the group-based communication system object is transmitted. In some embodiments, the group-based communication system object is transmitted from the group-based communication system to the third-party integration. The group-based communication system object may be transmitted as information related to the object or as a pointer to the object. In some embodiments, multiple group-based communication system objects may be transmitted. In further embodiments, a listener may be transmitted with the group-based communication system object so that if any changes are made to the object from within the group-based communication system, the group-based communication system object may be automatically updated within the third-party integration. For example, the group-based communication system object may be a user who later changes its status. This status update may be automatically transmitted to the third-party integration so that the new status appears in the third-party integration.
[0051] FIG. 6 illustrates an exemplary system architecture diagram for implementing some embodiments of the present invention. A client 600 is shown, which may be a computer, a mobile device, or any other means of accessing servers and applications. The client 600 may communicate with a host server 614 and a third party server 616. In some embodiments, the client 600 may include a host page 602 and a controller frame 612. The host page 602 is referred to herein as a "page" for simplicity, although embodiments are contemplated in which the host page 602 is instead a host frame. The host page 602 provides further advantages of the present invention by allowing complex user interfaces from third party applications to be embedded within the host frame 602. For example, as illustrated, one or more view frames 610 are embedded in the host page 602 as an iframe and passed to the controller as a rendering surface. This avoids the complexity required to embed complex user interfaces and user interface elements directly into the host page 602, and the need to deal with JavaScript encapsulation issues, Cascading Style Sheets issues, and general interoperability issues that arise if the user interface is embedded directly into the host page 602. Such an approach also provides a consistent user interface for third party applications that is consistent with external implementations of the group-based communication system. In some embodiments, the host page 602 may include a host JavaScript 604, a collaboration SDK 606, and a document component 608. The host page 602 may be part of or embedded within the group-based communication system.
[0052] In some embodiments, the host JavaScript 604 may be used to display standard group-based communication system components. The host JavaScript 604 may interface with the collaboration SDK 606 to coordinate the display of the document components 608. In some embodiments, the collaboration SDK 606 may communicate with the host server 614 (which in some embodiments may be the group-based communication system server 158) to obtain and store an authorization token on the client 600. In further embodiments, the collaboration SDK 606 communicates with the document components 608 to coordinate the display. In yet another embodiment, the collaboration SDK 606 may communicate with multiple document components 608 simultaneously. The collaboration SDK 606 may also communicate with the controller frame 612 to coordinate setting and configuration information coming from the third party server 616. In some embodiments, the collaboration SDK 606 may include a platform delegate interface provided by the client 600 to allow for overrides of behaviors over which the client 600 may want more control. For example, the platform delegate may enable additional functionality specific to the client 600, such as interaction with a user of the client 600, including functionality that requires cooperation from the client 600, such as navigation.
[0053] In some embodiments, the document component 608 may include a view frame 610. The view frame 610 may render user interface elements directly such that the user interface elements are natively embedded within the document component 608. In some embodiments, the view frame 610 may be an iframe that the client 600 uses as a rendering surface. The view frame 610 may communicate directly with the controller frame 612 to determine how the user interface and associated components should be rendered. In some embodiments, elements from the client 600 may be displayed within the view frame 610. The view frame 610 may be customized and configured based on the collaboration SDK 606. For example, the user interface may be rendered to correspond to other user interface elements displayed within the client 600. In some embodiments, the view frame 610 is not directly exposed to the client 600.
[0054] The third party server 616 provides external functionality to the third party integration 304. For example, the third party server 616 may simply provide Hypertext Markup Language (HTML) and JavaScript (JS) code for the embedded iframe. Alternatively, the third party server 616 may provide other functionality. For example, if the third party application is a document editing platform, the third party server 616 may provide functionality such as cloud storage, collaborative document editing, and document synchronization by communicating with the third party integration 304. In some embodiments, the third party server 616 may communicate directly with the host server 614. For example, the host server 614 and the third party server 616 may communicate to check or update access control lists, such as determining whether a particular user has the appropriate permissions to access a particular resource. The third party server 616 may also communicate with the controller frame 612. In some embodiments, the controller frame 612 may reside in the client 600 and serve as the primary means for communicating with the third party server 616. For example, the third party server 616 may push changes to the controller frame 612 via web sockets, and the controller frame 612 may load the data to the third party server 616. Changes that a user makes in the view frame 610 may be communicated to the third party server 616 to store the changes to the data or to otherwise back up the data in a safe and secure location. In some embodiments, documents created in the client 600 using the collaboration SDK 606 may be stored natively in the third party server 616.
[0055] The features described above as well as those claimed below can be combined in various ways without departing from the scope of the present invention. The following examples illustrate some possible non-limiting combinations.
[0056] (A1) One or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via a third party integration, the method including the steps of: receiving a first request from a third party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the indicia of access rights that the third party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third party integration.
[0057] (A2) For the non-transitory computer-readable medium represented as (A1), third-party integration enables one or more third-party objects to be natively displayed within the group-based communication system.
[0058] (A3) For the non-transitory computer-readable medium represented as (A1) or (A2), the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
[0059] (A4) For a non-transitory computer-readable medium represented as any of (A1) to (A3), the third-party integration is performed within a client of the group-based communication system.
[0060] (A5) For a non-transitory computer-readable medium represented as any of (A1) to (A4), the one or more group-based communication system objects include a document, and the step of sending to a third-party integration further includes instructions for natively displaying the document.
[0061] (A6) For a non-transitory computer-readable medium represented as any of (A1) to (A5), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0062] (A7) For a non-transitory computer-readable medium represented as any of (A1) to (A6), the method further includes detecting an update to at least one of the one or more group-based communication system objects, and sending the update to the at least one of the one or more group-based communication system objects to a third-party integration.
[0063] (B1) A method for collaboration in a group-based communication system via a third party integration, the method including the steps of: receiving a first request from a third party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the indicia of access rights that the third party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third party integration.
[0064] (B2) For the method represented as (B1), third-party integration enables one or more third-party objects to be natively displayed within the group-based communication system.
[0065] (B3) For the method represented as (B1) or (B2), the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
[0066] (B4) For the method represented as any of (B1) to (B3), the third-party integration is performed within a client of the group-based communication system.
[0067] (B5) For the method represented as any of (B1) to (B4), the one or more group-based communication system objects include a document, and the step of sending to a third-party integration further includes instructions for natively displaying the document.
[0068] (B6) For a method represented as any of (B1) to (B5), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0069] (B7) For the method represented as any of (B1) to (B6), the method further includes a step of detecting an update to at least one of the one or more group-based communication system objects, and a step of sending the update to the at least one of the one or more group-based communication system objects to a third-party integration.
[0070] (C1) A system for collaboration in a group-based communication system via third party integration, comprising: a data store associated with the group-based communication system; and a processor programmed to execute a method for collaboration in a group-based communication system via third party integration, the method including the steps of: receiving a first request from the third party integration to initialize a new collaboration instance controller, the first request including configuration settings and an indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining based on the indicia of access rights that the third party integration has permission to access the one or more group-based communication system objects; and sending the one or more group-based communication system objects to the third party integration.
[0071] (C2) For the system represented as (C1), third party integration allows one or more third party objects to be natively displayed within the group-based communication system.
[0072] (C3) For systems designated as (C1) or (C2), the third party integration is performed within the client of the group-based communication system.
[0073] (C4) For a system represented as any of (C1) to (C3), the one or more group-based communication system objects include a document, and the step of sending to a third-party integration further includes instructions for natively displaying the document.
[0074] (C5) For a system represented as any of (C1) to (C4), the first request to initialize the new collaboration instance controller further includes an authorization token, and the step of initializing the new collaboration instance controller is further based on validating the authorization token.
[0075] (C6) For a system represented as any of (C1) to (C5), the method further includes detecting an update to at least one of the one or more group-based communication system objects, and sending the update to the at least one of the one or more group-based communication system objects to a third-party integration.
[0076] Although the present invention has been described with reference to the embodiments illustrated in the accompanying drawings, it should be noted that equivalents may be used and substitutions may be made herein without departing from the scope of the invention as set forth in the claims.
[0077] Having thus described various embodiments of the invention, what is claimed to be new and desired to be protected by Letters Patent includes the following:
Claims
1. 1. One or more non-transitory computer-readable media having stored thereon computer-executable instructions that, when executed by a processor, perform a method for collaboration in a group-based communication system via third-party integration, the method comprising: receiving a first request from the third party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third party integration; A non-transitory computer readable medium comprising:
2. The non-transitory computer-readable medium of claim 1 , wherein the third-party integration enables one or more third-party objects to be displayed natively within the group-based communication system.
3. The non-transitory computer-readable medium of claim 1 , wherein the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
4. The non-transitory computer-readable medium of claim 1 , wherein the third party integration is performed within a client of the group-based communication system.
5. 10. The non-transitory computer-readable medium of claim 1, wherein the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for natively displaying the document.
6. 2. The non-transitory computer-readable medium of claim 1 , wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
7. detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third party integration; The non-transitory computer-readable medium of claim 1 , further comprising:
8. 1. A method for collaboration in a group-based communication system via third party integration, comprising: receiving a first request from the third party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third party integration; The method includes:
9. The method of claim 8 , wherein the third party integration enables one or more third party objects to be displayed natively within the group-based communication system.
10. The method of claim 8 , wherein the one or more group-based communication system objects are a channel, a workspace, a user, a file, or an emoji.
11. The method of claim 8 , wherein the third party integration is performed within a client of the group-based communication system.
12. The method of claim 8 , wherein the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for natively displaying the document.
13. The method of claim 8 , wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
14. detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third party integration; The method of claim 8 , further comprising:
15. 1. A system for collaboration in a group-based communication system via third party integration, comprising: a data store associated with the group-based communication system; a processor programmed to execute the method for collaboration in the group-based communication system via third-party integration; The method comprises: receiving a first request from the third party integration to initialize a new collaboration instance controller, the first request including configuration settings and indicia of access rights to objects associated with a user of the group-based communication system; initializing the new collaboration instance controller based on the configuration settings; receiving a second request from the third party integration for one or more group-based communication system objects associated with the user via the new collaboration instance controller; determining, based on the access right indicia, that the third party integration has permission to access the one or more group-based communication system objects; sending the one or more group-based communication system objects to the third party integration; Including, the system.
16. The system of claim 15 , wherein the third party integration enables one or more third party objects to be displayed natively within the group-based communication system.
17. The system of claim 15 , wherein the third party integration is performed within a client of the group-based communication system.
18. 16. The system of claim 15, wherein the one or more group-based communication system objects include a document, and the sending to the third-party integration step further includes instructions for natively displaying the document.
19. 16. The system of claim 15, wherein the first request to initialize the new collaboration instance controller further includes an authorization token, and wherein initializing the new collaboration instance controller is further based on validating the authorization token.
20. The method comprises: detecting updates to at least one of the one or more group-based communication system objects; sending the update of the at least one of the one or more group-based communication system objects to the third party integration; The system of claim 15 further comprising:
Citation Information
Patent Citations
Method, apparatus, and computer program product for selectively granting permissions to group-based objects in a group-based communication system
JP2021509746A
System and method for generating embeddable widgets which enable access to a cloud-based collaboration platform
US20140258972A1