Manage the user-channel membership relationship
Requires App Context
Enable App Context for your keyset in the Admin Portal.
A Membership entity is created when a user joins or is invited to a channel, and ends when the user leaves.
Get membership
Get all channel memberships for a user or channel with GetMemberships().
To list all channels, use GetChannels() instead.
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
Check membership
Check whether a user is a member of a channel, or retrieve a specific membership object.
Method signature
These methods take the following parameters:
-
HasMember()(on theChannelobject)1channel.HasMember(string userId) -
GetMember()(on theChannelobject)1channel.GetMember(string userId) -
IsMemberOn()(on theUserobject)1user.IsMemberOn(string channelId) -
GetMembership()(on theUserobject)1user.GetMembership(string channelId)
Input
| Parameter | Description |
|---|---|
userIdType: stringDefault: n/a | The user ID to check membership for. |
channelIdType: stringDefault: n/a | The channel ID to check membership on. |
Output
| Method | Description |
|---|---|
HasMember()Type: Task<ChatOperationResult<bool>> | Returns true if the user is a member of the channel. |
GetMember()Type: Task<ChatOperationResult<Membership>> | Returns the Membership object for the user-channel relationship. |
IsMemberOn()Type: Task<ChatOperationResult<bool>> | Returns true if the user is a member of the channel. |
GetMembership()Type: Task<ChatOperationResult<Membership>> | Returns the Membership object for the user-channel relationship. |
Sample code
Check if a user is a member of some_channel using the Channel object.
1
Check if a user is a member of some_channel using the User object.
1
Get updates
Receive updates when Membership objects are edited or deleted:
StreamUpdates()- monitors a single membershipOnUpdatedandOnDeleted- event handlers for single membership changesStreamUpdatesOn()- monitors multiple memberships
Method naming
Earlier versions used SetListeningForUpdates() to enable streaming. This method has been superseded by StreamUpdates(), though it remains available for backward compatibility.
Method signature
These methods take the following parameters:
-
StreamUpdates()1membership.StreamUpdates(bool stream) -
OnUpdated1// event on the Membership entity
2public event Action<Membership> OnUpdated;
3// needs a corresponding event handler
4void EventHandler(Membership membership) -
OnDeleted1// event on the Membership entity
2public event Action OnDeleted;
3// needs a corresponding event handler
4void EventHandler() -
StreamUpdatesOn()(static)1Membership.StreamUpdatesOn(
2 List<Membership> memberships,
3 Action<Membership> listener
4)
Input
| Parameter | Required in StreamUpdates() | Required in OnUpdated / OnDeleted | Required in StreamUpdatesOn() | Description |
|---|---|---|---|---|
streamType: boolDefault: n/a | Yes | n/a | n/a | Whether to start (true) or stop (false) listening to Membership object updates. |
membershipsType: List<Membership>Default: n/a | No | No | Yes | List of Membership objects for which you want to get updates. |
listenerType: Action<Membership>Default: n/a | No | No | Yes | Callback that receives the specific membership that was updated. |
Output
These methods don't return a value. Updates are delivered through event handlers or callback functions.
Sample code
Get updates on the first user membership.
1
Delete
Remove a user-channel membership with Delete() on a Membership object. This permanently removes the membership from App Context.
Method signature
This method has the following signature:
1membership.Delete()
Input
This method doesn't take any parameters.
Output
| Type | Description |
|---|---|
Task<ChatOperationResult> | Returned Task that you can await to get the result of the delete operation. |
Sample code
Delete the membership for support_agent_15 on the high-priority-incidents channel.
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