diff --git a/CHANGELOG.md b/CHANGELOG.md index c457b1b..b54d53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## 2.3.5 + +### Fixed +- Fixed ANRs and crashes caused by Keystore Binder IPC during app termination in session recording. +- Optimized masking performance for better dynamic webviews in Cordova. +- Added a fix for incorrect session engagement time. + +## 2.3.4 + +### Changed +- Optimized External Masking (Flutter, Jetpack Compose). + +### Fixed +- Fixed incorrect engagement time for sessions that were pending upload. + +## 2.3.3 + +### Added +- Added a config flag to enable real-time AI agent response streaming in support chat. +- Added support for `setArticleSearchFilters`. + +### Changed +- Updated support widget using `updateFeatureConfiguration` function. + +### Fixed +- Fixed a crash related to `MotionEvent`. +- Prevented a potential runtime crash due to corrupted `SharedPreferences`. + +## 2.3.2 + +### Added +- Added `@jvmoverloads` to `configure()` for Java backward compatibility. +- Added builder pattern to FeatureConfiguration. + +### Changed +- Updated README with `FeatureConfiguration` documentation. + +### Fixed +- Fixed VerifyError crash by disabling R8 optimization. + ## 2.3.1 ### Fixed diff --git a/README.md b/README.md index 1d7df37..1aa5db3 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ DevRev SDK, used for integrating DevRev services into your Android app. - [Step 2](#step-2) - [ProGuard rules](#proguard-rules) - [Set up the DevRev SDK](#set-up-the-devrev-sdk) + - [Feature configuration](#feature-configuration) + - [Update the feature configuration](#update-the-feature-configuration) + - [Feature configuration reference](#feature-configuration-reference) + - [Configuration caching](#configuration-caching) + - [Support widget theme options](#support-widget-theme-options) - [Sample app](#sample-app) - [Features](#features) - [Identification](#identification) @@ -37,6 +42,8 @@ DevRev SDK, used for integrating DevRev services into your Android app. - [Session properties](#session-properties) - [Mask sensitive data](#mask-sensitive-data) - [Mask using predefined tags](#mask-using-predefined-tags) + - [Mask using the API methods](#mask-using-the-api-methods) + - [Mask Jetpack Compose views](#mask-jetpack-compose-views) - [Mask web view elements](#mask-web-view-elements) - [Unmask web view elements](#unmask-web-view-elements) - [User interaction tracking](#user-interaction-tracking) @@ -124,7 +131,7 @@ The SDK becomes ready for use once the following configuration method is execute ``` - Java ```java - DevRev.INSTANCE.configure(Context context, String appId); + DevRev.INSTANCE.configure(Context context, String appId, FeatureConfiguration featureConfiguration); ``` Ensure that the custom application is specified in the `AndroidManifest.xml` file: @@ -146,12 +153,58 @@ Use this property to check whether the DevRev SDK has been configured: DevRev.INSTANCE.isConfigured(); ``` -> [!TIP] -> The SDK supports feature configuration for enhanced control: -> - `enableFrameCapture`: Enable/disable screenshot capture during session recording (default: `true`) -> - `autoStartRecording`: Automatically start recording after SDK configuration (default: `true`) -> - `prefersDialogMode`: Open SDK screens as bottom sheets instead of separate activities (default: `false`) -> - `supportWidgetTheme`: Controls the appearance of the in-app support widget (default: system theme) +To provide a feature configuration during setup, call the overload that accepts it: + +- Kotlin + ```kotlin + DevRev.configure(context: Context, appId: String, featureConfiguration: FeatureConfiguration) + ``` +- Java + ```java + DevRev.INSTANCE.configure(Context context, String appId, FeatureConfiguration featureConfiguration); + ``` + +For default behavior, call the simpler overload: + +- Kotlin + ```kotlin + DevRev.configure(context = this, appId = "") + ``` +- Java + ```java + DevRev.INSTANCE.configure(this, "", new FeatureConfiguration()); + ``` + +To customize behavior such as frame capture, auto-start recording, configuration caching, or theme preferences, pass a `FeatureConfiguration` instance: + +- Kotlin + ```kotlin + DevRev.configure( + context = this, + appId = "", + featureConfiguration = FeatureConfiguration( + enableFrameCapture = false, + autoStartRecording = false, + prefersDialogMode = false, + alwaysUseRemoteConfig = true, + supportWidgetTheme = SupportWidgetTheme(prefersSystemTheme = true) + ) + ) + ``` +- Java + ```java + DevRev.INSTANCE.configure( + this, + "", + new FeatureConfiguration( + false, // enableFrameCapture + false, // autoStartRecording + false, // prefersDialogMode + true, // alwaysUseRemoteConfig + new SupportWidgetTheme(true, null, null, null) + ) + ); + ``` 1. Call the following method inside your `Application` class to configure the SDK: @@ -176,6 +229,7 @@ Use this property to check whether the DevRev SDK has been configured: - Java ```java import ai.devrev.sdk.DevRev; + import ai.devrev.sdk.model.FeatureConfiguration; public class FooApplication extends Application { @@ -184,145 +238,137 @@ Use this property to check whether the DevRev SDK has been configured: super.onCreate(); DevRev.INSTANCE.configure( this, - "" + "", + new FeatureConfiguration() ); } } ``` -### Feature Configuration Examples +### Feature configuration -#### Custom Configuration +#### Update the feature configuration -You can customize SDK behavior by creating a custom `FeatureConfiguration`: +You can adjust the feature configuration without reconfiguring the SDK: - Kotlin ```kotlin - import ai.devrev.sdk.DevRev - import ai.devrev.sdk.model.FeatureConfiguration - import ai.devrev.sdk.model.SupportWidgetTheme - - class FooApplication : Application() { - override fun onCreate() { - super.onCreate() - DevRev.configure( - context = this, - appId = "", - featureConfiguration = FeatureConfiguration( - enableFrameCapture = false, // Disable screenshot capture - autoStartRecording = true, // Auto-start recording (default) - prefersDialogMode = false, // Use activity mode (default) - supportWidgetTheme = SupportWidgetTheme(prefersSystemTheme = true) // Use system theme (default) - ) - ) - } - } + DevRev.updateFeatureConfiguration( + context = this, + featureConfiguration = FeatureConfiguration( + enableFrameCapture = true, + autoStartRecording = true, + prefersDialogMode = false, + alwaysUseRemoteConfig = true, + supportWidgetTheme = SupportWidgetTheme(prefersSystemTheme = true) + ) + ) ``` - - Java ```java - import ai.devrev.sdk.DevRev; - import ai.devrev.sdk.model.FeatureConfiguration; - import ai.devrev.sdk.model.SupportWidgetTheme; + DevRev.INSTANCE.updateFeatureConfiguration( + this, + new FeatureConfiguration( + true, // enableFrameCapture + true, // autoStartRecording + false, // prefersDialogMode + true, // alwaysUseRemoteConfig + new SupportWidgetTheme(true, null, null, null) + ) + ); + ``` - public class FooApplication extends Application { - @Override - public void onCreate() { - super.onCreate(); - DevRev.INSTANCE.configure( - this, - "", - new FeatureConfiguration( - false, // enableFrameCapture - Disable screenshot capture - true, // autoStartRecording - Auto-start recording (default) - false, // prefersDialogMode - Use activity mode (default) - new SupportWidgetTheme(true, null, null, null) // Use system theme (default) - ) - ); - } - } +#### Feature configuration reference + +`FeatureConfiguration` controls how the SDK behaves both during initial setup and when calling `DevRev.updateFeatureConfiguration`. + +- Kotlin + ```kotlin + val configuration = FeatureConfiguration.default + ``` +- Java + ```java + FeatureConfiguration configuration = new FeatureConfiguration(); ``` -#### Runtime Configuration Updates +| Property | Type | Default | Description | +|-------------------------------------|-------------------------|---------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `enableFrameCapture` | `Boolean` | `true` | Enables the screen capture pipeline used by session replay. | +| `autoStartRecording` | `Boolean` | `true` | Automatically starts recording after the SDK finishes remote configuration (or when using cached config). | +| `prefersDialogMode` | `Boolean` | `false` | Opens SDK screens as a bottom sheet instead of a separate activity. | +| `alwaysUseRemoteConfig` | `Boolean` | `true` | When `true`, the SDK always fetches remote configuration at startup and when the app enters foreground. When `false`, the SDK uses cached configuration when available and skips the remote fetch, improving cold start. | +| `supportWidgetTheme` | `SupportWidgetTheme?` | `null` | Controls the appearance of the in-app support widget, including dynamic theme behavior. | +| `enableSupportChatStreaming` | `Boolean` | `false` | When `true`, enables real-time AI agent response streaming in PLuG conversations (WebSocket streaming, optimistic UI, animated text). | +| `supportWidgetArticleSearchFilters` | `ArticleSearchFilters?` | `null` | Optional filters for PLuG article search (widget and CMDK). Applied automatically when the support widget is ready. | -You can update `enableFrameCapture` at runtime: +Use the constructor to override any combination of options: - Kotlin ```kotlin - // Update frame capture setting at runtime - DevRev.updateFeatureConfiguration( - context = this, - featureConfiguration = FeatureConfiguration( - enableFrameCapture = false - ) + val configuration = FeatureConfiguration( + enableFrameCapture = false, + autoStartRecording = false, + prefersDialogMode = false, + alwaysUseRemoteConfig = false, + supportWidgetTheme = SupportWidgetTheme(prefersSystemTheme = true), + enableSupportChatStreaming = true, + supportWidgetArticleSearchFilters = myArticleSearchFilters ) ``` - - Java ```java - // Update frame capture setting at runtime - DevRev.INSTANCE.updateFeatureConfiguration( - this, - new FeatureConfiguration( - false, // enableFrameCapture - Disable screenshot capture - true, // autoStartRecording - Ignored (can't be updated at runtime) - false // prefersDialogMode - Ignored (can't be updated at runtime) - ) + FeatureConfiguration configuration = new FeatureConfiguration( + false, // enableFrameCapture + false, // autoStartRecording + false, // prefersDialogMode + false, // alwaysUseRemoteConfig + new SupportWidgetTheme(true, null, null, null), + true, // enableSupportChatStreaming + myArticleSearchFilters + ); ``` > [!NOTE] -> The `autoStartRecording` and `prefersDialogMode` flags can only be set during initial configuration and cannot be changed at runtime. To control recording manually, use `DevRev.startRecording()` and `DevRev.stopRecording()` methods. +> The `autoStartRecording`, `prefersDialogMode`, and `alwaysUseRemoteConfig` flags can only be set during initial configuration and cannot be changed at runtime. To control recording manually, use `DevRev.startRecording()` and `DevRev.stopRecording()` methods. -#### Update the support widget theme +##### Configuration caching -You can update the support widget theme at runtime: +When `alwaysUseRemoteConfig` is `false`, the SDK uses the last successfully fetched configuration stored on the device. If a cached configuration exists, the SDK skips the remote config request at startup and applies the cached settings (e.g. session replay, observability). This reduces cold-start latency and allows the app to work offline with the last known config. The first launch (or after clearing app data) still performs a remote fetch when network is available. Set `alwaysUseRemoteConfig` to `true` (the default) to retain the previous behavior of always fetching remote configuration at startup and when the app enters foreground. + +##### Support widget theme options + +`SupportWidgetTheme` lets you fine-tune the support UI. Provide explicit values to customize: - Kotlin ```kotlin - DevRev.updateFeatureConfiguration( - context = this, - featureConfiguration = FeatureConfiguration( - supportWidgetTheme = SupportWidgetTheme( - false, // prefersSystemTheme - "#202020", // primaryTextColor - "#34C759", // accentColor - mapOf("bottom" to "20px", "side" to "16px") // spacing - ) - ) + val customTheme = SupportWidgetTheme( + prefersSystemTheme = false, + primaryTextColor = "#1F2933", + accentColor = "#F97316", + spacing = mapOf("bottom" to "20px", "side" to "16px") ) ``` - Java ```java - SupportWidgetTheme theme = new SupportWidgetTheme(false, "#202020", "#34C759", + SupportWidgetTheme customTheme = new SupportWidgetTheme( + false, // prefersSystemTheme + "#1F2933", // primaryTextColor + "#F97316", // accentColor new HashMap() {{ put("bottom", "20px"); put("side", "16px"); - }}); - DevRev.INSTANCE.updateFeatureConfiguration( - this, - new FeatureConfiguration(false, true, false, theme) + }} ); ``` -> [!NOTE] -> All properties in `SupportWidgetTheme` are optional. - | Property | Type | Default | Description | | -------------------- | ---------------------- | ------- | ---------------------------------------------------------------------------------- | -| `prefersSystemTheme` | `Boolean?` | `null` | When `true`, follows the device appearance; when `false`, uses your custom colors. | +| `prefersSystemTheme` | `Boolean?` | `null` | Follows the device appearance when `true`; otherwise uses your custom colors. | | `primaryTextColor` | `String?` | `null` | Hex or RGB value for primary text in the support widget. | | `accentColor` | `String?` | `null` | Hex or RGB value applied to buttons and highlights. | | `spacing` | `Map?` | `null` | CSS-like spacing overrides; `"bottom"` and `"side"` keys are recognized. | -1. In the `onCreate` method of your `Application`, configure the DevRev SDK with the required parameters using the credentials obtained earlier. -2. Ensure that the custom application is specified in the `AndroidManifest.xml`, as shown below: - ```xml - - - ``` - ### Sample app We provide a sample app demonstrating use cases with both XML-based UI and Jetpack Compose as part our [public repository](https://github.com/devrev/devrev-sdk-android). @@ -1084,32 +1130,35 @@ For example: ```kotlin import com.userexperior.bridge.model.MaskLocationProvider import com.userexperior.bridge.model.SnapshotMask +import com.userexperior.bridge.model.SnapshotMaskCallback import ai.devrev.sdk.setMaskLocationProvider import ai.devrev.sdk.DevRev import android.graphics.Rect class MyMaskingProvider : MaskLocationProvider { init { - // Register the custom masking provider - DevRev.setMaskLocationProvider(this) + // Register the custom masking provider + DevRev.setMaskLocationProvider(this) } - override fun provideSnapshotMask(): SnapshotMask { - // Create a MutableSet to hold the masked regions - val locations: MutableSet = mutableSetOf() + override fun provideSnapshotMask(callback: SnapshotMaskCallback) { + // Create a MutableSet to hold the masked regions + val locations: MutableSet = mutableSetOf() - // Define the regions to be masked - val rect1 = Rect(0, 0, 100, 50) - val rect2 = Rect(50, 50, 150, 100) + // Define the regions to be masked + val rect1 = Rect(0, 0, 100, 50) + val rect2 = Rect(50, 50, 150, 100) - // Add the regions to the Set - locations.add(rect1) - locations.add(rect2) + // Add the regions to the Set + locations.add(rect1) + locations.add(rect2) - return SnapshotMask( - locations, - false - ) + callback.onSnapshotMask( + SnapshotMask( + locations, + false + ) + ) } } ``` @@ -1117,6 +1166,7 @@ class MyMaskingProvider : MaskLocationProvider { ```java import com.userexperior.bridge.model.MaskLocationProvider; import com.userexperior.bridge.model.SnapshotMask; +import com.userexperior.bridge.model.SnapshotMaskCallback; import ai.devrev.sdk.DevRevObservabilityExtKt; import ai.devrev.sdk.DevRev; import android.graphics.Rect; @@ -1125,27 +1175,31 @@ import java.util.Set; public class MyMaskingProvider implements MaskLocationProvider { public MyMaskingProvider() { - // Register the custom masking provider - DevRevObservabilityExtKt.setMaskLocationProvider(DevRev.INSTANCE, this); + // Register the custom masking provider + DevRevObservabilityExtKt.setMaskLocationProvider(DevRev.INSTANCE, this); } @Override - public SnapshotMask provideSnapshotMask() { - // Create a Set to hold the masked regions - Set locations = new HashSet<>(); - - // Define the regions to be masked - Rect rect1 = new Rect(0, 0, 100, 100); - Rect rect2 = new Rect(50, 50, 150, 150); - - // Add the regions to the Set - locations.add(rect1); - locations.add(rect2); - - return new SnapshotMask( - locations, - false - ); + public void provideSnapshotMask(SnapshotMaskCallback callback) { + if (callback != null) { + // Create a Set to hold the masked regions + Set locations = new HashSet<>(); + + // Define the regions to be masked + Rect rect1 = new Rect(0, 0, 100, 100); + Rect rect2 = new Rect(50, 50, 150, 150); + + // Add the regions to the Set + locations.add(rect1); + locations.add(rect2); + + callback.onSnapshotMask( + new SnapshotMask( + locations, + false + ) + ); + } } } ``` diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/-article-search-filter-operand.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/-article-search-filter-operand.html new file mode 100644 index 0000000..0fcd895 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/-article-search-filter-operand.html @@ -0,0 +1,132 @@ + + + + + ArticleSearchFilterOperand + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilterOperand

