please select
  • UIKit
  • SDK
  • Server APIs
Chat/
SDK/
Web/
Community Topic/
SDK
  • Install Chat SDK
  • Initialize Chat SDK
  • Login and Logout
  • Client APIs
  • Changelog
  • Message
    • Overview
    • Send a Message
    • Receive a Message
    • Historical Message
    • Forward Messages
    • Modify a Message
    • Delete Messages
    • Clear History Message
    • Recall a Message
    • Send an Online Message
    • Message Read Receipt
    • Query Messages
    • Targeted Group Message
    • Do not Notify
    • Key-Value Extensions
    • Translation
  • Conversation
    • Overview
    • Conversation List
    • Get Conversations
    • Unread Count
    • Pin Conversations
    • Delete Conversations
    • Mark
    • Conversation Group
  • Group
    • Overview
    • Group Management
    • Group Profile
    • Group Member Management
    • Group Member Profile
    • Custom Group Attribute
    • Group Counter
  • Community Topic
    • Community Management
  • User Profile and Relationship Chain
    • User Profile
    • User Status
    • Friend Management
    • Friend Group
    • Block List
  • Guideline for Beginners
  • Console Guide
    • Creating and Upgrading an Application
    • Basic Configuration
    • Feature Configuration
    • Account Management
    • Group Management
    • Webhook Configuration
  • Product Introduction
    • Message Management
      • One-to-One Message
      • Message Storage
      • Offline Push
      • Group Message
      • Message Formats
    • Account System
      • Login Authentication
      • Online Status Management
    • Group Related
      • Group System
      • Group Management
    • User Profile and Relationship Chain
      • Profile Management
      • Relationship Chain Management
  • Purchase Guide
    • Billing Overview
    • Pricing
  • Error Codes

Community Management

Feature Description

A community is a large group of people brought together by common topics, and multiple topics can be created under the same community based on different interests. A community is used to manage members. All its topics are shared among members, who can send and receive messages independently.




Community Group Management

Creating a community group

API
chat.createGroup(options);
Sample
// Create a topic-enabled community
let promise = chat.createGroup({
type: TencentCloudChat.TYPES.GRP_COMMUNITY,
name: 'WebSDK',
isSupportTopic: true,
});
promise.then(function(imResponse) { // Created successfully
console.log(imResponse.data.group); // Profile of the created group
}).catch(function(imError){
console.warn('createGroup error:', imError); // Error information
});

Getting the list of topic-enabled communities

Caution
This API is supported only by topic-enabled communities. You need to Purchase Premium Version, log in to the Chat Console and enable the community switch. The switch path is: Applications > Your App > Chat > Configuration > Group Configuration > Community. Once the switch is enabled, you can use it.
API
chat.getJoinedCommunityList();
Return values
Promise
Sample
// Get the list of topic-enabled communities
let promise = chat.getJoinedCommunityList();
promise.then(function(imResponse) { // Got successfully
console.log(imResponse.data.groupList); // List of topic-enabled communities
}).catch(function(imError) { // Getting failed
console.warn('getJoinedCommunityList error:', imError); // Failure message
});

Creating a topic

Caution
1. This API is supported only by topic-enabled communities. You need to purchase the [Premium Version] in the Console > Feature Configuration> Group Configuration> Group Feature Configuration> Community page. After enabling the community, you must enable the topic switch to use it.
2. Before using this API, you must call createGroup to create a topic-enabled community.
API
chat.createTopicInCommunity(options);
Parameters
The options parameter is of the Object type. It contains the following attribute values:
Name
Type
Description
groupID
String
Community ID of the topic
topicName
String
Topic name
topicID
String
A custom topic ID must be in the format of "community ID + custom topic ID", such as "@TGS#_xxx@TOPIC#_xxx".
avatar
String
Topic profile photo
notification
String
Topic notice
introduction
String
Topic introduction
customData
String
Custom topic information
Return values
Promise
Sample
// Create a topic
let promise = chat.createTopicInCommunity({
groupID: 'group1',
topicName: 'test',
avatar: 'xxx'
notification: 'xxx',
introduction: 'xxx',
customData: 'xxxx',
});
promise.then(function(imResponse) { // Created successfully
console.log(imResponse.data.topicID); // Topic ID
}).catch(function(imError) { // Creation failed
console.warn('createTopicInCommunity error:', imError); // Failed to create the topic
});

