Patent ID: 12237939

DETAILED DESCRIPTION

Techniques described herein support generation of one or more communication channels associated with a data object within a data management platform. A user of a database system (or tenant in the case of a multi-tenant database system) may store information and data for users, customers, organizations, etc. in a database and manage the stored information with a program such as a data management platform. For example, a user may manage and store data and metadata for exchanges, opportunities, deals, assets, customer information, and the like. The data management platform may support multiple data objects (e.g., data records) and a group of users may be linked to each data object. For example, one or more users may follow or otherwise be granted access to review and/or edit one or more data objects or records. An organization or tenant may use communication channel generation depicted herein to schedule and manage communications between the users of the organization or tenant.

A group-based communication platform may support a quantity of channels configured for group-based communications. Each channel may be accessible by a specific set of users based on permissions that are set for that channel, and respective users may post messages to a channel. In some examples, administrative users or employees associated with the organization or a tenant of the organization (e.g., a marketing team) may communicate on a communication channel on a communication platform (e.g., group-based communication platform). For example, the communication platform may support communication channels that are organized by topic, and team members may use these communication channels (e.g., chat threads) to discuss about those topics. Conventionally, the communication platform may be separate from the data management platform (e.g., different servers, different programs or applications, etc.), and data associated with the data management platform may be confined to computing systems that support the data management platform. In other words, there may not be a way to establish one or many channels associated with a data object (e.g., data record) in a separate communication platform directly from a page in the data management platform, which may limit some aspects of working within the data management platform. Additionally, users of the data management platform may not be able to set a privacy level for a communication channel, which may limit capabilities associated with the channel.

Techniques described herein support generation of a communication channel in a communication platform from a data management platform (e.g., directly from a page displaying a data record within the data management platform). Thus, techniques described herein provide communications between a data management platform and a communication platform. For example, the techniques described herein may enable users of the data management platform to create a communication channel associated with various data objects directly from the data management platform. Likewise, the techniques described herein may enable users to interact with the data management platform from within the communication platform. The described techniques may support improved workflow efficiency, reduced communication resource overhead, and higher user satisfaction, among other benefits.

Aspects of the present disclosure may provide for improved cross-platform functionality between a data management platform and a communication platform. In particular, techniques of the present disclosure provide for an automatic system to create a communication channel from a record page of a data management platform, thus improving the user experience. In some examples, a user of the data management platform may generate a communication channel using an “action” button located on a record page. In some examples, the data management platform may receive, via a user interface of the data management platform storing a set of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the data management platform. In some examples, the communication channel may be for a data object of the set of data objects stored in the data management platform.

In some examples, in response to receiving the user input, the data management platform may retrieve a group of users that are linked to the data object within the data management platform. A user may select the “action” button on the records page to input fields in a form. The data management platform may then display (in response to receiving a selection of the “action” button) a list of options for generating the communication channel. The list of options may include the group of users (e.g., identifiers of members to include in the conversation) for including in the communication channel, a privacy level for the communication channel (e.g., an indication of whether the discussion is public or private), and an identifier of the communication channel (e.g., an initial conversation name). The user may then submit the form, and once the form is submitted, a communication channel is created with the members provided in the form and the visibility set to public or private. For instance, the data management platform may generate an executable packet of instructions for ingesting into the group-based communication platform based on an input to the list of options displayed to the user. The data management platform may then transmit the executable packet of instructions for ingesting into the group-based communication platform. Thus, aspects of the present disclosure provide an association between a data record and a communication channel.

Aspects of the present disclosure may be implemented to realize one or more of the following advantages. The described techniques may provide improved cross-platform compatibility between a data management platform and a communication platform. For example, the techniques described herein may enable users of the communication platform to interact with (e.g., affect, change, update, modify) data records stored at or otherwise controlled by the data management platform. Similarly, the described techniques may enable the data management platform to display information related to a data record within the communication platform. By supporting bidirectional communications between the data management platform and the communication platform, the described techniques may enable users to communicate with greater efficiency, lower communication resource overhead, reduced latency, and higher user satisfaction, among other benefits.

Aspects of the disclosure are initially described in the context of an environment supporting an on-demand database service. Aspects of the disclosure are illustrated by and described with reference to data processing systems, user interfaces, and process flows. Aspects of the disclosure are further illustrated by and described with reference to apparatus diagrams, system diagrams, and flowcharts that relate to methods to generate communication channel for data objects.

FIG.1illustrates an example of a system100for cloud computing that supports methods to generate communication channel for data objects in accordance with various aspects of the present disclosure. The system100includes cloud clients105, contacts110, cloud platform115, and data center120. Cloud platform115may be an example of a public or private cloud network. A cloud client105may access cloud platform115over network connection135. The network may implement transfer control protocol and internet protocol (TCP/IP), such as the Internet, or may implement other network protocols. A cloud client105may be an example of a user device, such as a server (e.g., cloud client105-a), a smartphone (e.g., cloud client105-b), or a laptop (e.g., cloud client105-c). In other examples, a cloud client105may be a desktop computer, a tablet, a sensor, or another computing device or system capable of generating, analyzing, transmitting, or receiving communications. In some examples, a cloud client105may be operated by a user that is part of a business, an enterprise, a non-profit, a startup, or any other organization type.

A cloud client105may interact with multiple contacts110. The interactions130may include communications, opportunities, purchases, sales, or any other interaction between a cloud client105and a contact110. Data may be associated with the interactions130. A cloud client105may access cloud platform115to store, manage, and process the data associated with the interactions130. In some cases, the cloud client105may have an associated security or permission level. A cloud client105may have access to certain applications, data, and database information within cloud platform115based on the associated security or permission level, and may not have access to others.

