diff --git a/src/main.ts b/src/main.ts index de009ac3..b3423fbc 100644 --- a/src/main.ts +++ b/src/main.ts @@ -231,6 +231,7 @@ export default function main() { comment, promptId, promptedQuestion, + source, }: Feedback) { checkKey(); if (!featureId) err("No featureId provided"); @@ -247,6 +248,7 @@ export default function main() { promptId, question, promptedQuestion, + source: source ?? "sdk", }; const res = await request(`${getUrl()}/feedback`, payload); @@ -383,6 +385,7 @@ export default function main() { promptId: message.promptId, question: reply.question, promptedQuestion: message.question, + source: "prompt", }); completionHandler(); @@ -470,6 +473,7 @@ export default function main() { featureId: options.featureId, userId: options.userId, companyId: options.companyId, + source: "widget", ...data, }); @@ -482,6 +486,7 @@ export default function main() { featureId: options.featureId, userId: options.userId, companyId: options.companyId, + source: "widget", ...data, }); diff --git a/src/types.ts b/src/types.ts index 0f09b065..bb34e04b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -138,6 +138,14 @@ export type Feedback = { * feedback. */ promptId?: FeedbackPrompt["promptId"]; + + /** + * Source of the feedback, depending on how the user was asked + * - `prompt` - Feedback submitted by a Live Satisfaction prompt + * - `widget` - Feedback submitted via `requestFeedback` + * - `sdk` - Feedback submitted via `feedback` + */ + source?: "prompt" | "sdk" | "widget"; }; export type FeedbackPrompt = { diff --git a/test/e2e/acceptance.node.test.ts b/test/e2e/acceptance.node.test.ts index 23cd6cba..f52ed9bf 100644 --- a/test/e2e/acceptance.node.test.ts +++ b/test/e2e/acceptance.node.test.ts @@ -44,6 +44,7 @@ test("Acceptance", async () => { featureId: "featureId1", score: 5, comment: "test!", + source: "sdk", }) .reply(200); diff --git a/test/e2e/feedback-widget.browser.spec.ts b/test/e2e/feedback-widget.browser.spec.ts index 64c583d2..08ec9398 100644 --- a/test/e2e/feedback-widget.browser.spec.ts +++ b/test/e2e/feedback-widget.browser.spec.ts @@ -193,6 +193,7 @@ test("Sends a request when choosing a score immediately", async ({ page }) => { score: expectedScore, question: "baz", userId: "foo", + source: "widget", }); }); @@ -251,6 +252,7 @@ test("Updates the score on every change", async ({ page }) => { question: "baz", score: 3, userId: "foo", + source: "widget", }); }); @@ -309,6 +311,7 @@ test("Sends a request with both the score and comment when submitting", async ({ featureId: "featureId1", feedbackId: "123", userId: "foo", + source: "widget", }); }); diff --git a/test/usage.test.ts b/test/usage.test.ts index 674d94cb..04a9c911 100644 --- a/test/usage.test.ts +++ b/test/usage.test.ts @@ -76,6 +76,7 @@ describe("usage", () => { comment: "Sunt bine!", question: "Cum esti?", promptedQuestion: "How are you?", + source: "sdk", }) .reply(200); @@ -683,6 +684,7 @@ describe("feedback state management", () => { score: 5, question: "Cum esti?", promptedQuestion: "How are you?", + source: "prompt", }) .reply(200, { feedbackId: "feedback123",