diff --git a/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/network/WebSocketManager.kt b/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/network/WebSocketManager.kt index 331a0f7..5e21a19 100644 --- a/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/network/WebSocketManager.kt +++ b/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/network/WebSocketManager.kt @@ -13,6 +13,7 @@ import com.amazon.connect.chat.sdk.model.Event import com.amazon.connect.chat.sdk.model.Message import com.amazon.connect.chat.sdk.model.MessageDirection import com.amazon.connect.chat.sdk.model.MessageMetadata +import com.amazon.connect.chat.sdk.model.MessageMetadataProtocol import com.amazon.connect.chat.sdk.model.MessageStatus import com.amazon.connect.chat.sdk.model.TranscriptItem import com.amazon.connect.chat.sdk.model.WebSocketMessageType @@ -421,7 +422,9 @@ class WebSocketManagerImpl @Inject constructor( timeStamp = time, id = messageId, displayName = displayName, - serializedContent = rawData + serializedContent = rawData, + metadata = if (innerJson.has("MessageMetadata")) + (handleMetadata(innerJson, rawData) as? MessageMetadataProtocol) else null ) return message } diff --git a/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/utils/TranscriptItemUtils.kt b/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/utils/TranscriptItemUtils.kt index 298d574..a25279a 100644 --- a/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/utils/TranscriptItemUtils.kt +++ b/chat-sdk/src/main/java/com/amazon/connect/chat/sdk/utils/TranscriptItemUtils.kt @@ -76,6 +76,21 @@ object TranscriptItemUtils { ) } ?: emptyList() + var messageMetadataDict: Map? = null + if (item.messageMetadata != null) { + val receiptsArray = item.messageMetadata?.receipts?.map { receipt -> + mapOf( + "ReadTimestamp" to (receipt.readTimestamp ?: ""), + "DeliveredTimestamp" to (receipt.deliveredTimestamp ?: ""), + "RecipientParticipantId" to (receipt.recipientParticipantId ?: "") + ) + } ?: emptyList() + messageMetadataDict = mapOf( + "MessageId" to item.messageMetadata.messageId, + "Receipts" to receiptsArray + ) + } + val messageContentDict = mapOf( "Id" to (item.id ?: ""), "ParticipantRole" to participantRole, @@ -85,7 +100,8 @@ object TranscriptItemUtils { "Type" to item.type, "DisplayName" to (item.displayName ?: ""), "Attachments" to attachmentsArray, - "isFromPastSession" to true // Mark all these items as coming from a past session + "isFromPastSession" to true, // Mark all these items as coming from a past session + "MessageMetadata" to messageMetadataDict ) val messageContent = mapOf(