+
+
constructor(field: String, op: FilterOperator, value: List<String>, valueType: FilterValueType)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/field.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/field.html new file mode 100644 index 0000000..77ec072 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/field.html @@ -0,0 +1,132 @@ + + + + + field + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

field

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/index.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/index.html new file mode 100644 index 0000000..1552302 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/index.html @@ -0,0 +1,220 @@ + + + + + ArticleSearchFilterOperand + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilterOperand

+
@Serializable
data class ArticleSearchFilterOperand(val field: String, val op: FilterOperator, val value: List<String>, val valueType: FilterValueType)

A single filter operand for article search filtering. Used to filter articles by tags or other fields via DQL query.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(field: String, op: FilterOperator, value: List<String>, valueType: FilterValueType)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

The field to filter on (e.g., "article.tags.tag_id").

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The comparison operator.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The value(s) to filter by.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The type of the value.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/op.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/op.html new file mode 100644 index 0000000..1792e87 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/op.html @@ -0,0 +1,132 @@ + + + + + op + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

op

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value-type.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value-type.html new file mode 100644 index 0000000..59a5063 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value-type.html @@ -0,0 +1,132 @@ + + + + + valueType + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

valueType

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value.html new file mode 100644 index 0000000..af6db06 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter-operand/value.html @@ -0,0 +1,132 @@ + + + + + value + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

