From 3be125ea6693b8e6662d4666995e95ba8bd90144 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 29 Jun 2023 13:12:26 +0530 Subject: [PATCH] feat: update openapi.js --- .../dashboard/api/integrations/openapi.js | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/app/javascript/dashboard/api/integrations/openapi.js b/app/javascript/dashboard/api/integrations/openapi.js index 641cfcfbd..4926f075e 100644 --- a/app/javascript/dashboard/api/integrations/openapi.js +++ b/app/javascript/dashboard/api/integrations/openapi.js @@ -2,18 +2,62 @@ import ApiClient from '../ApiClient'; +/** + * Represents the data object for a OpenAI hook. + * @typedef {Object} ConversationMessageData + * @property {string} [tone] - The tone of the message. + * @property {string} [content] - The content of the message. + * @property {string} [conversation_display_id] - The display ID of the conversation (optional). + */ + +/** + * A client for the OpenAI API. + * @extends ApiClient + */ class OpenAIAPI extends ApiClient { + /** + * Creates a new OpenAIAPI instance. + */ constructor() { super('integrations', { accountScoped: true }); + + /** + * The conversation events supported by the API. + * @type {string[]} + */ + this.conversation_events = [ + 'summarize', + 'reply_suggestion', + 'suggest_label', + ]; + + /** + * The message events supported by the API. + * @type {string[]} + */ + this.message_events = ['rephrase']; } + /** + * Processes an event using the OpenAI API. + * @param {Object} options - The options for the event. + * @param {string} [options.type='rephrase'] - The type of event to process. + * @param {string} [options.content] - The content of the event. + * @param {string} [options.tone] - The tone of the event. + * @param {string} [options.conversationId] - The ID of the conversation to process the event for. + * @param {string} options.hookId - The ID of the hook to use for processing the event. + * @returns {Promise} A promise that resolves with the result of the event processing. + */ processEvent({ type = 'rephrase', content, tone, conversationId, hookId }) { + /** + * @type {ConversationMessageData} + */ let data = { tone, content, }; - if (type === 'reply_suggestion' || type === 'summarize') { + if (this.conversation_events.includes(type)) { data = { conversation_display_id: conversationId, };