Smart Replies enable the retrieval of an AI-generated response message within a conversation.
Before you begin
Configure AI settings
Set up AI in the CometChat dashboard as detailed in the Overview. Enable Smart Replies
Go to Chat → Features, under AI User Copilot, enable Smart Replies.
How does it work?
CometChat AI goes through the messages of a conversation to understand the context of a conversation & provide relevant replies. It returns three replies: positive, negative & neutral.
The CometChat SDK has a method to fetch the smart replies in a conversation. It returns an object of three replies with keys: positive, negative & neutral.
The number of messages used to generate smart replies is configurable. By default, CometChat AI uses the latest 1000 messages. You can also use timestamps.
- lastNMessages: Fetch a specific number of recent messages.
- fromTimestamp: Fetch messages from a particular timestamp.
- toTimestamp: Fetch messages up to a particular timestamp.
- unreadOnly: Fetch only unread messages.
While using any configuration mentioned above a maximum of only 1000 messages will be fetched.
Implementation
SDKs
To implement Smart Replies in the platform of your choice, you may utilize the following code samples:
const receiverId = "UID/GUID";
const receiverType = "user/group";
const configuration = { lastNMessages: 100 };
CometChat.getSmartReplies(receiverId, receiverType, configuration).then(
(smartReplies) => {
const { positive, negative, neutral } = smartReplies;
console.log("Positive Reply", positive);
console.log("Negative Reply", negative);
console.log("Neutral Reply", neutral);
},
(error) => {
console.log("An error occurred while fetching smart replies", error);
}
);
String receiverId = 'UID/GUID';
String receiverType = 'user/group';
JSONObject configuration = new JSONObject();
try {
configuration.put("lastNMessages", 100);
} catch (JSONException e) {
throw new RuntimeException(e);
}
CometChat.getSmartReplies(receiverId, CometChatConstants.RECEIVER_TYPE_USER, configuration, new CometChat.CallbackListener<HashMap<String, String>>() {
@Override
public void onSuccess(HashMap<String, String> smartReplies) {
Iterator<String> iterator = smartReplies.keySet().iterator();
for (String s : smartReplies.keySet()) {
Log.e(TAG, "Smart Reply : " + iterator.next() + " " + smartReplies.get(s));
}
}
@Override
public void onError(CometChatException e) {
Logger.error(TAG, e.getMessage());
}
});
val receiverId: String = 'UID/GUID'
val receiverType: String = 'user/group'
val configuration = JSONObject()
try {
configuration.put("lastNMessages", 100)
} catch (e: JSONException) {
throw RuntimeException(e)
}
CometChat.getSmartReplies(
receiverId,
CometChatConstants.RECEIVER_TYPE_USER,
configuration,
object : CallbackListener<HashMap<String, String>>() {
override fun onSuccess(smartReplies: HashMap<String, String>) {
val iterator: Iterator<String> = smartReplies.keys.iterator()
for (s in smartReplies.keys) {
Log.e(TAG, "Smart Reply : " + iterator.next() + " " + smartReplies[s])
}
}
override fun onError(e: CometChatException) {
Logger.error(TAG, e.message)
}
}
)
let receiverId = ""
let receiverType = CometChat.ReceiverType.user
let configuration = [ "lastNMessages": 100 ]
CometChat.getSmartReplies(receiverId: receiverId, receiverType: receiverType, configuration: configuration) { smartRepliesMap in
print("GetSmartReplies success: \(smartRepliesMap)")
} onError: { error in
print("GetSmartReplies error: \(error?.errorDescription)")
}
String receiveId = "";
String receiverType = CometChatConversationType.user;
Map configuration = { "lastNMessages": 100 };
CometChat.getSmartReplies(receiveId, receiverType, configuration: configuration, onSuccess: (HashMap<String, String> map) {
debugPrint("getSmartReplies Success: $map");
}, onError: (CometChatException e) {
debugPrint("getSmartReplies Error: $e");
});
UI Kits
Assuming the necessary prerequisites are met, Smart Replies function seamlessly starting from v4 of the Chat UI Kits. In v4, Smart Replies are accessible manually, whereas in v5, they work automatically.