value

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter/-article-search-filter.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/-article-search-filter.html new file mode 100644 index 0000000..0075e4e --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/-article-search-filter.html @@ -0,0 +1,132 @@ + + + + + ArticleSearchFilter + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilter

+
+
constructor(op: FilterOperator, operands: List<ArticleSearchFilterOperand>)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter/index.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/index.html new file mode 100644 index 0000000..d1ed011 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/index.html @@ -0,0 +1,190 @@ + + + + + ArticleSearchFilter + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilter

+
@Serializable
data class ArticleSearchFilter(val op: FilterOperator, val operands: List<ArticleSearchFilterOperand>)

Filter payload for article search. Passed to the PLuG SDK's setArticleSearchFilters method.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(op: FilterOperator, operands: List<ArticleSearchFilterOperand>)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

The logical operator combining operands (typically "and" or "or").

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

The list of filter conditions.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter/op.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/op.html new file mode 100644 index 0000000..e2f359b --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/op.html @@ -0,0 +1,132 @@ + + + + + op + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

op

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filter/operands.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/operands.html new file mode 100644 index 0000000..eca8680 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filter/operands.html @@ -0,0 +1,132 @@ + + + + + operands + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

operands

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filters/-article-search-filters.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/-article-search-filters.html new file mode 100644 index 0000000..2e3b994 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/-article-search-filters.html @@ -0,0 +1,132 @@ + + + + + ArticleSearchFilters + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilters

