diff --git a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue
index 4fb2e8504..ab4047a1e 100644
--- a/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue
+++ b/app/javascript/dashboard/components/widgets/AIAssistanceButton.vue
@@ -1,41 +1,60 @@
-
+
diff --git a/app/javascript/dashboard/components/widgets/AICTAModal.vue b/app/javascript/dashboard/components/widgets/AICTAModal.vue
new file mode 100644
index 000000000..b094c42c8
--- /dev/null
+++ b/app/javascript/dashboard/components/widgets/AICTAModal.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
diff --git a/app/javascript/dashboard/helper/AnalyticsHelper/events.js b/app/javascript/dashboard/helper/AnalyticsHelper/events.js
index 266442303..cd39d40ca 100644
--- a/app/javascript/dashboard/helper/AnalyticsHelper/events.js
+++ b/app/javascript/dashboard/helper/AnalyticsHelper/events.js
@@ -89,6 +89,8 @@ export const OPEN_AI_EVENTS = Object.freeze({
SIMPLIFY: 'OpenAI: Used simplify',
APPLY_LABEL_SUGGESTION: 'OpenAI: Apply label from suggestion',
DISMISS_LABEL_SUGGESTION: 'OpenAI: Dismiss label suggestions',
+ ADDED_AI_INTEGRATION_VIA_CTA_BUTTON:
+ 'OpenAI: Added AI integration via CTA button',
DISMISS_AI_SUGGESTION: 'OpenAI: Dismiss AI suggestions',
});
diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json
index 2ebc4fd69..addba946c 100644
--- a/app/javascript/dashboard/i18n/locale/en/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/en/integrations.json
@@ -121,6 +121,18 @@
"CANCEL": "Cancel"
}
},
+ "CTA_MODAL": {
+ "TITLE": "Integrate with OpenAI",
+ "DESC": "Bring advanced AI features to your dashboard with OpenAI's GPT models. To begin, enter the API key from your OpenAI account.",
+ "KEY_PLACEHOLDER": "Enter your OpenAI API key",
+ "BUTTONS": {
+ "NEED_HELP": "Need help?",
+ "DISMISS": "Dismiss",
+ "FINISH": "Finish Setup"
+ },
+ "DISMISS_MESSAGE": "You can setup OpenAI integration later Whenever you want.",
+ "SUCCESS_MESSAGE": "OpenAI integration setup successfully"
+ },
"TITLE": "Improve With AI",
"SUMMARY_TITLE": "Summary with AI",
"REPLY_TITLE": "Reply suggestion with AI",
diff --git a/app/javascript/dashboard/mixins/aiMixin.js b/app/javascript/dashboard/mixins/aiMixin.js
index e0488f99d..3a9fc4a75 100644
--- a/app/javascript/dashboard/mixins/aiMixin.js
+++ b/app/javascript/dashboard/mixins/aiMixin.js
@@ -10,15 +10,19 @@ export default {
},
computed: {
...mapGetters({
+ uiFlags: 'integrations/getUIFlags',
appIntegrations: 'integrations/getAppIntegrations',
currentChat: 'getSelectedChat',
replyMode: 'draftMessages/getReplyEditorMode',
}),
isAIIntegrationEnabled() {
- return this.appIntegrations.find(
+ return !!this.appIntegrations.find(
integration => integration.id === 'openai' && !!integration.hooks.length
);
},
+ isFetchingAppIntegrations() {
+ return this.uiFlags.isFetching;
+ },
hookId() {
return this.appIntegrations.find(
integration => integration.id === 'openai' && !!integration.hooks.length
diff --git a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue
index cf6e92c0f..d2b3c75ce 100644
--- a/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue
+++ b/app/javascript/dashboard/routes/dashboard/contacts/components/ContactsTable.vue
@@ -225,7 +225,7 @@ export default {
if (!items.length) return '---';
return (
-
+
{items.map(
profile =>
profiles[profile] && (