How to Send and Receive Message Events
This guide covers how to send and receive Message Events with the Vonage Client SDK. Before you begin, make sure you added the SDK to your app, created a Session (Android, iOS, JS), and joined a Conversation.
Sending Message Text Events
Given a Conversation ID, you can send a Text Message Event.
client.sendMessageTextEvent("CONV_ID", "Hello world!") { error, timestamp ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */ } ?:
error?.let {/* Handle generic Error */ }
timestamp?.let { /* Message sent at timestamp */ }
}
client.sendMessageTextEvent("CONV_ID", text: "Hello world!") { error, timestamp in
...
}
Sending Message Image Events
Given a Conversation ID and URL for an image, you can send an Image Message Event.
client.sendMessageImageEvent("CONV_ID", URL("MY_IMAGE_URL")) { error, timestamp ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */ } ?:
error?.let {/* Handle generic Error */ }
timestamp?.let { /* Message sent at timestamp */ }
}
client.sendMessageImageEvent("CONV_ID", imageUrl: "MY_IMAGE_URL") { error, timestamp in
...
}
Sending Message Custom Events
Along with a Conversation ID, you can send a completely custom payload as a Custom Message Event. This is useful if you want a Message Event type that is specific to your application.
client.sendMessageCustomEvent("CONV_ID", "MY_CUSTOM_DATA") { error, timestamp ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */ } ?:
error?.let {/* Handle generic Error */ }
timestamp?.let { /* Message sent at timestamp */ }
}
client.sendMessageCustomEvent("CONV_ID", customData: "MY_CUSTOM_DATA") { error, timestamp in
}
Receiving Message Events
You can receive all Conversation Message Events in your application by setting up an Event Listener/Delegate Function. Message Events received via this Listener/Delegate will automatically be updated to the delivered state. Here you can check the kind of incoming Message Event.
client.setOnConversationEventListener {
when(it) {
is MessageCustomEvent -> {} // Handle Message Custom
is MessageImageEvent -> {} // Handle Message Image
is MessageTextEvent -> {} // Handle Message Text
}
}
func chatClient(_ client: VGChatClient, didReceiveConversationEvent event: VGConversationEvent) {
switch event.kind {
case .messageText:
// Handle Message Text
let messageTextEvent = event as! VGMessageTextEvent
case .messageImage:
// Handle Message Image
let messageImageEvent = event as! VGMessageImageEvent
case .messageCustom:
// Handle Message Custom
let messageCustomEvent = event as! VGMessageCustomEvent
...
}
}
Marking Message Events as Seen
Once you have received a Message Event, you can mark it as seen.
client.sendMessageSeenEvent("EVENT_ID", "CONV_ID") { error, timestamp ->
error?.takeIf { it is VGError }?.let {/* Handle Vonage Error */ } ?:
error?.let {/* Handle generic Error */ }
timestamp?.let { /* Message seen sent at timestamp */ }
}
client.sendMessageSeenEvent("EVENT_ID", "CONV_ID") { error, timestamp in
...
}