+
+
constructor(widgetSearch: ArticleSearchFilter? = null, searchBarSearch: ArticleSearchFilter? = null)
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filters/index.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/index.html new file mode 100644 index 0000000..ea909e3 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/index.html @@ -0,0 +1,190 @@ + + + + + ArticleSearchFilters + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

ArticleSearchFilters

+
@Serializable
data class ArticleSearchFilters(val widgetSearch: ArticleSearchFilter? = null, val searchBarSearch: ArticleSearchFilter? = null)

Container for article search filters for different surfaces. Used by DevRev.setArticleSearchFilters method.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(widgetSearch: ArticleSearchFilter? = null, searchBarSearch: ArticleSearchFilter? = null)
+
+
+
+
+
+
+
+

Properties

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Filter for CMDK/search bar results.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Filter for PLuG Widget search results.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filters/search-bar-search.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/search-bar-search.html new file mode 100644 index 0000000..39ff55b --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/search-bar-search.html @@ -0,0 +1,132 @@ + + + + + searchBarSearch + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

searchBarSearch

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-article-search-filters/widget-search.html b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/widget-search.html new file mode 100644 index 0000000..7194068 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-article-search-filters/widget-search.html @@ -0,0 +1,132 @@ + + + + + widgetSearch + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

widgetSearch

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/-builder.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/-builder.html new file mode 100644 index 0000000..d1b560a --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/-builder.html @@ -0,0 +1,132 @@ + + + + + Builder + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Builder

