diff --git a/app/javascript/dashboard/i18n/locale/en/agentBots.json b/app/javascript/dashboard/i18n/locale/en/agentBots.json
index 67ee3ef6f..5403bb18c 100644
--- a/app/javascript/dashboard/i18n/locale/en/agentBots.json
+++ b/app/javascript/dashboard/i18n/locale/en/agentBots.json
@@ -24,8 +24,11 @@
"TITLE": "Select an agent bot",
"DESC": "You can set an agent bot from the list to this inbox. The bot can initially handle the conversation and transfer it to an agent when needed.",
"SUBMIT": "Update",
+ "DISCONNECT": "Disconnect Bot",
"SUCCESS_MESSAGE": "Successfully updated the agent bot",
+ "DISCONNECTED_SUCCESS_MESSAGE": "Successfully disconnected the agent bot",
"ERROR_MESSAGE": "Could not update the agent bot, please try again later",
+ "DISCONNECTED_ERROR_MESSAGE": "Could not disconnect the agent bot, please try again later",
"SELECT_PLACEHOLDER": "Select Bot"
},
"ADD": {
diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BotConfiguration.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BotConfiguration.vue
index 6e55988b0..fc0d8ed45 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BotConfiguration.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/BotConfiguration.vue
@@ -21,10 +21,23 @@
-
+
+
+
+ {{ $t('AGENT_BOTS.BOT_CONFIGURATION.DISCONNECT') }}
+
+
@@ -86,6 +99,27 @@ export default {
this.showAlert(this.$t('AGENT_BOTS.BOT_CONFIGURATION.ERROR_MESSAGE'));
}
},
+ async disconnectBot() {
+ try {
+ await this.$store.dispatch('agentBots/disconnectBot', {
+ inboxId: this.inbox.id,
+ });
+ this.showAlert(
+ this.$t('AGENT_BOTS.BOT_CONFIGURATION.DISCONNECTED_SUCCESS_MESSAGE')
+ );
+ } catch (error) {
+ this.showAlert(
+ error?.message ||
+ this.$t('AGENT_BOTS.BOT_CONFIGURATION.DISCONNECTED_ERROR_MESSAGE')
+ );
+ }
+ },
},
};
+
+
diff --git a/app/javascript/dashboard/store/modules/agentBots.js b/app/javascript/dashboard/store/modules/agentBots.js
index f70949b00..ea0cddda5 100644
--- a/app/javascript/dashboard/store/modules/agentBots.js
+++ b/app/javascript/dashboard/store/modules/agentBots.js
@@ -15,6 +15,7 @@ export const state = {
isUpdating: false,
isFetchingAgentBot: false,
isSettingAgentBot: false,
+ isDisconnecting: false,
},
agentBotInbox: {},
};
@@ -119,6 +120,18 @@ export const actions = {
commit(types.SET_AGENT_BOT_UI_FLAG, { isSettingAgentBot: false });
}
},
+
+ disconnectBot: async ({ commit }, { inboxId }) => {
+ commit(types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: true });
+ try {
+ await InboxesAPI.setAgentBot(inboxId, null);
+ commit(types.SET_AGENT_BOT_INBOX, { agentBotId: '', inboxId });
+ } catch (error) {
+ throwErrorMessage(error);
+ } finally {
+ commit(types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: false });
+ }
+ },
};
export const mutations = {
diff --git a/app/javascript/dashboard/store/modules/specs/agentBots/actions.spec.js b/app/javascript/dashboard/store/modules/specs/agentBots/agentBots.spec.js
similarity index 85%
rename from app/javascript/dashboard/store/modules/specs/agentBots/actions.spec.js
rename to app/javascript/dashboard/store/modules/specs/agentBots/agentBots.spec.js
index 0ed9ac834..46c97311a 100644
--- a/app/javascript/dashboard/store/modules/specs/agentBots/actions.spec.js
+++ b/app/javascript/dashboard/store/modules/specs/agentBots/agentBots.spec.js
@@ -132,4 +132,25 @@ describe('#actions', () => {
]);
});
});
+ describe('#disconnectBot', () => {
+ it('sends correct actions if API is success', async () => {
+ axios.post.mockResolvedValue({ data: {} });
+ await actions.disconnectBot({ commit }, { inboxId: 2 });
+ expect(commit.mock.calls).toEqual([
+ [types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: true }],
+ [types.SET_AGENT_BOT_INBOX, { inboxId: 2, agentBotId: '' }],
+ [types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: false }],
+ ]);
+ });
+ it('sends correct actions if API is error', async () => {
+ axios.post.mockRejectedValue({ message: 'Incorrect header' });
+ await expect(
+ actions.disconnectBot({ commit }, { inboxId: 2, agentBotId: '' })
+ ).rejects.toThrow(Error);
+ expect(commit.mock.calls).toEqual([
+ [types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: true }],
+ [types.SET_AGENT_BOT_UI_FLAG, { isDisconnecting: false }],
+ ]);
+ });
+ });
});