Deleting a topic

Caution
This interface is only applicable to communities that support topics.
API
chat.deleteTopicFromCommunity(options);
Parameters
The options parameter is of the Object type. It contains the following attribute values:
Name
Type
Description
groupID
String
Community ID of the topic
topicIDList
Array | undefined
List of topic IDs. If it is not passed in, all the topics are deleted.
Return values
Promise
Sample
// Delete a specified topic under a community
let promise = chat.deleteTopicFromCommunity({
groupID: 'group1',
topicIDList: ['topicID']
});
promise.then(function(imResponse) { // Deleted successfully
const { successTopicList, failureTopicList } = imResponse.data;
// List of topics deleted successfully
successTopicList.forEach((item) => {
const { topicID } = item;
});
// List of topics failed to be deleted
failureTopicList.forEach((item) => {
const { topicID, code, message } = item;
})
}).catch(function(imError) { // Deletion failed
console.warn('deleteTopicFromCommunity error:', imError); // Failed to delete the topic
});
// Delete all the topics under a community
let promise = chat.deleteTopicFromCommunity({
groupID: 'group1',
});
promise.then(function(imResponse) { // Deleted successfully
const { successTopicList, failureTopicList } = imResponse.data;
// List of topics deleted successfully
successTopicList.forEach((item) => {
const { topicID } = item;
});
// List of topics failed to be deleted
failureTopicList.forEach((item) => {
const { topicID, code, message } = item;
})
}).catch(function(imError) { // Deletion failed
console.warn('deleteTopicFromCommunity error:', imError); // Failed to delete the topic
});

Modifying the topic profile

Caution
1. This interface is only applicable to communities that support topics.
2. Other members within the topic can receive the TencentCloudChat.EVENT.TOPIC_UPDATED event.
API
chat.updateTopicProfile(options);
Parameters
The options parameter is of the Object type. It contains the following attribute values:
Name
Type
Description
groupID
String
Community ID of the topic
topicID
String
Topic ID, which is required
topicName
String | undefined
Topic name
avatar
String | undefined
Topic profile photo
notification
String | undefined
Topic notice
introduction
String | undefined
Topic introduction
customData
String | undefined
Custom topic information
muteAllMembers
Boolean | undefined
Muting all. Valid values:
true: mute all;
false: unmute all.
Return values
Promise
Sample
// Update the topic profile
let promise = chat.updateTopicProfile({
groupID: 'group1',
topicID: 'topic1',
topicName: 'test',
avatar: 'xxx'
notification: 'xxx',
introduction: 'xxx',
customData: 'xxxx',
muteAllMembers: true
});
promise.then(function(imResponse) { // Topic profile set successfully
console.log(imResponse.data.topic); // Modified topic profile
}).catch(function(imError) { // Failed to set the topic profile
// Information on the failure in setting the topic profile
console.warn('updateTopicProfile error:', imError);
});

Getting the topic list