+
+
constructor(base: FeatureConfiguration = default)

Parameters

base

The base configuration to start from. Defaults to FeatureConfiguration.default.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/always-use-remote-config.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/always-use-remote-config.html new file mode 100644 index 0000000..cba3fc1 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/always-use-remote-config.html @@ -0,0 +1,132 @@ + + + + + alwaysUseRemoteConfig + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

alwaysUseRemoteConfig

+
+

Controls whether the SDK fetches remote configuration on every foreground resume. Initialization-only: cannot be changed after SDK configuration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/article-search-filters.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/article-search-filters.html new file mode 100644 index 0000000..c59d6c9 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/article-search-filters.html @@ -0,0 +1,132 @@ + + + + + articleSearchFilters + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

articleSearchFilters

+
+

Sets DQL filters for article search in Widget and/or CMDK surfaces. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/auto-start-recording.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/auto-start-recording.html new file mode 100644 index 0000000..6a5eec5 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/auto-start-recording.html @@ -0,0 +1,132 @@ + + + + + autoStartRecording + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

autoStartRecording

+
+

Automatically starts session recording after SDK configuration. Initialization-only: cannot be changed after SDK configuration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/build.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/build.html new file mode 100644 index 0000000..78739ab --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/build.html @@ -0,0 +1,132 @@ + + + + + build + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

