Link Search Menu Expand Document

Chat Availability Work in progress

Table of contents


Overview

Chat considered available, when the chat can be answered by a live agent. Chat unavailability triggers state event StateEvent.Unavailable, which will have an UnavailableReason and will be passed to the hosting App along side unavailable form / message.

If the chat is canceled by the user while in StateEvent.InQueue or while waiting for acceptance StateEvent.Pending, chat end will be handled as unavailable.


ChatAvailability API

Availability check

Check if your chat is available.

  1. Create an Account.

  2. Call ChatAvailability.checkAvailability as follows:

     ChatAvailability.checkAvailability(account, callback = object : ChatAvailability.Callback {
         override fun onComplete(result: ChatAvailability.AvailabilityResult) {
             // Validate no error
             // Check isAvailable and check the UnavailabilityReason if not 
         }
     })
    

    ChatAvailability.AvailabilityResult provides the check parameters (apiKey, departmentId, etc) as well as the execution results

Availability check with department

Use ChatAvailability.checkAvailability call as before, just add the departmentId.

ChatAvailability.checkAvailability(account, departmentId, callback = object : ChatAvailability.Callback {
    override fun onComplete(result: ChatAvailability.AvailabilityResult) {
        // do your wonders...  
    }
})

❗ In order to get availability status of the different departments in your organization, make sure your api access key is not configured to work with a specific department.


Available departments

With ChatAvailability API, you can also fetch the current available departments, for your account configuration.

  1. Create an Account.

  2. Call ChatAvailability.availableDepartments as follows:

     ChatAvailability.availableDepartments(account, callback = object : ChatAvailability.DepartmentsCallback {
         override fun onComplete(result: ChatAvailability.DepartmentsResult) {
             // Validate no error
             result.error?.let{
                 //handle error
             } ?:        
             // get departments list
             result.data.takeIf { it.isNotEmpty() }?.let{
                 // handle departments list
             }
         }
     })
    

    ChatAvailability.DepartmentsResult will contain, if no errors occurred, a list of Department items. Each contains name, id and language of the department.