Manage the user-channel membership relationship
Requires App Context
To set up and manage channel membership, you must enable App Context for your app's keyset in the Admin Portal.
When a user joins a channel or gets invited to it, a membership relationship between that user and the channel is created (Membership entity). The membership ends when this user leaves the channel.
Read on to learn how to check and update user-channel membership.
Get membership
There are two GetMemberships() methods that return a wrapper containing a list of all channel memberships of a given user.
Both of these methods give the same output. The only difference is that you call a given method either on the User or the Channel object.
To get a list of all existing channels, use the GetChannels() method.
Method signature
This method takes the following parameters:
-
GetMemberships()(on theUserobject)1user.GetMemberships(
2 string filter = "",
3 string sort = "",
4 int limit = 0,
5 PNPageObject page = null
6) -
GetUserMemberships()(on theChatobject)1chat.GetUserMemberships(
2 string userId,
3 string filter = "",
4 string sort = "",
5 int limit = 0,
6 PNPageObject page = null
7) -
GetMemberships()(on theChannelobject)1channel.GetMemberships(
2 string filter = "",
3 string sort = "",
4 int limit = 0,
5 PNPageObject page = null
6) -
GetChannelMemberships()(on theChatobject)1chat.GetChannelMemberships(
2 string channelId,
3 string filter = "",
4 string sort = "",
5 int limit = 0,
6 PNPageObject page = null
7)
Input
| Parameter | Required for GetMemberships() on User | Required for GetUserMemberships() on Chat | Required for GetMemberships() on Channel | Required for GetChannelMemberships() on Chat | Description |
|---|---|---|---|---|---|
userIdType: stringDefault: n/a | Yes | No | No | No | ID of the user for which you want to retrieve memberships. |
channelIdType: stringDefault: n/a | No | No | Yes | No | ID of the channel for which you want to retrieve memberships. |
filterType: stringDefault: empty string | No | No | No | No | Expression used to filter the results. Returns only these memberships whose properties satisfy the given expression. The filter language is defined here. |
sortType: stringDefault: empty string | No | No | No | No | Key-value pair of a property to sort by, and a sort direction. Available options are id, name, and updated. Use asc or desc to specify the sorting direction, or specify null to take the default sorting direction (ascending). For example: {name: "asc"}. By default, the items are sorted by the last updated date. |
limitType: intDefault: 0 | No | No | No | No | Number of objects to return in response. |
pageType: PNPageObjectDefault: null | No | No | No | No | Object used for pagination to define which previous or next result page you want to fetch. |
Output
| Type | Description |
|---|---|
Task<ChatOperationResult<MembersResponseWrapper>> | An awaitable Task with the object containing the filtered, sorted, and paginated list of memberships. |
Sample code
Find out which channels the support_agent_15 user is a member of.
1
Get updates
These methods let you receive updates when specific user-channel Membership objects are edited (status, type, custom data) on other clients:
SetListeningForUpdates()— listen forMembershipobject update information.OnMembershipUpdated— add a single event handler to a singleMembershipobject update.AddListenerToMembershipsUpdate()— add a single event handler to eachMembershipobject update from the provided list.
Membership changes
These methods notify you about field changes (e.g., metadata, status) for existing memberships, not new membership additions or removals.
Method signature
These methods take the following parameters:
-
SetListeningForUpdates1membership.SetListeningForUpdates(bool listen) -
OnMembershipUpdated1// event on the Membership entity
2Action<Membership> OnMembershipUpdated;
3// needs a corresponding event handler
4void EventHandler(Membership membership) -
AddListenerToMembershipsUpdate()1chat.AddListenerToMembershipsUpdate(
2 List<Membership> memberships,
3 Action<Membership> listener
4)
Input
| Parameter | Required in SetListeningForUpdates | Required in OnMembershipUpdated | Required in AddListenerToMembershipsUpdate() | Description |
|---|---|---|---|---|
listenType: boolDefault: n/a | Yes | n/a | n/a | Whether to listen to Membership object updates. |
membershipsType: List<Membership>Default: n/a | No | No | Yes | List of memberships for which you want to get updates. |
listenerType: Action<Membership>Default: n/a | No | Yes | Yes | The definition of the custom behavior to be executed when detecting membership changes. |
Output
This method doesn't return anything.
Sample code
Get updates on the first user membership.
1
Update
Update() updates the channel membership information for a given user.
Method signature
This method takes the following parameters:
1membership.Update(ChatMembershipData membershipData)
Input
| Parameter | Description |
|---|---|
membershipData *Type: ChatMembershipDataDefault: n/a | Any custom properties or metadata associated with the channel-user membership. |
Output
An awaitable Task<ChatOperationResult>.
Sample code
Assign the premium-support role to support_agent_15 on the high-priority-incidents channel.
1