Chat / JavaScript
Chat JavaScript v4
Chat JavaScript
Chat
JavaScript
Home
/
Chat
/
JavaScript
/
Message
This is the new Docs for Chat SDK v4 for JavaScript. To see the previous Docs, click here.

Send a message

For both open and group channels, users can send messages of the following types to the channel they are in.

List of message types

Message typeDescription

UserMessage

A text message sent by a user

FileMessage

A binary file message sent by a user

In addition to these message types, you can further subclassify a message by specifying its custom type. This custom type takes on the form of String and can be used to search or filter messages. It allows you to append information to your message and customize message categorization.

The following code shows several types of parameters that you can configure to customize text messages by using UserMessageCreateParams. Under the UserMessageCreateParams object, you can assign specific values to message, data and other properties. By assigning arbitrary string to the data property, you can set custom font size, font type or JSON object. To send your messages, you need to pass the UserMessageCreateParams object as an argument to the parameter in the sendUserMessage() method.

Through the callback function of the sendUserMessage() method, the Sendbird server always notifies whether your text message has been successfully sent to the channel. When there is a delivery failure due to network issues, an exception is returned through the callback function.

const params: UserMessageCreateParams = {
    message: TEXT_MESSAGE,
    customType: CUSTOM_TYPE,
    data: DATA,
    mentionType: MentionType.USERS,
    mentionedUserIds = ['Jeff', 'Julia'],       // Or mentionedUsers = Array<User>;
    metaArrays: [   // A pair of key-value
        new MessageMetaArray('itemType', ['tablet']),
        new MessageMetaArray('quality', ['best', 'good'])
    ],
    translationTargetLanguages: ['fe', 'de'],   // French and German
    pushNotificationDeliveryOption: PushNotificationDeliveryOption.DEFAULT, // Either DEFAULT or SUPPRESS
};
channel.sendUserMessage(params)
    .onSucceeded((message: UserMessage) => {
        // A text message with detailed configuration is successfully sent to the channel.
        // By using userMessage.messageId, userMessage.message, userMessage.customType, and so on,
        // you can access the result object from the Sendbird server to check your UserMessageCreateParams configuration.
        // The current user can receive messages from other users through the onMessageReceived() method of an event handler.
        const messageId = userMessage.messageId;

        // ...
    });

Sending a raw file means you're uploading it to the Sendbird server where it can be downloaded in client apps. When you upload a file directly to the server, there is a size limit imposed on the file depending on your plan. You can see the limit on your dashboard and contact our sales team to adjust the limit.

The other option is to send a file hosted on your server. You can pass the file's URL, which represents its location, as an argument to a parameter. In this case, your file isn't hosted on the Sendbird server and it can only be downloaded from your own server. When you send a file message with a URL, there is no limit on the file size since it's not directly uploaded to the Sendbird server.

Note: You can use sendFileMessages(), which is another method that allows you to send up to 20 file messages per one method call. Refer to our API Reference to learn more.

The following code shows several types of parameters that you can configure to customize file messages by using FileMessageCreateParams. Under the FileMessageCreateParams object, you can assign specific values to customType and other properties. To send your messages, you need to pass the FileMessageCreateParams object as an argument to the parameter in the sendFileMessage() method.

Through the callback function of the sendFileMessage() method, the Sendbird server always notifies whether your file message has been successfully sent to the channel. When there is a delivery failure due to network issues, an exception is returned through the callback function.

// Send a file message with a raw file.
const params: FileMessageCreateParams = {
    file: FILE, // Or .fileUrl = FILE_URL (You can also send a file message with a file URL.)
    fileName: FILE_NAME,
    fileSize: FILE_SIZE,
    thumbnailSizes: [{maxWidth: 100, maxHeight: 100}, {maxWidth: 200, maxHeight: 200}],
    // Add the maximum sizes of thumbnail images.
    // Up to three thumbnail images are allowed.
    mimeType: MIME_TYPE,
    customType: CUSTOM_TYPE,
    mentionType: MentionType.USERS, // Either USERS or CHANNEL
    mentionedUserIds: ['Jeff', 'Julia'], // Or mentionedUsers = Array<User>;
    pushNotificationDeliveryOption: PushNotificationDeliveryOption.DEFAULT, // Either DEFAULT or SUPPRESS
};
channel.sendFileMessage(params)
    .onSucceeded((message: FileMessage) => {
        // A file message with detailed configuration is successfully sent to the channel.
        // By using fileMessage.messageId, fileMessage.fileName, fileMessage.customType, and so on,
        // you can access the result object from the Sendbird server to check your FileMessageCreateParams configuration.
        // The current user can receive messages from other users through the onMessageReceived() method of an event handler.
        const messageId = fileMessage.messageId;
    });