Contacts110may interact with the cloud client105in person or via phone, email, web, text messages, mail, or any other appropriate form of interaction (e.g., interactions130-a,130-b,130-c, and130-d). The interaction130may be a business-to-business (B2B) interaction or a business-to-consumer (B2C) interaction. A contact110may also be referred to as a customer, a potential customer, a lead, a client, or some other suitable terminology. In some cases, the contact110may be an example of a user device, such as a server (e.g., contact110-a), a laptop (e.g., contact110-b), a smartphone (e.g., contact110-c), or a sensor (e.g., contact110-d). In other cases, the contact110may be another computing system. In some cases, the contact110may be operated by a user or group of users. The user or group of users may be associated with a business, a manufacturer, or any other appropriate organization.

Cloud platform115may offer an on-demand database service to the cloud client105. In some cases, cloud platform115may be an example of a multi-tenant database system. In this case, cloud platform115may serve multiple cloud clients105with a single instance of software. However, other types of systems may be implemented, including—but not limited to—client-server systems, mobile device systems, and mobile network systems. In some cases, cloud platform115may support CRM solutions. This may include support for sales, service, marketing, community, analytics, applications, and the Internet of Things. Cloud platform115may receive data associated with contact interactions130from the cloud client105over network connection135, and may store and analyze the data. In some cases, cloud platform115may receive data directly from an interaction130between a contact110and the cloud client105. In some cases, the cloud client105may develop applications to run on cloud platform115. Cloud platform115may be implemented using remote servers. In some cases, the remote servers may be located at one or more data centers120.

Data center120may include multiple servers. The multiple servers may be used for data storage, management, and processing. Data center120may receive data from cloud platform115via connection140, or directly from the cloud client105or an interaction130between a contact110and the cloud client105. Data center120may utilize multiple redundancies for security purposes. In some cases, the data stored at data center120may be backed up by copies of the data at a different data center (not pictured).

Subsystem125may include cloud clients105, cloud platform115, and data center120. In some cases, data processing may occur at any of the components of subsystem125, or at a combination of these components. In some cases, servers may perform the data processing. The servers may be a cloud client105or located at data center120. A cloud platform115may include one or more application servers that support a communication platform, a data management platform, a service that manages communications between the data management platform and the communication platform, a global endpoint, or a combination thereof. In some examples, these platforms, services, and endpoints may be supported by the same application server. In other examples, these platforms, services, and endpoints may be supported by separate application servers.

As described herein, a data management platform may include a communication service that may enable users to develop and manage communications between a tenant of a multi-tenant system (e.g., a cloud client105) and a set of users (e.g., customers) corresponding to the tenant (e.g., contacts110). In some cases, the communication service may enable communications between multiple users of a cloud-based data management platform (e.g., a cloud client105) In some cases, these users may communicate within a communication channel of a communication platform. However, systems may not support generation of communication channel at the communication platform from the cloud-based data management platform between the communication process flow management service and the communication platform. In other words, users may be unable to interact with (e.g., generate, update, change, modify) a communication channel from within the data management platform. Additionally or alternatively, the users may be unable to receive updates or data objects associated with a communication channel within the communication platform for viewing, discussion, and subsequent interaction.

Aspects of the present disclosure support generation of communication channel associated with a group-based communication platform. In particular, aspects of the present disclosure provide for communication channel generation from a cloud-based data management platform, which may enable users to develop and manage communication channels (e.g., add people to communication channel, set privacy level of the communication channel) from within the cloud-based data management platform. For example, an authenticated user of the cloud-based data management platform may update a configuration of a communication channel by interacting with a user interface associated with the cloud-based data management platform. Moreover, the techniques described herein may enable users to interact with communication channel on different devices (e.g., smartphones, tablets, mobile devices).

In some examples, a user may perform an authentication procedure to connect an account associated with a communication platform with an account associated with a data management platform. Once authenticated, the user may use the data management platform to interact with communication channels stored at or otherwise controlled by the communication platform. The data management platform may store the account information of the user, and may use this information to authenticate subsequent requests from the user.

As an example, a user may submit a request to generate a communication channel by interacting with a user interface associated with a data management platform. For example, a user interacting with a data record stored in the data management platform may use an “action” button to initiate generation of a communication channel associated with the data record. The user may further indicate an initial conversation name, an indication of whether the discussion is public or private, and identifiers of members to include in the conversation. The user may then submit the request. Once submitted, the request may be sent to an intermediary service that manages communications between the communication platform and the data management platform. The intermediary service may perform an authentication procedure to verify the identity of the user. Once authenticated, the request may be routed to the communication platform. In some examples, the communication platform may generate a communication channel in accordance with the request. In some instances, the user may add more participants to the communication channel (after generation). Additionally or alternatively, the user may associated the generated communication channel with an existing communication channel.

Thus, the techniques described herein may enable users to interact with the communication platform from the data management platform (e.g., via an intermediary service supporting application programming interface (API)), and may also enable the data management platform to post or display information within the communication platform. Thus, the described techniques may support generation of communication channel from the cloud-based data management platform.

It should be appreciated by a person skilled in the art that one or more aspects of the disclosure may be implemented in a system100to additionally or alternatively solve other problems than those described above. Furthermore, aspects of the disclosure may provide technical improvements to “conventional” systems or processes as described herein. However, the description and appended drawings only include example technical improvements resulting from implementing aspects of the disclosure, and accordingly do not represent all of the technical improvements provided within the scope of the claims.

