Group Messages

Update time: 2023/03/24 03:10:29

NIM SDK can send and receive messages in groups, receive notification messages for group operations, and set message notification modes.

Messaging in groups

You can send and receive multiple types of messages in group chats.

After creating or joining a group, the interface used to send and receive messages is the same as that of P2P messaging. The difference lies in the of the session type (NIMSessionType). Select kNIMSessionTypeTeam for group messages.

NIMSessionType

Enumeration Description
kNIMSessionTypeP2P One-on-one chat
kNIMSessionTypeTeam Advanced group
kNIMSessionTypeSuperTeam Supergroup

For information about how messaging works, see Messaging.

Group notification messages

NIM SDK provides built-in message types (NIMMessageType). Notifications (`kNIMMessageTypeNotification·) are sent for events of groups, chat rooms and supergroups. Notifications of this type are sent by the CommsEase server, and clients cannot send notification messages.

The following events trigger group notification messages.

NIMNotificationId Description
kNIMNotificationIdTeamSyncCreate A group is created.
kNIMNotificationIdTeamInviteAccept An invitation is accepted with consent.
kNIMNotificationIdTeamInvite An invitation is accepted without consent.
kNIMNotificationIdTeamMemberChanged Group members change.
kNIMNotificationIdTeamAddManager A new administrator is added.
kNIMNotificationIdTeamKick A member is removed.
kNIMNotificationIdTeamOwnerTransfer The ownership is transferred.
kNIMNotificationIdTeamApplyPass A join request is approved.
kNIMNotificationIdTeamRemoveManager An administrator is removed.
kNIMNotificationIdTeamDismiss A group is deleted.
kNIMNotificationIdTeamLeave A member leaves a group.
kNIMNotificationIdTeamMuteMember A member is muted or unmuted.
kNIMNotificationIdTeamUpdate The group profile is updated
kNIMNotificationIdTeamSyncUpdateMemberProperty The member profile is updated.
kNIMNotificationIdLocalGetTeamMsgUnreadCount Get unread count of group messages.
kNIMNotificationIdLocalGetTeamMsgUnreadList Get the list of unread group messages.

Do-Not-Disturb

The SDK can set the configuration of the alert mode for message notifications. Group message alerts are divided into:

  • All messages are alerted (default)
  • Only messages sent from the group owner and administrators are alerted
  • No alert

The alerts belong to Push service and alerts provided by the CommsEase SDK.

The alert mode of messages does not affect receiving messages and the unread count. If you set the alert mode to no alerts, you can still receive group messages, and the unread count will still change.

Set the Do-Not-Disturb status

C++

Set the option to alert group messages by calling the UpdateMyPropertyAsync method.

**Interface prototype: **

static bool nim::Team::UpdateMyPropertyAsync	(const TeamMemberProperty & 	prop,
                                                 const TeamEventCallback & 	cb,
                                                 const std::string & 	json_extension = "" 
)	

Parameters:

Parameter Description
prop Member attribute. For more information, see TeamMemberProperty
json_extension Custom extension field
cb Callback for edit the member profile.

Sample code:

long long new_bits = 0;
if (All messages are alerted)
	new_bits &= ~nim::kNIMTeamBitsConfigMaskMuteNotify;
else if (No alert)
	new_bits |= nim::kNIMTeamBitsConfigMaskMuteNotify;
else//Only messages sent from administrators are alerted.
	new_bits |= nim::kNIMTeamBitsConfigMaskOnlyAdmin;
nim::TeamMemberProperty values(Group ID, account ID, and role);
values.SetBits(new_bits);
nim::Team::UpdateMyPropertyAsync(values, nbase::Bind(&TeamCallback::OnTeamEventCallback, std::placeholders::_1));

void TeamCallback::OnTeamEventCallback(const nim::TeamEvent& result)
{
	...
}

Error codes

Code Description
200 The operation was successful.
803 Group does not exist
804 The user is not a member of a group.
805 Invalid group type
C

Set the option to alert group messages by calling the nim_team_update_my_property_async function.

Sample code:

static CallbackFunc(int res_code,
    int notification_id,
    const char* tid,
    const char* result,
    const char* json_extension,
    const void* user_data){
	printf("res_code %d", res_code);
};

// const char* team_info_json = ......
nim_team_update_my_property_async(team_info_json, "", &CallbackFunc, NULL);

Query Do-Not-Disturb

C++

Get the alert type for group notifications by calling the GetBits method in TeamMemberProperty.

Sample code

TeamMemberProperty prop{};
// ...
int64_t bits = prop.GetBits();
if ( bits & kNIMTeamBitsConfigMaskMuteNotify ) {
	std::cout << "Close alert";
} elseif ( bits & kNIMTeamBitsConfigMaskOnlyAdmin ) {
	std::cout << "Receive only messages sent by administrators";
}
C

Get the alert type for group notifications with the bits in NIMTeamMemberInfo.

Sample code

// team_member_prop_json
int64_t bits = team_member_prop_json[nim::kNIMTeamUserKeyBits].asInt64();
if ( bits & kNIMTeamBitsConfigMaskMuteNotify ) {
  printf("Close alerts");
} elseif ( bits & kNIMTeamBitsConfigMaskOnlyAdmin ) {
  printf("Receive only messages sent by administrators");
}

Read receipt for group messages

For read receipt for group messages or queries of unread count of group messages , see Read receipt of group messages.

API reference

C++
API
Description
UpdateMyPropertyAsync Set the option to alert group messages
GetBits Get the alert type for notification messages
TeamMsgAckReadEx Read receipt of group messages.
TeamMsgQueryUnreadList Get the list of members that have not read a specified message.
TeamMsgQueryUnreadList Get the list of members that have read or unread group messages by group ID.
C
API
Description
nim_team_update_my_property_async Set the option to alert group messages
nim_team_msg_ack_read_ex Read receipt of group messages.
nim_team_msg_query_unread_list Get the list of members that have not read a specified message.
Was this page helpful?
Yes
No
  • Messaging in groups
  • Group notification messages
  • Do-Not-Disturb
  • Set the Do-Not-Disturb status
  • Query Do-Not-Disturb
  • Read receipt for group messages
  • API reference