tencent cloud

Feedback

Last updated: 2023-07-17 16:44:23

    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.
    Note
    1. To use the feature, you need to purchase the Premium edition, go to the console, select Feature Configuration > Group configuration > Group feature configuration > Community, and enable the community feature.

    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

    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

    Note
    1. 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

    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

    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

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

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support