FIG.2illustrates an example of a block diagram200that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The devices of block diagram200may implement or be implemented by aspects of the data processing system100as described inFIG.1. The block diagram200includes a server205which may be implemented by aspects of a cloud platform115or a subsystem125described with reference toFIG.1. The server205executes a communication generation service210. The block diagram200further includes a user device215(depicted as a cluster of devices), and a communication platform250, which may be implemented by aspects of a cloud platform115or a subsystem125described with reference toFIG.1. Example user devices215may include computing devices, smart devices, virtual assistants, etc., and the user device215may include servers supporting such systems (e.g., search servers, application servers, etc.). The user device215may transmit a set of user input to the server205. The set of user input may be used to generate a communication channel using a user interface supported by the server205. In some examples, the systems or servers supporting the server205(e.g., data management platform) may include computing systems that are logically or physically separated from systems or servers supporting the communication platform250.

As described herein, the block diagram200may support creation, configuration, and implementation of various communication channels that provide communications between a set of users (e.g., a set of users associated with a tenant). For example, the users associated may use the communication generation service210to perform actions that include processor-executable instructions for generation of communication channels. For example, a user may input an instruction that, when executed by a processor, selects users (e.g., customers) to be included in a communication channel.

The communication platform250may support a chat or instant messaging service used for various business functionalities. For example, teams associated with a tenant (of a multi-tenant system supported by the block diagram200) may use the communication platform250to manage communication channels supported by the data management platform (e.g., server205). Users may use the communication platform250to discuss aspects of the data management platform. For example, users of the communication platform250may decide to reconfigure or interact with a data record included in the server205(e.g., data management platform).

However, because the server205and the communication platform250may be implemented in separate computing systems and/or executed by separate applications, some features of the server205may be incompatible with the communication platform250. Thus, if a user wishes to communicate with another user within the communication platform250, the user may be unable to generate the communication channel from the data management platform (hosted by server205). Further, a user may be unable to post or otherwise display data associated with the data record into a communication channel of the communication platform250without manually inputting the data into a chat window of the communication platform250.

Techniques described herein may support improved cross-platform compatibility between the server205hosting the data management platform and the communication platform250. An instruction interface of the server205may include an input identification component230. The server205may receive a user input220via the instruction interface. The user input220may include a user input to generate a communication channel of a group-based communication platform (e.g., communication platform250) that is separate from the cloud-based data management platform (hosted by server205). In some examples, the communication channel may be for a data object of a set of data objects stored in the cloud-based data management platform. For example, a user may use an “action” button displayed on a user interface to initiate generation of a communication channel. Upon initiation of the generation of communication channel, the instruction interface of the server205may display a list of options for generating the communication channel. In some examples, the list of options may include a group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel.

In response to displaying the list of options, the input identifying component230may receive an input to the list of options for generating the communication channel. An option identifying component240may identify a name of the communication channel based on the input to the list of options, Additionally or alternatively, the option identifying component240may identify whether the communication channel is public or private based on the input to the list of options. In some examples, the option identifying component240may identify a selection of a subset of group of users for including in the communication channel based on the input to the list of options. In some examples, the option identifying component240may identify the subset of the group of users using metadata245for different clients (e.g., cloud clients105ofFIG.1).

The option identifying component240may generate an executable packet of instructions for ingesting into the group-based communication platform based on the input to the list of options. For example, the option identifying component240may generate the executable packet of instructions based on identifying the name of the communication channel, whether the communication channel is public or private, and the selection of the subset of group of users. In some examples, the user may initiate generation of a communication channel (using an “action” button) associated with a data object. The interface associated with the server205may display a list of users associated with the data record. In some examples, the group of users may include a first group of users that have access to the data object, a second group of users that follow the data object, or a combination thereof. The user may select a subset of users to be included in as participants in the communication channel. Additionally or alternatively, the user may indicate whether the communication channel is to be public, private (e.g., participants may have access to the communication channel) or partially private (e.g., a subset of users in addition to the participants may have access to the communication channel).

The instruction generation component230may transmit the executable packet of instructions for ingesting into the communication platform250. Upon ingestion, the communication platform250may generate a communication channel with the subset of users as participants. In some examples, an association component260may determine an existing communication channel in the communication platform250for the data object of the set of data objects. For instance, after generation of a communication channel, the user may choose to associate the channel with an existing communication channel. Additionally or alternatively, the association component260may associate the generated communication channel with an existing communication channel using stored associations265.

In some examples, the interface at the server205may display a list of communication channels for the user. For example, the user may be a member of a set of communication channels included in the list of communication channels. the user may select an option to display all communication channels that the user is a part of Additionally or alternatively, the input identification component230may receive a second user input to display a list of communication channels of the communication platform250associated with the data object of the set of data objects. The communication generation service210may display a list of communication channels associated with the data object in response to receiving the second user input.

In some examples, the input identification component230may receive second input to the list of options for generating a second communication channel. The instruction generation component235may generate a second executable packet of instructions for ingesting into the communication platform250based on the second input to the list of options. In some examples, the communication channel and the second communication channel may both be for a common data object. That is, components of the block diagram200may support generation of multiple communication channels associated with a common data object. Additionally or alternatively, the components of the block diagram200may support generation of multiple communication channels associated with different data objects. In some examples, different communication channels may include same or different groups of users and may have same or different privacy levels. In some examples, the associated component260may associate a generated communication channel with a second data object of the set of data objects.

