Conversation Status

To get the current ASAPPConversationStatus, implement the conversationStatusHandler callback:

ASAPP.instance.conversationStatusHandler = { conversationStatus ->
    // Handle conversationStatus.isLiveChat and conversationStatus.unreadMessages
}
  • If isLiveChat is true, the customer is currently connected to a live support agent or in a queue.
  • The unreadMessages integer indicates the number of new messages received since last entering Chat.

Trigger the Conversation Status Handler

You can trigger this handler in two ways:

  1. Manually trigger it with:
ASAPP.instance.fetchConversationStatus()

The Chat SDK will fetch the status asynchronously and callback to conversationStatusHandler once it is available.

  1. The handler may be triggered when a push notification is received if the application is in the foreground. If your application handles Firebase push notifications, use:
class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(message: RemoteMessage) {
        super.onMessageReceived(message)
        val wasFromAsapp = ASAPP.instance.onFirebaseMessageReceived(message)
        // Additional handling...
    }
}

The Chat SDK only looks for conversation status data in the payload and doesn’t cache or persist analytics. If the push notification was sent from ASAPP, the SDK returns true and triggers the conversationStatusHandler callback.

Debug Logs

By default, the SDK only prints error logs to the console output. To allow the SDK to log warnings and debug information, use setDebugLoggingEnabled.

ASAPP.instance.setDebugLoggingEnabled(BuildConfig.DEBUG)

Disable debug logs for production use.

Clear the Persisted Session

To clear the ASAPP session persisted on disk:

ASAPP.instance.clearSession()

Only use this when an identified user signs out. Don’t use for anonymous users, as it will cause chat history loss.

Setting an Intent

Open Chat with an Initial Intent

ASAPP.instance.openChat(context, asappIntent = mapOf("Code" to "EXAMPLE_INTENT"))

To set the intent while chat is open, use ASAPP.instance.setASAPPIntent(). Only call this if chat is already open. Use ASAPP.instance.doesASAPPActivityExist to verify if the user is in chat.

Handling Chat Events

Implement the ASAPPChatEventHandler interface to react to specific chat events:

ASAPP.instance.chatEventHandler = object : ASAPPChatEventHandler {
    override fun handle(name: String, data: Map<String, Any>?) {
        // Handle chat event
    }
}

These events relate to user flows inside chat, not user behavior like button clicks.