diff --git a/sdk/flutter/real-time-listeners.mdx b/sdk/flutter/real-time-listeners.mdx index beb27a03b..099c041ea 100644 --- a/sdk/flutter/real-time-listeners.mdx +++ b/sdk/flutter/real-time-listeners.mdx @@ -10,6 +10,7 @@ CometChat provides 4 listeners viz. 1. [UserListener](#user-listener) 2. [GroupListener](#group-listener) 3. [MessageListener](#message-listener) +4. [AIAssistantListener](#ai-assistant-listener) ## User Listener @@ -157,6 +158,9 @@ The `MessageListener` class provides you with live events related to messages. B | `onTransientMessageReceived(TransientMessage transientMessage)` | This event is triggered when a Transient Message is received. | | `onMessageReactionAdded(ReactionEvent reactionEvent)` | This event is triggered when a reaction is added to a message in a user/group conversation. | | `onMessageReactionRemoved(ReactionEvent reactionEvent)` | This event is triggered when a reaction is remove from a message in a user/group conversation. | +| `onAIAssistantMessageReceived(AIAssistantMessage message)` | This event is triggered when a persisted AI Assistant message is received after a run completes. | +| `onAIToolResultReceived(AIToolResultMessage message)` | This event is triggered when an AI tool result message is received. | +| `onAIToolArgumentsReceived(AIToolArgumentMessage message)` | This event is triggered when AI tool argument messages are received. | To add the `MessageListener`, you need to use the `addMessageListener()` method provided by the `CometChat` class. @@ -244,6 +248,21 @@ class Class_Name with MessageListener { } + @override + void onAIAssistantMessageReceived(AIAssistantMessage aiAssistantMessage) { + + } + + @override + void onAIToolResultReceived(AIToolResultMessage aiToolResultMessage) { + + } + + @override + void onAIToolArgumentsReceived(AIToolArgumentMessage aiToolArgumentMessage) { + + } + } ``` @@ -254,3 +273,60 @@ class Class_Name with MessageListener { where `UNIQUE_LISTENER_ID` is the unique identifier for the listener. Please make sure that no two listeners are added with the same listener id as this could lead to unexpected behavior resulting in loss of events. Once the activity/fragment where the `MessageListener` is declared is not in use, you need to remove the listener using the `removeMessageListener()` method which takes the id of the listener to be removed as the parameter. We suggest you call this method in the `onPause()` method of the activity/fragment. + +## AI Assistant Listener + +The `AIAssistantListener` class provides you with real-time streaming events from AI Agent runs. These events are emitted during a run lifecycle and include tool calls, card generation, and text message streaming. For a complete overview of the event lifecycle, see [AI Agents](/sdk/flutter/ai-agents). + +| Method | Information | +| --- | --- | +| `onAIAssistantEventReceived(AIAssistantBaseEvent event)` | This event is triggered for every AI assistant streaming event during a run (run start/finish, tool calls, card generation, text streaming). | + +To add the `AIAssistantListener`, use the `addAIAssistantListener()` method provided by the `CometChat` class. + + + +```dart +class Class_Name with AIAssistantListener { + CometChat.addAIAssistantListener("UNIQUE_LISTENER_ID", this); + + @override + void onAIAssistantEventReceived(AIAssistantBaseEvent event) { + // Handle different event types + if (event is AIAssistantRunStartedEvent) { + debugPrint("Run started: ${event.id}"); + } else if (event is AIAssistantToolStartedEvent) { + debugPrint("Tool call started"); + } else if (event is AIAssistantCardStartedEvent) { + debugPrint("Card generation started: ${event.cardId}"); + } else if (event is AIAssistantCardReceivedEvent) { + final cardPayload = event.getCard(); + debugPrint("Card received: ${event.cardId}"); + } else if (event is AIAssistantCardEndedEvent) { + debugPrint("Card ended: ${event.cardId}"); + } else if (event is AIAssistantContentReceivedEvent) { + debugPrint("Streaming content delta: ${event.delta}"); + } else if (event is AIAssistantMessageEndedEvent) { + debugPrint("Message streaming ended"); + } else if (event is AIAssistantRunFinishedEvent) { + debugPrint("Run finished: ${event.id}"); + } + } +} +``` + + + +To remove the listener: + + + +```dart +CometChat.removeAIAssistantListener("UNIQUE_LISTENER_ID"); +``` + + + + +The `AIAssistantListener` delivers real-time streaming events. After a run completes, persisted agentic messages (`AIAssistantMessage`, `AIToolResultMessage`, `AIToolArgumentMessage`) are delivered via the `MessageListener` callbacks listed above. + diff --git a/ui-kit/flutter/call-features.mdx b/ui-kit/flutter/call-features.mdx index 9cdb0685b..48a1b4a0b 100644 --- a/ui-kit/flutter/call-features.mdx +++ b/ui-kit/flutter/call-features.mdx @@ -11,28 +11,12 @@ CometChat's Calls feature allows you to integrate one-on-one and group audio/vid ### Step 1: Add Dependency -Since V6 is hosted on Cloudsmith, install via CLI: +Add the dependency to your `pubspec.yaml`: - - -```bash -dart pub add cometchat_chat_uikit:6.0.0 --hosted-url https://dart.cloudsmith.io/cometchat/cometchat/ -``` - - - -Or add manually to `pubspec.yaml`: - - - -```yaml +```yaml pubspec.yaml dependencies: - cometchat_chat_uikit: - hosted: https://dart.cloudsmith.io/cometchat/cometchat/ - version: 6.0.0 + cometchat_chat_uikit: ^6.0.4 ``` - - *** diff --git a/ui-kit/flutter/getting-started.mdx b/ui-kit/flutter/getting-started.mdx index d25242440..96cd21506 100644 --- a/ui-kit/flutter/getting-started.mdx +++ b/ui-kit/flutter/getting-started.mdx @@ -41,23 +41,9 @@ To get started, create a new flutter application project. ### **Step 2: Add Dependency** -**1. Install via CLI** - -Since V6 is hosted on Cloudsmith (not pub.dev), run this command instead of the standard `flutter pub add`: - -```bash -dart pub add cometchat_chat_uikit:6.0.0 --hosted-url https://dart.cloudsmith.io/cometchat/cometchat/ -``` - -**2. Update Pubspec** - -Or add it manually to your `pubspec.yaml`: - ```yaml pubspec.yaml dependencies: - cometchat_chat_uikit: - hosted: https://dart.cloudsmith.io/cometchat/cometchat/ - version: 6.0.0 + cometchat_chat_uikit: ^6.0.4 ``` Final `pubspec.yaml` @@ -77,9 +63,7 @@ dependencies: flutter: sdk: flutter - cometchat_chat_uikit: - hosted: https://dart.cloudsmith.io/cometchat/cometchat/ - version: 6.0.0 + cometchat_chat_uikit: ^6.0.4 cupertino_icons: ^1.0.8 diff --git a/ui-kit/flutter/methods.mdx b/ui-kit/flutter/methods.mdx index 9b38f9fb5..c5ff2ef7d 100644 --- a/ui-kit/flutter/methods.mdx +++ b/ui-kit/flutter/methods.mdx @@ -193,3 +193,59 @@ UIKitSettings uiKitSettings = (UIKitSettingsBuilder() ..dateTimeFormatterCallback = DateFormatter() ).build(); ``` + +## AI Assistant Events + +The UI Kit provides a UI-level event system for AI assistant interactions via `CometChatAIAssistantEvents`. These events mirror the SDK-level `AIAssistantListener` but are scoped to the UI layer for component-level reactions. + +### Add Listener + +```dart +CometChatAIAssistantEvents.addAIAssistantListener( + "unique_listener_id", + myListener, +); +``` + +### Remove Listener + +```dart +CometChatAIAssistantEvents.removeAIAssistantListener("unique_listener_id"); +``` + +### Listener Interface + +Implement `CometChatAIAssistantEventsListener` to receive events: + +```dart +class MyListener with CometChatAIAssistantEventsListener { + @override + void onAIAssistantEventReceived(AIAssistantBaseEvent event) { + // Handle AI assistant streaming events at the UI layer + } +} +``` + + +The UIKit's `CometChatMessageList` automatically handles AI events internally. Use `CometChatAIAssistantEvents` only if you need additional custom UI reactions to AI streaming events. + + +## UI Events — Card Actions + +When a user interacts with a card button inside an AI agent response or a standalone card message, the UIKit emits a `ccCardActionClicked` event: + +```dart +CometChatUIEvents.addUiListener("card_listener", myUIListener); + +class MyUIListener with CometChatUIEventListener { + @override + void ccCardActionClicked(BaseMessage message, dynamic action) { + if (action is CometChatCardActionEvent) { + debugPrint("Element ID: ${action.elementId}"); + debugPrint("Action: ${action.action}"); + debugPrint("Card JSON: ${action.cardJson}"); + // Handle navigation, API calls, etc. + } + } +} +``` diff --git a/ui-kit/flutter/upgrading-from-v5.mdx b/ui-kit/flutter/upgrading-from-v5.mdx index 9acd6fbc7..78fd0259a 100644 --- a/ui-kit/flutter/upgrading-from-v5.mdx +++ b/ui-kit/flutter/upgrading-from-v5.mdx @@ -63,19 +63,9 @@ MessageTemplateUtils.getAllMessageTemplates(); ### 4. Update Dependencies -**Install V6 via CLI (hosted on Cloudsmith):** - -```bash -dart pub add cometchat_chat_uikit:6.0.0 --hosted-url https://dart.cloudsmith.io/cometchat/cometchat/ -``` - -Or add manually to `pubspec.yaml`: - -```yaml +```yaml pubspec.yaml dependencies: - cometchat_chat_uikit: - hosted: https://dart.cloudsmith.io/cometchat/cometchat/ - version: 6.0.0 + cometchat_chat_uikit: ^6.0.4 ``` ### 5. State Management Migration (Advanced)