Skip to content

Releases: sendbird/sendbird-chat-sdk-android

4.28.0

24 Jul 06:59
f082d4b
Compare
Choose a tag to compare

Features

  • Added support for managing context objects for AI Agent in GroupChannel

    • GroupChannel.updateContext(aiAgentId: String, contextMap: Map<String, String>, handler: AIAgentContextHandler?)
    • GroupChannel.patchContext(aiAgentId: String, contextMap: Map<String, String>, handler: AIAgentContextHandler?)
    • GroupChannel.getContextObject(aiAgentId: String, handler: AIAgentContextHandler?)
  • Added AI Agent group channel query APIs to SendbirdChat.AIAgent

    • createMyGroupChannelListQuery()
    • getMyGroupChannelChangeLogsByTimestamp()
    • getMyGroupChannelChangeLogsByToken()
    • getUnreadMessageCount()

Improvements

  • Improved SendbirdChat.init() to handle multiple synchronous calls more reliably

4.27.3

27 Jun 02:54
ca8dc55
Compare
Choose a tag to compare

Improvements

  • Fixed an issue where GroupChannelCollection.loadMore() callback was not called in certain cases due to inaccurate filtering logic with GroupChannelListQuery.

4.27.2

24 Jun 06:56
1543754
Compare
Choose a tag to compare

Features

  • Added knownActiveChannelUrl: String to MessengerSettingsParams for AI Agent
  • Added new GroupChannelHandler events:
    • Added GroupChannelHandler.onUserMarkedRead(channel: GroupChannel, userIds: List<String>) and GroupChannelHandler.onUserMarkedUnread(channel: GroupChannel, userIds: List<String>).
    • Added EVENT_USER_MARKED_READ and EVENT_USER_MARKED_UNREAD event sources to CollectionEventSource.
    • Added OnUserMarkedRead(userIds: List<String>) and OnUserMarkedUnread(userIds: List<String>) to EventDetail.
    • Deprecated GroupChannelHandler.onReadStatusUpdated(channel: GroupChannel).

Improvements

  • Fixed an issue where GroupChannelCollection.loadMore() did not fetch all available channels in certain cases.

4.27.1

28 May 07:58
a8afecf
Compare
Choose a tag to compare

Improvements

  • Fixed an issue where some channels were not being received when fetching changes to channels.

4.27.0

26 May 03:02
383cf75
Compare
Choose a tag to compare

Features

  • AI Agent/Desk Channel Filtering

    • Added AIAgentChannelFilter and DeskChannelFilter enums to support filtering of AI Agent and Desk channels in GroupChannel queries (INCLUDE/EXCLUDE options).
    • Added aiAgentChannelFilter and deskChannelFilter properties to GroupChannelListQueryParams, GroupChannelListQuery, and GroupChannelChangeLogsParams.
    • Internal APIs and query logic were updated to consistently pass and apply these filters.
  • New Channel Properties

    • Added isAIAgent: Boolean and isDesk: Boolean properties to GroupChannel to indicate whether a channel is an AI Agent or Desk channel.

Example

// Example: Filtering AI Agent/Desk channels
val params = GroupChannelListQueryParams().apply {
    aiAgentChannelFilter = AIAgentChannelFilter.EXCLUDE
    deskChannelFilter = DeskChannelFilter.EXCLUDE
}
val query = SendbirdChat.createGroupChannelListQuery(params)

// Example: Using new properties on GroupChannel
if (channel.isAIAgent) {
    // Handle AI Agent channel
}
if (channel.isDesk) {
    // Handle Desk channel
}

4.26.0

17 May 14:41
1b5bc44
Compare
Choose a tag to compare

Feature

  • Added markAsUnread(message: BaseMessage) to GroupChannel. This new feature changes the read status of messages in the channel to unread, starting from the specified message.
groupChannel.markAsUnread(message, null)