FIG.3illustrates an example of a user interface300that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The user interface300may correspond to a desktop or mobile or other user interface type. In some cases, additional user interface types may be supported for implementing generating communication channels associated with a data object (e.g., data record). The user interface300may support a view of communication channel generation from a data management platform.

As depicted herein, a user of a device may be associated with a tenant of a multi-tenant database which may use the cloud platform for data management. The user interface300may be a part of a cloud platform that supports multiple data records. The user interface300may display a view of a data object supported by an application server. As depicted in the example ofFIG.3, the user interface300may support a set of data records configured for use in an application. As depicted in the example ofFIG.3, the set of data records may include a data record “updated user story” included in the pane312. The user interface300may support generation of communication channel associated with a relevant data record. In the example depicted herein, a user device may generate a communication channel associated with the data record “updated user story.”

The user interface300may include a section304indicating details related to the data record. Additionally or alternatively, the user interface300may include a section306identifying followers associated with the data record. As depicted in the example ofFIG.3, in addition to the list of followers displayed on the user interface300, the user may be able to search for additional followers. A user may select “discuss in communication channel” option308to generate a communication channel. Upon receiving the user input, the cloud-based data management platform including the user interface300may determine that the user input is to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform.

The user interface300may display the list of options310upon receiving a selection of option308from the user. The list of options310may include an option to create a new communication channel and an option to associate a communication channel to an existing communication channel. Additionally, the list of options310may include an identifier of the communication channel, a group of users for including in the communication channel, and a privacy level for the communication channel. As depicted in the example ofFIG.3, the list of options310may include an input box for the user to enter a channel name. The list of options310may further include an option for the user to add participants. In some examples, the data management platform may retrieve a group of users associated with the data record. The group of users that are linked to the data object may include at least one of a first group of users that have access to the data object, a second group of users that follow the data object, or a combination thereof. Additionally or alternatively, the list of options310may include an option to make the communication channel public and an option to make the communication channel private.

The data management platform may then generate an executable packet of instructions for ingesting into the group-based communication platform based on an input to the list of options310. The executable packet of instructions may include at least one of a communication channel identifier, a user identifier for a creator the executable packet of instructions, a user identifier for a modifier of the executable packet of instructions, a user identifier for a member of the data object, a user identifier for an owner of the data object, a privacy indicator, a record identifier, or a combination thereof. The data management platform may then transmit the executable packet of instructions for ingesting into the group-based communication platform. Thus, by implementing the techniques for generating a communication channel, the user interface300may improve user experience.

FIG.4illustrates an example of an instruction generation method400that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The instruction generation method400may be used to generate a communication channel on a communication platform.

A user of a cloud-based data management platform may use one or more options displayed on a user interface of the cloud-based data management platform to generate a communication channel on a group-based communication platform. A user may provide an input to a list of options to create a new communication channel. In the example ofFIG.4, the data management platform may generate an executable packet of instructions for ingesting into the group-based communication platform based on an input to the list of options. The executable packet of instructions may include record assignment415. The data management platform may use parameters for a record in a table405and parameters for a user object in a table410may be used to generate record assignment415. The record assignment415may include at least one of a communication channel identifier, a user identifier for a creator the executable packet of instructions (created by), a user identifier for a modifier of the executable packet of instructions, a user identifier for a member of the data object, a user identifier for an owner of the data object, a privacy indicator, a record identifier (record ID and record assignment name), or a combination thereof. The record identifier in the record assignment415may be received from the parameters for the record in the table405. Additionally or alternatively, the owner of the record assignment415may be received from the parameters for the user object in the table410. The data management platform then ingests the record assignment415to a communication platform through a cloud platform460. The communication platform may generate a communication channel420upon reception of the set of executable instructions (record assignment415). In some examples, the communication channel420may include a channel name, an indicator of the creator of the channel, an indicator of the modifier of the channel, an indicator of the owner of the channel and a channel identifier.

FIG.5illustrates an example of a process flow500that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The process flow500may implement aspects of system100ofFIG.1and includes a user device505(e.g., a set of user devices), which may be examples of devices associated with cloud client105ofFIG.1. Example user devices505include computing devices, smart devices, virtual assistants, etc. and the user device505may include servers supporting such systems (e.g., search servers, application servers, etc.). The process flow500further includes an application server510, which may be an example of aspects of cloud platform115ofFIG.1and may be an example of aspects of the application server205ofFIG.2(e.g., a database system, application server, etc.), and may support a cloud-based data management platform. The process flow500further includes a communication server512, which may be an example of aspects of the communication platform250ofFIG.2(e.g., a database system, application server, etc.), and may support a group-based communication platform.

The application server510may load, in a user interface of a cloud-based data management platform, an option to generate a communication channel. At515, the user device505may transmit a selection of a source element and an event associated with the source element. In some examples, the user device505may transmit, via a user interface of cloud-based data management platform storing a set of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform. In some examples, the communication channel may be for a data object of the set of data objects.

At520, the application server510may retrieve, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The application server510may then display, via the user interface, a list of options for generating the communication channel, the list of options including the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel.

At525, the user device505may transmit input to a list of options. The application server510may receive the input to the list of options for generating the communication channel. At530, the application server510may identify a name of the communication channel based on the input to the list of options. The application server510may identify whether the communication channel is public or private based at least in part on the input to the list of options. Additionally or alternatively, the application server510may identify a selection of a subset of group of users for including in the communication channel based on the input to the list of options.

