sdk (1 of 5)
no.kindly.chatsdk.chat.sdk.common.delegate
BoolPreference
class
class BoolPreference(preferences: SharedPreferences, key: String, defaultValue: Boolean) : ReadWriteProperty<Any, Boolean>Member | Declaration | Description |
|---|---|---|
BoolPreference | constructor(preferences: SharedPreferences, key: String, defaultValue: Boolean) | |
getValue | open operator override fun getValue(thisRef: Any, property: KProperty<*>): Boolean | |
setValue | open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: Boolean) | |
LongPreference
class
class LongPreference(preferences: SharedPreferences, key: String?, defaultValue: Long = 0) : ReadWriteProperty<Any, Long>Member | Declaration | Description |
|---|---|---|
LongPreference | constructor(preferences: SharedPreferences, key: String?, defaultValue: Long = 0) | |
getValue | open operator override fun getValue(thisRef: Any, property: KProperty<*>): Long | |
setValue | open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: Long) | |
StringPreference
class
class StringPreference(preferences: SharedPreferences, key: String?, defaultValue: String = "") : ReadWriteProperty<Any, String>Member | Declaration | Description |
|---|---|---|
StringPreference | constructor(preferences: SharedPreferences, key: String?, defaultValue: String = "") | |
getValue | open operator override fun getValue(thisRef: Any, property: KProperty<*>): String | |
setValue | open operator override fun setValue(thisRef: Any, property: KProperty<*>, value: String) | |
no.kindly.chatsdk.chat.sdk.data.api
AuthGeneratorActor
interface
interface AuthGeneratorActorMember | Declaration | Description |
|---|---|---|
authenticateWithAuthToken | abstract suspend fun authenticateWithAuthToken(forceNew: Boolean? = null, reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT) | |
deleteAuthToken | abstract fun deleteAuthToken() | |
getAuthToken | abstract suspend fun getAuthToken(forceNew: Boolean = true, reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT): String? | |
isAboutToExpire | abstract fun isAboutToExpire(): Boolean? | |
isAboutToExpire | abstract fun isAboutToExpire(token: String): Boolean? | |
refreshAuthToken | abstract suspend fun refreshAuthToken(reason: AuthTokenRequest.Reason = AuthTokenRequest.Reason.INITIAL_CONNECT): String? | |
saveAuthToken | abstract fun saveAuthToken(token: String) | |
no.kindly.chatsdk.chat.sdk.data.api.interceptors
LoggingInterceptor
class
class LoggingInterceptor : InterceptorOkHttp interceptor that logs each HTTP request/response in a multi-section block matching the iOS HTTPClient format exactly:
------- 🟢 /path ------- [Success]
--- Request
[METHOD] url
--- Headers
"key": "value", ...
--- Body
{ pretty-printed request body or n/a }
--- Response [200]
{ pretty-printed response body }Or on failure (HTTP 4xx/5xx or network exception):
------- 🔴 /path ------- [Failure]
--- Request
--- Headers
--- Body
--- Error
<exception or status code>Visibility: emits at LogLevelEnum.DEBUG for success, ERROR for failure. In customer production builds (cloud + verboseLogging off + forceVerboseLogs off), DEBUG is filtered out — only failed requests reach device logs. The full payload becomes visible when _setVerboseLogs(true) SPI is called or the local-build WHERE_AM_I = LOCAL flag is set, matching the iOS HTTPClient gating model.
Member | Declaration | Description |
|---|---|---|
LoggingInterceptor | constructor() | |
intercept | open override fun intercept(chain: Interceptor.Chain): Response | |
no.kindly.chatsdk.chat.sdk.data.core
ActionId
typealias
typealias ActionId = UUIDActionType
typealias
typealias ActionType = suspend () -> ActionTypeResponseActionTypeResponse
typealias
typealias ActionTypeResponse = CompletableDeferred<Unit>?AuthState
enum
enum AuthState : Enum<AuthState>Member | Declaration | Description |
|---|---|---|
NONE | NONE | |
AUTHENTICATED | AUTHENTICATED | |
AUTHENTICATION_FAILED | AUTHENTICATION_FAILED | |
entries | val entries: EnumEntries<AuthState> | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries. |
valueOf | fun valueOf(value: String): AuthState | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) Throws - kotlin.IllegalArgumentException: if this enum type has no constant with the specified name |
values | fun values(): Array<AuthState> | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants. |
getErrorMessage
function
fun ResponseBody.getErrorMessage(): StringgetSerializable
function
fun <T : Serializable?> Intent.getSerializable(key: String, m_class: Class<T>): Tgone
function
fun View.gone()goto
function
fun <T> Activity.goto(clazz: Class<T>, clearStack: Boolean = false)Intent
function
fun <T> Activity.Intent(clazz: Class<T>): Intentinvisible
function
fun View.invisible()KindlySDKError
sealed class
sealed class KindlySDKError : ExceptionKindlySDKError.ApiError
data class
data class ApiError(val code: Int, val errorMessage: String?) : KindlySDKErrorMember | Declaration | Description |
|---|---|---|
ApiError | constructor(code: Int, errorMessage: String?) | |
code | val code: Int | |
errorMessage | val errorMessage: String? | |
KindlySDKError.ChatNotConnected
object
object ChatNotConnected : KindlySDKErrorKindlySDKError.InvalidData
object
object InvalidData : KindlySDKErrorKindlySDKError.SDKNotInitialized
object
object SDKNotInitialized : KindlySDKErrorKindlySDKError.TokenMissing
object
object TokenMissing : KindlySDKErrorLifecycleVars
class
class LifecycleVarsMember | Declaration | Description |
|---|---|---|
LifecycleVars | constructor() | |
LifecycleVars.Companion
object
object CompanionMember | Declaration | Description |
|---|---|---|
botFeedbackFormShowCount | var botFeedbackFormShowCount: Int | |
botFeedbackId | var botFeedbackId: String? | |
chatActivityInstances | val chatActivityInstances: AtomicInteger | Live ChatSDKActivity instances. Shared state is reset only when the last one is destroyed (they can stack). |
chatWasEnded | var chatWasEnded: Boolean | |
handoverFeedbackFormShowCount | var handoverFeedbackFormShowCount: Int | |
handoverFeedbackId | var handoverFeedbackId: String? | |
hasAcceptedCompliance | var hasAcceptedCompliance: Boolean | |
hasGreetingParams | val hasGreetingParams: Boolean | |
hasRequestedHandoverAtLeastOnce | var hasRequestedHandoverAtLeastOnce: Boolean | Latches the moment the end user enters the handover funnel - a handover request, or an agent taking over - and stays latched for the rest of the chat, including after the handover ends. This is what gates bot feedback, mirroring agent.hasRequestedHandoverAtLeastOnce in the web widget. Do not substitute handoverFeedbackFormShowCount: that counts whether the handover form was displayed, which is a later and sometimes unreachable moment, and Session zeroes it again whenever a new handover starts. |
hasShownComplianceBanner | var hasShownComplianceBanner: Boolean | |
hasShownWelcomePage | var hasShownWelcomePage: Boolean | |
includeGreetings | var includeGreetings: Boolean? | |
isAppInBackground | @Volatile var isAppInBackground: Boolean | Tracks whether the host app is currently backgrounded. Updated by AppStateObserver. Read from the FCM thread. |
isCancellationInProgress | val isCancellationInProgress: AtomicBoolean | |
isChatActivityVisible | @Volatile var isChatActivityVisible: Boolean | |
kindlyContext | var kindlyContext: Map<String, String>? | |
kindlyInterface | var kindlyInterface: KindlySDKInteraction? | |
lastBackgroundDateMs | var lastBackgroundDateMs: Long? | Timestamp of the last onStop event (epoch millis). Updated by AppStateObserver. Used to recognize background-induced network failures even when OkHttp reports them slightly after the app has come back to foreground. |
mainActivity | var mainActivity: ChatSDKActivity? | |
maintenanceAlertDismissed | var maintenanceAlertDismissed: Boolean | |
maintenanceModeEnabled | val maintenanceModeEnabled: Boolean? | |
pendingConnectRequest | var pendingConnectRequest: () -> Unit? | |
settingsOverrides | var settingsOverrides: Map<String, Any>? | Testing overrides for settings response. Set via KindlySDK._overrideSettings(). |
settingsResponse | var settingsResponse: SettingsResponse? | |
shouldGreet | var shouldGreet: Boolean? | |
triggerDialogueId | var triggerDialogueId: String? | |
clear | fun clear() | |
clearFeedbackIds | fun clearFeedbackIds(triggerType: TriggerTypeSDK? = null) | |
observeMaintenanceAlert | fun observeMaintenanceAlert(): Flow<MaintenanceAlertSDK?> | |
resetGreetings | fun resetGreetings() | |
updateMaintenanceAlert | fun updateMaintenanceAlert(maintenanceAlert: MaintenanceAlertSDK?) | |
wasBackgroundedRecently | fun wasBackgroundedRecently(withinMs: Long): Boolean | Returns true if the app is currently in background, or was in background within the last withinMs milliseconds. Android tears down active TCP sockets aggressively on background, so a recent background event is a strong signal that an HTTP failure is background-induced (server may have still received the request) rather than a genuine network failure. |
LocationEnum
enum
enum LocationEnum : Enum<LocationEnum>Location enum - matches iOS WHERE_AM_I Controls logging verbosity independent of build variant
Member | Declaration | Description |
|---|---|---|
LOCAL | LOCAL | |
CLOUD | CLOUD | |
computedName | val computedName: String | |
entries | val entries: EnumEntries<LocationEnum> | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries. |
locationName | val locationName: String | |
valueOf | fun valueOf(value: String): LocationEnum | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) Throws - kotlin.IllegalArgumentException: if this enum type has no constant with the specified name |
values | fun values(): Array<LocationEnum> | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants. |
Navigation
object
object NavigationMember | Declaration | Description |
|---|---|---|
context | var context: Context? | |
currentTriggerType | var currentTriggerType: TriggerTypeSDK? | |
feedbackOnCancel | var feedbackOnCancel: () -> Unit? | |
feedbackOnSubmit | var feedbackOnSubmit: (FeedbackStep, EmojiSelection?, ButtonSelection?, String?) -> Unit? | |
navController | lateinit var navController: NavHostController | |
navigationBarPadding | var navigationBarPadding: MutableState<Dp> | |
showFeedbackSheet | var showFeedbackSheet: MutableState<Boolean> | |
displayChat | fun displayChat(context: Context) | |
displayDownloadPreview | fun displayDownloadPreview(url: String, format: String) | |
displayWebView | fun displayWebView(urlStr: String) | |
setup | @Composable fun setup(navController: NavHostController, navigationBarPadding: Dp = androidx.compose.ui.unit .Dp(0f)) | |
showFeedbackForm | fun showFeedbackForm(triggerType: TriggerTypeSDK, onCancel: () -> Unit? = null, onSubmit: (FeedbackStep, EmojiSelection?, ButtonSelection?, String?) -> Unit? = null) | |
PromiseException
sealed class
sealed class PromiseException : ExceptionErrors that can be thrown by the Promise machinery itself (separate from user errors surfaced via reject(_:)).
PromiseException.Cancelled
data object
data object Cancelled : PromiseExceptionThrown by await() when the Promise was cancelled via .cancel() before resolving.
PromiseException.NoResult
data object
data object NoResult : PromiseExceptionReturned by await() when the promise resolves with a null/missing result.
PromiseException.PromiseFailed
data object
data object PromiseFailed : PromiseExceptionGeneric resolution failure used as a fallback when neither a value nor an error is present.
PromiseException.TimedOut
data object
data object TimedOut : PromiseExceptionawait() did not receive a result before its timeout (when a timeout is configured).
PromiseException.ValidationFailure
data object
data object ValidationFailure : PromiseExceptionA validation step inside a chained operation failed.
SdkMode
enum
enum SdkMode : Enum<SdkMode>Member | Declaration | Description |
|---|---|---|
DEV | DEV | |
CLIENT | CLIENT | |
computedName | val computedName: String | |
entries | val entries: EnumEntries<SdkMode> | Returns a representation of an immutable list of all enum entries, in the order they're declared. This method may be used to iterate over the enum entries. |
modeName | val modeName: String | |
valueOf | fun valueOf(value: String): SdkMode | Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) Throws - kotlin.IllegalArgumentException: if this enum type has no constant with the specified name |
values | fun values(): Array<SdkMode> | Returns an array containing the constants of this enum type, in the order they're declared. This method may be used to iterate over the constants. |
text
function
fun EditText.text(): StringtoPx
property
val Number.toPx: Intvisible
function
fun View.visible()no.kindly.chatsdk.chat.sdk.data.entity
BotModel
data class
@Serializable
data class BotModel(val id: String = "", val name: String = "", val avatarURL: String? = null, val shouldDisplayTypingIndicator: Boolean = true)Model representing a bot's information. Matches the iOS Bot model structure.
Member | Declaration | Description |
|---|---|---|
BotModel | constructor(id: String = "", name: String = "", avatarURL: String? = null, shouldDisplayTypingIndicator: Boolean = true) | |
avatarURL | val avatarURL: String? | |
id | val id: String | |
name | val name: String | |
shouldDisplayTypingIndicator | val shouldDisplayTypingIndicator: Boolean | |
BotPlaceholder
data class
@Serializable
data class BotPlaceholder(val en: String?, val nb: String?, val nn: String?, val sv: String?)Member | Declaration | Description |
|---|---|---|
BotPlaceholder | constructor(en: String?, nb: String?, nn: String?, sv: String?) | |
en | @SerialName(value = "en") val en: String? | |
nb | @SerialName(value = "nb") val nb: String? | |
nn | @SerialName(value = "nn") val nn: String? | |
sv | @SerialName(value = "sv") val sv: String? | |
ButtonAction
data class
@Serializable
data class ButtonAction(val button: ButtonDataSDK, val chatMessage: MessageData, val temporaryId: String? = null, val version: String = "2.36.1", val newContext: Map<String, String>? = LifecycleVars.kindlyContext)Member | Declaration | Description |
|---|---|---|
ButtonAction | constructor(button: ButtonDataSDK, chatMessage: MessageData, temporaryId: String? = null, version: String = "2.36.1", newContext: Map<String, String>? = LifecycleVars.kindlyContext) | |
button | val button: ButtonDataSDK | |
chatMessage | val chatMessage: MessageData | |
newContext | @SerialName(value = "new_context") val newContext: Map<String, String>? | |
temporaryId | val temporaryId: String? | |
version | val version: String | |
ButtonDataSDK
data class
@Serializable
data class ButtonDataSDK(val id: String?, val buttonType: String?, val languageCode: String?, val label: String = "", val value: String?, val index: Int?, val createdAt: String?, val updatedAt: String?, val isActive: Boolean = true, val hideOutsideBusinessHours: Boolean?, val context: Map<String, Any>? = null, val sliderDetails: SliderDetails? = null, val contactDetails: ContactDetails? = null, val emailDetails: EmailDetails? = null)Member | Declaration | Description |
|---|---|---|
ButtonDataSDK | constructor(id: String?, buttonType: String?, languageCode: String?, label: String = "", value: String?, index: Int?, createdAt: String?, updatedAt: String?, isActive: Boolean = true, hideOutsideBusinessHours: Boolean?, context: Map<String, Any>? = null, sliderDetails: SliderDetails? = null, contactDetails: ContactDetails? = null, emailDetails: EmailDetails? = null) | |
accessibilityId | val accessibilityId: String | Generates a unique accessibility identifier for Appium automation Format: suggestion_button_id_label |
buttonType | @SerialName(value = "button_type") val buttonType: String? | |
contactDetails | @SerialName(value = "contact_details") val contactDetails: ContactDetails? | |
context | @SerialName(value = "context") val context: Map<String, Any>? | |
createdAt | @SerialName(value = "created_at") val createdAt: String? | |
emailDetails | @SerialName(value = "email_details") val emailDetails: EmailDetails? | |
hideOutsideBusinessHours | @SerialName(value = "hide_outside_business_hours") val hideOutsideBusinessHours: Boolean? | |
id | @SerialName(value = "id") val id: String? | |
index | @SerialName(value = "index") val index: Int? | |
isActive | @SerialName(value = "is_active") val isActive: Boolean | |
label | @SerialName(value = "label") val label: String | |
languageCode | @SerialName(value = "language_code") val languageCode: String? | |
sliderDetails | @SerialName(value = "slider_details") val sliderDetails: SliderDetails? | |
updatedAt | @SerialName(value = "updated_at") val updatedAt: String? | |
value | @SerialName(value = "value") val value: String? | |
ChatMessageReferenceModel
data class
@Serializable
data class ChatMessageReferenceModel(val url: String, val offset: Int, val _id: String)Member | Declaration | Description |
|---|---|---|
ChatMessageReferenceModel | constructor(url: String, offset: Int, _id: String) | |
_id | @SerialName(value = "_id") val _id: String | |
offset | @SerialName(value = "offset") val offset: Int | |
url | @SerialName(value = "url") val url: String | |
Connection
data class
@Serializable
data class Connection(val bot: BotModel, val token: String = "", val chatId: String = "")Connection model similar to iOS implementation
Member | Declaration | Description |
|---|---|---|
Connection | constructor(bot: BotModel, token: String = "", chatId: String = "") | |
bot | val bot: BotModel | |
chatId | val chatId: String | |
token | val token: String | |
ConnectiondData
data class
@Serializable
data class ConnectiondData(val chatId: String?, val created: String?, val token: String = "", val botName: String = "", val botAvatar: String?, val botTypingDuration: Int = 0, val botTypingIndicator: Boolean?, val allGreetingsHideInput: Boolean?)Member | Declaration | Description |
|---|---|---|
ConnectiondData | constructor(chatId: String?, created: String?, token: String = "", botName: String = "", botAvatar: String?, botTypingDuration: Int = 0, botTypingIndicator: Boolean?, allGreetingsHideInput: Boolean?) | |
allGreetingsHideInput | @SerialName(value = "all_greetings_hide_input") val allGreetingsHideInput: Boolean? | |
botAvatar | @SerialName(value = "bot_avatar") val botAvatar: String? | |
botName | @SerialName(value = "bot_name") val botName: String | |
botTypingDuration | @SerialName(value = "bot_typing_duration") val botTypingDuration: Int | |
botTypingIndicator | @SerialName(value = "bot_typing_indicator") val botTypingIndicator: Boolean? | |
chatId | @SerialName(value = "chat_id") val chatId: String? | |
created | @SerialName(value = "created") val created: String? | |
token | @SerialName(value = "token") val token: String | |
ConnectionResponse
data class
@Serializable
data class ConnectionResponse(val chatId: String?, val created: String?, val token: String = "", val botName: String = "", val botAvatar: String = "", val botTypingDuration: Int = 0, val botTypingIndicator: Boolean?, val botPlaceholder: BotPlaceholder?, val allGreetingsHideInput: Boolean?, val greeting: MessageData?, val liveTranslationSystemDialogue: MessageData?)Member | Declaration | Description |
|---|---|---|
ConnectionResponse | constructor(chatId: String?, created: String?, token: String = "", botName: String = "", botAvatar: String = "", botTypingDuration: Int = 0, botTypingIndicator: Boolean?, botPlaceholder: BotPlaceholder?, allGreetingsHideInput: Boolean?, greeting: MessageData?, liveTranslationSystemDialogue: MessageData?) | |
allGreetingsHideInput | @SerialName(value = "all_greetings_hide_input") val allGreetingsHideInput: Boolean? | |
bot | val bot: BotModel | Gets or creates a BotModel from the response data |
botAvatar | @SerialName(value = "bot_avatar") val botAvatar: String | |
botName | @SerialName(value = "bot_name") val botName: String | |
botPlaceholder | @SerialName(value = "bot_placeholder") val botPlaceholder: BotPlaceholder? | |
botTypingDuration | @SerialName(value = "bot_typing_duration") val botTypingDuration: Int | |
botTypingIndicator | @SerialName(value = "bot_typing_indicator") val botTypingIndicator: Boolean? | |
chatId | @SerialName(value = "chat_id") val chatId: String? | |
created | @SerialName(value = "created") val created: String? | |
greeting | @SerialName(value = "greeting") val greeting: MessageData? | |
hasGreeting | val hasGreeting: Boolean | |
hasLiveTranslationSystemDialogue | val hasLiveTranslationSystemDialogue: Boolean | |
liveTranslationSystemDialogue | @SerialName(value = "live_translation_system_dialogue") val liveTranslationSystemDialogue: MessageData? | |
token | @SerialName(value = "token") val token: String | |
toConnection | fun toConnection(): Connection | Converts this response to a Connection object Similar to iOS toConnection() function |
ConnectModel
data class
@Serializable
data class ConnectModel(val context: Map<String, String>? = LifecycleVars.kindlyContext, val market: String? = null)Member | Declaration | Description |
|---|---|---|
ConnectModel | constructor(context: Map<String, String>? = LifecycleVars.kindlyContext, market: String? = null) | |
context | val context: Map<String, String>? | |
market | val market: String? | |
dummyMessageReferences
property
val dummyMessageReferences: List<ChatMessageReferenceModel>