From 86384bf876d12f157418782694d3b14cf5f7d5d3 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Wed, 10 May 2023 17:50:37 +0530 Subject: [PATCH] feat: Reply suggestion and summary generation using OpenAI (#7029) Add `reply_suggestions` and `summary_generation` options for OpenAI integration Fixes: https://linear.app/chatwoot/issue/CW-1595/frontend-for-generating-conversation-summary Co-authored-by: Nithin David Thomas <1277421+nithindavid@users.noreply.github.com> Co-authored-by: Sojan Jose --- .../dashboard/api/integrations/openapi.js | 20 ++- .../assets/scss/_foundation-settings.scss | 2 +- .../dashboard/components/ui/WootButton.vue | 14 +- .../components/widgets/AIAssistanceButton.vue | 126 +++++++++++------- .../widgets/WootWriter/ReplyBottomPanel.vue | 4 +- .../i18n/locale/en/integrations.json | 2 + .../FluentIcon/dashboard-icons.json | 8 ++ app/javascript/shared/components/Spinner.vue | 15 ++- .../specs/__snapshots__/Spinner.spec.js.snap | 2 +- lib/integrations/openai/processor_service.rb | 44 ++++-- 10 files changed, 169 insertions(+), 68 deletions(-) diff --git a/app/javascript/dashboard/api/integrations/openapi.js b/app/javascript/dashboard/api/integrations/openapi.js index 88507bf81..641cfcfbd 100644 --- a/app/javascript/dashboard/api/integrations/openapi.js +++ b/app/javascript/dashboard/api/integrations/openapi.js @@ -7,14 +7,22 @@ class OpenAIAPI extends ApiClient { super('integrations', { accountScoped: true }); } - processEvent({ name = 'rephrase', content, tone, hookId }) { + processEvent({ type = 'rephrase', content, tone, conversationId, hookId }) { + let data = { + tone, + content, + }; + + if (type === 'reply_suggestion' || type === 'summarize') { + data = { + conversation_display_id: conversationId, + }; + } + return axios.post(`${this.url}/hooks/${hookId}/process_event`, { event: { - name: name, - data: { - tone, - content, - }, + name: type, + data, }, }); } diff --git a/app/javascript/dashboard/assets/scss/_foundation-settings.scss b/app/javascript/dashboard/assets/scss/_foundation-settings.scss index 28defb4fd..a6e0b1aa3 100644 --- a/app/javascript/dashboard/assets/scss/_foundation-settings.scss +++ b/app/javascript/dashboard/assets/scss/_foundation-settings.scss @@ -254,7 +254,7 @@ $button-sizes: (tiny: var(--font-size-micro), default: var(--font-size-small), large: var(--font-size-medium)); $button-palette: $foundation-palette; -$button-opacity-disabled: 0.25; +$button-opacity-disabled: 0.4; $button-background-hover-lightness: -20%; $button-hollow-hover-lightness: -50%; $button-transition: background-color 0.25s ease-out, diff --git a/app/javascript/dashboard/components/ui/WootButton.vue b/app/javascript/dashboard/components/ui/WootButton.vue index 1571109c8..254f12d2f 100644 --- a/app/javascript/dashboard/components/ui/WootButton.vue +++ b/app/javascript/dashboard/components/ui/WootButton.vue @@ -6,7 +6,11 @@ :disabled="isDisabled || isLoading" @click="handleClick" > - +
- -