At535, the application server510may generate an executable packet of instructions for ingesting into the group-based communication platform based on the input to the list of options. In some examples, the executable packet of instructions may include at least one of a communication channel identifier, a user identifier for a creator the executable packet of instructions, a user identifier for a modifier of the executable packet of instructions, a user identifier for a member of the data object, a user identifier for an owner of the data object, a privacy indicator, a record identifier, or a combination thereof.

At540, the application server510may transmit the executable packet of instructions for ingesting into the group-based communication platform. At545, the communication server512may generate a communication channel based on the executable packet of instructions transmitted by the application server510.

FIG.6shows a block diagram600of a device605that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The device605may include an input module610, an output module615, and a communication channel component620. The device605may also include a processor. Each of these components may be in communication with one another (e.g., via one or more buses).

The input module610may manage input signals for the device605. For example, the input module610may identify input signals based on an interaction with a modem, a keyboard, a mouse, a touchscreen, or a similar device. These input signals may be associated with user input or processing at other components or devices. In some cases, the input module610may utilize an operating system such as iOS®, ANDROID®, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, LINUX®, or another known operating system to handle input signals. The input module610may send aspects of these input signals to other components of the device605for processing. For example, the input module610may transmit input signals to the communication channel component620to support methods to generate communication channel for data objects. In some cases, the input module610may be a component of an I/O controller810as described with reference toFIG.8.

The output module615may manage output signals for the device605. For example, the output module615may receive signals from other components of the device605, such as the communication channel component620, and may transmit these signals to other components or devices. In some examples, the output module615may transmit output signals for display in a user interface, for storage in a database or data store, for further processing at a server or server cluster, or for any other processes at any number of devices or systems. In some cases, the output module615may be a component of an I/O controller810as described with reference toFIG.8.

For example, the communication channel component620may include an input component625, a user information component630, a display component635, an instruction generation component640, an instruction transmission component645, or any combination thereof. In some examples, the communication channel component620, or various components thereof, may be configured to perform various operations (e.g., receiving, monitoring, transmitting) using or otherwise in cooperation with the input module610, the output module615, or both. For example, the communication channel component620may receive information from the input module610, send information to the output module615, or be integrated in combination with the input module610, the output module615, or both to receive information, transmit information, or perform various other operations as described herein.

The communication channel component620may support communication channel creation in accordance with examples as disclosed herein. The input component625may be configured as or otherwise support a means for receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The user information component630may be configured as or otherwise support a means for retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The display component635may be configured as or otherwise support a means for displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The instruction generation component640may be configured as or otherwise support a means for generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The instruction transmission component645may be configured as or otherwise support a means for transmitting the executable packet of instructions for ingesting into the group-based communication platform.

FIG.7shows a block diagram700of a communication channel component720that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The communication channel component720may be an example of aspects of a communication channel component or a communication channel component620, or both, as described herein. The communication channel component720, or various components thereof, may be an example of means for performing various aspects of methods to generate communication channel for data objects as described herein. For example, the communication channel component720may include an input component725, a user information component730, a display component735, an instruction generation component740, an instruction transmission component745, a communication channel component750, an association component755, or any combination thereof. Each of these components may communicate, directly or indirectly, with one another (e.g., via one or more buses).

The communication channel component720may support communication channel creation in accordance with examples as disclosed herein. The input component725may be configured as or otherwise support a means for receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The user information component730may be configured as or otherwise support a means for retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The display component735may be configured as or otherwise support a means for displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The instruction generation component740may be configured as or otherwise support a means for generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The instruction transmission component745may be configured as or otherwise support a means for transmitting the executable packet of instructions for ingesting into the group-based communication platform.

In some examples, the input component725may be configured as or otherwise support a means for receiving, via the user interface, the input to the list of options for generating the communication channel, wherein generating the executable packet of instructions is based at least in part on the received input.

In some examples, the communication channel component750may be configured as or otherwise support a means for identifying a name of the communication channel based at least in part on the input to the list of options. In some examples, the communication channel component750may be configured as or otherwise support a means for identifying whether the communication channel is public or private based at least in part on the input to the list of options. In some examples, the communication channel component750may be configured as or otherwise support a means for identifying a selection of a subset of group of users for including in the communication channel based at least in part on the input to the list of options, wherein generating the executable packet of instructions is based at least in part on identifying the name of the communication channel, whether the communication channel is public or private, and the selection of the subset of group of users.

In some examples, the communication channel component750may be configured as or otherwise support a means for determining an existing communication channel in the group-based communication platform for the data object of the plurality of data objects. In some examples, the communication channel component750may be configured as or otherwise support a means for associating the communication channel with the existing communication channel.

In some examples, the user information component730may be configured as or otherwise support a means for identifying a user associated with the user input to generate the communication channel of the group-based communication platform. In some examples, the display component735may be configured as or otherwise support a means for displaying, via the user interface, a list of communication channels for the user, wherein the user is a member of a plurality of communication channels included in the list of communication channels.

In some examples, the input component725may be configured as or otherwise support a means for receiving, via the user interface, the input to the list of options for generating the communication channel. In some examples, the input component725may be configured as or otherwise support a means for receiving, via the user interface, a second input to the list of options for generating a second communication channel. In some examples, the instruction generation component740may be configured as or otherwise support a means for generating a second executable packet of instructions for ingesting into the group-based communication platform based at least in part on the second input to the list of options, wherein the communication channel and the second communication channel are both for the data object of the plurality of data objects.

In some examples, the communication channel includes a first group of users and the second communication channel includes a second group of users. In some examples, the first group of users and the second group of users are the same or different. In some examples, the communication channel and the second communication channel have the same privacy levels or different privacy levels.

