TP-63765 | Clickstream events for UST end to end funnel (#10818)

This commit is contained in:
Varun Jain
2024-05-14 14:37:18 +05:30
committed by GitHub
parent 49e6f162b6
commit bb453f97eb
8 changed files with 161 additions and 23 deletions

View File

@@ -0,0 +1,13 @@
/*
*
* * Copyright © 2024 by Navi Technologies Limited
* * All rights reserved. Strictly confidential
*
*/
package com.navi.chat.interfaces
interface ChatTopBackButtonClickListener {
fun onTopBackButtonClicked(topBackPressed: Boolean)
}

View File

@@ -21,6 +21,7 @@ import com.navi.chat.databinding.ActivityNaviChatBinding
import com.navi.chat.db.utils.getFileName
import com.navi.chat.interfaces.AttachmentOptionClickListener
import com.navi.chat.interfaces.ChatConversationIdListenerInterface
import com.navi.chat.interfaces.ChatTopBackButtonClickListener
import com.navi.chat.models.NaviChatSystemLocalData
import com.navi.chat.ui.fragments.ChatExitBottomSheet
import com.navi.chat.ui.fragments.NaviChatFragment
@@ -34,20 +35,28 @@ import com.navi.chat.utils.GALLERY_ITEM
import com.navi.chat.utils.NAVI_CHAT_SYSTEM_LOCAL_DATA
import com.navi.chat.utils.NaviChatAnalytics
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHATSCREEN_BACK_BUTTON_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
import com.navi.chat.utils.SCREEN_NAME
import com.navi.chat.utils.URI_LIST
import com.navi.chat.viewmodels.AttachmentPickerViewModel
import com.navi.chat.viewmodels.NaviChatSharedViewModel
import com.navi.common.model.ModuleNameV2
import com.navi.common.ui.activity.BaseActivity
import com.navi.common.utils.getSessionId
class NaviChatActivity :
BaseActivity(), AttachmentOptionClickListener, ChatConversationIdListenerInterface {
BaseActivity(),
AttachmentOptionClickListener,
ChatConversationIdListenerInterface,
ChatTopBackButtonClickListener {
private lateinit var binding: ActivityNaviChatBinding
private val chatScreenTag: String = NaviChatFragment.TAG
private var chatFragment: NaviChatFragment? = null
private var conversationId: String? = null
private var isChatExitBottomSheetShown: Boolean = false
private var productConfigId: String? = null
private var deviceBackPressed: Boolean = true
private val attachmentPickerViewModel by lazy {
ViewModelProvider(this)[AttachmentPickerViewModel::class.java]
@@ -108,15 +117,25 @@ class NaviChatActivity :
intent.extras?.getString(CONVERSATION_ID_PARAM)?.let {
bundle.putString(CONVERSATION_ID_PARAM, it)
}
intent.extras?.getString(SCREEN_NAME)?.let {
bundle.putString(SCREEN_NAME, it)
productConfigId = it
}
arguments = bundle
}
override fun onBackPressed() {
if (conversationId == null) conversationId = intent.extras?.getString(CONVERSATION_ID_PARAM)
crmEventTracker.sendEvent(
CHATSCREEN_BACK_BUTTON_CLICK,
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
)
if (deviceBackPressed) {
crmEventTracker.sendEvent(
CHATSCREEN_BACK_BUTTON_CLICK,
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
if (
naviChatSharedViewModel.chatExitOptionList.value.isNotNull() &&
naviChatSharedViewModel.isChatExitBottomSheetThresholdReached() &&
@@ -189,4 +208,8 @@ class NaviChatActivity :
override fun onConversationIdReceived(conversationId: String) {
conversationId.let { this.conversationId = it }
}
override fun onTopBackButtonClicked(topBackPressed: Boolean) {
deviceBackPressed = topBackPressed.not()
}
}

View File

@@ -56,12 +56,15 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.CTA_UNDER_FAQ_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.EMAIL_US_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_CLICK_FROM_SEARCH_SCREEN
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_PAGE_LAND
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_QUESTION_TEXT
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_TAB_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.FAQ_TAB_NAME
import com.navi.chat.utils.NaviChatAnalytics.Companion.SEND_E_MAIL
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
import com.navi.chat.utils.NaviChatAnalytics.Companion.TIMESTAMP
import com.navi.chat.utils.RECENT_SEARCHES_LIST_SIZE
import com.navi.chat.utils.SCREEN_NAME
import com.navi.chat.viewmodels.SupportScreenSharedViewModel
import com.navi.chat.viewmodels.SupportScreenViewModel
import com.navi.common.listeners.HeaderInteractionListener
@@ -71,6 +74,7 @@ import com.navi.common.model.ModuleNameV2
import com.navi.common.network.models.GenericErrorResponse
import com.navi.common.ui.activity.BaseActivity
import com.navi.common.ui.fragment.NewCommonBottomSheet
import com.navi.common.utils.getSessionId
import com.navi.design.R as DesignR
import com.navi.design.font.FontWeightEnum
import com.navi.design.utils.CornerRadius
@@ -127,6 +131,13 @@ class SupportScreenActivity :
dialogOnBackPressed = { onBackPressed() }
)
callSupportScreenApi()
crmEventTracker.sendEvent(
FAQ_PAGE_LAND,
hashMapOf(
SCREEN_NAME to sourceScreenName.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
private fun initListeners() {
@@ -139,6 +150,8 @@ class SupportScreenActivity :
crmEventTracker.sendEvent(
FAQ_TAB_CLICK,
hashMapOf(
SCREEN_NAME to sourceScreenName.orEmpty(),
SESSION_ID to getSessionId().orEmpty(),
FAQ_TAB_NAME to
supportScreenSharedViewModel.getTabName(position).orEmpty()
)
@@ -200,6 +213,8 @@ class SupportScreenActivity :
binding.footerCta.isVisible = true
binding.footerCta.setOnClickListener {
sourceScreenName = intent?.extras?.getString(KEY_SCREEN_NAME)
val bundle = Bundle()
bundle.putString(SCREEN_NAME, sourceScreenName)
NaviTrackEvent.trackEventOnClickStream(
CHAT_INITIATED,
mapOf(
@@ -208,7 +223,7 @@ class SupportScreenActivity :
Pair("customer_id", userExternalId.toString()),
)
)
moveToNextScreen(actionData)
moveToNextScreen(actionData, bundle)
}
}
?: run {
@@ -338,8 +353,9 @@ class SupportScreenActivity :
crmEventTracker.sendEvent(
FAQ_CLICK,
hashMapOf(
FAQ_QUESTION_TEXT to question,
CONFIG_ID to sourceScreenName.orEmpty(),
SCREEN_NAME to sourceScreenName.orEmpty(),
SESSION_ID to getSessionId().orEmpty(),
FAQ_QUESTION_TEXT to question
)
)
val recentSearches =
@@ -362,6 +378,8 @@ class SupportScreenActivity :
crmEventTracker.sendEvent(
FAQ_CLICK_FROM_SEARCH_SCREEN,
hashMapOf(
SCREEN_NAME to sourceScreenName.orEmpty(),
SESSION_ID to getSessionId().orEmpty(),
FAQ_QUESTION_TEXT to question,
CONFIG_ID to sourceScreenName.orEmpty(),
)
@@ -426,7 +444,7 @@ class SupportScreenActivity :
} catch (e: Exception) {}
}
private fun moveToNextScreen(actionData: ActionData) {
private fun moveToNextScreen(actionData: ActionData, bundle: Bundle? = null) {
val parameters = actionData.parameters?.toMutableList()
val metaData: HashMap<String?, String?> = HashMap()
metaData["order_id"] = intent.extras?.getString(ORDER_ID)
@@ -438,7 +456,7 @@ class SupportScreenActivity :
?.navigateTo(
this@SupportScreenActivity,
ctaData = CtaData(url = actionData.url, parameters = parameters),
bundle = null,
bundle = bundle,
finish = false,
needsResult = true
)

View File

@@ -46,15 +46,19 @@ import com.navi.chat.utils.CSAT_TOP_MARGIN
import com.navi.chat.utils.CSAT_WORD_LIMIT
import com.navi.chat.utils.NaviChatAnalytics
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_SCREEN_CSAT_APPEARS
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_BACK_BUTTON_CLICKED
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_TEXT
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_TEXT
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_TEXTBOX_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_RATING
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_STAR_SELECT
import com.navi.chat.utils.NaviChatAnalytics.Companion.CUSTOMER_ID
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
import com.navi.chat.utils.SCREEN_NAME
import com.navi.chat.viewmodels.NaviChatSharedViewModel
import com.navi.common.R as CommonR
import com.navi.common.utils.capitalize
import com.navi.common.utils.getSessionId
import com.navi.common.utils.log
import com.navi.design.utils.dpToPx
import com.navi.design.utils.underlinedText
@@ -100,6 +104,7 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
private val userExternalId =
PreferenceManager.getStringPreference(CommonPrefConstants.USER_EXTERNAL_ID)
private var conversationId: String? = null
private var productConfigId: String? = null
override fun onStart() {
super.onStart()
@@ -127,7 +132,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
initUI()
crmEventTracker.sendEvent(
CHAT_SCREEN_CSAT_APPEARS,
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
dialog?.setOnKeyListener { _, keyCode, event ->
if (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_UP) {
@@ -137,6 +146,20 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
naviChatSharedViewModel.setDismissBottomSheetData(true)
if (activity != null && activity is NaviChatActivity) {
(activity as NaviChatActivity?)?.onBackPressed()
val listOfMetaData = getMetaData()
val rating =
listOfMetaData.find {
it.questionId == naviChatCsatRatingWidget?.metaData()?.questionId
}
crmEventTracker.sendEvent(
CSAT_BACK_BUTTON_CLICKED,
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
CSAT_RATING to rating?.csatResponseValue?.firstOrNull().orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
}
true
@@ -374,7 +397,9 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
CSAT_STAR_SELECT,
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
CSAT_RATING to selectedRating.toString()
CSAT_RATING to selectedRating.toString(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
observeFragmentViewHeight()
@@ -411,6 +436,7 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
subQuestion.widgetData?.items?.let {
for (csatOptionData in it) {
csatOptionData.conversationId = conversationId
csatOptionData.screenName = productConfigId
}
CsatOptionAdapter(
listOfCsatOption = it as ArrayList<CsatOptionData>,
@@ -560,7 +586,9 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
CSAT_FEEDBACK_CHIP_TEXT to
options?.csatResponseValue?.firstOrNull().orEmpty(),
CSAT_FEEDBACK_TEXT to
feedback?.csatResponseValue?.firstOrNull().orEmpty()
feedback?.csatResponseValue?.firstOrNull().orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
@@ -581,6 +609,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
}
}
R.id.skipBtn -> {
val listOfMetaData = getMetaData()
val rating =
listOfMetaData.find {
it.questionId == naviChatCsatRatingWidget?.metaData()?.questionId
}
naviChatCsatRatingWidget?.widgetData?.actionData?.secondaryAction?.let {
secondaryBtn ->
secondaryBtn.metaData?.clickedData?.eventName?.let { eventName ->
@@ -588,7 +621,10 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
eventName,
hashMapOf(
CUSTOMER_ID to userExternalId.toString(),
CONVERSATION_ID to conversationId.orEmpty()
CONVERSATION_ID to conversationId.orEmpty(),
CSAT_RATING to rating?.csatResponseValue?.firstOrNull().orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
@@ -671,7 +707,11 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
else {
crmEventTracker.sendEvent(
CSAT_FEEDBACK_TEXTBOX_CLICK,
hashMapOf(CONVERSATION_ID to conversationId.orEmpty())
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
}
@@ -687,6 +727,10 @@ class NaviChatCsatFragment : BaseBottomSheet(), View.OnClickListener, CsatOption
conversationId?.let { this.conversationId = it }
}
fun setProductConfigId(productConfigId: String?) {
productConfigId?.let { this.productConfigId = it }
}
companion object {
const val TAG = "NaviChatCsatFragment"
private const val DEFAULT_STAR = 5

View File

@@ -69,6 +69,7 @@ import com.navi.chat.di.components.DaggerNaviChatComponent
import com.navi.chat.di.dependencies.NaviChatModuleDependencies
import com.navi.chat.di.modules.NaviChatModule
import com.navi.chat.interfaces.ChatConversationIdListenerInterface
import com.navi.chat.interfaces.ChatTopBackButtonClickListener
import com.navi.chat.models.ChatDataProviderModel
import com.navi.chat.models.FireStoreDataProviderModel
import com.navi.chat.models.NaviChatSystemLocalData
@@ -82,6 +83,7 @@ import com.navi.chat.utils.*
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_AGENT_OR_CUSTOMER_MESSAGE_TO_CHAT_ADAPTER
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_BOT_MESSAGE_TO_CHAT_ADAPTER
import com.navi.chat.utils.NaviChatAnalytics.Companion.ADDING_NEW_MESSAGE_TO_CHAT_ADAPTER
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHATSCREEN_TOP_BACK_BUTTON_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_DEEPLINK_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_MESSAGE
import com.navi.chat.utils.NaviChatAnalytics.Companion.CHAT_MESSAGE_WIDGET_WITH_RECEIPTS_NOT_NULL
@@ -92,6 +94,7 @@ import com.navi.chat.utils.NaviChatAnalytics.Companion.NETWORK_AVAILABLE_IN_CHAT
import com.navi.chat.utils.NaviChatAnalytics.Companion.NETWORK_UNAVAILABLE_IN_CHAT
import com.navi.chat.utils.NaviChatAnalytics.Companion.NEW_CHAT_TRIGGERED
import com.navi.chat.utils.NaviChatAnalytics.Companion.SEND_BUTTON_CLICK
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
import com.navi.chat.utils.NaviChatAnalytics.Companion.UPDATE_SERVER_MESSAGE_RECEIPTS
import com.navi.chat.utils.NaviChatAnalytics.Companion.WRITE_USER_MESSAGE_TO_FIRESTORE
import com.navi.chat.viewmodels.AttachmentPickerViewModel
@@ -102,6 +105,7 @@ import com.navi.common.constants.EMPTY
import com.navi.common.model.common.NetworkConnectivityNudgeData
import com.navi.common.ui.fragment.BaseFragment
import com.navi.common.utils.Constants
import com.navi.common.utils.getSessionId
import com.navi.common.utils.log
import com.navi.common.utils.observeNonNull
import com.navi.design.R as DesignR
@@ -183,7 +187,9 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
ViewModelProvider(requireActivity())[NaviChatSharedViewModel::class.java]
}
private var chatConversationIdListenerInterface: ChatConversationIdListenerInterface? = null
private var topBackButtonClickListener: ChatTopBackButtonClickListener? = null
private var latestMessageLocation: Int? = null
private var productConfigId: String? = null
override fun onCreateView(
inflater: LayoutInflater,
@@ -227,11 +233,13 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
override fun onAttach(context: Context) {
super.onAttach(context)
chatConversationIdListenerInterface = context as? ChatConversationIdListenerInterface
topBackButtonClickListener = context as? ChatTopBackButtonClickListener
}
private fun readArguments() {
naviChatSystemLocalData = arguments?.getParcelable(NAVI_CHAT_SYSTEM_LOCAL_DATA)
arguments?.getString(CONVERSATION_ID_PARAM)?.let { conversationId = it }
arguments?.getString(SCREEN_NAME)?.let { productConfigId = it }
}
private fun initUI() {
@@ -336,6 +344,25 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
viewLifecycleOwner.lifecycleScope.launch {
naviChatViewModel.chatHistoryMessages.observeNonNull(viewLifecycleOwner) { widgetData ->
if (widgetData.first == 0) {
if (widgetData.second.isNotEmpty()) {
crmEventTracker.sendEvent(
EXISTING_CHAT_TRIGGERED,
hashMapOf(
CONVERSATION_ID to conversationId.toString(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
} else {
crmEventTracker.sendEvent(
NEW_CHAT_TRIGGERED,
hashMapOf(
CONVERSATION_ID to conversationId.toString(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}
chatRVAdapter.setData(widgetData.second)
scrollChatToLatestMessageReceived()
if (shouldShowChatResolutionWidget) {
@@ -833,13 +860,6 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
private fun fetchChatData() {
fetchChatConversations(conversationId.orEmpty())
if (conversationId.isNullOrEmpty()) {
crmEventTracker.sendEvent(NEW_CHAT_TRIGGERED)
} else {
conversationId?.let {
crmEventTracker.sendEvent(EXISTING_CHAT_TRIGGERED, hashMapOf(CONVERSATION_ID to it))
}
}
}
private fun fetchChatConfig() {
@@ -1552,6 +1572,7 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
val naviChatCsatFragment =
NaviChatCsatFragment.getInstance(naviChatCsatRatingWidget)
naviChatCsatFragment.setConversationId(conversationId)
naviChatCsatFragment.setProductConfigId(productConfigId)
if (
activity != null &&
isAdded &&
@@ -1940,6 +1961,15 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
}
override fun onToolbarBackClicked() {
crmEventTracker.sendEvent(
CHATSCREEN_TOP_BACK_BUTTON_CLICK,
hashMapOf(
CONVERSATION_ID to conversationId.orEmpty(),
SCREEN_NAME to productConfigId.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
topBackButtonClickListener?.onTopBackButtonClicked(true)
activity?.onBackPressed()
}

View File

@@ -102,6 +102,7 @@ class NaviChatAnalytics private constructor() {
const val CSAT_RATING = "csat_rating"
const val CSAT_FEEDBACK_TEXT = "csat_feedback_text"
const val CSAT_FEEDBACK_CHIP_TEXT = "csat_feedback_chip_text"
const val CSAT_BACK_BUTTON_CLICKED = "csat_back_button_clicked"
const val FAQ_CTA_BOTTOM_SHEET_POP_UP = "faq_cta_bottom_sheet_pop_up"
const val FAQ_CTA_BOTTOM_SHEET_CONTINUE_CLICK = "faq_cta_bottom_sheet_continue_click"
const val FAQ_CTA_BOTTOM_SHEET_GO_BACK_CLICK = "faq_cta_bottom_sheet_go_back_click"
@@ -154,6 +155,9 @@ class NaviChatAnalytics private constructor() {
const val DATA = "data"
const val NAVI_CHAT_FETCH_CONVERSATION_ERROR = "navi_chat_fetch_conversations_error"
const val NAVI_CHAT_INIT_ERROR = "navi_chat_init_error"
const val FAQ_PAGE_LAND = "faq_page_land"
const val CHATSCREEN_TOP_BACK_BUTTON_CLICK = "chatscreen_top_back_button_click"
const val SESSION_ID = "session_id"
val naviChatAnalytics: NaviChatAnalytics by lazy { Holder.INSTANCE }
}

View File

@@ -13,6 +13,9 @@ import com.navi.chat.db.utils.crmEventTracker
import com.navi.chat.utils.CONVERSATION_ID
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_SELECT
import com.navi.chat.utils.NaviChatAnalytics.Companion.CSAT_FEEDBACK_CHIP_TEXT
import com.navi.chat.utils.NaviChatAnalytics.Companion.SESSION_ID
import com.navi.chat.utils.SCREEN_NAME
import com.navi.common.utils.getSessionId
import com.navi.naviwidgets.models.response.CsatOptionData
import com.navi.naviwidgets.models.response.NaviCsatOptionWidget
@@ -56,6 +59,8 @@ class CsatOptionVH(private val binding: CsatOptionLayoutBinding) :
hashMapOf(
CONVERSATION_ID to csatOptionData.conversationId.orEmpty(),
CSAT_FEEDBACK_CHIP_TEXT to title.text.toString(),
SCREEN_NAME to csatOptionData.screenName.orEmpty(),
SESSION_ID to getSessionId().orEmpty()
)
)
}

View File

@@ -69,5 +69,6 @@ data class NaviChatCsatOptionWidgetData(
data class CsatOptionData(
@SerializedName("title") @get:PropertyName("title") val title: String? = null,
var isSelected: Boolean = false,
var conversationId: String? = null
var conversationId: String? = null,
var screenName: String? = null
) : Serializable, Parcelable