Caution
This interface is only applicable to communities that support topics.
API
chat.getTopicList(options);
Parameters
The options parameter is of the Object type. It contains the following attribute values:
Name
Type
Description
groupID
String
Community ID of the topic
topicIDList
Array | undefined
List of topic IDs. If it is not passed in, all the topics are obtained.
Return values
Promise
Sample
// Get a specified topic
let promise = chat.getTopicList({
groupID: 'group1',
topicIDList: ['topicID'],
});
promise.then(function(imResponse) { // Got successfully
const { successTopicList, failureTopicList } = imResponse.data;
// List of topics got successfully
successTopicList.forEach((item) => {
const { topicID } = item;
});
// List of topics failed to be got
failureTopicList.forEach((item) => {
const { topicID, code, message } = item;
})
}).catch(function(imError) { // Getting failed
console.warn('getTopicList error:', imError); // Information on the failure in getting the topic list
});
// Get all the topics
let promise = chat.getTopicList({
groupID: 'group1',
});
promise.then(function(imResponse) { // Got successfully
const { successTopicList, failureTopicList } = imResponse.data;
// List of topics got successfully
successTopicList.forEach((item) => {
const { topicID } = item;
});
// List of topics failed to be got
failureTopicList.forEach((item) => {
const { topicID, code, message } = item;
})
}).catch(function(imError) { // Getting failed
console.warn('getTopicList error:', imError); // Information on the failure in getting the topic list
});

Topic group

The community-group-topic hierarchy is implemented as follows: The groupCustomField field in the community profile defines a field to store the topic group list of the community. The customData field in the topic profile stores the group to which each topic belongs.
When a community is loaded, the groupCustomField field for the topic group list in the community (group) profile is used to display the group list.
When the topic list of a community is loaded, the customData field in the topic profile is used to get the group name for assignment.
Note
1. You can customize the key value of the groupCustomField field for the topic group list of the community (group). The following sample code names it topic_category.

Configuring the group list for the community

You only need to modify the groupCustomField field in the group profile. The key value is the name of the field for the topic group list you defined.
Sample
// Topic group list
const categoryList = ['Group 1', 'Group 2'];
// Update the topic group list of the community
let promise = chat.updateGroupProfile({
groupID: 'group1',
// You need to configure the custom group field `topic_category` in the console first.
groupCustomField: [{ key: 'topic_category', value: JSON.stringify(categoryList) }]
});
promise.then(function(imResponse) {
console.log(imResponse.data.group) // Detailed group profile after modification
}).catch(function(imError){
console.warn('updateGroupProfile error:', imError); // Error information
});

Getting the list of groups in the community

Sample
let promise = chat.getGroupProfile({
groupID: 'group1',
groupCustomFieldFilter: ['topic_category']
});
promise.then(function(imResponse) {
console.log(imResponse.data.group);
const categoryList = []; // Topic group list
const { groupCustomField } = imResponse.data.group;
groupCustomField.forEach((item) => {
if (item.key === 'topic_category') {
// Parse the group list
categoryList = JSON.parse(item.value);
}
});
}).catch(function(imError){
console.warn('getGroupProfile error:', imError); // Error information
});

Adding a topic to a group

You can save the topic group with the customData field of the topic.
Sample
// Define a group for the topic
const customData = { category: 'Group 1' };
// Update the topic group
let promise = chat.updateTopicProfile({
groupID: 'group1', // Community ID
topicID: 'topic1', // Topic ID
customData: JSON.stringify(customData),
});
promise.then(function(imResponse) { // Topic group updated successfully
console.log(imResponse.data.topic); // Modified topic profile
}).catch(function(imError) { // Failed to update the topic group
console.warn('updateTopicProfile error:', imError);
});

Getting the topic group

Use the customData to parse the JSON content after getting the topic list.

Listening for topic callbacks

Sample
let onTopicCreated = function(event) {
const groupID = event.data.groupID // ID of the community to which the topic belongs
const topicID = event.data.topicID // Topic ID
console.log(event.data);
};
chat.on(TencentCloudChat.EVENT.TOPIC_CREATED, onTopicCreated);
let onTopicDeleted = function(event) {
const groupID = event.data.groupID // ID of the community to which the topic belongs
const topicIDList = event.data.topicIDList // List of deleted topic IDs
console.log(event.data);
};
chat.on(TencentCloudChat.EVENT.TOPIC_DELETED, onTopicDeleted);
let onTopicUpdated = function(event) {
const groupID = event.data.groupID // ID of the community to which the topic belongs
const topic = event.data.topic // Topic profile
console.log(event.data);
};
chat.on(TencentCloudChat.EVENT.TOPIC_UPDATED, onTopicUpdated);