build

+
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-frame-capture.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-frame-capture.html new file mode 100644 index 0000000..22301df --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-frame-capture.html @@ -0,0 +1,132 @@ + + + + + enableFrameCapture + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

enableFrameCapture

+
+

Enables or disables frame capture for session replay. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-support-chat-streaming.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-support-chat-streaming.html new file mode 100644 index 0000000..5a97cbc --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/enable-support-chat-streaming.html @@ -0,0 +1,132 @@ + + + + + enableSupportChatStreaming + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

enableSupportChatStreaming

+
+

Enables real-time AI agent response streaming in PLuG conversations. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/index.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/index.html new file mode 100644 index 0000000..1bd8ba8 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/index.html @@ -0,0 +1,280 @@ + + + + + Builder + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

Builder

+
class Builder(base: FeatureConfiguration = default)

Builder for creating FeatureConfiguration instances.

Useful for Java and hybrid callers (Flutter, React Native, Cordova) who need to set individual fields without specifying all positional constructor parameters.

Parameters

base

The base configuration to start from. Defaults to FeatureConfiguration.default.

+
+
+
+
+
+

Constructors

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+
constructor(base: FeatureConfiguration = default)
+
+
+
+
+
+
+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Controls whether the SDK fetches remote configuration on every foreground resume. Initialization-only: cannot be changed after SDK configuration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets DQL filters for article search in Widget and/or CMDK surfaces. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Automatically starts session recording after SDK configuration. Initialization-only: cannot be changed after SDK configuration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+ +
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables or disables frame capture for session replay. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Enables real-time AI agent response streaming in PLuG conversations. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Opens SDK screens as a bottom sheet instead of a separate activity. Initialization-only: cannot be changed after SDK configuration.

