Skip to main content
Version: v5

Debugging

note

ChatClientDebugger might be useful in investigation of issues happening on users side.

To debug various flows inside the SDK, you can pass your own ChatClientDebugger implementation:

val client = ChatClient.Builder("apiKey", context)
.clientDebugger(CustomChatClientDebugger())
.build()

Debug Message Sending

To debug a message sending flow you can override ChatClientDebugger.debugSendMessage function and provide your own SendMessageDebugger implementation:

class CustomChatClientDebugger : ChatClientDebugger {

override fun onNonFatalErrorOccurred(
tag: String,
src: String,
desc: String,
error: ChatError
) {
// TODO: Implement your custom logic here
}

override fun debugSendMessage(
channelType: String,
channelId: String,
message: Message,
isRetrying: Boolean,
): SendMessageDebugger {
return CustomSendMessageDebugger(
channelType,
channelId,
message,
isRetrying
)
}
}

Then in you custom SendMessageDebugger implementation you will be able to handle the entire message sending flow:

class CustomSendMessageDebugger(
private val channelType: String,
private val channelId: String,
private val message: Message,
private val isRetrying: Boolean,
) : SendMessageDebugger {

override fun onStart(message: Message) {
// Called when the message sending flow starts.
}

override fun onInterceptionStart(message: Message) {
// Called when the message interception before sending it to the API starts.
// Reasons for interception might be:
// - message attachment uploading
// - message enriching by all required information
}

override fun onInterceptionUpdate(message: Message) {
// Called when there are intermediate message data updates.
}

override fun onInterceptionStop(result: Result<Message>) {
// Called when the message interception before sending it to the API stops.
}

override fun onSendStart(message: Message) {
// Called when the message sending to the API starts.
}

override fun onSendStop(result: Result<Message>) {
// Called when the message sending to the API stops.
}

override fun onStop(result: Result<Message>) {
// Called when the message sending flow stops.
}
}

Did you find this page helpful?