Conversation Starter enables you to retrieve an initial message in a new conversation, often used to set the context for the conversation that is about to begin. This can be particularly useful for guiding users on how to interact within the chat or for delivering automated messages that engage users when they initiate a chat.
Before you begin
Configure AI settings
Set up AI in the CometChat dashboard as detailed in the Overview. Enable Conversation Starter
Go to Chat → Features, under AI User Copilot, enable Conversation Starter.
How does it work?
CometChat AI analyzes the user’s tone and writing style by reviewing recent messages sent by that user within the application.
The SDK includes a method for retrieving conversation starters in a chat. This method returns an array containing three potential starters for the conversation.
The number of messages used to generate conversation starters 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.
While using any configuration mentioned above a maximum of only 1000 messages will be fetched.
Implementation
SDKs
To implement Conversation Starter 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.getConversationStarter(receiverId, receiverType, configuration).then(
(conversation-starter) => {
console.log("Conversation Starter", conversation-starter);
},
(error) => {
console.log("An error occurred while fetching conversation starter", error);
}
);
String receiveId = "";
String receiverType = CometChatConstants.RECEIVER_TYPE_USER;
JSONObject configuration = new JSONObject();
try {
configuration.put("lastNMessages", 100);
} catch (JSONException e) {
throw new RuntimeException(e);
}
CometChat.getConversationStarter(receiveId, receiverType, configuration, new CometChat.CallbackListener<List<String>>() {
@Override
public void onSuccess(List<String> strings) {
Log.e(TAG, strings.toString());
}
@Override
public void onError(CometChatException e) {
Log.e(TAG, e.getMessage());
}
});
val receiveId = ""
val receiverType: String = CometChatConstants.RECEIVER_TYPE_USER
val configuration = JSONObject()
try {
configuration.put("lastNMessages", 100)
} catch (e: JSONException) {
throw RuntimeException(e)
}
CometChat.getConversationStarter(
receiveId,
receiverType,
configuration,
object : CallbackListener<List<String?>?>() {
fun onSuccess(strings: List<String?>) {
Log.e(SplashActivity.TAG, strings.toString())
}
override fun onError(e: CometChatException) {
Log.e(SplashActivity.TAG, e.getMessage())
}
}
)
String receiveId = "";
String receiverType = CometChatConversationType.user;
Map configuration = { "lastNMessages": 100 };
CometChat.getConversationStarter("cometchat-uid-2", "user", configuration: configuration, onSuccess: (List<String> starters) {
debugPrint("getConversationStarter Sucess: $starters");
}, onError: (CometChatException e) {
debugPrint("getConversationStarter Error: $e");
});
let receiverId = ""
let receiverType = CometChat.ReceiverType.group
let configuration = [ "lastNMessages": 100 ]
CometChat.getConversationStarter(receiverId: "cometchat-uid-1", receiverType: .user, configuration: configuration) { startersReplies in
print("getConversationStarter success: \(startersReplies)")
} onError: { error in
print("getConversationStarter error: \(error?.errorDescription)")
}
UI Kits
Assuming the necessary prerequisites are met, Conversation Starter functions seamlessly starting from v4 of the Chat UI Kits. Similarly, Conversation Starter is triggered automatically when there are no messages in a conversation.