SendbirdChat.addChannelHandler(
    UNIQUE_CHANNEL_HANDLER_ID,
    object : GroupChannelHandler() {
        override fun onMessageReceived(channel: BaseChannel, message: BaseMessage) {}

        override fun onChannelChanged(channel: BaseChannel) {
            // broadcast when the channel's read status changes
        }

        override fun onReadStatusUpdated(channel: GroupChannel) {
            // broadcast when another member's read status in the channel changes
        }
    }
)

SendbirdChat.addUserEventHandler(
    UNIQUE_USER_EVENT_HANDLER_ID,
    object : UserEventHandler() {
        override fun onFriendsDiscovered(users: List<User>) {
        }

        override fun onTotalUnreadMessageCountChanged(unreadMessageCount: UnreadMessageCount) {
            // broadcast when the channel's total unread message count changes
        }
    }
)

AI Agent support is now available natively in the Chat SDK 🎉

You can now enhance your chat with smart AI-driven interactions without separate integration.
Includes conversation list, message templates, CSAT, agent handoff, and more — fully embedded in the SDK.

  • GroupChannel

    • Added submitCSAT(params: CSATSubmitParams, handler: SubmitCSATHandler?): Submit a CSAT (Customer Satisfaction) rating for a conversation.
    • Added markConversationAsHandoff(handler: MarkConversationAsHandoffHandler?): Mark a conversation as handed off to a human agent.
  • SendbirdChat.AIAgent

    • Added requestMessengerSettings(params: MessengerSettingsParams, handler: MessengerSettingsHandler?): Fetch settings such as startup options and UI preferences for the AI agent.
    • Added createConversationListQuery(params: ConversationListQueryParams): ConversationListQuery: Create a query to retrieve the user's AI agent conversation list.
    • Added getMessageTemplateList(params: AIAgentMessageTemplateListParams, handler: AIAgentMessageTemplatesResultHandler?): Fetch a list of available AI message templates for UI rendering.
  • Etc

    • Added AI_AGENT enum value in SendbirdProduct for analytics.
    • Added custom-api-host field in InitParams to allow using a custom API host endpoint.

Improvements

  • FileMessage
    • Now supports sending both file and message simultaneously.
FileMessageCreateParams().apply {
    message = "description of file"
}

4.25.0

09 May 07:18
ef9b4a5
Compare
Choose a tag to compare

Improvements

  • The Chat SDK no longer includes Conscrypt by default. If your app targets Android 9 (Pie, API level 28) or lower and you want to enable TLS 1.3, you need to manually add the Conscrypt dependency as shown below. Android 10 and above natively support TLS 1.3, so this step is only necessary for older OS versions. Even if you don’t add the Conscrypt dependency, the SDK will still work using TLS 1.2 without any functional issues. Once the dependency is added, the SDK will automatically detect and use Conscrypt—no additional code is needed.
dependencies {
    implementation("org.conscrypt:conscrypt-android:2.5.2")
}

4.24.2

24 Apr 11:19
598fa55
Compare
Choose a tag to compare

Improvements

  • Fixed a bug where calling GroupChannel.markAsRead() too frequently within a short latency period caused ackTimeout error.

4.24.1

27 Mar 03:53
fd97e89
Compare
Choose a tag to compare

Improvements

Fixed a bug that parts of the local cache data were reset after calling connect() or authenticate(). This fix improves local cache performance and messages loading.

4.24.0

28 Feb 02:58
4273530
Compare
Choose a tag to compare

Features

  • Added GroupChannel.messageDeletionTimestamp representing the message deletion timestamp from the message archive.

Improvements

  • Fixed a duplicated module namespace warning.
  • Added AuthTokenType
  • Added authTokenType parameter to authenticate() (Default Value: AuthTokenType.SESSION_TOKEN)
// using AccessToken
SendbirdChat.authenticate(userId: USER_ID, authToken: ACCESS_TOKEN, authTokenType: AuthTokenType.ACCESS_TOKEN)

// using SessionToken
SendbirdChat.authenticate(userId: USER_ID, authToken: SESSION_TOKEN)
SendbirdChat.authenticate(userId: USER_ID, authToken: SESSION_TOKEN, authTokenType: AuthTokenType.SESSION_TOKEN)