tencent cloud

Feedback

JavaScript

Last updated: 2024-11-14 17:56:06

    Description

    Message extension allows you to configure keys and values for messages to implement polling, group notices, survey and other types of messages.
    In a voting scenario, we can first use the createCustomMessageAPI to create a custom message for voting, where data stores the voting title and options. Then, use the message extension key to store the voting user ID and the message extension value to store the voting user's option. With each user's voting option, we can dynamically calculate the user proportion for each voting option.
    In chain reaction scenarios, we can first create a custom message for chain reactions through the createCustomMessageAPI, where data stores the title of the chain reaction. Then, use the message extension key to store user IDs and the message extension value to store the chain reaction information.
    In questionnaire survey scenarios, we can first create a custom message for surveys via the createCustomMessageAPI, where data stores the title and options of the survey. Then, use the message extension key to store respondent IDs and the message extension value to store survey information.
    Indication
    1. This feature is only available to Advanced Edition customers, purchase the Premium Edition to use.
    2. This feature needs to be enabled in the Chat Console. Path to toggle: Applications > Your App > Chat > Configuration > Login and Message > Set message extension.
    3. The extension key supports up to 100 bytes, the extension value supports up to 1KB, a maximum of 20 extensions can be set at once, and a single message can have up to 300 extensions.
    4. When multiple users set the same extension key simultaneously, only the first user can succeed. Other users will receive an error code 23001 and the updated extension information. Upon receiving the error code and latest extension information, please re-initiate the setting operation as needed.
    5. It is recommended that different users set different extension keys to avoid most conflicts in scenarios like voting, chain reaction, and questionnaire surveys. Each user can use their own userID as the extension key.
    6. This feature is not supported in Live Broadcast Groups (AVChatRoom) messages.
    7. Community and Topic support message extensions.

    setMessageExtensions

    Calling the setMessageExtensions interface can set message extensions. If the extension key already exists, it modifies the extension value. If the extension key does not exist, it adds a new extension. Once successfully set, both the sender and the recipient (C2C) or group members (Group) will receive the TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_UPDATED event.
    API
    chat.setMessageExtensions(message, extensions);
    Parameters
    Parameter
    Type
    Description
    message
    Message
    Message instance, three conditions to be met:
    The message's isSupportExtension attribute must be true
    The message must be sent successfully
    The message cannot be an AVChatRoom message
    extensions
    Array
    Message extension key-value list: if the extension key exists, update its value; if it doesn't exist, add new extensions.
    Return values
    Promise
    Example
    let promise = chat.setMessageExtensions(message, [{ key: 'a', value: '1' }, { key: 'b', value: '2' }]);
    promise.then(function(imResponse) {
    // Set message extensions successfully
    const { extensions } = imResponse.data;
    extensions.forEach((item) => {
    const { code, key, value } = item;
    if (code === 23001) {
    // Key conflict detected. Please retry as needed based on the returned latest extension info
    }
    });
    }).catch(function(imError) {
    // Failed to set message extensions
    console.warn('setMessageExtensions error:', imError);
    });

    getMessageExtensions

    Call the getMessageExtensions API to get the message extension list.
    API
    chat.getMessageExtensions(message);
    Parameters
    Parameter
    Type
    Description
    message
    Message
    Message instance, three conditions to be met:
    The message's isSupportExtension attribute must be true
    The message must be sent successfully
    The message cannot be from a live broadcast group (AVChatRoom)
    Return values
    Promise
    Example
    let promise = chat.getMessageExtensions(message);
    promise.then(function(imResponse) {
    // Got message extensions successfully
    const { extensions } = imResponse.data;
    extensions.forEach((item) => {
    const { key, value } = item;
    // key - Message extension key
    // value - Value corresponding to the message extension key
    });
    }).catch(function(imError) {
    // Failed to get message extensions
    console.warn('getMessageExtensions error:', imError);
    });

    deleteMessageExtensions

    Call the deleteMessageExtensionsAPI to delete specified message extensions. If the keyList field is not provided, all message extensions will be cleared. After successful deletion, both you and the other party (C2C) or group members (Group) will receive the TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_DELETED event.
    API
    chat.deleteMessageExtensions(message, keyList);
    Parameters
    Parameter
    Type
    Description
    message
    Message
    Message instance, three conditions to be met:
    The message's isSupportExtension attribute must be true
    The message must be sent successfully
    The message cannot be from a live broadcast group (AVChatRoom)
    keyList
    Array | undefined
    Message extension key list.
    Return values
    Promise
    Example
    // Delete message extension key
    let promise = chat.deleteMessageExtensions(message, ['a', 'b']);
    promise.then(function(imResponse) {
    // Deleted message extensions successfully
    const { extensions } = imResponse.data;
    extensions.forEach((item) => {
    const { code, key, value } = item;
    if (code === 23001) {
    // Delete key conflict detected. Please retry as needed based on the returned latest extension info
    }
    });
    }).catch(function(imError) {
    // Failed to delete message extensions
    console.warn('deleteMessageExtensions error:', imError);
    });
    // Clear all message extension keys
    let promise = chat.deleteMessageExtensions(message);
    promise.then(function(imResponse) {
    // Cleared message extensions successfully
    console.log('deleteMessageExtensions ok:', imResponse)
    }).catch(function(imError) {
    // Failed to clear message extensions
    console.warn('deleteMessageExtensions error:', imError);
    });

    Message extension updated

    When a message extension is added or updated, the SDK will dispatch the TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_UPDATED event. You can get the updated key-value information in the registered callback.
    Example
    let onMessageExtensionsUpdated = function(event) {
    const { messageID, extensions } = event.data;
    // messageID - Message ID
    // extensions - Message extension information
    extensions.forEach((item) => {
    const { key, value } = item;
    // key - Message extension key
    // value - Value corresponding to the message extension key
    });
    };
    chat.on(TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_UPDATED, onMessageExtensionsUpdated);

    Message extension deleted

    When a message extension is deleted, the SDK will dispatch the TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_DELETED event. You can get the deleted key in the registered callback.
    Example
    let onMessageExtensionsDeleted = function(event) {
    const { messageID, keyList } = event.data;
    // messageID - Message ID
    // keyList - List of deleted message extension keys
    keyList.forEach((key) => {
    // console.log(key)
    });
    };
    chat.on(TencentCloudChat.EVENT.MESSAGE_EXTENSIONS_DELETED, onMessageExtensionsDeleted);
    
    
    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