+
+
+
+
+ +
+
+
+ + +
Link copied to clipboard
+
+
+
+

Sets the support widget theme customization. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+
+
+
+
+
+
+
+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/prefers-dialog-mode.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/prefers-dialog-mode.html new file mode 100644 index 0000000..91e670d --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/prefers-dialog-mode.html @@ -0,0 +1,132 @@ + + + + + prefersDialogMode + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

prefersDialogMode

+
+

Opens SDK screens as a bottom sheet instead of a separate activity. Initialization-only: cannot be changed after SDK configuration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/support-widget-theme.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/support-widget-theme.html new file mode 100644 index 0000000..7bc4129 --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-builder/support-widget-theme.html @@ -0,0 +1,132 @@ + + + + + supportWidgetTheme + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

supportWidgetTheme

+
+

Sets the support widget theme customization. Can be updated at runtime via DevRev.updateFeatureConfiguration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/builder.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/builder.html new file mode 100644 index 0000000..cd101ad --- /dev/null +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/builder.html @@ -0,0 +1,132 @@ + + + + + builder + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+
+ +
+

builder

+
+

Creates a new Builder with default values.


Creates a new Builder initialized from an existing FeatureConfiguration. Useful for modifying a subset of fields from a known configuration.

+
+ +
+
+
+ + \ No newline at end of file diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/index.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/index.html index a6e3fa4..26943ee 100644 --- a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/index.html +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-companion/index.html @@ -132,6 +132,25 @@

Properties

+
+

Functions

+
+
+
+
+ + +
Link copied to clipboard
+
+
+
+

Creates a new Builder with default values.

Creates a new Builder initialized from an existing FeatureConfiguration. Useful for modifying a subset of fields from a known configuration.

+
+
+
+
+
+
diff --git a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-feature-configuration.html b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-feature-configuration.html index 8ec4e7f..bf955d2 100644 --- a/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-feature-configuration.html +++ b/docs/html/core/ai.devrev.sdk.model/-feature-configuration/-feature-configuration.html @@ -104,12 +104,12 @@
-
+

FeatureConfiguration

-
constructor(enableFrameCapture: Boolean = true, autoStartRecording: Boolean = true, prefersDialogMode: Boolean = false, alwaysUseRemoteConfig: Boolean = true, supportWidgetTheme: SupportWidgetTheme? = null)
+
constructor(enableFrameCapture: Boolean = true, autoStartRecording: Boolean = true, prefersDialogMode: Boolean = false, alwaysUseRemoteConfig: Boolean = true, supportWidgetTheme: SupportWidgetTheme? = null, enableSupportChatStreaming: Boolean = false, supportWidgetArticleSearchFilters: ArticleSearchFilters? = null)