Send a Message
Using CometChat, you can send three types of messages:
- A text message the most common and standard message type.
- A media message, for sending photos, videos and files.
- A custom message, for sending completely custom data using JSON structures.
You can also send metadata along with a text, media or custom message. Think, for example, if you'd want to share the user's location with every message, you can use the metadata field
Text Message
In other words, as a sender, how do I send a text message?
To send a text message to a single user or group, you need to use the sendMessage()
method and pass a TextMessage
object to it.
- User
- Group
let receiverID = "UID";
let messageText = "Hello world!";
let receiverType = CometChat.RECEIVER_TYPE.USER;
let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType);
CometChat.sendMessage(textMessage).then(
message => {
console.log("Message sent successfully:", message);
}, error => {
console.log("Message sending failed with error:", error);
}
);
let receiverID = "GUID";
let messageText = "Hello world!";
let receiverType = CometChat.RECEIVER_TYPE.GROUP;
let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType);
CometChat.sendMessage(textMessage).then(
message => {
console.log("Message sent successfully:", message);
}, error => {
console.log("Message sending failed with error:", error);
}
);
The TextMessage
class constructor takes the following parameters:
Parameter | Description | |
---|---|---|
receiverID | UID of the user or GUID of the group receiving the message | Required |
messageText | The text message | Required |
receiverType | The type of the receiver - CometChat.RECEIVER_TYPE.USER or CometChat.RECEIVER_TYPE.GROUP | Required |
When a text message is sent successfully, the response will include a TextMessage
object which includes all information related to the sent message.
Add Metadata
To send custom data along with a text message, you can use the setMetadata
method and pass a JSONObject
to it.
- User
- Group
let receiverID = "UID";
let messageText = "Hello World!";
let receiverType = CometChat.RECEIVER_TYPE.USER;
let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType);
let metadata = {
latitude: "50.6192171633316",
longitude: "-72.68182268750002"
};
textMessage.setMetadata(metadata);
CometChat.sendMessage(textMessage).then(
message => {
console.log("Message sent successfully:", message);
}, error => {
console.log("Message sending failed with error:", error);
}
);
let receiverID = "GUID";
let messageText = "Hello World!";
let receiverType = CometChat.RECEIVER_TYPE.GROUP;
let textMessage = new CometChat.TextMessage(receiverID, messageText, receiverType);
var metadata = {
latitude: "50.6192171633316",
longitude: "-72.68182268750002"
};
textMessage.setMetadata(metadata);
CometChat.sendMessage(textMessage).then(
message => {
console.log("Message sent successfully:", message);
}, error => {
console.log("Message sending failed with error:", error);
}
);
Media Message
In other words, as a sender, how do I send a media message like photos, videos & files?
To send a media message to any user or group, you need to use the sendMediaMessage()
method and pass a MediaMessage
object to it.
Getting file Object:
- HTML
<html>
<body>
<input type="file" name="img_file" id="img_file" />
<script>
var UID = "UID";
var file = document.getElementById("img_file").files[0];
var fileType = MESSAGE_TYPE.IMAGE;
var userType = CometChat.RECEIVER_TYPE.USER;
var mediaMessage = new MediaMessage(UID, file, fileType, userType);
</script>
</body>
</html>
- User
- Group
let receiverID = "UID";
let messageType = CometChat.MESSAGE_TYPE.FILE;
let receiverType = CometChat.RECEIVER_TYPE.USER;
let mediaMessage = new CometChat.MediaMessage(receiverID, `INPUT FILE OBJECT`, messageType, receiverType);
CometChat.sendMediaMessage(mediaMessage).then(
message => {
console.log("Media message sent successfully", message);
}, error => {
console.log("Media message sending failed with error", error);
}
);
let receiverID = "GUID";
let messageType = CometChat.MESSAGE_TYPE.FILE;
let receiverType = CometChat.RECEIVER_TYPE.GROUP;
let mediaMessage = new CometChat.MediaMessage(receiverID, `INPUT FILE OBJECT`, messageType, receiverType);
CometChat.sendMediaMessage(mediaMessage).then(
message => {
console.log("Media message sent successfully", message);
}, error => {
console.log("Media message sending failed with error", error);
}
);
The MediaMessage
class constructor takes the following parameters:
Parameter | Description | |
---|---|---|
receiverId | The UID or GUID of the recipient. | Required |
file | The file object to be sent | Required |
messageType | The type of the message that needs to be sent which in this case can be: 1.CometChat.MESSAGE_TYPE.IMAGE 2. CometChat.MESSAGE_TYPE.VIDEO 3. CometChat.MESSAGE_TYPE.AUDIO 4. CometChat.MESSAGE_TYPE.FILE | Required |
receiverType | The type of the receiver to whom the message is to be sent. 1. CometChat.RECEIVER_TYPE.USER 2. CometChat.RECEIVER_TYPE.GROUP | Required |
When a media message is sent successfully, the response will include a MediaMessage
object which includes all information related to the sent message.
Add Metadata
To send custom data along with a media message, you can use the setMetadata
method and pass a JSONObject
to it.
- Metadata
let metadata = {
latitude: "50.6192171633316",
longitude: "-72.68182268750002"
};
mediaMessage.setMetadata(metadata);
Add Caption(Text along with Media Message)
To send a caption with a media message, you can use setCaption
method and pass text to it.
- Caption
let caption = "Random Caption";
mediaMessage.setCaption(caption);
Custom Message
In other words, as a sender, how do I send a custom message like location co-ordinates?
CometChat allows you to send custom messages which are neither text nor media messages.
In order to send a custom message, you need to use the sendCustomMessage()
method.
The sendCustomMessage()
methods takes an object of the CustomMessage
which can be obtained using the below constructor.
- Custom Message
let customMessage = new CometChat.CustomMessage(receiverID, receiverType, customType, customData);
The above constructor, helps you create a custom message with the message type set to whatever is passed to the constructor and the category set to custom
.
The parameters involved are:
receiverId
- Unique id of the user or group to which the message is to be sent.receiverType
- Type of the receiver i.e user or groupcustomType
- custom message type that you need to setcustomData
- The data to be passed as the message in the form of a JSONObject.
You can also use the subType field of the CustomMessage
class to set a specific type for the custom message. This can be achieved using the setSubtype()
method.
Once the object of CustomMessage
class is ready you can send the custom message using the sendCustomMessage()
method.
- Javascript
- Typescript
let receiverID = "UID";
let customData = {
latitude: "50.6192171633316",
longitude: "-72.68182268750002"
};
let customType = "location";
let receiverType = CometChat.RECEIVER_TYPE.USER;
let customMessage = new CometChat.CustomMessage(receiverID, receiverType, customType, customData);
CometChat.sendCustomMessage(customMessage).then(
message => {
console.log("custom message sent successfully", message);
}, error => {
console.log("custom message sending failed with error", error);
}
);
let receiverID = "GUID";
let customData = {
latitude: "50.6192171633316",
longitude: "-72.68182268750002"
};
let customType = "location";
let receiverType = CometChat.RECEIVER_TYPE.GROUP;
let customMessage = new CometChat.CustomMessage(receiverID, receiverType, customType, customData);
CometChat.sendCustomMessage(customMessage).then(
message => {
console.log("custom message sent successfully", message);
}, error => {
console.log("custom message sending failed with error", error);
}
);
The above sample explains how custom messages can be used to share the location with a user. The same can be achieved for groups.
On success, you will receive an object of the CustomMessage
class.