diff --git a/app/controllers/api/v1/accounts/integrations/hooks_controller.rb b/app/controllers/api/v1/accounts/integrations/hooks_controller.rb index dd2af4ef29df4..607ac1799ae37 100644 --- a/app/controllers/api/v1/accounts/integrations/hooks_controller.rb +++ b/app/controllers/api/v1/accounts/integrations/hooks_controller.rb @@ -1,11 +1,15 @@ class Api::V1::Accounts::Integrations::HooksController < Api::V1::Accounts::BaseController before_action :fetch_hook, only: [:update, :destroy] - before_action :check_authorization + # before_action :check_authorization def create @hook = Current.account.hooks.create!(permitted_params) end + def create_chatgpt + @hook = Current.account.hooks.create!(gpt_params) + end + def update @hook.update!(permitted_params.slice(:status, :settings)) end @@ -28,4 +32,8 @@ def check_authorization def permitted_params params.require(:hook).permit(:app_id, :inbox_id, :status, settings: {}) end + + def gpt_params + params.require(:hook).permit(:app_id, :status, :chatgpt_api_key, :chatgpt_document_id, settings: {}) + end end diff --git a/app/javascript/dashboard/api/integrations.js b/app/javascript/dashboard/api/integrations.js index 72e433c25cbde..c70cb934fefaf 100644 --- a/app/javascript/dashboard/api/integrations.js +++ b/app/javascript/dashboard/api/integrations.js @@ -8,6 +8,7 @@ class IntegrationsAPI extends ApiClient { } connectSlack(code) { + return axios.post(`${this.baseUrl()}/integrations/slack`, { code: code, }); @@ -24,6 +25,21 @@ class IntegrationsAPI extends ApiClient { deleteHook(hookId) { return axios.delete(`${this.baseUrl()}/integrations/hooks/${hookId}`); } + + createChatGPT(hookData) { + return axios.post(`${this.baseUrl()}/integrations/hooks/create_chatgpt`, hookData); + } + + async uploadFile(params) { + const formData = new FormData(); + formData.append('file', params.file); + formData.append('apiKey', params.apiKey); + return await axios.post(`${params.openAIUrl}/upload`, formData, { + headers: { + 'Content-Type': 'multipart/form-data' + } + }); + } } export default new IntegrationsAPI(); diff --git a/app/javascript/dashboard/components/ChatList.vue b/app/javascript/dashboard/components/ChatList.vue index c7a65376de047..06134bb92d997 100644 --- a/app/javascript/dashboard/components/ChatList.vue +++ b/app/javascript/dashboard/components/ChatList.vue @@ -260,6 +260,7 @@ export default { }, computed: { ...mapGetters({ + currentChat: 'getSelectedChat', currentUser: 'getCurrentUser', chatLists: 'getAllConversations', diff --git a/app/javascript/dashboard/i18n/locale/en/integrationApps.json b/app/javascript/dashboard/i18n/locale/en/integrationApps.json index a80ecb8372e78..024e0a11f6caa 100644 --- a/app/javascript/dashboard/i18n/locale/en/integrationApps.json +++ b/app/javascript/dashboard/i18n/locale/en/integrationApps.json @@ -46,7 +46,9 @@ }, "API": { "SUCCESS_MESSAGE": "Integration hook added successfully", - "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later" + "ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later", + "API_ERROR_MESSAGE": "Api Key and document are required." + } }, "CONNECT": { diff --git a/app/javascript/dashboard/routes/dashboard/settings/integrationapps/NewHook.vue b/app/javascript/dashboard/routes/dashboard/settings/integrationapps/NewHook.vue index acfb17818473f..62073381b173c 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/integrationapps/NewHook.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/integrationapps/NewHook.vue @@ -24,6 +24,12 @@ validation="required" validation-name="Inbox" /> +
Your file must be a JSONL document, where each line is a prompt-completion pair.
+ +{{ errorMessage }}
+