From 483b44772f1db2a8aa033224a11cb474d5bae0ac Mon Sep 17 00:00:00 2001 From: escapemanuele Date: Thu, 24 Oct 2024 17:36:23 +0200 Subject: [PATCH] To zendesk when user wants to contact --- .../message/direct-escalation-link.tsx | 11 +++++- .../src/components/message/user-message.tsx | 39 +++++++++++-------- .../query/use-create-zendesk-conversation.ts | 6 +++ packages/odie-client/src/types/index.ts | 1 + 4 files changed, 39 insertions(+), 18 deletions(-) diff --git a/packages/odie-client/src/components/message/direct-escalation-link.tsx b/packages/odie-client/src/components/message/direct-escalation-link.tsx index 0af70b4c9f36e..c69447899afdc 100644 --- a/packages/odie-client/src/components/message/direct-escalation-link.tsx +++ b/packages/odie-client/src/components/message/direct-escalation-link.tsx @@ -2,9 +2,12 @@ import { useCallback } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { useNavigate } from 'react-router-dom'; import { useOdieAssistantContext } from '../../context'; +import { useCreateZendeskConversation } from '../../query/use-create-zendesk-conversation'; export const DirectEscalationLink = ( { messageId }: { messageId: number | undefined } ) => { - const { trackEvent, isUserEligibleForPaidSupport } = useOdieAssistantContext(); + const newConversation = useCreateZendeskConversation(); + const { shouldUseHelpCenterExperience, trackEvent, isUserEligibleForPaidSupport } = + useOdieAssistantContext(); const navigate = useNavigate(); const handleClick = useCallback( () => { trackEvent( 'chat_message_direct_escalation_link_click', { @@ -13,7 +16,11 @@ export const DirectEscalationLink = ( { messageId }: { messageId: number | undef } ); if ( isUserEligibleForPaidSupport ) { - navigate( '/contact-options' ); + if ( shouldUseHelpCenterExperience ) { + newConversation(); + } else { + navigate( '/contact-options' ); + } } else { navigate( '/contact-form?mode=FORUM' ); } diff --git a/packages/odie-client/src/components/message/user-message.tsx b/packages/odie-client/src/components/message/user-message.tsx index ea923c2019c00..afb5f2ebeb0d1 100644 --- a/packages/odie-client/src/components/message/user-message.tsx +++ b/packages/odie-client/src/components/message/user-message.tsx @@ -22,6 +22,7 @@ export const UserMessage = ( { const hasCannedResponse = message.context?.flags?.canned_response; const isRequestingHumanSupport = message.context?.flags?.forward_to_human_support; + const isOnlyMessage = message.context?.flags?.only_message; const hasFeedback = !! message?.rating_value; const isBot = message.role === 'bot'; const isPositiveFeedback = @@ -46,23 +47,29 @@ export const UserMessage = ( { > { isRequestingHumanSupport ? displayMessage : message.content } - { showExtraContactOptions && - ( shouldUseHelpCenterExperience ? : extraContactOptions ) } - { ! showExtraContactOptions && isBot && ( - - ) } - { isBot && ( + { ! isOnlyMessage && ( <> - { ! showExtraContactOptions && } -
- { __( - "Generated by WordPress.com's Support AI. AI-generated responses may contain inaccurate information.", - __i18n_text_domain__ - ) } - - { __( 'Learn more.', __i18n_text_domain__ ) } - -
+ { showExtraContactOptions && + ( shouldUseHelpCenterExperience ? : extraContactOptions ) } + { ! showExtraContactOptions && isBot && ( + + ) } + { isBot && ( + <> + { ! showExtraContactOptions && ( + + ) } +
+ { __( + "Generated by WordPress.com's Support AI. AI-generated responses may contain inaccurate information.", + __i18n_text_domain__ + ) } + + { __( 'Learn more.', __i18n_text_domain__ ) } + +
+ + ) } ) } diff --git a/packages/odie-client/src/query/use-create-zendesk-conversation.ts b/packages/odie-client/src/query/use-create-zendesk-conversation.ts index b5b6808d3fe8a..d4ce9945267f3 100644 --- a/packages/odie-client/src/query/use-create-zendesk-conversation.ts +++ b/packages/odie-client/src/query/use-create-zendesk-conversation.ts @@ -18,6 +18,12 @@ export const useCreateZendeskConversation = (): ( () => Promise< void > ) => { content: "We're connecting you to our support team.", role: 'bot', type: 'message', + context: { + flags: { + only_message: true, + }, + site_id: null, + }, } ); setChatStatus( 'sending' ); diff --git a/packages/odie-client/src/types/index.ts b/packages/odie-client/src/types/index.ts index 5e89394bab3f1..f42cfbd88aaf0 100644 --- a/packages/odie-client/src/types/index.ts +++ b/packages/odie-client/src/types/index.ts @@ -62,6 +62,7 @@ export type Context = { flags?: { forward_to_human_support?: boolean; canned_response?: boolean; + only_message?: boolean; }; };