diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.test.tsx
index 57064176c0417..60a9266a2dc2e 100644
--- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.test.tsx
+++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.test.tsx
@@ -81,7 +81,7 @@ const mockResponse = [
const testProps = {
setUserPrompt: jest.fn(),
};
-
+const mockReportAssistantStarterPrompt = jest.fn();
jest.mock('../../..', () => {
return {
useFindPrompts: jest.fn(),
@@ -89,12 +89,18 @@ jest.mock('../../..', () => {
assistantAvailability: {
isAssistantEnabled: true,
},
+ assistantTelemetry: {
+ reportAssistantStarterPrompt: mockReportAssistantStarterPrompt,
+ },
http: { fetch: {} },
}),
};
});
describe('StarterPrompts', () => {
+ beforeEach(() => {
+ jest.clearAllMocks();
+ });
it('should return an empty array if no prompts are provided', () => {
expect(getAllPromptIds(promptGroups)).toEqual([
'starterPromptTitle1',
@@ -158,4 +164,16 @@ describe('StarterPrompts', () => {
fireEvent.click(getByTestId('starterPromptPrompt2 from API yall'));
expect(testProps.setUserPrompt).toHaveBeenCalledWith('starterPromptPrompt2 from API yall');
});
+ it('calls reportAssistantStarterPrompt with prompt title when a prompt is selected', () => {
+ (useFindPrompts as jest.Mock).mockReturnValue({ data: { prompts: mockResponse } });
+ const { getByTestId } = render(
+
+
+
+ );
+ fireEvent.click(getByTestId('starterPromptPrompt2 from API yall'));
+ expect(mockReportAssistantStarterPrompt).toHaveBeenCalledWith({
+ promptTitle: 'starterPromptTitle2 from API yall',
+ });
+ });
});
diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.tsx
index 3b914b8555ae4..d4dafe174afb8 100644
--- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.tsx
+++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_body/starter_prompts.tsx
@@ -68,6 +68,7 @@ export const promptGroups = [
export const StarterPrompts: React.FC = ({ connectorId, setUserPrompt }) => {
const {
assistantAvailability: { isAssistantEnabled },
+ assistantTelemetry,
http,
toasts,
} = useAssistantContext();
@@ -93,11 +94,21 @@ export const StarterPrompts: React.FC = ({ connectorId, setUserPrompt })
return formatPromptGroups(actualPrompts);
}, [actualPrompts]);
+ const trackPrompt = useCallback(
+ (promptTitle: string) => {
+ assistantTelemetry?.reportAssistantStarterPrompt({
+ promptTitle,
+ });
+ },
+ [assistantTelemetry]
+ );
+
const onSelectPrompt = useCallback(
- (prompt: string) => {
+ (prompt: string, title: string) => {
setUserPrompt(prompt);
+ trackPrompt(title);
},
- [setUserPrompt]
+ [setUserPrompt, trackPrompt]
);
return (
@@ -109,7 +120,7 @@ export const StarterPrompts: React.FC = ({ connectorId, setUserPrompt })
hasShadow={false}
hasBorder
data-test-subj={prompt}
- onClick={() => onSelectPrompt(prompt)}
+ onClick={() => onSelectPrompt(prompt, title)}
className={starterPromptInnerClassName}
>
diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx
index 4cd7b0fce58cc..47f7723f39c14 100644
--- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx
+++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant/assistant_overlay/index.test.tsx
@@ -15,6 +15,7 @@ const assistantTelemetry = {
reportAssistantInvoked,
reportAssistantMessageSent: () => {},
reportAssistantQuickPrompt: () => {},
+ reportAssistantStarterPrompt: () => {},
reportAssistantSettingToggled: () => {},
};
describe('AssistantOverlay', () => {
diff --git a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx
index ff4e306844ee3..548e7a82806c3 100644
--- a/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx
+++ b/x-pack/platform/packages/shared/kbn-elastic-assistant/impl/assistant_context/types.tsx
@@ -53,6 +53,7 @@ export interface AssistantTelemetry {
isEnabledKnowledgeBase: boolean;
}) => void;
reportAssistantQuickPrompt: (params: { promptTitle: string }) => void;
+ reportAssistantStarterPrompt: (params: { promptTitle: string }) => void;
reportAssistantSettingToggled: (params: {
assistantStreamingEnabled?: boolean;
alertsCountUpdated?: boolean;
diff --git a/x-pack/solutions/security/plugins/elastic_assistant/public/src/common/lib/telemetry/events/ai_assistant/types.ts b/x-pack/solutions/security/plugins/elastic_assistant/public/src/common/lib/telemetry/events/ai_assistant/types.ts
index b2527b7ef43ee..8e56efc3c4ab8 100644
--- a/x-pack/solutions/security/plugins/elastic_assistant/public/src/common/lib/telemetry/events/ai_assistant/types.ts
+++ b/x-pack/solutions/security/plugins/elastic_assistant/public/src/common/lib/telemetry/events/ai_assistant/types.ts
@@ -11,6 +11,7 @@ export enum AssistantEventTypes {
AssistantInvoked = 'Assistant Invoked',
AssistantMessageSent = 'Assistant Message Sent',
AssistantQuickPrompt = 'Assistant Quick Prompt',
+ AssistantStarterPrompt = 'Assistant Starter Prompt',
AssistantSettingToggled = 'Assistant Setting Toggled',
}
@@ -30,6 +31,10 @@ export interface ReportAssistantQuickPromptParams {
promptTitle: string;
}
+export interface ReportAssistantStarterPromptParams {
+ promptTitle: string;
+}
+
export interface ReportAssistantSettingToggledParams {
alertsCountUpdated?: boolean;
assistantStreamingEnabled?: boolean;
@@ -39,6 +44,7 @@ export interface AssistantTelemetryEventsMap {
[AssistantEventTypes.AssistantInvoked]: ReportAssistantInvokedParams;
[AssistantEventTypes.AssistantMessageSent]: ReportAssistantMessageSentParams;
[AssistantEventTypes.AssistantQuickPrompt]: ReportAssistantQuickPromptParams;
+ [AssistantEventTypes.AssistantStarterPrompt]: ReportAssistantStarterPromptParams;
[AssistantEventTypes.AssistantSettingToggled]: ReportAssistantSettingToggledParams;
}
diff --git a/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.test.tsx b/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.test.tsx
index 7d544ca55936b..0e073d431ef01 100644
--- a/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.test.tsx
+++ b/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.test.tsx
@@ -43,6 +43,7 @@ const trackingFns = [
{ name: 'reportAssistantInvoked', eventType: AssistantEventTypes.AssistantInvoked },
{ name: 'reportAssistantMessageSent', eventType: AssistantEventTypes.AssistantMessageSent },
{ name: 'reportAssistantQuickPrompt', eventType: AssistantEventTypes.AssistantQuickPrompt },
+ { name: 'reportAssistantStarterPrompt', eventType: AssistantEventTypes.AssistantStarterPrompt },
];
describe('useAssistantTelemetry', () => {
diff --git a/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.tsx b/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.tsx
index 90ccc1d46071b..1ce2e1fa43050 100644
--- a/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.tsx
+++ b/x-pack/solutions/security/plugins/elastic_assistant/public/src/hooks/use_assistant_telemetry/index.tsx
@@ -13,6 +13,7 @@ import {
ReportAssistantInvokedParams,
ReportAssistantMessageSentParams,
ReportAssistantQuickPromptParams,
+ ReportAssistantStarterPromptParams,
ReportAssistantSettingToggledParams,
} from '../../common/lib/telemetry/events/ai_assistant/types';
@@ -45,6 +46,8 @@ export const useAssistantTelemetry = (): AssistantTelemetry => {
reportTelemetry({ eventType: AssistantEventTypes.AssistantMessageSent, params }),
reportAssistantQuickPrompt: (params: ReportAssistantQuickPromptParams) =>
reportTelemetry({ eventType: AssistantEventTypes.AssistantQuickPrompt, params }),
+ reportAssistantStarterPrompt: (params: ReportAssistantStarterPromptParams) =>
+ reportTelemetry({ eventType: AssistantEventTypes.AssistantStarterPrompt, params }),
reportAssistantSettingToggled: (params: ReportAssistantSettingToggledParams) =>
telemetry.reportEvent(AssistantEventTypes.AssistantSettingToggled, params),
}),