• UIKit
  • SDK
  • 서버 API
Chat/
SDK/
Web/
커뮤니티 화제/
SDK
  • Chat SDK 설치
  • Chat SDK 초기화
  • 로그인 및 로그아웃
  • 고객 인터페이스
  • Changelog
  • 메시지
    • 개요
    • 메시지 보내기
    • 메시지 받기
    • 과거 메시지
    • 메시지 전달
    • 메시지 수정
    • 메시지 삭제
    • 과거 메시지 비우기
    • 메시지 철회
    • 온라인 메시지 보내기
    • 메시지 읽음 확인
    • 메시지 조회
    • 지향적 그룹 메시지
    • 알림 차단
    • Key-Value 확장
    • 번역
  • 대화
    • 개요
    • 대화 목록
    • 대화 획득
    • 읽지 않은 메시지 수
    • 대화 최상단 고정
    • 대화 삭제
    • 마크
    • 대화 그룹
  • 그룹
    • 개요
    • 그룹 관리
    • 그룹 정보
    • 그룹 멤버 관리
    • 그룹 멤버 정보
    • 그룹 속성 사용자 정의
    • 그룹 카운터
  • 커뮤니티 화제
    • 커뮤니티 관리
  • 사용자 정보 및 관계망
    • 사용자 정보
    • 사용자 상태
    • 친구 관리
    • 친구 목록
    • 블록리스트
  • Guideline for Beginners
  • 콘솔 안내
    • 애플리케이션 생성 및 업그레이드
    • 기본 구성
    • 기능 구성
    • 계정 관리
    • 그룹 관리
    • 콜백 구성
  • 제품 소개
    • 메시지 관리
      • 1대1 메시지
      • 메시지 저장
      • 오프라인 푸시
      • 그룹 메시지
      • 메시지 포맷
    • 계정 시스템
      • 로그인 인증
      • 온라인 상태 관리
    • 그룹 관련
      • 그룹 시스템
      • 그룹 관리
    • 사용자 정보 및 관계망
      • 정보 관리
      • 관계망 관리
  • 구매 가이드
    • 과금 개요
    • 가격
  • 에러코드
이 페이지는 현재 영어로만 제공되며 한국어 버전은 곧 제공될 예정입니다. 기다려 주셔서 감사드립니다.

커뮤니티 관리

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);