In some examples, the association component755may be configured as or otherwise support a means for associating the generated communication channel with a second data object of the plurality of data objects. In some examples, the input component725may be configured as or otherwise support a means for receiving a second user input to display a list of communication channels of the group-based communication platform associated with the data object of the plurality of data objects. In some examples, the display component735may be configured as or otherwise support a means for displaying, via the user interface, the list of communication channels in response to receiving the second user input.

In some examples, the input component725may be configured as or otherwise support a means for receiving an indication indicating that the communication channel is generated at the group-based communication platform. In some examples, the group of users that are linked to the data object comprise at least one of a first group of users that have access to the data object, a second group of users that follow the data object, or a combination thereof. In some examples, the executable packet of instructions comprises at least one of a communication channel identifier, a user identifier for a creator the executable packet of instructions, a user identifier for a modifier of the executable packet of instructions, a user identifier for a member of the data object, a user identifier for an owner of the data object, a privacy indicator, a record identifier, or a combination thereof.

FIG.8shows a diagram of a system800including a device805that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The device805may be an example of or include the components of a device605as described herein. The device805may include components for bi-directional data communications including components for transmitting and receiving communications, such as a communication channel component820, an I/O controller810, a database controller815, a memory825, a processor830, and a database835. These components may be in electronic communication or otherwise coupled (e.g., operatively, communicatively, functionally, electronically, electrically) via one or more buses (e.g., a bus840).

The I/O controller810may manage input signals845and output signals850for the device805. The I/O controller810may also manage peripherals not integrated into the device805. In some cases, the I/O controller810may represent a physical connection or port to an external peripheral. In some cases, the I/O controller810may utilize an operating system such as iOS®, ANDROID®, MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, LINUX®, or another known operating system. In other cases, the I/O controller810may represent or interact with a modem, a keyboard, a mouse, a touchscreen, or a similar device. In some cases, the I/O controller810may be implemented as part of a processor830. In some examples, a user may interact with the device805via the I/O controller810or via hardware components controlled by the I/O controller810.

The database controller815may manage data storage and processing in a database835. In some cases, a user may interact with the database controller815. In other cases, the database controller815may operate automatically without user interaction. The database835may be an example of a single database, a distributed database, multiple distributed databases, a data store, a data lake, or an emergency backup database.

Memory825may include random-access memory (RAM) and ROM. The memory825may store computer-readable, computer-executable software including instructions that, when executed, cause the processor830to perform various functions described herein. In some cases, the memory825may contain, among other things, a BIOS which may control basic hardware or software operation such as the interaction with peripheral components or devices.

The processor830may include an intelligent hardware device, (e.g., a general-purpose processor, a DSP, a CPU, a microcontroller, an ASIC, an FPGA, a programmable logic device, a discrete gate or transistor logic component, a discrete hardware component, or any combination thereof). In some cases, the processor830may be configured to operate a memory array using a memory controller. In other cases, a memory controller may be integrated into the processor830. The processor830may be configured to execute computer-readable instructions stored in a memory825to perform various functions (e.g., functions or tasks supporting methods to generate communication channel for data objects).

The communication channel component820may support communication channel creation in accordance with examples as disclosed herein. For example, the communication channel component820may be configured as or otherwise support a means for receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The communication channel component820may be configured as or otherwise support a means for retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The communication channel component820may be configured as or otherwise support a means for displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The communication channel component820may be configured as or otherwise support a means for generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The communication channel component820may be configured as or otherwise support a means for transmitting the executable packet of instructions for ingesting into the group-based communication platform.

By including or configuring the communication channel component820in accordance with examples as described herein, the device805may support techniques for generating communication channels. For example, the techniques described herein may enable users of a data management platform to interact with (e.g., affect, change, update, modify) communication channels stored at or otherwise controlled by a group-based communication platform. By supporting generating communication channels from the data management platform, the device805may enable users to update and manage communication channels with greater efficiency, lower communication resource overhead, reduced latency, and higher user satisfaction, among other benefits.

FIG.9shows a flowchart illustrating a method900that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The operations of the method900may be implemented by an application server or its components as described herein. For example, the operations of the method900may be performed by an application server as described with reference toFIGS.1through8. In some examples, an application server may execute a set of instructions to control the functional elements of the application server to perform the described functions. Additionally or alternatively, the application server may perform aspects of the described functions using special-purpose hardware.

At905, the method may include receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The operations of905may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of905may be performed by an input component725as described with reference toFIG.7.

At910, the method may include retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The operations of910may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of910may be performed by a user information component730as described with reference toFIG.7.

At915, the method may include displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The operations of915may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of915may be performed by a display component735as described with reference toFIG.7.

At920, the method may include generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The operations of920may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of920may be performed by an instruction generation component740as described with reference toFIG.7.

At925, the method may include transmitting the executable packet of instructions for ingesting into the group-based communication platform. The operations of925may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of925may be performed by an instruction transmission component745as described with reference toFIG.7.

FIG.10shows a flowchart illustrating a method1000that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The operations of the method1000may be implemented by an application server or its components as described herein. For example, the operations of the method1000may be performed by an application server as described with reference toFIGS.1through8. In some examples, an application server may execute a set of instructions to control the functional elements of the application server to perform the described functions. Additionally or alternatively, the application server may perform aspects of the described functions using special-purpose hardware.

At1005, the method may include receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The operations of1005may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1005may be performed by an input component725as described with reference toFIG.7.

