+
+
+
+
+
+
+
+
+
+
-
-
+
+ {{ assistant?.name || '' }}
+
+
+
+
+
+
{{ documentable.name }}
-
-
-
{{ documentable.available_name }}
-
-
-
-
+
{{
t(`CAPTAIN.RESPONSES.DOCUMENTABLE.CONVERSATION`, {
id: documentable.display_id,
})
}}
-
-
+
-
- {{ t(`CAPTAIN.RESPONSES.STATUS.${status.toUpperCase()}`) }}
+
+ {{ timestamp }}
-
-
- {{ timestamp }}
-
diff --git a/app/javascript/dashboard/i18n/locale/en/integrations.json b/app/javascript/dashboard/i18n/locale/en/integrations.json
index c65d2d040..e0c25e39d 100644
--- a/app/javascript/dashboard/i18n/locale/en/integrations.json
+++ b/app/javascript/dashboard/i18n/locale/en/integrations.json
@@ -861,6 +861,7 @@
},
"RESPONSES": {
"HEADER": "FAQs",
+ "PENDING_FAQS": "Pending FAQs",
"ADD_NEW": "Create new FAQ",
"DOCUMENTABLE": {
"CONVERSATION": "Conversation #{id}"
@@ -900,6 +901,10 @@
"APPROVED": "Approved",
"ALL": "All"
},
+ "PENDING_BANNER": {
+ "TITLE": "Captain has found some FAQs your customers were looking for.",
+ "ACTION": "Click here to review"
+ },
"FORM_DESCRIPTION": "Add a question and its corresponding answer to the knowledge base and select the assistant it should be associated with.",
"CREATE": {
"TITLE": "Add an FAQ",
@@ -931,9 +936,9 @@
"APPROVE_SUCCESS_MESSAGE": "The FAQ was marked as approved"
},
"OPTIONS": {
- "APPROVE": "Mark as approved",
- "EDIT_RESPONSE": "Edit FAQ",
- "DELETE_RESPONSE": "Delete FAQ"
+ "APPROVE": "Approve",
+ "EDIT_RESPONSE": "Edit",
+ "DELETE_RESPONSE": "Delete"
},
"EMPTY_STATE": {
"TITLE": "No FAQs Found",
diff --git a/app/javascript/dashboard/routes/dashboard/captain/captain.routes.js b/app/javascript/dashboard/routes/dashboard/captain/captain.routes.js
index 9d5609ab7..12c5c53f3 100644
--- a/app/javascript/dashboard/routes/dashboard/captain/captain.routes.js
+++ b/app/javascript/dashboard/routes/dashboard/captain/captain.routes.js
@@ -10,6 +10,7 @@ import AssistantGuidelinesIndex from './assistants/guidelines/Index.vue';
import AssistantScenariosIndex from './assistants/scenarios/Index.vue';
import DocumentsIndex from './documents/Index.vue';
import ResponsesIndex from './responses/Index.vue';
+import ResponsesPendingIndex from './responses/Pending.vue';
import CustomToolsIndex from './tools/Index.vue';
export const routes = [
@@ -125,6 +126,19 @@ export const routes = [
],
},
},
+ {
+ path: frontendURL('accounts/:accountId/captain/responses/pending'),
+ component: ResponsesPendingIndex,
+ name: 'captain_responses_pending',
+ meta: {
+ permissions: ['administrator', 'agent'],
+ featureFlag: FEATURE_FLAGS.CAPTAIN,
+ installationTypes: [
+ INSTALLATION_TYPES.CLOUD,
+ INSTALLATION_TYPES.ENTERPRISE,
+ ],
+ },
+ },
{
path: frontendURL('accounts/:accountId/captain/tools'),
component: CustomToolsIndex,
diff --git a/app/javascript/dashboard/routes/dashboard/captain/responses/Index.vue b/app/javascript/dashboard/routes/dashboard/captain/responses/Index.vue
index a20b96e45..4ed117806 100644
--- a/app/javascript/dashboard/routes/dashboard/captain/responses/Index.vue
+++ b/app/javascript/dashboard/routes/dashboard/captain/responses/Index.vue
@@ -1,17 +1,15 @@
@@ -276,8 +212,8 @@ onMounted(() => {
:header-title="$t('CAPTAIN.RESPONSES.HEADER')"
:button-label="$t('CAPTAIN.RESPONSES.ADD_NEW')"
:is-fetching="isFetching"
- :is-empty="!filteredResponses.length"
- :show-pagination-footer="!isFetching && !!filteredResponses.length"
+ :is-empty="!responses.length"
+ :show-pagination-footer="!isFetching && !!responses.length"
:feature-flag="FEATURE_FLAGS.CAPTAIN"
@update:current-page="onPageChange"
@click="handleCreate"
@@ -315,25 +251,7 @@ onMounted(() => {
v-if="!bulkSelectionState.hasSelected"
class="flex gap-3 justify-between w-full items-center"
>
-
-
-
-
-
-
+
{
:placeholder="$t('CAPTAIN.RESPONSES.SEARCH_PLACEHOLDER')"
class="w-64"
size="sm"
+ type="search"
autofocus
@input="debouncedSearch"
/>
@@ -380,15 +299,6 @@ onMounted(() => {
-
-