diff --git a/src/webchat/store/messages/message-handler.ts b/src/webchat/store/messages/message-handler.ts index 4fee1498..b7f628a7 100644 --- a/src/webchat/store/messages/message-handler.ts +++ b/src/webchat/store/messages/message-handler.ts @@ -1,7 +1,7 @@ import { Store } from "redux"; import { IMessage } from "../../../common/interfaces/message"; import { ISendMessageOptions } from "./message-middleware"; -import { setBotAvatarOverrideUrl, setAgentAvatarOverrideUrl, setTyping } from "../ui/ui-reducer"; +import { setBotAvatarNameOverride, setBotAvatarOverrideUrl, setAgentAvatarOverrideUrl, setTyping } from "../ui/ui-reducer"; import { setCustomRatingCommentText, setCustomRatingTitle, @@ -34,7 +34,7 @@ export type ReceiveEventAction = ReturnType; export const createOutputHandler = (store: Store) => output => { // handle custom webchat actions if (output.data && output.data._webchat) { - const { agentAvatarOverrideUrl, botAvatarOverrideUrl } = output.data._webchat; + const { agentAvatarOverrideUrl, botAvatarOverrideUrl, botAvatarNameOverride } = output.data._webchat; if (agentAvatarOverrideUrl !== undefined) { store.dispatch(setAgentAvatarOverrideUrl(agentAvatarOverrideUrl)); @@ -43,6 +43,10 @@ export const createOutputHandler = (store: Store) => output => { if (botAvatarOverrideUrl !== undefined) { store.dispatch(setBotAvatarOverrideUrl(botAvatarOverrideUrl)); } + + if (botAvatarNameOverride !== undefined) { + store.dispatch(setBotAvatarNameOverride(botAvatarNameOverride)); + } } // handle custom plugin actions diff --git a/src/webchat/store/messages/message-middleware.ts b/src/webchat/store/messages/message-middleware.ts index 36013568..db6cba9b 100644 --- a/src/webchat/store/messages/message-middleware.ts +++ b/src/webchat/store/messages/message-middleware.ts @@ -83,6 +83,7 @@ export const getAvatarNameForMessage = (message: IMessage, state: StoreState) => case "bot": case "engagement": return ( + state.ui.botAvatarNameOverride || (state.config.settings.layout.useOtherAgentLogo && state.config.settings.layout.botAvatarName) || state.config.settings.layout.title || diff --git a/src/webchat/store/ui/ui-reducer.ts b/src/webchat/store/ui/ui-reducer.ts index cb9e88c1..ed608f31 100644 --- a/src/webchat/store/ui/ui-reducer.ts +++ b/src/webchat/store/ui/ui-reducer.ts @@ -11,6 +11,7 @@ export interface UIState { fullscreenMessage: IMessage | undefined; agentAvatarOverrideUrl?: string; botAvatarOverrideUrl?: string; + botAvatarNameOverride?: string; isPageVisible: boolean; showHomeScreen: boolean; showPrevConversations: boolean; @@ -106,6 +107,13 @@ export const setBotAvatarOverrideUrl = (url: string) => ({ }); type SetBotAvatarOverrideUrlAction = ReturnType; +const SET_BOT_AVATAR_NAME_OVERRIDE = "SET_BOT_AVATAR_NAME_OVERRIDE"; +export const setBotAvatarNameOverride = (name: string) => ({ + type: SET_BOT_AVATAR_NAME_OVERRIDE as "SET_BOT_AVATAR_NAME_OVERRIDE", + name, +}); +type SetBotAvatarNameOverrideAction = ReturnType; + const SET_PAGE_VISIBLE = "SET_PAGE_VISIBLE"; export const setPageVisible = (visible: boolean) => ({ type: SET_PAGE_VISIBLE as "SET_PAGE_VISIBLE", @@ -166,6 +174,7 @@ type UIAction = | SetFullscreenMessageAction | SetAgentAvatarOverrideUrlAction | SetBotAvatarOverrideUrlAction + | SetBotAvatarNameOverrideAction | SetPageVisibleAction | SetShowHomeScreenAction | SetShowPrevConversationsAction @@ -247,6 +256,13 @@ export const ui: Reducer = (state = getInitialState(), action }; } + case SET_BOT_AVATAR_NAME_OVERRIDE: { + return { + ...state, + botAvatarNameOverride: action.name, + }; + } + case SET_PAGE_VISIBLE: { return { ...state,