At1010, the method may include retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The operations of1010may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1010may be performed by a user information component730as described with reference toFIG.7.

At1015, the method may include displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The operations of1015may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1015may be performed by a display component735as described with reference toFIG.7.

At1020, the method may include receiving, via the user interface, the input to the list of options for generating the communication channel, wherein generating the executable packet of instructions is based at least in part on the received input. The operations of1020may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1020may be performed by an input component725as described with reference toFIG.7.

At1025, the method may include identifying a name of the communication channel based at least in part on the input to the list of options. The operations of1025may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1025may be performed by a communication channel component750as described with reference toFIG.7.

At1030, the method may include identifying whether the communication channel is public or private based at least in part on the input to the list of options. The operations of1030may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1030may be performed by a communication channel component750as described with reference toFIG.7.

At1035, the method may include identifying a selection of a subset of group of users for including in the communication channel based at least in part on the input to the list of options. The operations of1035may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1035may be performed by a communication channel component750as described with reference toFIG.7.

At1040, the method may include generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. In some examples, generating the executable packet of instructions is based at least in part on identifying the name of the communication channel, whether the communication channel is public or private, and the selection of the subset of group of users. The operations of1040may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1040may be performed by an instruction generation component740as described with reference toFIG.7.

At1045, the method may include transmitting the executable packet of instructions for ingesting into the group-based communication platform. The operations of1045may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1045may be performed by an instruction transmission component745as described with reference toFIG.7.

FIG.11shows a flowchart illustrating a method1100that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The operations of the method1100may be implemented by an application server or its components as described herein. For example, the operations of the method1100may be performed by an application server as described with reference toFIGS.1through8. In some examples, an application server may execute a set of instructions to control the functional elements of the application server to perform the described functions. Additionally or alternatively, the application server may perform aspects of the described functions using special-purpose hardware.

At1105, the method may include receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The operations of1105may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1105may be performed by an input component725as described with reference toFIG.7.

At1110, the method may include retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The operations of1110may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1110may be performed by a user information component730as described with reference toFIG.7.

At1115, the method may include displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The operations of1115may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1115may be performed by a display component735as described with reference toFIG.7.

At1120, the method may include generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The operations of1120may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1120may be performed by an instruction generation component740as described with reference toFIG.7.

At1125, the method may include transmitting the executable packet of instructions for ingesting into the group-based communication platform. The operations of1125may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1125may be performed by an instruction transmission component745as described with reference toFIG.7.

At1130, the method may include determining an existing communication channel in the group-based communication platform for the data object of the plurality of data objects. The operations of1130may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1130may be performed by a communication channel component750as described with reference toFIG.7.

At1135, the method may include associating the communication channel with the existing communication channel. The operations of1135may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1135may be performed by a communication channel component750as described with reference toFIG.7.

FIG.12shows a flowchart illustrating a method1200that supports methods to generate communication channel for data objects in accordance with aspects of the present disclosure. The operations of the method1200may be implemented by an application server or its components as described herein. For example, the operations of the method1200may be performed by an application server as described with reference toFIGS.1through8. In some examples, an application server may execute a set of instructions to control the functional elements of the application server to perform the described functions. Additionally or alternatively, the application server may perform aspects of the described functions using special-purpose hardware.

At1205, the method may include receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects. The operations of1205may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1205may be performed by an input component725as described with reference toFIG.7.

At1210, the method may include retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform. The operations of1210may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1210may be performed by a user information component730as described with reference toFIG.7.

At1215, the method may include displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel. The operations of1215may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1215may be performed by a display component735as described with reference toFIG.7.

At1220, the method may include generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options. The operations of1220may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1220may be performed by an instruction generation component740as described with reference toFIG.7.

At1225, the method may include transmitting the executable packet of instructions for ingesting into the group-based communication platform. The operations of1225may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1225may be performed by an instruction transmission component745as described with reference toFIG.7.

At1230, the method may include identifying a user associated with the user input to generate the communication channel of the group-based communication platform. The operations of1230may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1230may be performed by a user information component730as described with reference toFIG.7.

At1235, the method may include displaying, via the user interface, a list of communication channels for the user, wherein the user is a member of a plurality of communication channels included in the list of communication channels. The operations of1235may be performed in accordance with examples as disclosed herein. In some examples, aspects of the operations of1235may be performed by a display component735as described with reference toFIG.7.

A method for communication channel creation is described. The method may include receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects, retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform, displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel, generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options, and transmitting the executable packet of instructions for ingesting into the group-based communication platform.

An apparatus for communication channel creation is described. The apparatus may include a processor, memory coupled with the processor, and instructions stored in the memory. The instructions may be executable by the processor to cause the apparatus to receive, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects, retrieve, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform, display, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel, generate an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options, and transmit the executable packet of instructions for ingesting into the group-based communication platform.

Another apparatus for communication channel creation is described. The apparatus may include means for receiving, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects, means for retrieving, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform, means for displaying, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel, means for generating an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options, and means for transmitting the executable packet of instructions for ingesting into the group-based communication platform.

