Skip to main content

Message Extension

Use Cases​

Message extension can be used to add status identifiers to original messages.

  • For message commenting needs, you can add comment information by setting the original message's extension information.
  • For gift collection or order status changes, this feature can be used to alter the message display status. For example, when sending a gift to a user, the default status is "uncollected," and clicking on it can set the message extension to "collected."
  • This feature allows you to set extension information for a message.
  • It only supports one-to-one and group chat conversation types, not chatroom types.
  • Each time the message extension is set, a built-in notification message will be generated. Frequent setting of extensions will produce a large number of messages.

Setting Message Extensibility​

After [constructing the message], set the expansion property of the message. By default, it is not enabled. Once a value is set, it will automatically be enabled. This can be set when sending the message, but cannot be changed after the message is sent.

Code Example​

engine.createImageMessage(type, targetId, channelId, path)
.then((message: RCIMIWImageMessage) => {
message.expansion = {};
});

Updating Message Extension Information​

  1. Update the message extension information.
  2. Call after the message is sent.

Method​


updateMessageExpansion(
messageUId: string,
expansion: Map<string, string>,
callback: IRCIMIWUpdateMessageExpansionCallback
): Promise<number>;

Parameter Description​

ParameterTypeDescription
messageUIdstringThe messageUid of the message, which can be obtained from the message object. Only successfully sent messages will have this value.
expansionMap<string, string>The key-value pairs for the message extension information to be updated, of type HashMap. Key supports a combination of uppercase and lowercase letters, numbers, and some special symbols + = - _. Chinese characters are not supported. Value can include spaces.
callbackIRCIMIWUpdateMessageExpansionCallbackCallback for the interface call result.

Return Value​

Return ValueDescription
numberThe status code of the current interface operation. 0 indicates a successful call. The specific result needs to be implemented in the interface callback. Non-zero indicates that the current interface call operation failed, and the interface callback will not be triggered. For detailed errors, refer to the error codes.

Code Example​


const callback = {
onMessageExpansionUpdated: (code: number) => {
//...
},
};
let code = await engine.updateMessageExpansion(messageUId, expansion, callback);

Deleting Message Extension Information​

  1. Delete specific key-value pairs from the message extension information.
  2. Call after the message is sent.

Method​


removeMessageExpansionForKeys(
messageUId: string,
keys: Array<string>,
callback: IRCIMIWRemoveMessageExpansionForKeysCallback
): Promise<number>;

Parameter Description​

ParameterTypeDescription
messageUIdstringThe messageUid of the message, which can be obtained from the message object. Only successfully sent messages will have this value.
keysArray<string>The list of keys to be deleted from the message extension information, of type ArrayList.
callbackIRCIMIWRemoveMessageExpansionForKeysCallbackCallback for the interface call result.

Return Value​

Return ValueDescription
numberThe status code of the current interface operation. 0 indicates a successful call. The specific result needs to be implemented in the interface callback. Non-zero indicates that the current interface call operation failed, and the interface callback will not be triggered. For detailed errors, refer to the error codes.

Code Example​


const callback = {
onMessageExpansionForKeysRemoved: (code: number) => {
//...
},
};
let code = await engine.removeMessageExpansionForKeys(messageUId, keys, callback);

Message Extension Update Listener​

Method​

setOnRemoteMessageExpansionUpdatedListener(listener?: (expansion: Map<string, string>, message: RCIMIWMessage) => void): void;

Parameter Description​

ParameterTypeDescription
expansionMap<string, string>The updated key-value pairs in the message extension information, containing only the updated pairs, not all data. To get all key-value pairs, use the expansion property of the message.
messageRCIMIWMessageThe message that has changed

Code Example​


engine?.setOnRemoteMessageExpansionUpdatedListener((expansion: Map<string, string>, message: RCIMIWMessage) => {
//...
});

Message Extension Removal Listener​

Method​

setOnRemoteMessageExpansionForKeyRemovedListener(listener?: (message: RCIMIWMessage, keys: Array<string>) => void): void;

Parameter Description​

ParameterTypeDescription
messageRCIMIWMessageThe message that has changed
keysArray<string>The list of keys deleted from the message extension information

Code Example​


engine?.setOnRemoteMessageExpansionForKeyRemovedListener((message: RCIMIWMessage, keys: Array<string>) => {
//...
});