A non-transitory computer-readable medium storing code for communication channel creation is described. The code may include instructions executable by a processor to receive, via a user interface of cloud-based data management platform storing a plurality of data objects, a user input to generate a communication channel of a group-based communication platform that is separate from the cloud-based data management platform, wherein the communication channel is for a data object of the plurality of data objects, retrieve, in response to receiving the user input, a group of users that are linked to the data object within the cloud-based data management platform, display, via the user interface, a list of options for generating the communication channel, the list of options comprising the group of users for including in the communication channel, a privacy level for the communication channel, and an identifier of the communication channel, generate an executable packet of instructions for ingesting into the group-based communication platform based at least in part on an input to the list of options, and transmit the executable packet of instructions for ingesting into the group-based communication platform.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for receiving, via the user interface, the input to the list of options for generating the communication channel, wherein generating the executable packet of instructions may be based at least in part on the received input.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for identifying a name of the communication channel based at least in part on the input to the list of options, identifying whether the communication channel may be public or private based at least in part on the input to the list of options, and identifying a selection of a subset of group of users for including in the communication channel based at least in part on the input to the list of options, wherein generating the executable packet of instructions may be based at least in part on identifying the name of the communication channel, whether the communication channel may be public or private, and the selection of the subset of group of users.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for determining an existing communication channel in the group-based communication platform for the data object of the plurality of data objects and associating the communication channel with the existing communication channel.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for identifying a user associated with the user input to generate the communication channel of the group-based communication platform and displaying, via the user interface, a list of communication channels for the user, wherein the user may be a member of a plurality of communication channels included in the list of communication channels.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for receiving, via the user interface, the input to the list of options for generating the communication channel, receiving, via the user interface, a second input to the list of options for generating a second communication channel, and generating a second executable packet of instructions for ingesting into the group-based communication platform based at least in part on the second input to the list of options, wherein the communication channel and the second communication channel may be both for the data object of the plurality of data objects.

In some examples of the method, apparatuses, and non-transitory computer-readable medium described herein, the communication channel includes a first group of users and the second communication channel includes a second group of users.

In some examples of the method, apparatuses, and non-transitory computer-readable medium described herein, the first group of users and the second group of users may be the same or different.

In some examples of the method, apparatuses, and non-transitory computer-readable medium described herein, the communication channel and the second communication channel may have the same privacy levels or different privacy levels.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for associating the generated communication channel with a second data object of the plurality of data objects.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for receiving a second user input to display a list of communication channels of the group-based communication platform associated with the data object of the plurality of data objects and displaying, via the user interface, the list of communication channels in response to receiving the second user input.

Some examples of the method, apparatuses, and non-transitory computer-readable medium described herein may further include operations, features, means, or instructions for receiving an indication indicating that the communication channel may be generated at the group-based communication platform.

In some examples of the method, apparatuses, and non-transitory computer-readable medium described herein, the group of users that may be linked to the data object comprise at least one of a first group of users that may have access to the data object, a second group of users that follow the data object, or a combination thereof.

In some examples of the method, apparatuses, and non-transitory computer-readable medium described herein, the executable packet of instructions comprises at least one of a communication channel identifier, a user identifier for a creator the executable packet of instructions, a user identifier for a modifier of the executable packet of instructions, a user identifier for a member of the data object, a user identifier for an owner of the data object, a privacy indicator, a record identifier, or a combination thereof.

It should be noted that the methods described above describe possible implementations, and that the operations and the steps may be rearranged or otherwise modified and that other implementations are possible. Furthermore, aspects from two or more of the methods may be combined.

The description set forth herein, in connection with the appended drawings, describes example configurations and does not represent all the examples that may be implemented or that are within the scope of the claims. The term “exemplary” used herein means “serving as an example, instance, or illustration,” and not “preferred” or “advantageous over other examples.” The detailed description includes specific details for the purpose of providing an understanding of the described techniques. These techniques, however, may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form in order to avoid obscuring the concepts of the described examples.

In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If just the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.

Information and signals described herein may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields or particles, or any combination thereof.

The various illustrative blocks and modules described in connection with the disclosure herein may be implemented or performed with a general-purpose processor, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g., a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration).

The functions described herein may be implemented in hardware, software executed by a processor, firmware, or any combination thereof. If implemented in software executed by a processor, the functions may be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Other examples and implementations are within the scope of the disclosure and appended claims. For example, due to the nature of software, functions described above can be implemented using software executed by a processor, hardware, firmware, hardwiring, or combinations of any of these. Features implementing functions may also be physically located at various positions, including being distributed such that portions of functions are implemented at different physical locations. Also, as used herein, including in the claims, “or” as used in a list of items (for example, a list of items prefaced by a phrase such as “at least one of” or “one or more of”) indicates an inclusive list such that, for example, a list of at least one of A, B, or C means A or B or C or AB or AC or BC or ABC (i.e., A and B and C). Also, as used herein, the phrase “based on” shall not be construed as a reference to a closed set of conditions. For example, an exemplary step that is described as “based on condition A” may be based on both a condition A and a condition B without departing from the scope of the present disclosure. In other words, as used herein, the phrase “based on” shall be construed in the same manner as the phrase “based at least in part on.”

Computer-readable media includes both non-transitory computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A non-transitory storage medium may be any available medium that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, non-transitory computer-readable media can comprise RAM, ROM, electrically erasable programmable ROM (EEPROM), compact disk (CD) ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other non-transitory medium that can be used to carry or store desired program code means in the form of instructions or data structures and that can be accessed by a general-purpose or special-purpose computer, or a general-purpose or special-purpose processor. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Disk and disc, as used herein, include CD, laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of computer-readable media.

The description herein is provided to enable a person skilled in the art to make or use the disclosure. Various modifications to the disclosure will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other variations without departing from the scope of the disclosure. Thus, the disclosure is not limited to the examples and designs described herein, but is to be accorded the broadest scope consistent with the principles and novel features disclosed herein.