mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-01 03:27:52 +00:00
Merge branch 'develop' into feat/voice-channel: resolve App.vue and pnpm-lock.yaml conflicts
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -95,3 +95,7 @@ yarn-debug.log*
|
|||||||
.claude/settings.local.json
|
.claude/settings.local.json
|
||||||
.cursor
|
.cursor
|
||||||
CLAUDE.local.md
|
CLAUDE.local.md
|
||||||
|
|
||||||
|
# Histoire deployment
|
||||||
|
.netlify
|
||||||
|
.histoire
|
||||||
|
|||||||
2
Gemfile
2
Gemfile
@@ -81,6 +81,7 @@ gem 'devise_token_auth', '>= 1.2.3'
|
|||||||
# authorization
|
# authorization
|
||||||
gem 'jwt'
|
gem 'jwt'
|
||||||
gem 'pundit'
|
gem 'pundit'
|
||||||
|
|
||||||
# super admin
|
# super admin
|
||||||
gem 'administrate', '>= 0.20.1'
|
gem 'administrate', '>= 0.20.1'
|
||||||
gem 'administrate-field-active_storage', '>= 1.0.3'
|
gem 'administrate-field-active_storage', '>= 1.0.3'
|
||||||
@@ -171,6 +172,7 @@ gem 'audited', '~> 5.4', '>= 5.4.1'
|
|||||||
|
|
||||||
# need for google auth
|
# need for google auth
|
||||||
gem 'omniauth', '>= 2.1.2'
|
gem 'omniauth', '>= 2.1.2'
|
||||||
|
gem 'omniauth-saml'
|
||||||
gem 'omniauth-google-oauth2', '>= 1.1.3'
|
gem 'omniauth-google-oauth2', '>= 1.1.3'
|
||||||
gem 'omniauth-rails_csrf_protection', '~> 1.0', '>= 1.0.2'
|
gem 'omniauth-rails_csrf_protection', '~> 1.0', '>= 1.0.2'
|
||||||
|
|
||||||
|
|||||||
10
Gemfile.lock
10
Gemfile.lock
@@ -589,8 +589,9 @@ GEM
|
|||||||
oj (3.16.10)
|
oj (3.16.10)
|
||||||
bigdecimal (>= 3.0)
|
bigdecimal (>= 3.0)
|
||||||
ostruct (>= 0.2)
|
ostruct (>= 0.2)
|
||||||
omniauth (2.1.2)
|
omniauth (2.1.3)
|
||||||
hashie (>= 3.4.6)
|
hashie (>= 3.4.6)
|
||||||
|
logger
|
||||||
rack (>= 2.2.3)
|
rack (>= 2.2.3)
|
||||||
rack-protection
|
rack-protection
|
||||||
omniauth-google-oauth2 (1.1.3)
|
omniauth-google-oauth2 (1.1.3)
|
||||||
@@ -604,6 +605,9 @@ GEM
|
|||||||
omniauth-rails_csrf_protection (1.0.2)
|
omniauth-rails_csrf_protection (1.0.2)
|
||||||
actionpack (>= 4.2)
|
actionpack (>= 4.2)
|
||||||
omniauth (~> 2.0)
|
omniauth (~> 2.0)
|
||||||
|
omniauth-saml (2.2.4)
|
||||||
|
omniauth (~> 2.1)
|
||||||
|
ruby-saml (~> 1.18)
|
||||||
opensearch-ruby (3.4.0)
|
opensearch-ruby (3.4.0)
|
||||||
faraday (>= 1.0, < 3)
|
faraday (>= 1.0, < 3)
|
||||||
multi_json (>= 1.0)
|
multi_json (>= 1.0)
|
||||||
@@ -773,6 +777,9 @@ GEM
|
|||||||
faraday (>= 1)
|
faraday (>= 1)
|
||||||
faraday-multipart (>= 1)
|
faraday-multipart (>= 1)
|
||||||
ruby-progressbar (1.13.0)
|
ruby-progressbar (1.13.0)
|
||||||
|
ruby-saml (1.18.1)
|
||||||
|
nokogiri (>= 1.13.10)
|
||||||
|
rexml
|
||||||
ruby-vips (2.1.4)
|
ruby-vips (2.1.4)
|
||||||
ffi (~> 1.12)
|
ffi (~> 1.12)
|
||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
@@ -1047,6 +1054,7 @@ DEPENDENCIES
|
|||||||
omniauth-google-oauth2 (>= 1.1.3)
|
omniauth-google-oauth2 (>= 1.1.3)
|
||||||
omniauth-oauth2
|
omniauth-oauth2
|
||||||
omniauth-rails_csrf_protection (~> 1.0, >= 1.0.2)
|
omniauth-rails_csrf_protection (~> 1.0, >= 1.0.2)
|
||||||
|
omniauth-saml
|
||||||
opensearch-ruby
|
opensearch-ruby
|
||||||
pg
|
pg
|
||||||
pg_search
|
pg_search
|
||||||
|
|||||||
@@ -4,17 +4,28 @@ module SwitchLocale
|
|||||||
private
|
private
|
||||||
|
|
||||||
def switch_locale(&)
|
def switch_locale(&)
|
||||||
# priority is for locale set in query string (mostly for widget/from js sdk)
|
# Priority is for locale set in query string (mostly for widget/from js sdk)
|
||||||
locale ||= params[:locale]
|
locale ||= params[:locale]
|
||||||
|
|
||||||
|
# Use the user's locale if available
|
||||||
|
locale ||= locale_from_user
|
||||||
|
|
||||||
|
# Use the locale from a custom domain if applicable
|
||||||
locale ||= locale_from_custom_domain
|
locale ||= locale_from_custom_domain
|
||||||
|
|
||||||
# if locale is not set in account, let's use DEFAULT_LOCALE env variable
|
# if locale is not set in account, let's use DEFAULT_LOCALE env variable
|
||||||
locale ||= ENV.fetch('DEFAULT_LOCALE', nil)
|
locale ||= ENV.fetch('DEFAULT_LOCALE', nil)
|
||||||
|
|
||||||
set_locale(locale, &)
|
set_locale(locale, &)
|
||||||
end
|
end
|
||||||
|
|
||||||
def switch_locale_using_account_locale(&)
|
def switch_locale_using_account_locale(&)
|
||||||
locale = locale_from_account(@current_account)
|
# Get the locale from the user first
|
||||||
|
locale = locale_from_user
|
||||||
|
|
||||||
|
# Fallback to the account's locale if the user's locale is not set
|
||||||
|
locale ||= locale_from_account(@current_account)
|
||||||
|
|
||||||
set_locale(locale, &)
|
set_locale(locale, &)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -32,6 +43,12 @@ module SwitchLocale
|
|||||||
@portal.default_locale
|
@portal.default_locale
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def locale_from_user
|
||||||
|
return unless @user
|
||||||
|
|
||||||
|
@user.ui_settings&.dig('locale')
|
||||||
|
end
|
||||||
|
|
||||||
def set_locale(locale, &)
|
def set_locale(locale, &)
|
||||||
safe_locale = validate_and_get_locale(locale)
|
safe_locale = validate_and_get_locale(locale)
|
||||||
# Ensure locale won't bleed into other requests
|
# Ensure locale won't bleed into other requests
|
||||||
|
|||||||
@@ -47,10 +47,8 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
|||||||
end
|
end
|
||||||
|
|
||||||
def get_resource_from_auth_hash # rubocop:disable Naming/AccessorMethodName
|
def get_resource_from_auth_hash # rubocop:disable Naming/AccessorMethodName
|
||||||
# find the user with their email instead of UID and token
|
email = auth_hash.dig('info', 'email')
|
||||||
@resource = resource_class.where(
|
@resource = resource_class.from_email(email)
|
||||||
email: auth_hash['info']['email']
|
|
||||||
).first
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_signup_email_is_business_domain?
|
def validate_signup_email_is_business_domain?
|
||||||
@@ -75,3 +73,5 @@ class DeviseOverrides::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCa
|
|||||||
'user'
|
'user'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
DeviseOverrides::OmniauthCallbacksController.prepend_mod_with('DeviseOverrides::OmniauthCallbacksController')
|
||||||
|
|||||||
@@ -44,3 +44,5 @@ class DeviseOverrides::PasswordsController < Devise::PasswordsController
|
|||||||
}, status: status
|
}, status: status
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
DeviseOverrides::PasswordsController.prepend_mod_with('DeviseOverrides::PasswordsController')
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
module PortalHelper
|
module PortalHelper
|
||||||
|
include UrlHelper
|
||||||
def set_og_image_url(portal_name, title)
|
def set_og_image_url(portal_name, title)
|
||||||
cdn_url = GlobalConfig.get('OG_IMAGE_CDN_URL')['OG_IMAGE_CDN_URL']
|
cdn_url = GlobalConfig.get('OG_IMAGE_CDN_URL')['OG_IMAGE_CDN_URL']
|
||||||
return if cdn_url.blank?
|
return if cdn_url.blank?
|
||||||
@@ -79,7 +80,7 @@ module PortalHelper
|
|||||||
query_params = Rack::Utils.parse_query(url.query)
|
query_params = Rack::Utils.parse_query(url.query)
|
||||||
query_params['utm_medium'] = 'helpcenter'
|
query_params['utm_medium'] = 'helpcenter'
|
||||||
query_params['utm_campaign'] = 'branding'
|
query_params['utm_campaign'] = 'branding'
|
||||||
query_params['utm_source'] = URI.parse(referer).host if referer.present? && referer.match?(URI::DEFAULT_PARSER.make_regexp)
|
query_params['utm_source'] = URI.parse(referer).host if url_valid?(referer)
|
||||||
|
|
||||||
url.query = query_params.to_query
|
url.query = query_params.to_query
|
||||||
url.to_s
|
url.to_s
|
||||||
|
|||||||
@@ -20,7 +20,11 @@ import {
|
|||||||
verifyServiceWorkerExistence,
|
verifyServiceWorkerExistence,
|
||||||
} from './helper/pushHelper';
|
} from './helper/pushHelper';
|
||||||
import ReconnectService from 'dashboard/helper/ReconnectService';
|
import ReconnectService from 'dashboard/helper/ReconnectService';
|
||||||
import { getAlertAudio, initOnEvents } from 'shared/helpers/AudioNotificationHelper';
|
import {
|
||||||
|
getAlertAudio,
|
||||||
|
initOnEvents,
|
||||||
|
} from 'shared/helpers/AudioNotificationHelper';
|
||||||
|
import { useUISettings } from 'dashboard/composables/useUISettings';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'App',
|
name: 'App',
|
||||||
@@ -41,12 +45,14 @@ export default {
|
|||||||
const { accountId } = useAccount();
|
const { accountId } = useAccount();
|
||||||
// Use the font size composable (it automatically sets up the watcher)
|
// Use the font size composable (it automatically sets up the watcher)
|
||||||
const { currentFontSize } = useFontSize();
|
const { currentFontSize } = useFontSize();
|
||||||
|
const { uiSettings } = useUISettings();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
router,
|
router,
|
||||||
store,
|
store,
|
||||||
currentAccountId: accountId,
|
currentAccountId: accountId,
|
||||||
currentFontSize,
|
currentFontSize,
|
||||||
|
uiSettings,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@@ -93,8 +99,10 @@ export default {
|
|||||||
mounted() {
|
mounted() {
|
||||||
this.initializeColorTheme();
|
this.initializeColorTheme();
|
||||||
this.listenToThemeChanges();
|
this.listenToThemeChanges();
|
||||||
this.setLocale(window.chatwootConfig.selectedLocale);
|
// If user locale is set, use it; otherwise use account locale
|
||||||
|
this.setLocale(
|
||||||
|
this.uiSettings?.locale || window.chatwootConfig.selectedLocale
|
||||||
|
);
|
||||||
|
|
||||||
// Prepare dashboard ringtone; requires a user gesture once to unlock AudioContext
|
// Prepare dashboard ringtone; requires a user gesture once to unlock AudioContext
|
||||||
window.playAudioAlert = () => {};
|
window.playAudioAlert = () => {};
|
||||||
@@ -136,7 +144,8 @@ export default {
|
|||||||
const { locale, latest_chatwoot_version: latestChatwootVersion } =
|
const { locale, latest_chatwoot_version: latestChatwootVersion } =
|
||||||
this.getAccount(this.currentAccountId);
|
this.getAccount(this.currentAccountId);
|
||||||
const { pubsub_token: pubsubToken } = this.currentUser || {};
|
const { pubsub_token: pubsubToken } = this.currentUser || {};
|
||||||
this.setLocale(locale);
|
// If user locale is set, use it; otherwise use account locale
|
||||||
|
this.setLocale(this.uiSettings?.locale || locale);
|
||||||
this.latestChatwootVersion = latestChatwootVersion;
|
this.latestChatwootVersion = latestChatwootVersion;
|
||||||
vueActionCable.init(this.store, pubsubToken);
|
vueActionCable.init(this.store, pubsubToken);
|
||||||
this.reconnectService = new ReconnectService(this.store, this.router);
|
this.reconnectService = new ReconnectService(this.store, this.router);
|
||||||
|
|||||||
43
app/javascript/dashboard/api/agentCapacityPolicies.js
Normal file
43
app/javascript/dashboard/api/agentCapacityPolicies.js
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
/* global axios */
|
||||||
|
|
||||||
|
import ApiClient from './ApiClient';
|
||||||
|
|
||||||
|
class AgentCapacityPolicies extends ApiClient {
|
||||||
|
constructor() {
|
||||||
|
super('agent_capacity_policies', { accountScoped: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
getUsers(policyId) {
|
||||||
|
return axios.get(`${this.url}/${policyId}/users`);
|
||||||
|
}
|
||||||
|
|
||||||
|
addUser(policyId, userData) {
|
||||||
|
return axios.post(`${this.url}/${policyId}/users`, {
|
||||||
|
user_id: userData.id,
|
||||||
|
capacity: userData.capacity,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
removeUser(policyId, userId) {
|
||||||
|
return axios.delete(`${this.url}/${policyId}/users/${userId}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
createInboxLimit(policyId, limitData) {
|
||||||
|
return axios.post(`${this.url}/${policyId}/inbox_limits`, {
|
||||||
|
inbox_id: limitData.inboxId,
|
||||||
|
conversation_limit: limitData.conversationLimit,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
updateInboxLimit(policyId, limitId, limitData) {
|
||||||
|
return axios.put(`${this.url}/${policyId}/inbox_limits/${limitId}`, {
|
||||||
|
conversation_limit: limitData.conversationLimit,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteInboxLimit(policyId, limitId) {
|
||||||
|
return axios.delete(`${this.url}/${policyId}/inbox_limits/${limitId}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new AgentCapacityPolicies();
|
||||||
36
app/javascript/dashboard/api/assignmentPolicies.js
Normal file
36
app/javascript/dashboard/api/assignmentPolicies.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
/* global axios */
|
||||||
|
|
||||||
|
import ApiClient from './ApiClient';
|
||||||
|
|
||||||
|
class AssignmentPolicies extends ApiClient {
|
||||||
|
constructor() {
|
||||||
|
super('assignment_policies', { accountScoped: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
getInboxes(policyId) {
|
||||||
|
return axios.get(`${this.url}/${policyId}/inboxes`);
|
||||||
|
}
|
||||||
|
|
||||||
|
setInboxPolicy(inboxId, policyId) {
|
||||||
|
return axios.post(
|
||||||
|
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`,
|
||||||
|
{
|
||||||
|
assignment_policy_id: policyId,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getInboxPolicy(inboxId) {
|
||||||
|
return axios.get(
|
||||||
|
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeInboxPolicy(inboxId) {
|
||||||
|
return axios.delete(
|
||||||
|
`/api/v1/accounts/${this.accountIdFromRoute}/inboxes/${inboxId}/assignment_policy`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new AssignmentPolicies();
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
import agentCapacityPolicies from '../agentCapacityPolicies';
|
||||||
|
import ApiClient from '../ApiClient';
|
||||||
|
|
||||||
|
describe('#AgentCapacityPoliciesAPI', () => {
|
||||||
|
it('creates correct instance', () => {
|
||||||
|
expect(agentCapacityPolicies).toBeInstanceOf(ApiClient);
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('get');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('show');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('create');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('update');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('delete');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('getUsers');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('addUser');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('removeUser');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('createInboxLimit');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('updateInboxLimit');
|
||||||
|
expect(agentCapacityPolicies).toHaveProperty('deleteInboxLimit');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('API calls', () => {
|
||||||
|
const originalAxios = window.axios;
|
||||||
|
const axiosMock = {
|
||||||
|
get: vi.fn(() => Promise.resolve()),
|
||||||
|
post: vi.fn(() => Promise.resolve()),
|
||||||
|
put: vi.fn(() => Promise.resolve()),
|
||||||
|
delete: vi.fn(() => Promise.resolve()),
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
window.axios = axiosMock;
|
||||||
|
// Mock accountIdFromRoute
|
||||||
|
Object.defineProperty(agentCapacityPolicies, 'accountIdFromRoute', {
|
||||||
|
get: () => '1',
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
window.axios = originalAxios;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#getUsers', () => {
|
||||||
|
agentCapacityPolicies.getUsers(123);
|
||||||
|
expect(axiosMock.get).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/users'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#addUser', () => {
|
||||||
|
const userData = { id: 456, capacity: 20 };
|
||||||
|
agentCapacityPolicies.addUser(123, userData);
|
||||||
|
expect(axiosMock.post).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/users',
|
||||||
|
{
|
||||||
|
user_id: 456,
|
||||||
|
capacity: 20,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#removeUser', () => {
|
||||||
|
agentCapacityPolicies.removeUser(123, 456);
|
||||||
|
expect(axiosMock.delete).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/users/456'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#createInboxLimit', () => {
|
||||||
|
const limitData = { inboxId: 1, conversationLimit: 10 };
|
||||||
|
agentCapacityPolicies.createInboxLimit(123, limitData);
|
||||||
|
expect(axiosMock.post).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits',
|
||||||
|
{
|
||||||
|
inbox_id: 1,
|
||||||
|
conversation_limit: 10,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#updateInboxLimit', () => {
|
||||||
|
const limitData = { conversationLimit: 15 };
|
||||||
|
agentCapacityPolicies.updateInboxLimit(123, 789, limitData);
|
||||||
|
expect(axiosMock.put).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits/789',
|
||||||
|
{
|
||||||
|
conversation_limit: 15,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#deleteInboxLimit', () => {
|
||||||
|
agentCapacityPolicies.deleteInboxLimit(123, 789);
|
||||||
|
expect(axiosMock.delete).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/agent_capacity_policies/123/inbox_limits/789'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
import assignmentPolicies from '../assignmentPolicies';
|
||||||
|
import ApiClient from '../ApiClient';
|
||||||
|
|
||||||
|
describe('#AssignmentPoliciesAPI', () => {
|
||||||
|
it('creates correct instance', () => {
|
||||||
|
expect(assignmentPolicies).toBeInstanceOf(ApiClient);
|
||||||
|
expect(assignmentPolicies).toHaveProperty('get');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('show');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('create');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('update');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('delete');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('getInboxes');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('setInboxPolicy');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('getInboxPolicy');
|
||||||
|
expect(assignmentPolicies).toHaveProperty('removeInboxPolicy');
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('API calls', () => {
|
||||||
|
const originalAxios = window.axios;
|
||||||
|
const axiosMock = {
|
||||||
|
get: vi.fn(() => Promise.resolve()),
|
||||||
|
post: vi.fn(() => Promise.resolve()),
|
||||||
|
delete: vi.fn(() => Promise.resolve()),
|
||||||
|
};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
window.axios = axiosMock;
|
||||||
|
// Mock accountIdFromRoute
|
||||||
|
Object.defineProperty(assignmentPolicies, 'accountIdFromRoute', {
|
||||||
|
get: () => '1',
|
||||||
|
configurable: true,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
window.axios = originalAxios;
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#getInboxes', () => {
|
||||||
|
assignmentPolicies.getInboxes(123);
|
||||||
|
expect(axiosMock.get).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/assignment_policies/123/inboxes'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#setInboxPolicy', () => {
|
||||||
|
assignmentPolicies.setInboxPolicy(456, 123);
|
||||||
|
expect(axiosMock.post).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/inboxes/456/assignment_policy',
|
||||||
|
{
|
||||||
|
assignment_policy_id: 123,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#getInboxPolicy', () => {
|
||||||
|
assignmentPolicies.getInboxPolicy(456);
|
||||||
|
expect(axiosMock.get).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/inboxes/456/assignment_policy'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('#removeInboxPolicy', () => {
|
||||||
|
assignmentPolicies.removeInboxPolicy(456);
|
||||||
|
expect(axiosMock.delete).toHaveBeenCalledWith(
|
||||||
|
'/api/v1/accounts/1/inboxes/456/assignment_policy'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,116 @@
|
|||||||
|
<script setup>
|
||||||
|
import AgentCapacityPolicyCard from './AgentCapacityPolicyCard.vue';
|
||||||
|
|
||||||
|
const mockUsers = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'John Smith',
|
||||||
|
email: 'john.smith@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Sarah Johnson',
|
||||||
|
email: 'sarah.johnson@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'Mike Chen',
|
||||||
|
email: 'mike.chen@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'Emily Davis',
|
||||||
|
email: 'emily.davis@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
name: 'Alex Rodriguez',
|
||||||
|
email: 'alex.rodriguez@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=5',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const withCount = policy => ({
|
||||||
|
...policy,
|
||||||
|
assignedAgentCount: policy.users.length,
|
||||||
|
});
|
||||||
|
|
||||||
|
const policyA = withCount({
|
||||||
|
id: 1,
|
||||||
|
name: 'High Volume Support',
|
||||||
|
description:
|
||||||
|
'Capacity-based policy for handling high conversation volumes with experienced agents',
|
||||||
|
users: [mockUsers[0], mockUsers[1], mockUsers[2]],
|
||||||
|
isFetchingUsers: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const policyB = withCount({
|
||||||
|
id: 2,
|
||||||
|
name: 'Specialized Team',
|
||||||
|
description: 'Custom capacity limits for specialized support team members',
|
||||||
|
users: [mockUsers[3], mockUsers[4]],
|
||||||
|
isFetchingUsers: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const emptyPolicy = withCount({
|
||||||
|
id: 3,
|
||||||
|
name: 'New Policy',
|
||||||
|
description: 'Recently created policy with no assigned agents yet',
|
||||||
|
users: [],
|
||||||
|
isFetchingUsers: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const loadingPolicy = withCount({
|
||||||
|
id: 4,
|
||||||
|
name: 'Loading Policy',
|
||||||
|
description: 'Policy currently loading agent information',
|
||||||
|
users: [],
|
||||||
|
isFetchingUsers: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const onEdit = id => console.log('Edit policy:', id);
|
||||||
|
const onDelete = id => console.log('Delete policy:', id);
|
||||||
|
const onFetchUsers = id => console.log('Fetch users for policy:', id);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/AgentCapacityPolicyCard"
|
||||||
|
:layout="{ type: 'grid', width: '1200px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Multiple Cards (Various States)">
|
||||||
|
<div class="p-4 bg-n-background">
|
||||||
|
<div class="grid grid-cols-1 gap-4">
|
||||||
|
<AgentCapacityPolicyCard
|
||||||
|
v-bind="policyA"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-users="onFetchUsers"
|
||||||
|
/>
|
||||||
|
<AgentCapacityPolicyCard
|
||||||
|
v-bind="policyB"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-users="onFetchUsers"
|
||||||
|
/>
|
||||||
|
<AgentCapacityPolicyCard
|
||||||
|
v-bind="emptyPolicy"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-users="onFetchUsers"
|
||||||
|
/>
|
||||||
|
<AgentCapacityPolicyCard
|
||||||
|
v-bind="loadingPolicy"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-users="onFetchUsers"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
import Button from 'dashboard/components-next/button/Button.vue';
|
||||||
|
import CardLayout from 'dashboard/components-next/CardLayout.vue';
|
||||||
|
import CardPopover from '../components/CardPopover.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
id: { type: Number, required: true },
|
||||||
|
name: { type: String, default: '' },
|
||||||
|
description: { type: String, default: '' },
|
||||||
|
assignedAgentCount: { type: Number, default: 0 },
|
||||||
|
users: { type: Array, default: () => [] },
|
||||||
|
isFetchingUsers: { type: Boolean, default: false },
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['edit', 'delete', 'fetchUsers']);
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const users = computed(() => {
|
||||||
|
return props.users.map(user => {
|
||||||
|
return {
|
||||||
|
name: user.name,
|
||||||
|
key: user.id,
|
||||||
|
email: user.email,
|
||||||
|
avatarUrl: user.avatarUrl,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleEdit = () => {
|
||||||
|
emit('edit', props.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDelete = () => {
|
||||||
|
emit('delete', props.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleFetchUsers = () => {
|
||||||
|
if (props.users?.length > 0) return;
|
||||||
|
emit('fetchUsers', props.id);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<CardLayout class="[&>div]:px-5">
|
||||||
|
<div class="flex flex-col gap-2 relative justify-between w-full">
|
||||||
|
<div class="flex items-center gap-3 justify-between w-full">
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<h3 class="text-base font-medium text-n-slate-12 line-clamp-1">
|
||||||
|
{{ name }}
|
||||||
|
</h3>
|
||||||
|
<CardPopover
|
||||||
|
:title="
|
||||||
|
t('ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.INDEX.CARD.POPOVER')
|
||||||
|
"
|
||||||
|
icon="i-lucide-users-round"
|
||||||
|
:count="assignedAgentCount"
|
||||||
|
:items="users"
|
||||||
|
:is-fetching="isFetchingUsers"
|
||||||
|
@fetch="handleFetchUsers"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<Button
|
||||||
|
:label="
|
||||||
|
t('ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.INDEX.CARD.EDIT')
|
||||||
|
"
|
||||||
|
sm
|
||||||
|
slate
|
||||||
|
link
|
||||||
|
class="px-2"
|
||||||
|
@click="handleEdit"
|
||||||
|
/>
|
||||||
|
<div class="w-px h-2.5 bg-n-slate-5" />
|
||||||
|
<Button icon="i-lucide-trash" sm slate ghost @click="handleDelete" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="text-n-slate-11 text-sm line-clamp-1 mb-0 py-1">
|
||||||
|
{{ description }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</CardLayout>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
<script setup>
|
||||||
|
import AssignmentPolicyCard from './AssignmentPolicyCard.vue';
|
||||||
|
|
||||||
|
const mockInboxes = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'Website Support',
|
||||||
|
channel_type: 'Channel::WebWidget',
|
||||||
|
inbox_type: 'Website',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Email Support',
|
||||||
|
channel_type: 'Channel::Email',
|
||||||
|
inbox_type: 'Email',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'WhatsApp Business',
|
||||||
|
channel_type: 'Channel::Whatsapp',
|
||||||
|
inbox_type: 'WhatsApp',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'Facebook Messenger',
|
||||||
|
channel_type: 'Channel::FacebookPage',
|
||||||
|
inbox_type: 'Messenger',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const withCount = policy => ({
|
||||||
|
...policy,
|
||||||
|
assignedInboxCount: policy.inboxes.length,
|
||||||
|
});
|
||||||
|
|
||||||
|
const policyA = withCount({
|
||||||
|
id: 1,
|
||||||
|
name: 'Website & Email',
|
||||||
|
description: 'Distributes conversations evenly among available agents',
|
||||||
|
assignmentOrder: 'round_robin',
|
||||||
|
conversationPriority: 'high',
|
||||||
|
enabled: true,
|
||||||
|
inboxes: [mockInboxes[0], mockInboxes[1]],
|
||||||
|
isFetchingInboxes: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const policyB = withCount({
|
||||||
|
id: 2,
|
||||||
|
name: 'WhatsApp & Messenger',
|
||||||
|
description: 'Assigns based on capacity and workload',
|
||||||
|
assignmentOrder: 'capacity_based',
|
||||||
|
conversationPriority: 'medium',
|
||||||
|
enabled: true,
|
||||||
|
inboxes: [mockInboxes[2], mockInboxes[3]],
|
||||||
|
isFetchingInboxes: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const emptyPolicy = withCount({
|
||||||
|
id: 3,
|
||||||
|
name: 'No Inboxes Yet',
|
||||||
|
description: 'Policy with no assigned inboxes',
|
||||||
|
assignmentOrder: 'manual',
|
||||||
|
conversationPriority: 'low',
|
||||||
|
enabled: false,
|
||||||
|
inboxes: [],
|
||||||
|
isFetchingInboxes: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
const onEdit = id => console.log('Edit policy:', id);
|
||||||
|
const onDelete = id => console.log('Delete policy:', id);
|
||||||
|
const onFetch = () => console.log('Fetch inboxes');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/AssignmentPolicyCard"
|
||||||
|
:layout="{ type: 'grid', width: '1200px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Three Cards (Two with inboxes, One empty)">
|
||||||
|
<div class="p-4 bg-n-background">
|
||||||
|
<div class="grid grid-cols-1 gap-4">
|
||||||
|
<AssignmentPolicyCard
|
||||||
|
v-bind="policyA"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-inboxes="onFetch"
|
||||||
|
/>
|
||||||
|
<AssignmentPolicyCard
|
||||||
|
v-bind="policyB"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-inboxes="onFetch"
|
||||||
|
/>
|
||||||
|
<AssignmentPolicyCard
|
||||||
|
v-bind="emptyPolicy"
|
||||||
|
@edit="onEdit"
|
||||||
|
@delete="onDelete"
|
||||||
|
@fetch-inboxes="onFetch"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,133 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import { getInboxIconByType } from 'dashboard/helper/inbox';
|
||||||
|
import { formatToTitleCase } from 'dashboard/helper/commons';
|
||||||
|
|
||||||
|
import Button from 'dashboard/components-next/button/Button.vue';
|
||||||
|
import CardLayout from 'dashboard/components-next/CardLayout.vue';
|
||||||
|
import CardPopover from '../components/CardPopover.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
id: { type: Number, required: true },
|
||||||
|
name: { type: String, default: '' },
|
||||||
|
description: { type: String, default: '' },
|
||||||
|
assignmentOrder: { type: String, default: '' },
|
||||||
|
conversationPriority: { type: String, default: '' },
|
||||||
|
assignedInboxCount: { type: Number, default: 0 },
|
||||||
|
enabled: { type: Boolean, default: false },
|
||||||
|
inboxes: { type: Array, default: () => [] },
|
||||||
|
isFetchingInboxes: { type: Boolean, default: false },
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['edit', 'delete', 'fetchInboxes']);
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const inboxes = computed(() => {
|
||||||
|
return props.inboxes.map(inbox => {
|
||||||
|
return {
|
||||||
|
name: inbox.name,
|
||||||
|
id: inbox.id,
|
||||||
|
icon: getInboxIconByType(inbox.channelType, inbox.medium, 'line'),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const order = computed(() => {
|
||||||
|
return formatToTitleCase(props.assignmentOrder);
|
||||||
|
});
|
||||||
|
|
||||||
|
const priority = computed(() => {
|
||||||
|
return formatToTitleCase(props.conversationPriority);
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleEdit = () => {
|
||||||
|
emit('edit', props.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleDelete = () => {
|
||||||
|
emit('delete', props.id);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleFetchInboxes = () => {
|
||||||
|
if (props.inboxes?.length > 0) return;
|
||||||
|
emit('fetchInboxes', props.id);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<CardLayout class="[&>div]:px-5">
|
||||||
|
<div class="flex flex-col gap-2 relative justify-between w-full">
|
||||||
|
<div class="flex items-center gap-3 justify-between w-full">
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<h3 class="text-base font-medium text-n-slate-12 line-clamp-1">
|
||||||
|
{{ name }}
|
||||||
|
</h3>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<div class="flex items-center rounded-md bg-n-alpha-2 h-6 px-2">
|
||||||
|
<span
|
||||||
|
class="text-xs"
|
||||||
|
:class="enabled ? 'text-n-teal-11' : 'text-n-slate-12'"
|
||||||
|
>
|
||||||
|
{{
|
||||||
|
enabled
|
||||||
|
? t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.ACTIVE'
|
||||||
|
)
|
||||||
|
: t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.INACTIVE'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<CardPopover
|
||||||
|
:title="
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.POPOVER'
|
||||||
|
)
|
||||||
|
"
|
||||||
|
icon="i-lucide-inbox"
|
||||||
|
:count="assignedInboxCount"
|
||||||
|
:items="inboxes"
|
||||||
|
:is-fetching="isFetchingInboxes"
|
||||||
|
@fetch="handleFetchInboxes"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<Button
|
||||||
|
:label="
|
||||||
|
t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.EDIT')
|
||||||
|
"
|
||||||
|
sm
|
||||||
|
slate
|
||||||
|
link
|
||||||
|
class="px-2"
|
||||||
|
@click="handleEdit"
|
||||||
|
/>
|
||||||
|
<div v-if="order" class="w-px h-2.5 bg-n-slate-5" />
|
||||||
|
<Button icon="i-lucide-trash" sm slate ghost @click="handleDelete" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="text-n-slate-11 text-sm line-clamp-1 mb-0 py-1">
|
||||||
|
{{ description }}
|
||||||
|
</p>
|
||||||
|
<div class="flex items-center gap-3 py-1.5">
|
||||||
|
<span v-if="order" class="text-n-slate-11 text-sm">
|
||||||
|
{{
|
||||||
|
`${t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.ORDER')}:`
|
||||||
|
}}
|
||||||
|
<span class="text-n-slate-12">{{ order }}</span>
|
||||||
|
</span>
|
||||||
|
<div v-if="order" class="w-px h-3 bg-n-strong" />
|
||||||
|
<span v-if="priority" class="text-n-slate-11 text-sm">
|
||||||
|
{{
|
||||||
|
`${t('ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.INDEX.CARD.PRIORITY')}:`
|
||||||
|
}}
|
||||||
|
<span class="text-n-slate-12">{{ priority }}</span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</CardLayout>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,134 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed, ref } from 'vue';
|
||||||
|
import { useToggle } from '@vueuse/core';
|
||||||
|
import { vOnClickOutside } from '@vueuse/components';
|
||||||
|
import { picoSearch } from '@scmmishra/pico-search';
|
||||||
|
|
||||||
|
import Avatar from 'next/avatar/Avatar.vue';
|
||||||
|
import Icon from 'dashboard/components-next/icon/Icon.vue';
|
||||||
|
import Button from 'dashboard/components-next/button/Button.vue';
|
||||||
|
import Input from 'dashboard/components-next/input/Input.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
searchPlaceholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['add']);
|
||||||
|
|
||||||
|
const [showPopover, togglePopover] = useToggle();
|
||||||
|
|
||||||
|
const searchValue = ref('');
|
||||||
|
|
||||||
|
const filteredItems = computed(() => {
|
||||||
|
if (!searchValue.value) return props.items;
|
||||||
|
const query = searchValue.value.toLowerCase();
|
||||||
|
|
||||||
|
return picoSearch(props.items, query, ['name']);
|
||||||
|
});
|
||||||
|
|
||||||
|
const handleAdd = item => {
|
||||||
|
emit('add', item);
|
||||||
|
togglePopover(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClickOutside = () => {
|
||||||
|
if (showPopover.value) {
|
||||||
|
togglePopover(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
v-on-click-outside="handleClickOutside"
|
||||||
|
class="relative flex items-center group"
|
||||||
|
>
|
||||||
|
<Button
|
||||||
|
slate
|
||||||
|
type="button"
|
||||||
|
icon="i-lucide-plus"
|
||||||
|
sm
|
||||||
|
:label="label"
|
||||||
|
@click="togglePopover(!showPopover)"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
v-if="showPopover"
|
||||||
|
class="top-full mt-2 ltr:right-0 rtl:left-0 xl:ltr:left-0 xl:rtl:right-0 z-50 flex flex-col items-start absolute bg-n-alpha-3 backdrop-blur-[50px] border-0 gap-4 outline outline-1 outline-n-weak rounded-xl max-w-96 min-w-80 max-h-[20rem] overflow-y-auto py-2"
|
||||||
|
>
|
||||||
|
<div class="flex flex-col divide-y divide-n-slate-4 w-full">
|
||||||
|
<Input
|
||||||
|
v-model="searchValue"
|
||||||
|
:placeholder="searchPlaceholder"
|
||||||
|
custom-input-class="bg-transparent !outline-none w-full ltr:!pl-10 rtl:!pr-10 h-10"
|
||||||
|
>
|
||||||
|
<template #prefix>
|
||||||
|
<Icon
|
||||||
|
icon="i-lucide-search"
|
||||||
|
class="absolute -translate-y-1/2 text-n-slate-11 size-4 top-1/2 ltr:left-3 rtl:right-3"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</Input>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-for="item in filteredItems"
|
||||||
|
:key="item.id"
|
||||||
|
class="flex gap-3 min-w-0 w-full py-4 px-3 hover:bg-n-alpha-2 cursor-pointer"
|
||||||
|
:class="{ 'items-center': item.color, 'items-start': !item.color }"
|
||||||
|
@click="handleAdd(item)"
|
||||||
|
>
|
||||||
|
<Icon
|
||||||
|
v-if="item.icon"
|
||||||
|
:icon="item.icon"
|
||||||
|
class="size-2 text-n-slate-12 flex-shrink-0 mt-0.5"
|
||||||
|
/>
|
||||||
|
<span
|
||||||
|
v-else-if="item.color"
|
||||||
|
:style="{ backgroundColor: item.color }"
|
||||||
|
class="size-3 rounded-sm"
|
||||||
|
/>
|
||||||
|
<Avatar
|
||||||
|
v-else
|
||||||
|
:title="item.name"
|
||||||
|
:src="item.avatarUrl"
|
||||||
|
:name="item.name"
|
||||||
|
:size="20"
|
||||||
|
rounded-full
|
||||||
|
/>
|
||||||
|
<div class="flex flex-col items-start gap-2 min-w-0">
|
||||||
|
<div class="flex items-center gap-1 min-w-0">
|
||||||
|
<span
|
||||||
|
:title="item.name || item.title"
|
||||||
|
class="text-sm text-n-slate-12 truncate min-w-0"
|
||||||
|
>
|
||||||
|
{{ item.name || item.title }}
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-if="item.id"
|
||||||
|
class="text-xs text-n-slate-11 flex-shrink-0"
|
||||||
|
>
|
||||||
|
{{ `#${item.id}` }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<span
|
||||||
|
v-if="item.email || item.phoneNumber"
|
||||||
|
class="text-sm text-n-slate-11 truncate min-w-0"
|
||||||
|
>
|
||||||
|
{{ item.email || item.phoneNumber }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,127 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed, watch } from 'vue';
|
||||||
|
import { useVuelidate } from '@vuelidate/core';
|
||||||
|
import { required, minLength } from '@vuelidate/validators';
|
||||||
|
|
||||||
|
import WithLabel from 'v3/components/Form/WithLabel.vue';
|
||||||
|
import Input from 'dashboard/components-next/input/Input.vue';
|
||||||
|
import Switch from 'dashboard/components-next/switch/Switch.vue';
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
nameLabel: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
namePlaceholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
descriptionLabel: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
descriptionPlaceholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
statusLabel: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
statusPlaceholder: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['validationChange']);
|
||||||
|
|
||||||
|
const policyName = defineModel('policyName', {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
});
|
||||||
|
|
||||||
|
const description = defineModel('description', {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
});
|
||||||
|
|
||||||
|
const enabled = defineModel('enabled', {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
const validationRules = {
|
||||||
|
policyName: { required, minLength: minLength(1) },
|
||||||
|
description: { required, minLength: minLength(1) },
|
||||||
|
};
|
||||||
|
|
||||||
|
const v$ = useVuelidate(validationRules, { policyName, description });
|
||||||
|
|
||||||
|
const isValid = computed(() => !v$.value.$invalid);
|
||||||
|
|
||||||
|
watch(
|
||||||
|
isValid,
|
||||||
|
() => {
|
||||||
|
emit('validationChange', {
|
||||||
|
isValid: isValid.value,
|
||||||
|
section: 'baseInfo',
|
||||||
|
});
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="flex flex-col gap-4 pb-4">
|
||||||
|
<!-- Policy Name Field -->
|
||||||
|
<div class="flex items-center gap-6">
|
||||||
|
<WithLabel
|
||||||
|
:label="nameLabel"
|
||||||
|
name="policyName"
|
||||||
|
class="flex items-center w-full [&>label]:min-w-[120px]"
|
||||||
|
>
|
||||||
|
<div class="flex-1">
|
||||||
|
<Input
|
||||||
|
v-model="policyName"
|
||||||
|
type="text"
|
||||||
|
:placeholder="namePlaceholder"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</WithLabel>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Description Field -->
|
||||||
|
<div class="flex items-center gap-6">
|
||||||
|
<WithLabel
|
||||||
|
:label="descriptionLabel"
|
||||||
|
name="description"
|
||||||
|
class="flex items-center w-full [&>label]:min-w-[120px]"
|
||||||
|
>
|
||||||
|
<div class="flex-1">
|
||||||
|
<Input
|
||||||
|
v-model="description"
|
||||||
|
type="text"
|
||||||
|
:placeholder="descriptionPlaceholder"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</WithLabel>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Status Field -->
|
||||||
|
<div v-if="statusLabel" class="flex items-center gap-6">
|
||||||
|
<WithLabel
|
||||||
|
:label="statusLabel"
|
||||||
|
name="enabled"
|
||||||
|
class="flex items-center w-full [&>label]:min-w-[120px]"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-2">
|
||||||
|
<Switch v-model="enabled" />
|
||||||
|
<span class="text-sm text-n-slate-11">
|
||||||
|
{{ statusPlaceholder }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</WithLabel>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,121 @@
|
|||||||
|
<script setup>
|
||||||
|
import { useToggle } from '@vueuse/core';
|
||||||
|
import { vOnClickOutside } from '@vueuse/components';
|
||||||
|
|
||||||
|
import Avatar from 'next/avatar/Avatar.vue';
|
||||||
|
import Icon from 'dashboard/components-next/icon/Icon.vue';
|
||||||
|
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
count: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
isFetching: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['fetch']);
|
||||||
|
|
||||||
|
const [showPopover, togglePopover] = useToggle();
|
||||||
|
|
||||||
|
const handleButtonClick = () => {
|
||||||
|
emit('fetch');
|
||||||
|
togglePopover(!showPopover.value);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleClickOutside = () => {
|
||||||
|
if (showPopover.value) {
|
||||||
|
togglePopover(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
v-on-click-outside="handleClickOutside"
|
||||||
|
class="relative flex items-center group"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
v-if="count"
|
||||||
|
class="h-6 px-2 rounded-md bg-n-alpha-2 gap-1.5 flex items-center"
|
||||||
|
@click="handleButtonClick()"
|
||||||
|
>
|
||||||
|
<Icon :icon="icon" class="size-3.5 text-n-slate-12" />
|
||||||
|
<span class="text-n-slate-12 text-sm">
|
||||||
|
{{ count }}
|
||||||
|
</span>
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
v-if="showPopover"
|
||||||
|
class="top-full mt-1 ltr:left-0 rtl:right-0 z-50 flex flex-col items-start absolute bg-n-alpha-3 backdrop-blur-[50px] border-0 gap-4 outline outline-1 outline-n-weak p-3 rounded-xl max-w-96 min-w-80 max-h-[20rem] overflow-y-auto"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-2.5 pb-2">
|
||||||
|
<Icon :icon="icon" class="size-3.5" />
|
||||||
|
<span class="text-sm text-n-slate-12 font-medium">{{ title }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="isFetching"
|
||||||
|
class="flex items-center justify-center py-3 w-full text-n-slate-11"
|
||||||
|
>
|
||||||
|
<Spinner />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-else class="flex flex-col gap-4 w-full">
|
||||||
|
<div
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.id"
|
||||||
|
class="flex items-center justify-between gap-2 min-w-0 w-full"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-2 min-w-0 w-full">
|
||||||
|
<Icon
|
||||||
|
v-if="item.icon"
|
||||||
|
:icon="item.icon"
|
||||||
|
class="size-4 text-n-slate-12 flex-shrink-0"
|
||||||
|
/>
|
||||||
|
<Avatar
|
||||||
|
v-else
|
||||||
|
:title="item.name"
|
||||||
|
:src="item.avatarUrl"
|
||||||
|
:name="item.name"
|
||||||
|
:size="20"
|
||||||
|
rounded-full
|
||||||
|
/>
|
||||||
|
<div class="flex items-center gap-1 min-w-0 flex-1">
|
||||||
|
<span
|
||||||
|
:title="item.name"
|
||||||
|
class="text-sm text-n-slate-12 truncate min-w-0"
|
||||||
|
>
|
||||||
|
{{ item.name }}
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
v-if="item.id"
|
||||||
|
class="text-sm text-n-slate-11 flex-shrink-0"
|
||||||
|
>
|
||||||
|
{{ `#${item.id}` }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span v-if="item.email" class="text-sm text-n-slate-11 flex-shrink-0">
|
||||||
|
{{ item.email }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
<script setup>
|
||||||
|
import Avatar from 'next/avatar/Avatar.vue';
|
||||||
|
import Icon from 'dashboard/components-next/icon/Icon.vue';
|
||||||
|
import Button from 'dashboard/components-next/button/Button.vue';
|
||||||
|
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
|
||||||
|
|
||||||
|
defineProps({
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
isFetching: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
emptyStateMessage: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['delete']);
|
||||||
|
|
||||||
|
const handleDelete = itemId => {
|
||||||
|
emit('delete', itemId);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
v-if="isFetching"
|
||||||
|
class="flex items-center justify-center py-3 w-full text-n-slate-11"
|
||||||
|
>
|
||||||
|
<Spinner />
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
v-else-if="items.length === 0 && emptyStateMessage"
|
||||||
|
class="custom-dashed-border flex items-center justify-center py-6 w-full"
|
||||||
|
>
|
||||||
|
<span class="text-sm text-n-slate-11">
|
||||||
|
{{ emptyStateMessage }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div v-else class="flex flex-col divide-y divide-n-weak">
|
||||||
|
<div
|
||||||
|
v-for="item in items"
|
||||||
|
:key="item.id"
|
||||||
|
class="grid grid-cols-4 items-center gap-3 min-w-0 w-full justify-between h-[3.25rem] ltr:pr-2 rtl:pl-2"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-2 col-span-2">
|
||||||
|
<Icon
|
||||||
|
v-if="item.icon"
|
||||||
|
:icon="item.icon"
|
||||||
|
class="size-4 text-n-slate-12 flex-shrink-0"
|
||||||
|
/>
|
||||||
|
<Avatar
|
||||||
|
v-else
|
||||||
|
:title="item.name"
|
||||||
|
:src="item.avatarUrl"
|
||||||
|
:name="item.name"
|
||||||
|
:size="20"
|
||||||
|
rounded-full
|
||||||
|
/>
|
||||||
|
<span class="text-sm text-n-slate-12 truncate min-w-0">
|
||||||
|
{{ item.name }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex items-start gap-2 col-span-1">
|
||||||
|
<span
|
||||||
|
:title="item.email || item.phoneNumber"
|
||||||
|
class="text-sm text-n-slate-12 truncate min-w-0"
|
||||||
|
>
|
||||||
|
{{ item.email || item.phoneNumber }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-span-1 justify-end flex items-center">
|
||||||
|
<Button
|
||||||
|
icon="i-lucide-trash"
|
||||||
|
slate
|
||||||
|
ghost
|
||||||
|
sm
|
||||||
|
type="button"
|
||||||
|
@click="handleDelete(item.id)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,149 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed, ref, onMounted } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';
|
||||||
|
import LabelItem from 'dashboard/components-next/Label/LabelItem.vue';
|
||||||
|
import DurationInput from 'dashboard/components-next/input/DurationInput.vue';
|
||||||
|
import { DURATION_UNITS } from 'dashboard/components-next/input/constants';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
tagsList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const excludedLabels = defineModel('excludedLabels', {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
});
|
||||||
|
|
||||||
|
const excludeOlderThanMinutes = defineModel('excludeOlderThanMinutes', {
|
||||||
|
type: Number,
|
||||||
|
default: 10,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Duration limits: 10 minutes to 999 days (in minutes)
|
||||||
|
const MIN_DURATION_MINUTES = 10;
|
||||||
|
const MAX_DURATION_MINUTES = 1438560; // 999 days * 24 hours * 60 minutes
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const hoveredLabel = ref(null);
|
||||||
|
const windowUnit = ref(DURATION_UNITS.MINUTES);
|
||||||
|
|
||||||
|
const addedTags = computed(() =>
|
||||||
|
props.tagsList
|
||||||
|
.filter(label => excludedLabels.value.includes(label.name))
|
||||||
|
.map(label => ({ id: label.id, title: label.name, ...label }))
|
||||||
|
);
|
||||||
|
|
||||||
|
const filteredTags = computed(() =>
|
||||||
|
props.tagsList.filter(
|
||||||
|
label => !addedTags.value.some(tag => tag.id === label.id)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const detectUnit = minutes => {
|
||||||
|
const m = Number(minutes) || 0;
|
||||||
|
if (m === 0) return DURATION_UNITS.MINUTES;
|
||||||
|
if (m % (24 * 60) === 0) return DURATION_UNITS.DAYS;
|
||||||
|
if (m % 60 === 0) return DURATION_UNITS.HOURS;
|
||||||
|
return DURATION_UNITS.MINUTES;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onClickAddTag = tag => {
|
||||||
|
excludedLabels.value = [...excludedLabels.value, tag.name];
|
||||||
|
};
|
||||||
|
|
||||||
|
const onClickRemoveTag = tag => {
|
||||||
|
excludedLabels.value = excludedLabels.value.filter(
|
||||||
|
name => name !== tag.title
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
windowUnit.value = detectUnit(excludeOlderThanMinutes.value);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="py-4 flex-col flex gap-6">
|
||||||
|
<div class="flex flex-col items-start gap-1 py-1">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12 py-1">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.LABEL'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
<p class="mb-0 text-n-slate-11 text-sm">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.DESCRIPTION'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col items-start gap-4">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12 py-1">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.LABEL'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
<div
|
||||||
|
class="flex items-start gap-2 flex-wrap"
|
||||||
|
@mouseleave="hoveredLabel = null"
|
||||||
|
>
|
||||||
|
<LabelItem
|
||||||
|
v-for="tag in addedTags"
|
||||||
|
:key="tag.id"
|
||||||
|
:label="tag"
|
||||||
|
:is-hovered="hoveredLabel === tag.id"
|
||||||
|
class="h-8"
|
||||||
|
@remove="onClickRemoveTag"
|
||||||
|
@hover="hoveredLabel = tag.id"
|
||||||
|
/>
|
||||||
|
<AddDataDropdown
|
||||||
|
:label="
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.ADD_TAG'
|
||||||
|
)
|
||||||
|
"
|
||||||
|
:search-placeholder="
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.TAGS.DROPDOWN.SEARCH_PLACEHOLDER'
|
||||||
|
)
|
||||||
|
"
|
||||||
|
:items="filteredTags"
|
||||||
|
class="[&>button]:!text-n-blue-text"
|
||||||
|
@add="onClickAddTag"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex flex-col items-start gap-4">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12 py-1">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY.FORM.EXCLUSION_RULES.DURATION.LABEL'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
<div
|
||||||
|
class="flex items-center gap-2 flex-1 [&>select]:!bg-n-alpha-2 [&>select]:!outline-none [&>select]:hover:brightness-110"
|
||||||
|
>
|
||||||
|
<!-- allow 10 mins to 999 days -->
|
||||||
|
<DurationInput
|
||||||
|
v-model:unit="windowUnit"
|
||||||
|
v-model:model-value="excludeOlderThanMinutes"
|
||||||
|
:min="MIN_DURATION_MINUTES"
|
||||||
|
:max="MAX_DURATION_MINUTES"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref, onMounted } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import Input from 'dashboard/components-next/input/Input.vue';
|
||||||
|
import DurationInput from 'dashboard/components-next/input/DurationInput.vue';
|
||||||
|
import { DURATION_UNITS } from 'dashboard/components-next/input/constants';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const fairDistributionLimit = defineModel('fairDistributionLimit', {
|
||||||
|
type: Number,
|
||||||
|
default: 100,
|
||||||
|
set(value) {
|
||||||
|
return Number(value) || 0;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const fairDistributionWindow = defineModel('fairDistributionWindow', {
|
||||||
|
type: Number,
|
||||||
|
default: 3600,
|
||||||
|
set(value) {
|
||||||
|
return Number(value) || 0;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const windowUnit = ref(DURATION_UNITS.MINUTES);
|
||||||
|
|
||||||
|
const detectUnit = minutes => {
|
||||||
|
const m = Number(minutes) || 0;
|
||||||
|
if (m === 0) return DURATION_UNITS.MINUTES;
|
||||||
|
if (m % (24 * 60) === 0) return DURATION_UNITS.DAYS;
|
||||||
|
if (m % 60 === 0) return DURATION_UNITS.HOURS;
|
||||||
|
return DURATION_UNITS.MINUTES;
|
||||||
|
};
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
windowUnit.value = detectUnit(fairDistributionWindow.value);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="flex items-start xl:items-center flex-col md:flex-row gap-4 lg:gap-3 bg-n-solid-1 p-4 outline outline-1 outline-n-weak rounded-xl"
|
||||||
|
>
|
||||||
|
<div class="flex items-center gap-3">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.FORM.FAIR_DISTRIBUTION.INPUT_MAX'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
<div class="flex-1">
|
||||||
|
<Input
|
||||||
|
v-model="fairDistributionLimit"
|
||||||
|
type="number"
|
||||||
|
placeholder="100"
|
||||||
|
max="100000"
|
||||||
|
class="w-full"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="flex sm:flex-row flex-col items-start sm:items-center gap-4">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12">
|
||||||
|
{{
|
||||||
|
t(
|
||||||
|
'ASSIGNMENT_POLICY.AGENT_ASSIGNMENT_POLICY.FORM.FAIR_DISTRIBUTION.DURATION'
|
||||||
|
)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="flex items-center gap-2 flex-1 [&>select]:!bg-n-alpha-2 [&>select]:!outline-none [&>select]:hover:brightness-110"
|
||||||
|
>
|
||||||
|
<!-- allow 10 mins to 999 days -->
|
||||||
|
<DurationInput
|
||||||
|
v-model:model-value="fairDistributionWindow"
|
||||||
|
v-model:unit="windowUnit"
|
||||||
|
:min="10"
|
||||||
|
:max="1438560"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
<script setup>
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
import Button from 'dashboard/components-next/button/Button.vue';
|
||||||
|
import Spinner from 'dashboard/components-next/spinner/Spinner.vue';
|
||||||
|
import AddDataDropdown from 'dashboard/components-next/AssignmentPolicy/components/AddDataDropdown.vue';
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
inboxList: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
isFetching: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['delete', 'add', 'update']);
|
||||||
|
|
||||||
|
const inboxCapacityLimits = defineModel('inboxCapacityLimits', {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
});
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
|
const BASE_KEY = 'ASSIGNMENT_POLICY.AGENT_CAPACITY_POLICY';
|
||||||
|
const DEFAULT_CONVERSATION_LIMIT = 10;
|
||||||
|
const MIN_CONVERSATION_LIMIT = 1;
|
||||||
|
const MAX_CONVERSATION_LIMIT = 100000;
|
||||||
|
|
||||||
|
const selectedInboxIds = computed(
|
||||||
|
() => new Set(inboxCapacityLimits.value.map(limit => limit.inboxId))
|
||||||
|
);
|
||||||
|
|
||||||
|
const availableInboxes = computed(() =>
|
||||||
|
props.inboxList.filter(
|
||||||
|
inbox => inbox && !selectedInboxIds.value.has(inbox.id)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const isLimitValid = limit => {
|
||||||
|
return (
|
||||||
|
limit.conversationLimit >= MIN_CONVERSATION_LIMIT &&
|
||||||
|
limit.conversationLimit <= MAX_CONVERSATION_LIMIT
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const inboxMap = computed(
|
||||||
|
() => new Map(props.inboxList.map(inbox => [inbox.id, inbox]))
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleAddInbox = inbox => {
|
||||||
|
emit('add', {
|
||||||
|
inboxId: inbox.id,
|
||||||
|
conversationLimit: DEFAULT_CONVERSATION_LIMIT,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleRemoveLimit = limitId => {
|
||||||
|
emit('delete', limitId);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleLimitChange = limit => {
|
||||||
|
if (isLimitValid(limit)) {
|
||||||
|
emit('update', limit);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getInboxName = inboxId => {
|
||||||
|
return inboxMap.value.get(inboxId)?.name || '';
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="py-4 flex-col flex gap-3">
|
||||||
|
<div class="flex items-center w-full gap-8 justify-between pt-1 pb-3">
|
||||||
|
<label class="text-sm font-medium text-n-slate-12">
|
||||||
|
{{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.LABEL`) }}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<AddDataDropdown
|
||||||
|
:label="t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.ADD_BUTTON`)"
|
||||||
|
:search-placeholder="
|
||||||
|
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SELECT_INBOX`)
|
||||||
|
"
|
||||||
|
:items="availableInboxes"
|
||||||
|
@add="handleAddInbox"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="isFetching"
|
||||||
|
class="flex items-center justify-center py-3 w-full text-n-slate-11"
|
||||||
|
>
|
||||||
|
<Spinner />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-else-if="!inboxCapacityLimits.length"
|
||||||
|
class="custom-dashed-border flex items-center justify-center py-6 w-full"
|
||||||
|
>
|
||||||
|
<span class="text-sm text-n-slate-11">
|
||||||
|
{{ t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.EMPTY_STATE`) }}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-else class="flex-col flex gap-3">
|
||||||
|
<div
|
||||||
|
v-for="(limit, index) in inboxCapacityLimits"
|
||||||
|
:key="limit.id || `temp-${index}`"
|
||||||
|
class="flex items-center gap-3"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="flex items-start rounded-lg outline-1 outline cursor-not-allowed text-n-slate-11 outline-n-weak py-2.5 px-3 text-sm w-full"
|
||||||
|
>
|
||||||
|
{{ getInboxName(limit.inboxId) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
class="py-2.5 px-3 rounded-lg gap-2 outline outline-1 flex-shrink-0 flex items-center"
|
||||||
|
:class="[
|
||||||
|
!isLimitValid(limit) ? 'outline-n-ruby-8' : 'outline-n-weak',
|
||||||
|
]"
|
||||||
|
>
|
||||||
|
<label class="text-sm text-n-slate-12 ltr:pr-2 rtl:pl-2">
|
||||||
|
{{
|
||||||
|
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.MAX_CONVERSATIONS`)
|
||||||
|
}}
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="h-5 w-px bg-n-weak" />
|
||||||
|
|
||||||
|
<input
|
||||||
|
v-model.number="limit.conversationLimit"
|
||||||
|
type="number"
|
||||||
|
:min="MIN_CONVERSATION_LIMIT"
|
||||||
|
:max="MAX_CONVERSATION_LIMIT"
|
||||||
|
class="reset-base bg-transparent focus:outline-none max-w-20 text-sm"
|
||||||
|
:class="[
|
||||||
|
!isLimitValid(limit)
|
||||||
|
? 'placeholder:text-n-ruby-9 !text-n-ruby-9'
|
||||||
|
: 'placeholder:text-n-slate-10 text-n-slate-12',
|
||||||
|
]"
|
||||||
|
:placeholder="
|
||||||
|
t(`${BASE_KEY}.FORM.INBOX_CAPACITY_LIMIT.FIELD.SET_LIMIT`)
|
||||||
|
"
|
||||||
|
@blur="handleLimitChange(limit)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
type="button"
|
||||||
|
slate
|
||||||
|
icon="i-lucide-trash"
|
||||||
|
class="flex-shrink-0"
|
||||||
|
@click="handleRemoveLimit(limit.id)"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<script setup>
|
||||||
|
const props = defineProps({
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
description: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
|
isActive: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['select']);
|
||||||
|
|
||||||
|
const handleChange = () => {
|
||||||
|
if (!props.isActive) {
|
||||||
|
emit('select', props.id);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div
|
||||||
|
class="relative cursor-pointer rounded-xl outline outline-1 p-4 transition-all duration-200 bg-n-solid-1 py-4 ltr:pl-4 rtl:pr-4 ltr:pr-6 rtl:pl-6"
|
||||||
|
:class="[
|
||||||
|
isActive ? 'outline-n-blue-9' : 'outline-n-weak hover:outline-n-strong',
|
||||||
|
]"
|
||||||
|
@click="handleChange"
|
||||||
|
>
|
||||||
|
<div class="absolute top-4 right-4">
|
||||||
|
<input
|
||||||
|
:id="`${id}`"
|
||||||
|
:checked="isActive"
|
||||||
|
:value="id"
|
||||||
|
:name="id"
|
||||||
|
type="radio"
|
||||||
|
class="h-4 w-4 border-n-slate-6 text-n-brand focus:ring-n-brand focus:ring-offset-0"
|
||||||
|
@change="handleChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="flex flex-col gap-3 items-start">
|
||||||
|
<h3 class="text-sm font-medium text-n-slate-12">
|
||||||
|
{{ label }}
|
||||||
|
</h3>
|
||||||
|
<p class="text-sm text-n-slate-11">
|
||||||
|
{{ description }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
<script setup>
|
||||||
|
import AddDataDropdown from '../AddDataDropdown.vue';
|
||||||
|
|
||||||
|
const mockInboxes = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'Website Support',
|
||||||
|
email: 'support@company.com',
|
||||||
|
icon: 'i-lucide-globe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Email Support',
|
||||||
|
email: 'help@company.com',
|
||||||
|
icon: 'i-lucide-mail',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'WhatsApp Business',
|
||||||
|
phoneNumber: '+1 555-0123',
|
||||||
|
icon: 'i-lucide-message-circle',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'Facebook Messenger',
|
||||||
|
email: 'messenger@company.com',
|
||||||
|
icon: 'i-lucide-facebook',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
name: 'Twitter DM',
|
||||||
|
email: 'twitter@company.com',
|
||||||
|
icon: 'i-lucide-twitter',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const mockTags = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'urgent',
|
||||||
|
color: '#ff4757',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'bug',
|
||||||
|
color: '#ff6b6b',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'feature-request',
|
||||||
|
color: '#4834d4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'documentation',
|
||||||
|
color: '#26de81',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const handleAdd = item => {
|
||||||
|
console.log('Add item:', item);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/AddDataDropdown"
|
||||||
|
:layout="{ type: 'grid', width: '500px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage - Inboxes">
|
||||||
|
<div class="p-8 bg-n-background flex gap-4 h-[400px] items-start">
|
||||||
|
<AddDataDropdown
|
||||||
|
label="Add Inbox"
|
||||||
|
search-placeholder="Search inboxes..."
|
||||||
|
:items="mockInboxes"
|
||||||
|
@add="handleAdd"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Basic Usage - Tags">
|
||||||
|
<div class="p-8 bg-n-background flex gap-4 h-[400px] items-start">
|
||||||
|
<AddDataDropdown
|
||||||
|
label="Add Tag"
|
||||||
|
search-placeholder="Search tags..."
|
||||||
|
:items="mockTags"
|
||||||
|
@add="handleAdd"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import BaseInfo from '../BaseInfo.vue';
|
||||||
|
|
||||||
|
const policyName = ref('Round Robin Policy');
|
||||||
|
const description = ref(
|
||||||
|
'Distributes conversations evenly among available agents'
|
||||||
|
);
|
||||||
|
const enabled = ref(true);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/BaseInfo"
|
||||||
|
:layout="{ type: 'grid', width: '600px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<BaseInfo
|
||||||
|
v-model:policy-name="policyName"
|
||||||
|
v-model:description="description"
|
||||||
|
v-model:enabled="enabled"
|
||||||
|
name-label="Policy Name"
|
||||||
|
name-placeholder="Enter policy name"
|
||||||
|
description-label="Description"
|
||||||
|
description-placeholder="Enter policy description"
|
||||||
|
status-label="Status"
|
||||||
|
status-placeholder="Active"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<script setup>
|
||||||
|
import CardPopover from '../CardPopover.vue';
|
||||||
|
|
||||||
|
const mockItems = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'Website Support',
|
||||||
|
icon: 'i-lucide-globe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Email Support',
|
||||||
|
icon: 'i-lucide-mail',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'WhatsApp Business',
|
||||||
|
icon: 'i-lucide-message-circle',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'Facebook Messenger',
|
||||||
|
icon: 'i-lucide-facebook',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const mockUsers = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'John Smith',
|
||||||
|
email: 'john.smith@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Sarah Johnson',
|
||||||
|
email: 'sarah.johnson@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'Mike Chen',
|
||||||
|
email: 'mike.chen@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=3',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'Emily Davis',
|
||||||
|
email: 'emily.davis@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
name: 'Alex Rodriguez',
|
||||||
|
email: 'alex.rodriguez@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=5',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/CardPopover"
|
||||||
|
:layout="{ type: 'grid', width: '800px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background flex gap-4 h-96 items-start">
|
||||||
|
<CardPopover
|
||||||
|
:count="3"
|
||||||
|
title="Added Inboxes"
|
||||||
|
icon="i-lucide-inbox"
|
||||||
|
:items="mockItems.slice(0, 3)"
|
||||||
|
@fetch="() => console.log('Fetch triggered')"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background flex gap-4 h-96 items-start">
|
||||||
|
<CardPopover
|
||||||
|
:count="3"
|
||||||
|
title="Added Agents"
|
||||||
|
icon="i-lucide-users-round"
|
||||||
|
:items="mockUsers.slice(0, 3)"
|
||||||
|
@fetch="() => console.log('Fetch triggered')"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
<script setup>
|
||||||
|
import DataTable from '../DataTable.vue';
|
||||||
|
|
||||||
|
const mockItems = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'Website Support',
|
||||||
|
email: 'support@company.com',
|
||||||
|
icon: 'i-lucide-globe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Email Support',
|
||||||
|
email: 'help@company.com',
|
||||||
|
icon: 'i-lucide-mail',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'WhatsApp Business',
|
||||||
|
phoneNumber: '+1 555-0123',
|
||||||
|
icon: 'i-lucide-message-circle',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const mockAgentList = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'John Doe',
|
||||||
|
email: 'john.doe@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=1',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'Jane Smith',
|
||||||
|
email: 'jane.smith@example.com',
|
||||||
|
avatarUrl: 'https://i.pravatar.cc/150?img=2',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const handleDelete = itemId => {
|
||||||
|
console.log('Delete item:', itemId);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/DataTable"
|
||||||
|
:layout="{ type: 'grid', width: '800px' }"
|
||||||
|
>
|
||||||
|
<Variant title="With Data">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<DataTable
|
||||||
|
:items="mockItems"
|
||||||
|
:is-fetching="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="With Agents">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<DataTable
|
||||||
|
:items="mockAgentList"
|
||||||
|
:is-fetching="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Loading State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<DataTable :items="[]" is-fetching @delete="handleDelete" />
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Empty State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<DataTable
|
||||||
|
:items="[]"
|
||||||
|
:is-fetching="false"
|
||||||
|
empty-state-message="No items found"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<script setup>
|
||||||
|
import ExclusionRules from '../ExclusionRules.vue';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
const mockTagsList = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: 'urgent',
|
||||||
|
color: '#ff4757',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: 'bug',
|
||||||
|
color: '#ff6b6b',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: 'feature-request',
|
||||||
|
color: '#4834d4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 4,
|
||||||
|
name: 'documentation',
|
||||||
|
color: '#26de81',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 5,
|
||||||
|
name: 'enhancement',
|
||||||
|
color: '#2ed573',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 6,
|
||||||
|
name: 'question',
|
||||||
|
color: '#ffa502',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 7,
|
||||||
|
name: 'duplicate',
|
||||||
|
color: '#747d8c',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 8,
|
||||||
|
name: 'wontfix',
|
||||||
|
color: '#57606f',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const excludedLabelsBasic = ref([]);
|
||||||
|
const excludeOlderThanHoursBasic = ref(10);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/ExclusionRules"
|
||||||
|
:layout="{ type: 'grid', width: '1200px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background h-[600px]">
|
||||||
|
<ExclusionRules
|
||||||
|
v-model:excluded-labels="excludedLabelsBasic"
|
||||||
|
v-model:exclude-older-than-minutes="excludeOlderThanHoursBasic"
|
||||||
|
:tags-list="mockTagsList"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import FairDistribution from '../FairDistribution.vue';
|
||||||
|
|
||||||
|
const fairDistributionLimit = ref(100);
|
||||||
|
const fairDistributionWindow = ref(3600);
|
||||||
|
const windowUnit = ref('minutes');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/FairDistribution"
|
||||||
|
:layout="{ type: 'grid', width: '800px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<FairDistribution
|
||||||
|
v-model:fair-distribution-limit="fairDistributionLimit"
|
||||||
|
v-model:fair-distribution-window="fairDistributionWindow"
|
||||||
|
v-model:window-unit="windowUnit"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,108 @@
|
|||||||
|
<script setup>
|
||||||
|
import InboxCapacityLimits from '../InboxCapacityLimits.vue';
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
|
const mockInboxList = [
|
||||||
|
{
|
||||||
|
value: 1,
|
||||||
|
label: 'Website Support',
|
||||||
|
icon: 'i-lucide-globe',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 2,
|
||||||
|
label: 'Email Support',
|
||||||
|
icon: 'i-lucide-mail',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 3,
|
||||||
|
label: 'WhatsApp Business',
|
||||||
|
icon: 'i-lucide-message-circle',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 4,
|
||||||
|
label: 'Facebook Messenger',
|
||||||
|
icon: 'i-lucide-facebook',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 5,
|
||||||
|
label: 'Twitter DM',
|
||||||
|
icon: 'i-lucide-twitter',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: 6,
|
||||||
|
label: 'Telegram',
|
||||||
|
icon: 'i-lucide-send',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const inboxCapacityLimitsEmpty = ref([]);
|
||||||
|
const inboxCapacityLimitsNew = ref([
|
||||||
|
{ id: 1, inboxId: 1, conversationLimit: 5 },
|
||||||
|
{ inboxId: null, conversationLimit: null },
|
||||||
|
]);
|
||||||
|
|
||||||
|
const handleDelete = id => {
|
||||||
|
console.log('Delete capacity limit:', id);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/InboxCapacityLimits"
|
||||||
|
:layout="{ type: 'grid', width: '900px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Empty State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<InboxCapacityLimits
|
||||||
|
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
|
||||||
|
:inbox-list="mockInboxList"
|
||||||
|
:is-fetching="false"
|
||||||
|
:is-updating="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Loading State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<InboxCapacityLimits
|
||||||
|
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
|
||||||
|
:inbox-list="mockInboxList"
|
||||||
|
is-fetching
|
||||||
|
:is-updating="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="With New Row and existing data">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<InboxCapacityLimits
|
||||||
|
v-model:inbox-capacity-limits="inboxCapacityLimitsNew"
|
||||||
|
:inbox-list="mockInboxList"
|
||||||
|
:is-fetching="false"
|
||||||
|
:is-updating="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Interactive Demo">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<InboxCapacityLimits
|
||||||
|
v-model:inbox-capacity-limits="inboxCapacityLimitsEmpty"
|
||||||
|
:inbox-list="mockInboxList"
|
||||||
|
:is-fetching="false"
|
||||||
|
:is-updating="false"
|
||||||
|
@delete="handleDelete"
|
||||||
|
/>
|
||||||
|
<div class="mt-4 p-4 bg-n-alpha-2 rounded-lg">
|
||||||
|
<h4 class="text-sm font-medium mb-2">Current Limits:</h4>
|
||||||
|
<pre class="text-xs">{{
|
||||||
|
JSON.stringify(inboxCapacityLimitsEmpty, null, 2)
|
||||||
|
}}</pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
<script setup>
|
||||||
|
import { ref } from 'vue';
|
||||||
|
import RadioCard from '../RadioCard.vue';
|
||||||
|
|
||||||
|
const selectedOption = ref('round_robin');
|
||||||
|
|
||||||
|
const handleSelect = value => {
|
||||||
|
selectedOption.value = value;
|
||||||
|
console.log('Selected:', value);
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Story
|
||||||
|
title="Components/AgentManagementPolicy/RadioCard"
|
||||||
|
:layout="{ type: 'grid', width: '600px' }"
|
||||||
|
>
|
||||||
|
<Variant title="Basic Usage">
|
||||||
|
<div class="p-8 bg-n-background space-y-4">
|
||||||
|
<RadioCard
|
||||||
|
id="round_robin"
|
||||||
|
label="Round Robin"
|
||||||
|
description="Distributes conversations evenly among all available agents in a rotating manner"
|
||||||
|
:is-active="selectedOption === 'round_robin'"
|
||||||
|
@select="handleSelect"
|
||||||
|
/>
|
||||||
|
<RadioCard
|
||||||
|
id="balanced"
|
||||||
|
label="Balanced Assignment"
|
||||||
|
description="Assigns conversations based on agent workload to maintain balance"
|
||||||
|
:is-active="selectedOption === 'balanced'"
|
||||||
|
@select="handleSelect"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Active State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<RadioCard
|
||||||
|
id="active_option"
|
||||||
|
label="Active Option"
|
||||||
|
description="This option is currently selected and active"
|
||||||
|
is-active
|
||||||
|
@select="handleSelect"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
|
||||||
|
<Variant title="Inactive State">
|
||||||
|
<div class="p-8 bg-n-background">
|
||||||
|
<RadioCard
|
||||||
|
id="inactive_option"
|
||||||
|
label="Inactive Option"
|
||||||
|
description="This option is not selected and can be clicked to activate"
|
||||||
|
is-active
|
||||||
|
@select="handleSelect"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</Variant>
|
||||||
|
</Story>
|
||||||
|
</template>
|
||||||
@@ -86,8 +86,8 @@ const handleLabelAction = async ({ value }) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRemoveLabel = labelId => {
|
const handleRemoveLabel = label => {
|
||||||
return handleLabelAction({ value: labelId });
|
return handleLabelAction({ value: label.id });
|
||||||
};
|
};
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const props = defineProps({
|
|||||||
const emit = defineEmits(['remove', 'hover']);
|
const emit = defineEmits(['remove', 'hover']);
|
||||||
|
|
||||||
const handleRemoveLabel = () => {
|
const handleRemoveLabel = () => {
|
||||||
emit('remove', props.label?.id);
|
emit('remove', props.label);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMouseEnter = () => {
|
const handleMouseEnter = () => {
|
||||||
@@ -45,6 +45,7 @@ const handleMouseEnter = () => {
|
|||||||
<Button
|
<Button
|
||||||
class="transition-opacity duration-200 !h-7 ltr:rounded-r-md rtl:rounded-l-md ltr:rounded-l-none rtl:rounded-r-none w-6 bg-transparent"
|
class="transition-opacity duration-200 !h-7 ltr:rounded-r-md rtl:rounded-l-md ltr:rounded-l-none rtl:rounded-r-none w-6 bg-transparent"
|
||||||
:class="{ 'opacity-0': !isHovered, 'opacity-100': isHovered }"
|
:class="{ 'opacity-0': !isHovered, 'opacity-100': isHovered }"
|
||||||
|
type="button"
|
||||||
slate
|
slate
|
||||||
xs
|
xs
|
||||||
faded
|
faded
|
||||||
|
|||||||
@@ -103,6 +103,12 @@ const validationError = computed(() => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const inputFieldType = computed(() => {
|
||||||
|
if (inputType.value === 'date') return 'date';
|
||||||
|
if (inputType.value === 'number') return 'number';
|
||||||
|
return 'text';
|
||||||
|
});
|
||||||
|
|
||||||
const resetModelOnAttributeKeyChange = newAttributeKey => {
|
const resetModelOnAttributeKeyChange = newAttributeKey => {
|
||||||
/**
|
/**
|
||||||
* Resets the filter values and operator when the attribute key changes. This ensures that
|
* Resets the filter values and operator when the attribute key changes. This ensures that
|
||||||
@@ -182,7 +188,7 @@ defineExpose({ validate });
|
|||||||
<Input
|
<Input
|
||||||
v-else
|
v-else
|
||||||
v-model="values"
|
v-model="values"
|
||||||
:type="inputType === 'date' ? 'date' : 'text'"
|
:type="inputFieldType"
|
||||||
class="[&>input]:h-8 [&>input]:py-1.5 [&>input]:outline-offset-0"
|
class="[&>input]:h-8 [&>input]:py-1.5 [&>input]:outline-offset-0"
|
||||||
:placeholder="t('FILTER.INPUT_PLACEHOLDER')"
|
:placeholder="t('FILTER.INPUT_PLACEHOLDER')"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -164,8 +164,8 @@ export function useConversationFilterContext() {
|
|||||||
value: CONVERSATION_ATTRIBUTES.DISPLAY_ID,
|
value: CONVERSATION_ATTRIBUTES.DISPLAY_ID,
|
||||||
attributeName: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
|
attributeName: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
|
||||||
label: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
|
label: t('FILTER.ATTRIBUTES.CONVERSATION_IDENTIFIER'),
|
||||||
inputType: 'plainText',
|
inputType: 'number',
|
||||||
datatype: 'number',
|
dataType: 'number',
|
||||||
filterOperators: containmentOperators.value,
|
filterOperators: containmentOperators.value,
|
||||||
attributeModel: 'standard',
|
attributeModel: 'standard',
|
||||||
},
|
},
|
||||||
@@ -179,7 +179,7 @@ export function useConversationFilterContext() {
|
|||||||
id: campaign.id,
|
id: campaign.id,
|
||||||
name: campaign.title,
|
name: campaign.title,
|
||||||
})),
|
})),
|
||||||
datatype: 'number',
|
dataType: 'number',
|
||||||
filterOperators: presenceOperators.value,
|
filterOperators: presenceOperators.value,
|
||||||
attributeModel: 'standard',
|
attributeModel: 'standard',
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ watch(unit, () => {
|
|||||||
<option :value="DURATION_UNITS.HOURS">
|
<option :value="DURATION_UNITS.HOURS">
|
||||||
{{ t('DURATION_INPUT.HOURS') }}
|
{{ t('DURATION_INPUT.HOURS') }}
|
||||||
</option>
|
</option>
|
||||||
<option :value="DURATION_UNITS.DAYS">{{ t('DURATION_INPUT.DAYS') }}</option>
|
<option :value="DURATION_UNITS.DAYS">
|
||||||
|
{{ t('DURATION_INPUT.DAYS') }}
|
||||||
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ const props = defineProps({
|
|||||||
validator: value => ['info', 'error', 'success'].includes(value),
|
validator: value => ['info', 'error', 'success'].includes(value),
|
||||||
},
|
},
|
||||||
min: { type: String, default: '' },
|
min: { type: String, default: '' },
|
||||||
|
max: { type: String, default: '' },
|
||||||
autofocus: { type: Boolean, default: false },
|
autofocus: { type: Boolean, default: false },
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -54,7 +55,12 @@ const inputOutlineClass = computed(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const handleInput = event => {
|
const handleInput = event => {
|
||||||
emit('update:modelValue', event.target.value);
|
let value = event.target.value;
|
||||||
|
// Convert to number if type is number and value is not empty
|
||||||
|
if (props.type === 'number' && value !== '') {
|
||||||
|
value = Number(value);
|
||||||
|
}
|
||||||
|
emit('update:modelValue', value);
|
||||||
emit('input', event);
|
emit('input', event);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -108,7 +114,12 @@ onMounted(() => {
|
|||||||
:placeholder="placeholder"
|
:placeholder="placeholder"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
:min="['date', 'datetime-local', 'time'].includes(type) ? min : undefined"
|
:min="['date', 'datetime-local', 'time'].includes(type) ? min : undefined"
|
||||||
class="block w-full reset-base text-sm h-10 !px-3 !py-2.5 !mb-0 outline outline-1 border-none border-0 outline-offset-[-1px] rounded-lg bg-n-alpha-black2 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10 disabled:cursor-not-allowed disabled:opacity-50 text-n-slate-12 transition-all duration-500 ease-in-out"
|
:max="
|
||||||
|
['date', 'datetime-local', 'time', 'number'].includes(type)
|
||||||
|
? max
|
||||||
|
: undefined
|
||||||
|
"
|
||||||
|
class="block w-full reset-base text-sm h-10 !px-3 !py-2.5 !mb-0 outline outline-1 border-none border-0 outline-offset-[-1px] rounded-lg bg-n-alpha-black2 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-n-slate-10 dark:placeholder:text-n-slate-10 disabled:cursor-not-allowed disabled:opacity-50 text-n-slate-12 transition-all duration-500 ease-in-out [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none"
|
||||||
@input="handleInput"
|
@input="handleInput"
|
||||||
@focus="handleFocus"
|
@focus="handleFocus"
|
||||||
@blur="handleBlur"
|
@blur="handleBlur"
|
||||||
|
|||||||
@@ -8,6 +8,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: REPLY_EDITOR_MODES.REPLY,
|
default: REPLY_EDITOR_MODES.REPLY,
|
||||||
},
|
},
|
||||||
|
disabled: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
defineEmits(['toggleMode']);
|
defineEmits(['toggleMode']);
|
||||||
@@ -20,9 +24,12 @@ const privateModeSize = useElementSize(wootEditorPrivateMode);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Computed boolean indicating if the editor is in private note mode
|
* Computed boolean indicating if the editor is in private note mode
|
||||||
|
* When disabled, always show NOTE mode regardless of actual mode prop
|
||||||
* @type {ComputedRef<boolean>}
|
* @type {ComputedRef<boolean>}
|
||||||
*/
|
*/
|
||||||
const isPrivate = computed(() => props.mode === REPLY_EDITOR_MODES.NOTE);
|
const isPrivate = computed(() => {
|
||||||
|
return props.disabled || props.mode === REPLY_EDITOR_MODES.NOTE;
|
||||||
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Computes the width of the sliding background chip in pixels
|
* Computes the width of the sliding background chip in pixels
|
||||||
@@ -53,6 +60,10 @@ const translateValue = computed(() => {
|
|||||||
<template>
|
<template>
|
||||||
<button
|
<button
|
||||||
class="flex items-center w-auto h-8 p-1 transition-all border rounded-full bg-n-alpha-2 group relative duration-300 ease-in-out z-0"
|
class="flex items-center w-auto h-8 p-1 transition-all border rounded-full bg-n-alpha-2 group relative duration-300 ease-in-out z-0"
|
||||||
|
:disabled="disabled"
|
||||||
|
:class="{
|
||||||
|
'cursor-not-allowed': disabled,
|
||||||
|
}"
|
||||||
@click="$emit('toggleMode')"
|
@click="$emit('toggleMode')"
|
||||||
>
|
>
|
||||||
<div ref="wootEditorReplyMode" class="flex items-center gap-1 px-2 z-20">
|
<div ref="wootEditorReplyMode" class="flex items-center gap-1 px-2 z-20">
|
||||||
@@ -62,7 +73,10 @@ const translateValue = computed(() => {
|
|||||||
{{ $t('CONVERSATION.REPLYBOX.PRIVATE_NOTE') }}
|
{{ $t('CONVERSATION.REPLYBOX.PRIVATE_NOTE') }}
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="absolute shadow-sm rounded-full h-6 w-[var(--chip-width)] transition-all duration-300 ease-in-out translate-x-[var(--translate-x)] rtl:translate-x-[var(--rtl-translate-x)] bg-n-solid-1"
|
class="absolute shadow-sm rounded-full h-6 w-[var(--chip-width)] ease-in-out translate-x-[var(--translate-x)] rtl:translate-x-[var(--rtl-translate-x)] bg-n-solid-1"
|
||||||
|
:class="{
|
||||||
|
'transition-all duration-300': !disabled,
|
||||||
|
}"
|
||||||
:style="{
|
:style="{
|
||||||
'--chip-width': width,
|
'--chip-width': width,
|
||||||
'--translate-x': translateValue,
|
'--translate-x': translateValue,
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import { getAllowedFileTypesByChannel } from '@chatwoot/utils';
|
|||||||
import { ALLOWED_FILE_TYPES } from 'shared/constants/messages';
|
import { ALLOWED_FILE_TYPES } from 'shared/constants/messages';
|
||||||
import VideoCallButton from '../VideoCallButton.vue';
|
import VideoCallButton from '../VideoCallButton.vue';
|
||||||
import AIAssistanceButton from '../AIAssistanceButton.vue';
|
import AIAssistanceButton from '../AIAssistanceButton.vue';
|
||||||
import { REPLY_EDITOR_MODES } from './constants';
|
|
||||||
import { INBOX_TYPES } from 'dashboard/helper/inbox';
|
import { INBOX_TYPES } from 'dashboard/helper/inbox';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
import NextButton from 'dashboard/components-next/button/Button.vue';
|
import NextButton from 'dashboard/components-next/button/Button.vue';
|
||||||
@@ -20,9 +19,9 @@ export default {
|
|||||||
components: { NextButton, FileUpload, VideoCallButton, AIAssistanceButton },
|
components: { NextButton, FileUpload, VideoCallButton, AIAssistanceButton },
|
||||||
mixins: [inboxMixin],
|
mixins: [inboxMixin],
|
||||||
props: {
|
props: {
|
||||||
mode: {
|
isNote: {
|
||||||
type: String,
|
type: Boolean,
|
||||||
default: REPLY_EDITOR_MODES.REPLY,
|
default: false,
|
||||||
},
|
},
|
||||||
onSend: {
|
onSend: {
|
||||||
type: Function,
|
type: Function,
|
||||||
@@ -168,9 +167,6 @@ export default {
|
|||||||
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
|
isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount',
|
||||||
uiFlags: 'integrations/getUIFlags',
|
uiFlags: 'integrations/getUIFlags',
|
||||||
}),
|
}),
|
||||||
isNote() {
|
|
||||||
return this.mode === REPLY_EDITOR_MODES.NOTE;
|
|
||||||
},
|
|
||||||
wrapClass() {
|
wrapClass() {
|
||||||
return {
|
return {
|
||||||
'is-note-mode': this.isNote,
|
'is-note-mode': this.isNote,
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ export default {
|
|||||||
type: String,
|
type: String,
|
||||||
default: REPLY_EDITOR_MODES.REPLY,
|
default: REPLY_EDITOR_MODES.REPLY,
|
||||||
},
|
},
|
||||||
|
isReplyRestricted: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
isMessageLengthReachingThreshold: {
|
isMessageLengthReachingThreshold: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: () => false,
|
default: () => false,
|
||||||
@@ -30,6 +34,7 @@ export default {
|
|||||||
emit('setReplyMode', mode);
|
emit('setReplyMode', mode);
|
||||||
};
|
};
|
||||||
const handleReplyClick = () => {
|
const handleReplyClick = () => {
|
||||||
|
if (props.isReplyRestricted) return;
|
||||||
setReplyMode(REPLY_EDITOR_MODES.REPLY);
|
setReplyMode(REPLY_EDITOR_MODES.REPLY);
|
||||||
};
|
};
|
||||||
const handleNoteClick = () => {
|
const handleNoteClick = () => {
|
||||||
@@ -88,6 +93,7 @@ export default {
|
|||||||
<div class="flex justify-between h-[3.25rem] gap-2 ltr:pl-3 rtl:pr-3">
|
<div class="flex justify-between h-[3.25rem] gap-2 ltr:pl-3 rtl:pr-3">
|
||||||
<EditorModeToggle
|
<EditorModeToggle
|
||||||
:mode="mode"
|
:mode="mode"
|
||||||
|
:disabled="isReplyRestricted"
|
||||||
class="mt-3"
|
class="mt-3"
|
||||||
@toggle-mode="handleModeToggle"
|
@toggle-mode="handleModeToggle"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -170,6 +170,9 @@ export default {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
|
isReplyRestricted() {
|
||||||
|
return !this.currentChat?.can_reply && !this.isAWhatsAppChannel;
|
||||||
|
},
|
||||||
inboxId() {
|
inboxId() {
|
||||||
return this.currentChat.inbox_id;
|
return this.currentChat.inbox_id;
|
||||||
},
|
},
|
||||||
@@ -1078,6 +1081,7 @@ export default {
|
|||||||
<div ref="replyEditor" class="reply-box" :class="replyBoxClass">
|
<div ref="replyEditor" class="reply-box" :class="replyBoxClass">
|
||||||
<ReplyTopPanel
|
<ReplyTopPanel
|
||||||
:mode="replyType"
|
:mode="replyType"
|
||||||
|
:is-reply-restricted="isReplyRestricted"
|
||||||
:is-message-length-reaching-threshold="isMessageLengthReachingThreshold"
|
:is-message-length-reaching-threshold="isMessageLengthReachingThreshold"
|
||||||
:characters-remaining="charactersRemaining"
|
:characters-remaining="charactersRemaining"
|
||||||
:popout-reply-box="popOutReplyBox"
|
:popout-reply-box="popOutReplyBox"
|
||||||
@@ -1188,7 +1192,7 @@ export default {
|
|||||||
:is-on-private-note="isOnPrivateNote"
|
:is-on-private-note="isOnPrivateNote"
|
||||||
:is-recording-audio="isRecordingAudio"
|
:is-recording-audio="isRecordingAudio"
|
||||||
:is-send-disabled="isReplyButtonDisabled"
|
:is-send-disabled="isReplyButtonDisabled"
|
||||||
:mode="replyType"
|
:is-note="isPrivate"
|
||||||
:on-file-upload="onFileUpload"
|
:on-file-upload="onFileUpload"
|
||||||
:on-send="onSendReply"
|
:on-send="onSendReply"
|
||||||
:conversation-type="conversationType"
|
:conversation-type="conversationType"
|
||||||
|
|||||||
@@ -43,18 +43,22 @@ describe('useFontSize', () => {
|
|||||||
|
|
||||||
it('returns fontSizeOptions with correct structure', () => {
|
it('returns fontSizeOptions with correct structure', () => {
|
||||||
const { fontSizeOptions } = useFontSize();
|
const { fontSizeOptions } = useFontSize();
|
||||||
expect(fontSizeOptions).toHaveLength(5);
|
expect(fontSizeOptions.value).toHaveLength(5);
|
||||||
expect(fontSizeOptions[0]).toHaveProperty('value');
|
expect(fontSizeOptions.value[0]).toHaveProperty('value');
|
||||||
expect(fontSizeOptions[0]).toHaveProperty('label');
|
expect(fontSizeOptions.value[0]).toHaveProperty('label');
|
||||||
|
|
||||||
// Check specific options
|
// Check specific options
|
||||||
expect(fontSizeOptions.find(option => option.value === '16px')).toEqual({
|
expect(
|
||||||
|
fontSizeOptions.value.find(option => option.value === '16px')
|
||||||
|
).toEqual({
|
||||||
value: '16px',
|
value: '16px',
|
||||||
label:
|
label:
|
||||||
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.DEFAULT',
|
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.DEFAULT',
|
||||||
});
|
});
|
||||||
|
|
||||||
expect(fontSizeOptions.find(option => option.value === '14px')).toEqual({
|
expect(
|
||||||
|
fontSizeOptions.value.find(option => option.value === '14px')
|
||||||
|
).toEqual({
|
||||||
value: '14px',
|
value: '14px',
|
||||||
label:
|
label:
|
||||||
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.SMALLER',
|
'PROFILE_SETTINGS.FORM.INTERFACE_SECTION.FONT_SIZE.OPTIONS.SMALLER',
|
||||||
@@ -143,12 +147,12 @@ describe('useFontSize', () => {
|
|||||||
const { fontSizeOptions } = useFontSize();
|
const { fontSizeOptions } = useFontSize();
|
||||||
|
|
||||||
// Check that translation is applied
|
// Check that translation is applied
|
||||||
expect(fontSizeOptions.find(option => option.value === '14px').label).toBe(
|
expect(
|
||||||
'Smaller'
|
fontSizeOptions.value.find(option => option.value === '14px').label
|
||||||
);
|
).toBe('Smaller');
|
||||||
expect(fontSizeOptions.find(option => option.value === '16px').label).toBe(
|
expect(
|
||||||
'Default'
|
fontSizeOptions.value.find(option => option.value === '16px').label
|
||||||
);
|
).toBe('Default');
|
||||||
|
|
||||||
// Verify translation function was called with correct keys
|
// Verify translation function was called with correct keys
|
||||||
expect(mockTranslate).toHaveBeenCalledWith(
|
expect(mockTranslate).toHaveBeenCalledWith(
|
||||||
|
|||||||
@@ -77,8 +77,8 @@ export const useFontSize = () => {
|
|||||||
* Font size options for select dropdown
|
* Font size options for select dropdown
|
||||||
* @type {Array<{value: string, label: string}>}
|
* @type {Array<{value: string, label: string}>}
|
||||||
*/
|
*/
|
||||||
const fontSizeOptions = FONT_SIZE_NAMES.map(name =>
|
const fontSizeOptions = computed(() =>
|
||||||
createFontSizeOption(t, name)
|
FONT_SIZE_NAMES.map(name => createFontSizeOption(t, name))
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -96,3 +96,18 @@ export const sanitizeVariableSearchKey = (searchKey = '') => {
|
|||||||
.replace(/,/g, '') // remove commas
|
.replace(/,/g, '') // remove commas
|
||||||
.trim();
|
.trim();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert underscore-separated string to title case.
|
||||||
|
* Eg. "round_robin" => "Round Robin"
|
||||||
|
* @param {string} str
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
export const formatToTitleCase = str => {
|
||||||
|
return (
|
||||||
|
str
|
||||||
|
?.replace(/_/g, ' ')
|
||||||
|
.replace(/\b\w/g, l => l.toUpperCase())
|
||||||
|
.trim() || ''
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
convertToCategorySlug,
|
convertToCategorySlug,
|
||||||
convertToPortalSlug,
|
convertToPortalSlug,
|
||||||
sanitizeVariableSearchKey,
|
sanitizeVariableSearchKey,
|
||||||
|
formatToTitleCase,
|
||||||
} from '../commons';
|
} from '../commons';
|
||||||
|
|
||||||
describe('#getTypingUsersText', () => {
|
describe('#getTypingUsersText', () => {
|
||||||
@@ -142,3 +143,51 @@ describe('sanitizeVariableSearchKey', () => {
|
|||||||
expect(sanitizeVariableSearchKey()).toBe('');
|
expect(sanitizeVariableSearchKey()).toBe('');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('formatToTitleCase', () => {
|
||||||
|
it('converts underscore-separated string to title case', () => {
|
||||||
|
expect(formatToTitleCase('round_robin')).toBe('Round Robin');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('converts single word to title case', () => {
|
||||||
|
expect(formatToTitleCase('priority')).toBe('Priority');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('converts multiple underscores to title case', () => {
|
||||||
|
expect(formatToTitleCase('auto_assignment_policy')).toBe(
|
||||||
|
'Auto Assignment Policy'
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles already capitalized words', () => {
|
||||||
|
expect(formatToTitleCase('HIGH_PRIORITY')).toBe('HIGH PRIORITY');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles mixed case with underscores', () => {
|
||||||
|
expect(formatToTitleCase('first_Name_last')).toBe('First Name Last');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles empty string', () => {
|
||||||
|
expect(formatToTitleCase('')).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles null input', () => {
|
||||||
|
expect(formatToTitleCase(null)).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles undefined input', () => {
|
||||||
|
expect(formatToTitleCase(undefined)).toBe('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles string without underscores', () => {
|
||||||
|
expect(formatToTitleCase('hello')).toBe('Hello');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles string with numbers', () => {
|
||||||
|
expect(formatToTitleCase('priority_1_high')).toBe('Priority 1 High');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles leading and trailing underscores', () => {
|
||||||
|
expect(formatToTitleCase('_leading_trailing_')).toBe('Leading Trailing');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Delete",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "إظهار السمات",
|
"SHOW_LABELS": "إظهار السمات",
|
||||||
"HIDE_LABELS": "إخفاء السمات"
|
"HIDE_LABELS": "إخفاء السمات"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "حل المحادثة",
|
"RESOLVE_ACTION": "حل المحادثة",
|
||||||
"REOPEN_ACTION": "إعادة فتح",
|
"REOPEN_ACTION": "إعادة فتح",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "الوسوم",
|
"REPORTS_LABEL": "الوسوم",
|
||||||
"REPORTS_INBOX": "صندوق الوارد",
|
"REPORTS_INBOX": "صندوق الوارد",
|
||||||
"REPORTS_TEAM": "الفريق",
|
"REPORTS_TEAM": "الفريق",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "تعيين نفسك كـ",
|
"SET_AVAILABILITY_TITLE": "تعيين نفسك كـ",
|
||||||
"SET_YOUR_AVAILABILITY": "قم بتعيين توافرك",
|
"SET_YOUR_AVAILABILITY": "قم بتعيين توافرك",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "التبديل إلى الرد",
|
"SWITCH_TO_REPLY": "التبديل إلى الرد",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "تبديل القائمة المنسدلة"
|
"TOGGLE_SNOOZE_DROPDOWN": "تبديل القائمة المنسدلة"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "الأولوية",
|
||||||
|
"ACTIVE": "مفعل",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "تعديل"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "إلغاء"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "الوصف:",
|
||||||
|
"PLACEHOLDER": "أدخل الوصف"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "الحالة:",
|
||||||
|
"PLACEHOLDER": "اختر الحالة",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "إضافة"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "تعديل"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "إلغاء"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "الوصف:",
|
||||||
|
"PLACEHOLDER": "أدخل الوصف"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "إضافة"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "حذف",
|
||||||
|
"CANCEL_BUTTON_LABEL": "إلغاء"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Delete",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Входяща кутия",
|
"REPORTS_INBOX": "Входяща кутия",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Активен",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Редактирай"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Отмени"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Описание:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Статус:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Добавяне"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Редактирай"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Отмени"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Описание:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Добавяне"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Изтрий",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Отмени"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Mostra etiquetes",
|
"SHOW_LABELS": "Mostra etiquetes",
|
||||||
"HIDE_LABELS": "Amaga etiquetes"
|
"HIDE_LABELS": "Amaga etiquetes"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resoldre",
|
"RESOLVE_ACTION": "Resoldre",
|
||||||
"REOPEN_ACTION": "Tornar a obrir",
|
"REOPEN_ACTION": "Tornar a obrir",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Etiquetes",
|
"REPORTS_LABEL": "Etiquetes",
|
||||||
"REPORTS_INBOX": "Safata d'entrada",
|
"REPORTS_INBOX": "Safata d'entrada",
|
||||||
"REPORTS_TEAM": "Equip",
|
"REPORTS_TEAM": "Equip",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Posa't com",
|
"SET_AVAILABILITY_TITLE": "Posa't com",
|
||||||
"SET_YOUR_AVAILABILITY": "Estableix la vostra disponibilitat",
|
"SET_YOUR_AVAILABILITY": "Estableix la vostra disponibilitat",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Canvia a Respon",
|
"SWITCH_TO_REPLY": "Canvia a Respon",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Commuta el menú desplegable de posposar"
|
"TOGGLE_SNOOZE_DROPDOWN": "Commuta el menú desplegable de posposar"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Prioritat",
|
||||||
|
"ACTIVE": "Actiu",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edita"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel·la"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descripció:",
|
||||||
|
"PLACEHOLDER": "Introdueix la descripció"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Estat:",
|
||||||
|
"PLACEHOLDER": "Selecciona l'estat",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Afegir"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edita"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel·la"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descripció:",
|
||||||
|
"PLACEHOLDER": "Introdueix la descripció"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Afegir"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Esborrar",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel·la"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Vyřešit",
|
"RESOLVE_ACTION": "Vyřešit",
|
||||||
"REOPEN_ACTION": "Znovu otevřít",
|
"REOPEN_ACTION": "Znovu otevřít",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Štítky",
|
"REPORTS_LABEL": "Štítky",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Nastavte svou dostupnost",
|
"SET_YOUR_AVAILABILITY": "Nastavte svou dostupnost",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Upravit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Zrušit"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Stav:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Přidat"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Upravit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Zrušit"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Přidat"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Vymazat",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Zrušit"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Vis etiketter",
|
"SHOW_LABELS": "Vis etiketter",
|
||||||
"HIDE_LABELS": "Skjul etiketter"
|
"HIDE_LABELS": "Skjul etiketter"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Løs",
|
"RESOLVE_ACTION": "Løs",
|
||||||
"REOPEN_ACTION": "Genåben",
|
"REOPEN_ACTION": "Genåben",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Etiketter",
|
"REPORTS_LABEL": "Etiketter",
|
||||||
"REPORTS_INBOX": "Indbakke",
|
"REPORTS_INBOX": "Indbakke",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Sæt dig selv som",
|
"SET_AVAILABILITY_TITLE": "Sæt dig selv som",
|
||||||
"SET_YOUR_AVAILABILITY": "Indstil din tilgængelighed",
|
"SET_YOUR_AVAILABILITY": "Indstil din tilgængelighed",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Skift til svar",
|
"SWITCH_TO_REPLY": "Skift til svar",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Skift snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Skift snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Aktiv",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Rediger"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuller"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Beskrivelse:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Tilføj"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Rediger"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuller"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Beskrivelse:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Tilføj"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Slet",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuller"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Labels anzeigen",
|
"SHOW_LABELS": "Labels anzeigen",
|
||||||
"HIDE_LABELS": "Labels ausblenden"
|
"HIDE_LABELS": "Labels ausblenden"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Fall schließen",
|
"RESOLVE_ACTION": "Fall schließen",
|
||||||
"REOPEN_ACTION": "Wieder öffnen",
|
"REOPEN_ACTION": "Wieder öffnen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Posteingang",
|
"REPORTS_INBOX": "Posteingang",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Setzen Sie sich als",
|
"SET_AVAILABILITY_TITLE": "Setzen Sie sich als",
|
||||||
"SET_YOUR_AVAILABILITY": "Legen Sie Ihre Verfügbarkeit fest",
|
"SET_YOUR_AVAILABILITY": "Legen Sie Ihre Verfügbarkeit fest",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Zur Antwort wechseln",
|
"SWITCH_TO_REPLY": "Zur Antwort wechseln",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Schlummer-Dropdown ein-/ausblenden"
|
"TOGGLE_SNOOZE_DROPDOWN": "Schlummer-Dropdown ein-/ausblenden"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priorität",
|
||||||
|
"ACTIVE": "Aktiv",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Bearbeiten"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Stornieren"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Beschreibung:",
|
||||||
|
"PLACEHOLDER": "Beschreibung eingeben"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Status auswählen",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Hinzufügen"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Bearbeiten"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Stornieren"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Beschreibung:",
|
||||||
|
"PLACEHOLDER": "Beschreibung eingeben"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Hinzufügen"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Löschen",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Stornieren"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Προβολή ετικετών",
|
"SHOW_LABELS": "Προβολή ετικετών",
|
||||||
"HIDE_LABELS": "Απόκρυψη ετικετών"
|
"HIDE_LABELS": "Απόκρυψη ετικετών"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Επίλυση",
|
"RESOLVE_ACTION": "Επίλυση",
|
||||||
"REOPEN_ACTION": "Επαναφορά",
|
"REOPEN_ACTION": "Επαναφορά",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Ετικέτες",
|
"REPORTS_LABEL": "Ετικέτες",
|
||||||
"REPORTS_INBOX": "Εισερχόμενα",
|
"REPORTS_INBOX": "Εισερχόμενα",
|
||||||
"REPORTS_TEAM": "Ομάδα",
|
"REPORTS_TEAM": "Ομάδα",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Ορίστε τον εαυτό σας ως",
|
"SET_AVAILABILITY_TITLE": "Ορίστε τον εαυτό σας ως",
|
||||||
"SET_YOUR_AVAILABILITY": "Ορίστε τη διαθεσιμότητά σας",
|
"SET_YOUR_AVAILABILITY": "Ορίστε τη διαθεσιμότητά σας",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Εναλλαγή σε απάντηση",
|
"SWITCH_TO_REPLY": "Εναλλαγή σε απάντηση",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Εναλλαγή αναβολής dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Εναλλαγή αναβολής dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Ενεργή",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Επεξεργασία"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Άκυρο"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Περιγραφή:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Κατάσταση:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Προσθήκη"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Επεξεργασία"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Άκυρο"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Περιγραφή:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Προσθήκη"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Διαγραφή",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Άκυρο"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -444,6 +451,230 @@
|
|||||||
"Add agents to a policy - one policy per agent"
|
"Add agents to a policy - one policy per agent"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Delete",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -142,7 +142,7 @@
|
|||||||
"NEW_CAMPAIGN": "Crear campaña",
|
"NEW_CAMPAIGN": "Crear campaña",
|
||||||
"EMPTY_STATE": {
|
"EMPTY_STATE": {
|
||||||
"TITLE": "No WhatsApp campaigns are available",
|
"TITLE": "No WhatsApp campaigns are available",
|
||||||
"SUBTITLE": "Launch a WhatsApp campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started."
|
"SUBTITLE": "Lanza una campaña de WhatsApp para conectar con tus clientes directamente. Envía ofertas o has anuncios fácilmente. Haz clic en 'Crear campaña' para comenzar."
|
||||||
},
|
},
|
||||||
"CARD": {
|
"CARD": {
|
||||||
"STATUS": {
|
"STATUS": {
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"CREATE": {
|
"CREATE": {
|
||||||
"TITLE": "Create WhatsApp campaign",
|
"TITLE": "Crear campaña de WhatsApp",
|
||||||
"CANCEL_BUTTON_TEXT": "Cancelar",
|
"CANCEL_BUTTON_TEXT": "Cancelar",
|
||||||
"CREATE_BUTTON_TEXT": "Crear",
|
"CREATE_BUTTON_TEXT": "Crear",
|
||||||
"FORM": {
|
"FORM": {
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
"SEND_MESSAGE_LABEL": "Enviar mensaje",
|
"SEND_MESSAGE_LABEL": "Enviar mensaje",
|
||||||
"FORM_ERROR_MESSAGE": "Por favor, rellene todas las variables antes de enviar",
|
"FORM_ERROR_MESSAGE": "Por favor, rellene todas las variables antes de enviar",
|
||||||
"MEDIA_HEADER_LABEL": "{type} Header",
|
"MEDIA_HEADER_LABEL": "{type} Header",
|
||||||
"MEDIA_URL_LABEL": "Enter full media URL",
|
"MEDIA_URL_LABEL": "Ingrese la URL completa",
|
||||||
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
|
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
|
||||||
},
|
},
|
||||||
"FORM": {
|
"FORM": {
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Mostrar etiquetas",
|
"SHOW_LABELS": "Mostrar etiquetas",
|
||||||
"HIDE_LABELS": "Ocultar etiquetas"
|
"HIDE_LABELS": "Ocultar etiquetas"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolver",
|
"RESOLVE_ACTION": "Resolver",
|
||||||
"REOPEN_ACTION": "Reabrir",
|
"REOPEN_ACTION": "Reabrir",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -226,7 +233,7 @@
|
|||||||
"APPEARANCE": "Cambiar apariencia",
|
"APPEARANCE": "Cambiar apariencia",
|
||||||
"SUPER_ADMIN_CONSOLE": "Consola SuperAdmin",
|
"SUPER_ADMIN_CONSOLE": "Consola SuperAdmin",
|
||||||
"DOCS": "Leer la documentación",
|
"DOCS": "Leer la documentación",
|
||||||
"CHANGELOG": "Changelog",
|
"CHANGELOG": "Notas de versión",
|
||||||
"LOGOUT": "Cerrar sesión"
|
"LOGOUT": "Cerrar sesión"
|
||||||
},
|
},
|
||||||
"APP_GLOBAL": {
|
"APP_GLOBAL": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Etiquetas",
|
"REPORTS_LABEL": "Etiquetas",
|
||||||
"REPORTS_INBOX": "Bandeja de entrada",
|
"REPORTS_INBOX": "Bandeja de entrada",
|
||||||
"REPORTS_TEAM": "Equipo",
|
"REPORTS_TEAM": "Equipo",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Ponte como",
|
"SET_AVAILABILITY_TITLE": "Ponte como",
|
||||||
"SET_YOUR_AVAILABILITY": "Establecer su disponibilidad",
|
"SET_YOUR_AVAILABILITY": "Establecer su disponibilidad",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Cambiar a respuesta",
|
"SWITCH_TO_REPLY": "Cambiar a respuesta",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Cambiar el menú desplegable"
|
"TOGGLE_SNOOZE_DROPDOWN": "Cambiar el menú desplegable"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Prioridad",
|
||||||
|
"ACTIVE": "Activo",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Editar"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancelar"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descripción:",
|
||||||
|
"PLACEHOLDER": "Introducir descripción"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Estado:",
|
||||||
|
"PLACEHOLDER": "Seleccionar estado",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Añadir"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Editar"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancelar"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descripción:",
|
||||||
|
"PLACEHOLDER": "Introducir descripción"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Añadir"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Eliminar",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancelar"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
"IP_ADDRESS": "آدرس آیپی",
|
"IP_ADDRESS": "آدرس آیپی",
|
||||||
"CREATED_AT_LABEL": "ایجاد شده",
|
"CREATED_AT_LABEL": "ایجاد شده",
|
||||||
"NEW_MESSAGE": "پیام جدید",
|
"NEW_MESSAGE": "پیام جدید",
|
||||||
"CALL": "Call",
|
"CALL": "تماس",
|
||||||
"CALL_UNDER_DEVELOPMENT": "Calling is under development",
|
"CALL_UNDER_DEVELOPMENT": "Calling is under development",
|
||||||
"VOICE_INBOX_PICKER": {
|
"VOICE_INBOX_PICKER": {
|
||||||
"TITLE": "Choose a voice inbox"
|
"TITLE": "Choose a voice inbox"
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "مشاهده کردن برچسبها",
|
"SHOW_LABELS": "مشاهده کردن برچسبها",
|
||||||
"HIDE_LABELS": "پنهان کردن برچسبها"
|
"HIDE_LABELS": "پنهان کردن برچسبها"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "حل شد",
|
"RESOLVE_ACTION": "حل شد",
|
||||||
"REOPEN_ACTION": "دوباره باز کنید",
|
"REOPEN_ACTION": "دوباره باز کنید",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "برچسبها",
|
"REPORTS_LABEL": "برچسبها",
|
||||||
"REPORTS_INBOX": "صندوق ورودی",
|
"REPORTS_INBOX": "صندوق ورودی",
|
||||||
"REPORTS_TEAM": "تیم",
|
"REPORTS_TEAM": "تیم",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "خود را به عنوان",
|
"SET_AVAILABILITY_TITLE": "خود را به عنوان",
|
||||||
"SET_YOUR_AVAILABILITY": "در دسترس بودن خود را تنظیم کنید",
|
"SET_YOUR_AVAILABILITY": "در دسترس بودن خود را تنظیم کنید",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "رفتن به پاسخ",
|
"SWITCH_TO_REPLY": "رفتن به پاسخ",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "تغییر حالت بازکردن تعویق"
|
"TOGGLE_SNOOZE_DROPDOWN": "تغییر حالت بازکردن تعویق"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "اولویت",
|
||||||
|
"ACTIVE": "فعال",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "ویرایش"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "انصراف"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "توضیحات:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "وضعیت:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "افزودن"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "ویرایش"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "انصراف"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "توضیحات:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "افزودن"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "حذف",
|
||||||
|
"CANCEL_BUTTON_LABEL": "انصراف"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Ratkaise",
|
"RESOLVE_ACTION": "Ratkaise",
|
||||||
"REOPEN_ACTION": "Uudelleenavaa",
|
"REOPEN_ACTION": "Uudelleenavaa",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Tunnisteet",
|
"REPORTS_LABEL": "Tunnisteet",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Muokkaa"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Peruuta"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Kuvaus:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Tila:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Muokkaa"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Peruuta"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Kuvaus:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Poista",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Peruuta"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@
|
|||||||
"EDIT": "{agentName} updated the account configuration (#{id})"
|
"EDIT": "{agentName} updated the account configuration (#{id})"
|
||||||
},
|
},
|
||||||
"CONVERSATION": {
|
"CONVERSATION": {
|
||||||
"DELETE": "{agentName} deleted conversation #{id}"
|
"DELETE": "{agentName} a supprimé la conversation #{id}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,7 @@
|
|||||||
"CONVERSATION_CREATED": "Conversation créée",
|
"CONVERSATION_CREATED": "Conversation créée",
|
||||||
"CONVERSATION_UPDATED": "Conversation mise à jour",
|
"CONVERSATION_UPDATED": "Conversation mise à jour",
|
||||||
"MESSAGE_CREATED": "Message créé",
|
"MESSAGE_CREATED": "Message créé",
|
||||||
"CONVERSATION_RESOLVED": "Conversation Resolved",
|
"CONVERSATION_RESOLVED": "Conversation terminée",
|
||||||
"CONVERSATION_OPENED": "Conversation ouverte"
|
"CONVERSATION_OPENED": "Conversation ouverte"
|
||||||
},
|
},
|
||||||
"ACTIONS": {
|
"ACTIONS": {
|
||||||
@@ -153,8 +153,8 @@
|
|||||||
"OPEN_CONVERSATION": "Ouvrir la conversation"
|
"OPEN_CONVERSATION": "Ouvrir la conversation"
|
||||||
},
|
},
|
||||||
"MESSAGE_TYPES": {
|
"MESSAGE_TYPES": {
|
||||||
"INCOMING": "Incoming Message",
|
"INCOMING": "Boite de réception",
|
||||||
"OUTGOING": "Outgoing Message"
|
"OUTGOING": "Message envoyé"
|
||||||
},
|
},
|
||||||
"PRIORITY_TYPES": {
|
"PRIORITY_TYPES": {
|
||||||
"NONE": "Aucun",
|
"NONE": "Aucun",
|
||||||
|
|||||||
@@ -138,11 +138,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"WHATSAPP": {
|
"WHATSAPP": {
|
||||||
"HEADER_TITLE": "WhatsApp campaigns",
|
"HEADER_TITLE": "Campagnes WhatsApp",
|
||||||
"NEW_CAMPAIGN": "Create campaign",
|
"NEW_CAMPAIGN": "Create campaign",
|
||||||
"EMPTY_STATE": {
|
"EMPTY_STATE": {
|
||||||
"TITLE": "No WhatsApp campaigns are available",
|
"TITLE": "Aucune campagne WhatsApp n’est disponible",
|
||||||
"SUBTITLE": "Launch a WhatsApp campaign to reach your customers directly. Send offers or make announcements with ease. Click 'Create campaign' to get started."
|
"SUBTITLE": "Lancez une campagne WhatsApp pour toucher directement vos clients. Envoyez des offres ou faites des annonces en toute simplicité. Cliquez sur “Créer une campagne” pour commencer."
|
||||||
},
|
},
|
||||||
"CARD": {
|
"CARD": {
|
||||||
"STATUS": {
|
"STATUS": {
|
||||||
@@ -155,7 +155,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"CREATE": {
|
"CREATE": {
|
||||||
"TITLE": "Create WhatsApp campaign",
|
"TITLE": "Créer une campagne WhatsApp",
|
||||||
"CANCEL_BUTTON_TEXT": "Annuler",
|
"CANCEL_BUTTON_TEXT": "Annuler",
|
||||||
"CREATE_BUTTON_TEXT": "Créer",
|
"CREATE_BUTTON_TEXT": "Créer",
|
||||||
"FORM": {
|
"FORM": {
|
||||||
@@ -170,15 +170,15 @@
|
|||||||
"ERROR": "La boîte de réception est requise"
|
"ERROR": "La boîte de réception est requise"
|
||||||
},
|
},
|
||||||
"TEMPLATE": {
|
"TEMPLATE": {
|
||||||
"LABEL": "WhatsApp Template",
|
"LABEL": "Modèle WhatsApp",
|
||||||
"PLACEHOLDER": "Select a template",
|
"PLACEHOLDER": "Sélectionner un modèle",
|
||||||
"INFO": "Select a template to use for this campaign.",
|
"INFO": "Sélectionnez un modèle pour cette campagne.",
|
||||||
"ERROR": "Template is required",
|
"ERROR": "Un modèle est requis",
|
||||||
"PREVIEW_TITLE": "Traiter {templateName}",
|
"PREVIEW_TITLE": "Traiter {templateName}",
|
||||||
"LANGUAGE": "Langue",
|
"LANGUAGE": "Langue",
|
||||||
"CATEGORY": "Catégorie",
|
"CATEGORY": "Catégorie",
|
||||||
"VARIABLES_LABEL": "Variables",
|
"VARIABLES_LABEL": "Variables",
|
||||||
"VARIABLE_PLACEHOLDER": "Enter value for {variable}"
|
"VARIABLE_PLACEHOLDER": "Entrez une valeur pour {variable}"
|
||||||
},
|
},
|
||||||
"AUDIENCE": {
|
"AUDIENCE": {
|
||||||
"LABEL": "Audience",
|
"LABEL": "Audience",
|
||||||
@@ -195,7 +195,7 @@
|
|||||||
"CANCEL": "Annuler"
|
"CANCEL": "Annuler"
|
||||||
},
|
},
|
||||||
"API": {
|
"API": {
|
||||||
"SUCCESS_MESSAGE": "WhatsApp campaign created successfully",
|
"SUCCESS_MESSAGE": "Campagne WhatsApp créée avec succès",
|
||||||
"ERROR_MESSAGE": "Une erreur est survenue, veuillez réessayer."
|
"ERROR_MESSAGE": "Une erreur est survenue, veuillez réessayer."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,6 @@
|
|||||||
"PLACEHOLDER": "Entrez la durée"
|
"PLACEHOLDER": "Entrez la durée"
|
||||||
},
|
},
|
||||||
"CHANNEL_SELECTOR": {
|
"CHANNEL_SELECTOR": {
|
||||||
"COMING_SOON": "Coming Soon!"
|
"COMING_SOON": "Bientôt disponible !"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,10 +17,10 @@
|
|||||||
"IP_ADDRESS": "Adresse IP",
|
"IP_ADDRESS": "Adresse IP",
|
||||||
"CREATED_AT_LABEL": "Créé",
|
"CREATED_AT_LABEL": "Créé",
|
||||||
"NEW_MESSAGE": "Nouveau message",
|
"NEW_MESSAGE": "Nouveau message",
|
||||||
"CALL": "Call",
|
"CALL": "Appel",
|
||||||
"CALL_UNDER_DEVELOPMENT": "Calling is under development",
|
"CALL_UNDER_DEVELOPMENT": "Appel en cours de développement",
|
||||||
"VOICE_INBOX_PICKER": {
|
"VOICE_INBOX_PICKER": {
|
||||||
"TITLE": "Choose a voice inbox"
|
"TITLE": "Choisir une boîte de réception vocale"
|
||||||
},
|
},
|
||||||
"CONVERSATIONS": {
|
"CONVERSATIONS": {
|
||||||
"NO_RECORDS_FOUND": "Il n'y a aucune conversation précédente associée à ce contact.",
|
"NO_RECORDS_FOUND": "Il n'y a aucune conversation précédente associée à ce contact.",
|
||||||
@@ -290,7 +290,7 @@
|
|||||||
"HEADER": {
|
"HEADER": {
|
||||||
"TITLE": "Contacts",
|
"TITLE": "Contacts",
|
||||||
"SEARCH_TITLE": "Search contacts",
|
"SEARCH_TITLE": "Search contacts",
|
||||||
"ACTIVE_TITLE": "Active contacts",
|
"ACTIVE_TITLE": "Contacts actifs",
|
||||||
"SEARCH_PLACEHOLDER": "Search...",
|
"SEARCH_PLACEHOLDER": "Search...",
|
||||||
"MESSAGE_BUTTON": "Message",
|
"MESSAGE_BUTTON": "Message",
|
||||||
"SEND_MESSAGE": "Envoyer un message",
|
"SEND_MESSAGE": "Envoyer un message",
|
||||||
@@ -465,8 +465,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"DELETE_CONTACT": {
|
"DELETE_CONTACT": {
|
||||||
"MESSAGE": "This action is permanent and irreversible.",
|
"MESSAGE": "Cette action est permanente et irréversible.",
|
||||||
"BUTTON": "Delete now"
|
"BUTTON": "Supprimer maintenant"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"DETAILS": {
|
"DETAILS": {
|
||||||
@@ -476,7 +476,7 @@
|
|||||||
"DELETE_CONTACT": "Supprimer le contact",
|
"DELETE_CONTACT": "Supprimer le contact",
|
||||||
"DELETE_DIALOG": {
|
"DELETE_DIALOG": {
|
||||||
"TITLE": "Confirmer la suppression",
|
"TITLE": "Confirmer la suppression",
|
||||||
"DESCRIPTION": "Are you sure you want to delete this contact?",
|
"DESCRIPTION": "Êtes-vous sûr de vouloir supprimer ce contact ?",
|
||||||
"CONFIRM": "Oui, supprimer",
|
"CONFIRM": "Oui, supprimer",
|
||||||
"API": {
|
"API": {
|
||||||
"SUCCESS_MESSAGE": "Contact supprimé avec succès",
|
"SUCCESS_MESSAGE": "Contact supprimé avec succès",
|
||||||
@@ -566,7 +566,7 @@
|
|||||||
"BUTTON_LABEL": "Add contact",
|
"BUTTON_LABEL": "Add contact",
|
||||||
"SEARCH_EMPTY_STATE_TITLE": "Aucun contact ne correspond à votre recherche 🔍",
|
"SEARCH_EMPTY_STATE_TITLE": "Aucun contact ne correspond à votre recherche 🔍",
|
||||||
"LIST_EMPTY_STATE_TITLE": "No contacts available in this view 📋",
|
"LIST_EMPTY_STATE_TITLE": "No contacts available in this view 📋",
|
||||||
"ACTIVE_EMPTY_STATE_TITLE": "No contacts are active at the moment 🌙"
|
"ACTIVE_EMPTY_STATE_TITLE": "Aucun contact n'est actif pour le moment 🌙"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"COMPOSE_NEW_CONVERSATION": {
|
"COMPOSE_NEW_CONVERSATION": {
|
||||||
|
|||||||
@@ -1,33 +1,33 @@
|
|||||||
{
|
{
|
||||||
"CONTENT_TEMPLATES": {
|
"CONTENT_TEMPLATES": {
|
||||||
"MODAL": {
|
"MODAL": {
|
||||||
"TITLE": "Twilio Templates",
|
"TITLE": "Modèles Twilio",
|
||||||
"SUBTITLE": "Select the Twilio template you want to send",
|
"SUBTITLE": "Sélectionnez le modèle Twilio que vous souhaitez envoyer",
|
||||||
"TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}"
|
"TEMPLATE_SELECTED_SUBTITLE": "Configurer le modèle : {templateName}"
|
||||||
},
|
},
|
||||||
"PICKER": {
|
"PICKER": {
|
||||||
"SEARCH_PLACEHOLDER": "Rechercher des modèles",
|
"SEARCH_PLACEHOLDER": "Rechercher des modèles",
|
||||||
"NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour",
|
"NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour",
|
||||||
"NO_CONTENT": "No content",
|
"NO_CONTENT": "No content",
|
||||||
"HEADER": "Header",
|
"HEADER": "En-tête",
|
||||||
"BODY": "Body",
|
"BODY": "Corps",
|
||||||
"FOOTER": "Footer",
|
"FOOTER": "Pied de page",
|
||||||
"BUTTONS": "Buttons",
|
"BUTTONS": "Boutons",
|
||||||
"CATEGORY": "Catégorie",
|
"CATEGORY": "Catégorie",
|
||||||
"MEDIA_CONTENT": "Media Content",
|
"MEDIA_CONTENT": "Contenu média",
|
||||||
"MEDIA_CONTENT_FALLBACK": "media content",
|
"MEDIA_CONTENT_FALLBACK": "contenu multimédia",
|
||||||
"NO_TEMPLATES_AVAILABLE": "No Twilio templates available. Click refresh to sync templates from Twilio.",
|
"NO_TEMPLATES_AVAILABLE": "Aucun modèle Twilio disponible. Cliquez sur Actualiser pour synchroniser les modèles de Twilio.",
|
||||||
"REFRESH_BUTTON": "Refresh templates",
|
"REFRESH_BUTTON": "Rafraîchir les modèles",
|
||||||
"REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.",
|
"REFRESH_SUCCESS": "Mise à jour des modèles. La mise à jour peut prendre quelques minutes.",
|
||||||
"REFRESH_ERROR": "Failed to refresh templates. Please try again.",
|
"REFRESH_ERROR": "Échec de la mise à jour des modèles. Veuillez réessayer.",
|
||||||
"LABELS": {
|
"LABELS": {
|
||||||
"LANGUAGE": "Langue",
|
"LANGUAGE": "Langue",
|
||||||
"TEMPLATE_BODY": "Corps du modèle",
|
"TEMPLATE_BODY": "Corps du modèle",
|
||||||
"CATEGORY": "Catégorie"
|
"CATEGORY": "Catégorie"
|
||||||
},
|
},
|
||||||
"TYPES": {
|
"TYPES": {
|
||||||
"MEDIA": "Media",
|
"MEDIA": "Média",
|
||||||
"QUICK_REPLY": "Quick Reply",
|
"QUICK_REPLY": "Réponse rapide",
|
||||||
"TEXT": "Texte"
|
"TEXT": "Texte"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -39,8 +39,8 @@
|
|||||||
"GO_BACK_LABEL": "Retour",
|
"GO_BACK_LABEL": "Retour",
|
||||||
"SEND_MESSAGE_LABEL": "Envoyer un message",
|
"SEND_MESSAGE_LABEL": "Envoyer un message",
|
||||||
"FORM_ERROR_MESSAGE": "Veuillez remplir toutes les variables avant d'envoyer",
|
"FORM_ERROR_MESSAGE": "Veuillez remplir toutes les variables avant d'envoyer",
|
||||||
"MEDIA_HEADER_LABEL": "{type} Header",
|
"MEDIA_HEADER_LABEL": "En-tête {type}",
|
||||||
"MEDIA_URL_LABEL": "Enter full media URL",
|
"MEDIA_URL_LABEL": "Saisissez l'URL complète du média",
|
||||||
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
|
"MEDIA_URL_PLACEHOLDER": "https://example.com/image.jpg"
|
||||||
},
|
},
|
||||||
"FORM": {
|
"FORM": {
|
||||||
|
|||||||
@@ -35,11 +35,11 @@
|
|||||||
"API_HOURS_WINDOW": "Vous ne pouvez répondre à cette conversation que dans un délai de {hours} heures",
|
"API_HOURS_WINDOW": "Vous ne pouvez répondre à cette conversation que dans un délai de {hours} heures",
|
||||||
"NOT_ASSIGNED_TO_YOU": "Cette conversation ne vous est pas assignée. Voulez-vous vous assigner cette conversation ?",
|
"NOT_ASSIGNED_TO_YOU": "Cette conversation ne vous est pas assignée. Voulez-vous vous assigner cette conversation ?",
|
||||||
"ASSIGN_TO_ME": "M’assigner la conversation",
|
"ASSIGN_TO_ME": "M’assigner la conversation",
|
||||||
"BOT_HANDOFF_MESSAGE": "You are responding to a conversation which is currently handled by an assistant or a bot.",
|
"BOT_HANDOFF_MESSAGE": "Vous répondez à une conversation actuellement gérée par un assistant ou un bot.",
|
||||||
"BOT_HANDOFF_ACTION": "Mark open and assign to you",
|
"BOT_HANDOFF_ACTION": "Ouvrir et m’attribuer",
|
||||||
"BOT_HANDOFF_REOPEN_ACTION": "Mark conversation open",
|
"BOT_HANDOFF_REOPEN_ACTION": "Marquer la conversation comme ouverte",
|
||||||
"BOT_HANDOFF_SUCCESS": "Conversation has been handed over to you",
|
"BOT_HANDOFF_SUCCESS": "La conversation vous a été attribuée",
|
||||||
"BOT_HANDOFF_ERROR": "Failed to take over the conversation. Please try again.",
|
"BOT_HANDOFF_ERROR": "Impossible de reprendre la conversation. Veuillez réessayer.",
|
||||||
"TWILIO_WHATSAPP_CAN_REPLY": "Vous pouvez seulement répondre à cette conversation en utilisant un modèle de message en raison de",
|
"TWILIO_WHATSAPP_CAN_REPLY": "Vous pouvez seulement répondre à cette conversation en utilisant un modèle de message en raison de",
|
||||||
"TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restriction de fenêtre de message de 24 heures",
|
"TWILIO_WHATSAPP_24_HOURS_WINDOW": "Restriction de fenêtre de message de 24 heures",
|
||||||
"OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Tous les nouveaux messages y apparaîtront. Vous ne pourrez plus envoyer de messages depuis cette conversation.",
|
"OLD_INSTAGRAM_INBOX_REPLY_BANNER": "Ce compte Instagram a été migré vers la nouvelle boîte de réception du canal Instagram. Tous les nouveaux messages y apparaîtront. Vous ne pourrez plus envoyer de messages depuis cette conversation.",
|
||||||
@@ -71,11 +71,22 @@
|
|||||||
"SHOW_LABELS": "Afficher les étiquettes",
|
"SHOW_LABELS": "Afficher les étiquettes",
|
||||||
"HIDE_LABELS": "Masquer les étiquettes"
|
"HIDE_LABELS": "Masquer les étiquettes"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Appel entrant",
|
||||||
|
"OUTGOING_CALL": "Appel sortant",
|
||||||
|
"CALL_IN_PROGRESS": "Appel en cours",
|
||||||
|
"NO_ANSWER": "Pas de réponse",
|
||||||
|
"MISSED_CALL": "Appel manqué",
|
||||||
|
"CALL_ENDED": "Appel terminé",
|
||||||
|
"NOT_ANSWERED_YET": "Pas encore répondu",
|
||||||
|
"THEY_ANSWERED": "Il a répondu",
|
||||||
|
"YOU_ANSWERED": "Vous avez répondu"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Résoudre",
|
"RESOLVE_ACTION": "Résoudre",
|
||||||
"REOPEN_ACTION": "Ré-ouvrir",
|
"REOPEN_ACTION": "Ré-ouvrir",
|
||||||
"OPEN_ACTION": "Ouvert",
|
"OPEN_ACTION": "Ouvert",
|
||||||
"MORE_ACTIONS": "More actions",
|
"MORE_ACTIONS": "Plus d'actions",
|
||||||
"OPEN": "Plus",
|
"OPEN": "Plus",
|
||||||
"CLOSE": "Fermer",
|
"CLOSE": "Fermer",
|
||||||
"DETAILS": "détails",
|
"DETAILS": "détails",
|
||||||
@@ -128,8 +139,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"DELETE_CONVERSATION": {
|
"DELETE_CONVERSATION": {
|
||||||
"TITLE": "Delete conversation #{conversationId}",
|
"TITLE": "Supprimer la conversation #{conversationId}",
|
||||||
"DESCRIPTION": "Are you sure you want to delete this conversation?",
|
"DESCRIPTION": "Êtes-vous sûr de vouloir supprimer cette conversation ?",
|
||||||
"CONFIRM": "Supprimer"
|
"CONFIRM": "Supprimer"
|
||||||
},
|
},
|
||||||
"CARD_CONTEXT_MENU": {
|
"CARD_CONTEXT_MENU": {
|
||||||
@@ -148,10 +159,10 @@
|
|||||||
"ASSIGN_LABEL": "Assigner une étiquette",
|
"ASSIGN_LABEL": "Assigner une étiquette",
|
||||||
"AGENTS_LOADING": "Chargement des agents...",
|
"AGENTS_LOADING": "Chargement des agents...",
|
||||||
"ASSIGN_TEAM": "Assigner une équipe",
|
"ASSIGN_TEAM": "Assigner une équipe",
|
||||||
"DELETE": "Delete conversation",
|
"DELETE": "Supprimer la conversation",
|
||||||
"OPEN_IN_NEW_TAB": "Open in new tab",
|
"OPEN_IN_NEW_TAB": "Ouvrir dans un nouvel onglet",
|
||||||
"COPY_LINK": "Copy conversation link",
|
"COPY_LINK": "Copier le lien de la conversation",
|
||||||
"COPY_LINK_SUCCESS": "Conversation link copied to clipboard",
|
"COPY_LINK_SUCCESS": "Le lien de conversation a été copié dans le presse-papiers",
|
||||||
"API": {
|
"API": {
|
||||||
"AGENT_ASSIGNMENT": {
|
"AGENT_ASSIGNMENT": {
|
||||||
"SUCCESFUL": "Conversation id {conversationId} assignée à \"{agentName}\"",
|
"SUCCESFUL": "Conversation id {conversationId} assignée à \"{agentName}\"",
|
||||||
@@ -226,8 +237,8 @@
|
|||||||
"ASSIGN_LABEL_SUCCESFUL": "Étiquette attribuée avec succès",
|
"ASSIGN_LABEL_SUCCESFUL": "Étiquette attribuée avec succès",
|
||||||
"ASSIGN_LABEL_FAILED": "Échec de l'attribution de l'étiquette",
|
"ASSIGN_LABEL_FAILED": "Échec de l'attribution de l'étiquette",
|
||||||
"CHANGE_TEAM": "L'équipe de conversation a été modifiée",
|
"CHANGE_TEAM": "L'équipe de conversation a été modifiée",
|
||||||
"SUCCESS_DELETE_CONVERSATION": "Conversation deleted successfully",
|
"SUCCESS_DELETE_CONVERSATION": "Conversation supprimée avec succès",
|
||||||
"FAIL_DELETE_CONVERSATION": "Couldn't delete conversation! Try again",
|
"FAIL_DELETE_CONVERSATION": "Impossible de supprimer la conversation ! Veuillez réessayer",
|
||||||
"FILE_SIZE_LIMIT": "Le fichier dépasse la limite de {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} pour les pièces jointes",
|
"FILE_SIZE_LIMIT": "Le fichier dépasse la limite de {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} pour les pièces jointes",
|
||||||
"MESSAGE_ERROR": "Impossible d'envoyer ce message, veuillez réessayer plus tard",
|
"MESSAGE_ERROR": "Impossible d'envoyer ce message, veuillez réessayer plus tard",
|
||||||
"SENT_BY": "Envoyé par:",
|
"SENT_BY": "Envoyé par:",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Étiquettes",
|
"REPORTS_LABEL": "Étiquettes",
|
||||||
"REPORTS_INBOX": "Boîte de réception",
|
"REPORTS_INBOX": "Boîte de réception",
|
||||||
"REPORTS_TEAM": "Équipes",
|
"REPORTS_TEAM": "Équipes",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Se définir comme",
|
"SET_AVAILABILITY_TITLE": "Se définir comme",
|
||||||
"SET_YOUR_AVAILABILITY": "Définissez votre disponibilité",
|
"SET_YOUR_AVAILABILITY": "Définissez votre disponibilité",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Basculer vers la réponse",
|
"SWITCH_TO_REPLY": "Basculer vers la réponse",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Activer/désactiver la liste déroulante de répétition"
|
"TOGGLE_SNOOZE_DROPDOWN": "Activer/désactiver la liste déroulante de répétition"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priorité",
|
||||||
|
"ACTIVE": "Actif",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Modifier"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuler"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "État:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Ajouter"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Modifier"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuler"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Ajouter"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Supprimer",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Annuler"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "הצג תויות",
|
"SHOW_LABELS": "הצג תויות",
|
||||||
"HIDE_LABELS": "הסתר תוויות"
|
"HIDE_LABELS": "הסתר תוויות"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "פתרון",
|
"RESOLVE_ACTION": "פתרון",
|
||||||
"REOPEN_ACTION": "פתח מחדש",
|
"REOPEN_ACTION": "פתח מחדש",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "תוויות",
|
"REPORTS_LABEL": "תוויות",
|
||||||
"REPORTS_INBOX": "תיבת הדואר הנכנס",
|
"REPORTS_INBOX": "תיבת הדואר הנכנס",
|
||||||
"REPORTS_TEAM": "צוות",
|
"REPORTS_TEAM": "צוות",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "הגדר את עצמך בתור",
|
"SET_AVAILABILITY_TITLE": "הגדר את עצמך בתור",
|
||||||
"SET_YOUR_AVAILABILITY": "הגדר את הזמינות שלך",
|
"SET_YOUR_AVAILABILITY": "הגדר את הזמינות שלך",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "עבור לתשובה",
|
"SWITCH_TO_REPLY": "עבור לתשובה",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "החלפת תפריט נודניק"
|
"TOGGLE_SNOOZE_DROPDOWN": "החלפת תפריט נודניק"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "פעיל",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "ערוך"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "ביטול"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "תיאור:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "מצב:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "הוסף"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "ערוך"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "ביטול"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "תיאור:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "הוסף"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "מחק",
|
||||||
|
"CANCEL_BUTTON_LABEL": "ביטול"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Delete",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Tim",
|
"REPORTS_TEAM": "Tim",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Postavi sebe kao",
|
"SET_AVAILABILITY_TITLE": "Postavi sebe kao",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Prioritet",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Uredi"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Odustani"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Uredi"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Odustani"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Izbriši",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Odustani"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Cimkék mutatása",
|
"SHOW_LABELS": "Cimkék mutatása",
|
||||||
"HIDE_LABELS": "Cimkék elrejtése"
|
"HIDE_LABELS": "Cimkék elrejtése"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Megoldva",
|
"RESOLVE_ACTION": "Megoldva",
|
||||||
"REOPEN_ACTION": "Újranyitás",
|
"REOPEN_ACTION": "Újranyitás",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Cimkék",
|
"REPORTS_LABEL": "Cimkék",
|
||||||
"REPORTS_INBOX": "Fiók",
|
"REPORTS_INBOX": "Fiók",
|
||||||
"REPORTS_TEAM": "Csapat",
|
"REPORTS_TEAM": "Csapat",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Ugrás a Beszélgetések Irányítópultjához",
|
"SET_AVAILABILITY_TITLE": "Ugrás a Beszélgetések Irányítópultjához",
|
||||||
"SET_YOUR_AVAILABILITY": "Elérhetőség beállítása",
|
"SET_YOUR_AVAILABILITY": "Elérhetőség beállítása",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Válts a válasz fülre",
|
"SWITCH_TO_REPLY": "Válts a válasz fülre",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Alvómód bekapcsolása a legördülő menüben"
|
"TOGGLE_SNOOZE_DROPDOWN": "Alvómód bekapcsolása a legördülő menüben"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Prioritás",
|
||||||
|
"ACTIVE": "Aktív",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Szerkesztés"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Mégse"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Leírás:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Státusz:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Hozzáadás"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Szerkesztés"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Mégse"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Leírás:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Hozzáadás"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Törlés",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Mégse"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Inbox",
|
"REPORTS_INBOX": "Inbox",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Delete",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Cancel"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Tampilkan label",
|
"SHOW_LABELS": "Tampilkan label",
|
||||||
"HIDE_LABELS": "Sembunyikan label"
|
"HIDE_LABELS": "Sembunyikan label"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Menyelesaikan",
|
"RESOLVE_ACTION": "Menyelesaikan",
|
||||||
"REOPEN_ACTION": "Buka Kembali",
|
"REOPEN_ACTION": "Buka Kembali",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Label",
|
"REPORTS_LABEL": "Label",
|
||||||
"REPORTS_INBOX": "Kotak Masuk",
|
"REPORTS_INBOX": "Kotak Masuk",
|
||||||
"REPORTS_TEAM": "Tim",
|
"REPORTS_TEAM": "Tim",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Atur diri anda sebagai",
|
"SET_AVAILABILITY_TITLE": "Atur diri anda sebagai",
|
||||||
"SET_YOUR_AVAILABILITY": "Atur ketersediaan Anda",
|
"SET_YOUR_AVAILABILITY": "Atur ketersediaan Anda",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Beralih ke Balasan",
|
"SWITCH_TO_REPLY": "Beralih ke Balasan",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Buka/Tutup dropdown penundaan"
|
"TOGGLE_SNOOZE_DROPDOWN": "Buka/Tutup dropdown penundaan"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Prioritas",
|
||||||
|
"ACTIVE": "Aktif",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Batalkan"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Deskripsi:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Status:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Tambahkan"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Edit"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Batalkan"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Deskripsi:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Tambahkan"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Hapus",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Batalkan"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Resolve",
|
"RESOLVE_ACTION": "Resolve",
|
||||||
"REOPEN_ACTION": "Reopen",
|
"REOPEN_ACTION": "Reopen",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Labels",
|
"REPORTS_LABEL": "Labels",
|
||||||
"REPORTS_INBOX": "Innhólf",
|
"REPORTS_INBOX": "Innhólf",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
"SET_AVAILABILITY_TITLE": "Set yourself as",
|
||||||
"SET_YOUR_AVAILABILITY": "Set your availability",
|
"SET_YOUR_AVAILABILITY": "Set your availability",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Switch to Reply",
|
"SWITCH_TO_REPLY": "Switch to Reply",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
"TOGGLE_SNOOZE_DROPDOWN": "Toggle snooze dropdown"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
|
"ACTIVE": "Active",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Breyta"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Hætta við"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Staða:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Bæta við"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Breyta"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Hætta við"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Description:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Bæta við"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Eyða",
|
||||||
|
"CANCEL_BUTTON_LABEL": "Hætta við"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "Show labels",
|
"SHOW_LABELS": "Show labels",
|
||||||
"HIDE_LABELS": "Hide labels"
|
"HIDE_LABELS": "Hide labels"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "Risolvi",
|
"RESOLVE_ACTION": "Risolvi",
|
||||||
"REOPEN_ACTION": "Riapri",
|
"REOPEN_ACTION": "Riapri",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "Etichette",
|
"REPORTS_LABEL": "Etichette",
|
||||||
"REPORTS_INBOX": "Posta",
|
"REPORTS_INBOX": "Posta",
|
||||||
"REPORTS_TEAM": "Team",
|
"REPORTS_TEAM": "Team",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "Imposta te stesso come",
|
"SET_AVAILABILITY_TITLE": "Imposta te stesso come",
|
||||||
"SET_YOUR_AVAILABILITY": "Imposta la tua disponibilità",
|
"SET_YOUR_AVAILABILITY": "Imposta la tua disponibilità",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "Passa a Risposta",
|
"SWITCH_TO_REPLY": "Passa a Risposta",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "Attiva/Disattiva sospensione a discesa"
|
"TOGGLE_SNOOZE_DROPDOWN": "Attiva/Disattiva sospensione a discesa"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "Priorità",
|
||||||
|
"ACTIVE": "Attivo",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "Modifica"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "annulla"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descrizione:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "Stato:",
|
||||||
|
"PLACEHOLDER": "Select status",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "Aggiungi"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "Modifica"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "annulla"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "Descrizione:",
|
||||||
|
"PLACEHOLDER": "Enter description"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "Aggiungi"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Elimina",
|
||||||
|
"CANCEL_BUTTON_LABEL": "annulla"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,17 @@
|
|||||||
"SHOW_LABELS": "ラベルを表示",
|
"SHOW_LABELS": "ラベルを表示",
|
||||||
"HIDE_LABELS": "ラベルを隠す"
|
"HIDE_LABELS": "ラベルを隠す"
|
||||||
},
|
},
|
||||||
|
"VOICE_CALL": {
|
||||||
|
"INCOMING_CALL": "Incoming call",
|
||||||
|
"OUTGOING_CALL": "Outgoing call",
|
||||||
|
"CALL_IN_PROGRESS": "Call in progress",
|
||||||
|
"NO_ANSWER": "No answer",
|
||||||
|
"MISSED_CALL": "Missed call",
|
||||||
|
"CALL_ENDED": "Call ended",
|
||||||
|
"NOT_ANSWERED_YET": "Not answered yet",
|
||||||
|
"THEY_ANSWERED": "They answered",
|
||||||
|
"YOU_ANSWERED": "You answered"
|
||||||
|
},
|
||||||
"HEADER": {
|
"HEADER": {
|
||||||
"RESOLVE_ACTION": "解決する",
|
"RESOLVE_ACTION": "解決する",
|
||||||
"REOPEN_ACTION": "再開する",
|
"REOPEN_ACTION": "再開する",
|
||||||
|
|||||||
@@ -51,6 +51,13 @@
|
|||||||
"LARGER": "Larger",
|
"LARGER": "Larger",
|
||||||
"EXTRA_LARGE": "Extra Large"
|
"EXTRA_LARGE": "Extra Large"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"LANGUAGE": {
|
||||||
|
"TITLE": "Preferred Language",
|
||||||
|
"NOTE": "Choose the language you want to use.",
|
||||||
|
"UPDATE_SUCCESS": "Your Language settings have been updated successfully",
|
||||||
|
"UPDATE_ERROR": "There is an error while updating the language settings, please try again",
|
||||||
|
"USE_ACCOUNT_DEFAULT": "Use account default"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"MESSAGE_SIGNATURE_SECTION": {
|
"MESSAGE_SIGNATURE_SECTION": {
|
||||||
@@ -330,6 +337,7 @@
|
|||||||
"REPORTS_LABEL": "ラベル",
|
"REPORTS_LABEL": "ラベル",
|
||||||
"REPORTS_INBOX": "受信トレイ",
|
"REPORTS_INBOX": "受信トレイ",
|
||||||
"REPORTS_TEAM": "チーム",
|
"REPORTS_TEAM": "チーム",
|
||||||
|
"AGENT_ASSIGNMENT": "Agent Assignment",
|
||||||
"SET_AVAILABILITY_TITLE": "ステータスを設定",
|
"SET_AVAILABILITY_TITLE": "ステータスを設定",
|
||||||
"SET_YOUR_AVAILABILITY": "利用可能ステータスを設定",
|
"SET_YOUR_AVAILABILITY": "利用可能ステータスを設定",
|
||||||
"SLA": "SLA",
|
"SLA": "SLA",
|
||||||
@@ -418,5 +426,255 @@
|
|||||||
"SWITCH_TO_REPLY": "返信に切り替え",
|
"SWITCH_TO_REPLY": "返信に切り替え",
|
||||||
"TOGGLE_SNOOZE_DROPDOWN": "スヌーズドロップダウンを切り替え"
|
"TOGGLE_SNOOZE_DROPDOWN": "スヌーズドロップダウンを切り替え"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent assignment",
|
||||||
|
"DESCRIPTION": "Define policies to effectively manage workload and route conversations based on the needs of inboxes and agents. Learn more here"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_POLICY": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"DESCRIPTION": "Manage how conversations get assigned in inboxes.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Assign by conversations evenly or by available capacity",
|
||||||
|
"Add fair distribution rules to avoid overloading any agent",
|
||||||
|
"Add inboxes to a policy - one policy per inbox"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"TITLE": "Agent capacity policy",
|
||||||
|
"DESCRIPTION": "Manage workload for agents.",
|
||||||
|
"FEATURES": [
|
||||||
|
"Define maximum conversations per inbox",
|
||||||
|
"Create exceptions based on labels and time",
|
||||||
|
"Add agents to a policy - one policy per agent"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_ASSIGNMENT_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Assignment policy",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"ORDER": "Order",
|
||||||
|
"PRIORITY": "優先度",
|
||||||
|
"ACTIVE": "有効",
|
||||||
|
"INACTIVE": "Inactive",
|
||||||
|
"POPOVER": "Added inboxes",
|
||||||
|
"EDIT": "編集"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No assignment policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create assignment policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit assignment policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_INBOX_DIALOG": {
|
||||||
|
"TITLE": "Add inbox",
|
||||||
|
"DESCRIPTION": "{inboxName} inbox is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "キャンセル"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update assignment policy"
|
||||||
|
},
|
||||||
|
"INBOX_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove inbox from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "説明:",
|
||||||
|
"PLACEHOLDER": "説明を入力"
|
||||||
|
},
|
||||||
|
"STATUS": {
|
||||||
|
"LABEL": "ステータス:",
|
||||||
|
"PLACEHOLDER": "状況を選択",
|
||||||
|
"ACTIVE": "Policy is active",
|
||||||
|
"INACTIVE": "Policy is inactive"
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_ORDER": {
|
||||||
|
"LABEL": "Assignment order",
|
||||||
|
"ROUND_ROBIN": {
|
||||||
|
"LABEL": "Round robin",
|
||||||
|
"DESCRIPTION": "Assign conversations evenly among agents."
|
||||||
|
},
|
||||||
|
"BALANCED": {
|
||||||
|
"LABEL": "Balanced",
|
||||||
|
"DESCRIPTION": "Assign conversations based on available capacity."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ASSIGNMENT_PRIORITY": {
|
||||||
|
"LABEL": "Assignment priority",
|
||||||
|
"EARLIEST_CREATED": {
|
||||||
|
"LABEL": "Earliest created",
|
||||||
|
"DESCRIPTION": "The conversation that was created first gets assigned first."
|
||||||
|
},
|
||||||
|
"LONGEST_WAITING": {
|
||||||
|
"LABEL": "Longest waiting",
|
||||||
|
"DESCRIPTION": "The conversation waiting the longest gets assigned first."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FAIR_DISTRIBUTION": {
|
||||||
|
"LABEL": "Fair distribution policy",
|
||||||
|
"DESCRIPTION": "Set the maximum number of conversations that can be assigned per agent within a time window to avoid overloading any one agent. This required field defaults to 100 conversations per hour.",
|
||||||
|
"INPUT_MAX": "Assign max",
|
||||||
|
"DURATION": "Conversations per agent in every"
|
||||||
|
},
|
||||||
|
"INBOXES": {
|
||||||
|
"LABEL": "Added inboxes",
|
||||||
|
"DESCRIPTION": "Add inboxes for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select inboxes to add",
|
||||||
|
"ADD_BUTTON": "追加"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inboxes added to this policy, add an inbox to get started",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Inbox successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add inbox to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Assignment policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete assignment policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AGENT_CAPACITY_POLICY": {
|
||||||
|
"INDEX": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Agent capacity",
|
||||||
|
"CREATE_POLICY": "New policy"
|
||||||
|
},
|
||||||
|
"CARD": {
|
||||||
|
"POPOVER": "Added agents",
|
||||||
|
"EDIT": "編集"
|
||||||
|
},
|
||||||
|
"NO_RECORDS_FOUND": "No agent capacity policies found"
|
||||||
|
},
|
||||||
|
"CREATE": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Create agent capacity policy"
|
||||||
|
},
|
||||||
|
"CREATE_BUTTON": "Create policy",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy created successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to create agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"EDIT": {
|
||||||
|
"HEADER": {
|
||||||
|
"TITLE": "Edit agent capacity policy"
|
||||||
|
},
|
||||||
|
"EDIT_BUTTON": "Update policy",
|
||||||
|
"CONFIRM_ADD_AGENT_DIALOG": {
|
||||||
|
"TITLE": "Add agent",
|
||||||
|
"DESCRIPTION": "{agentName} is already linked to another policy. Are you sure you want to link it to this policy? It will be unlinked from the other policy.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "Continue",
|
||||||
|
"CANCEL_BUTTON_LABEL": "キャンセル"
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy updated successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to update agent capacity policy"
|
||||||
|
},
|
||||||
|
"AGENT_API": {
|
||||||
|
"ADD": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent added to policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
},
|
||||||
|
"REMOVE": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent removed from policy successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to remove agent from policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"FORM": {
|
||||||
|
"NAME": {
|
||||||
|
"LABEL": "Policy name:",
|
||||||
|
"PLACEHOLDER": "Enter policy name"
|
||||||
|
},
|
||||||
|
"DESCRIPTION": {
|
||||||
|
"LABEL": "説明:",
|
||||||
|
"PLACEHOLDER": "説明を入力"
|
||||||
|
},
|
||||||
|
"INBOX_CAPACITY_LIMIT": {
|
||||||
|
"LABEL": "Inbox capacity limits",
|
||||||
|
"ADD_BUTTON": "Add inbox",
|
||||||
|
"FIELD": {
|
||||||
|
"SELECT_INBOX": "Select inbox",
|
||||||
|
"MAX_CONVERSATIONS": "Max conversations",
|
||||||
|
"SET_LIMIT": "Set limit"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No inbox limit set"
|
||||||
|
},
|
||||||
|
"EXCLUSION_RULES": {
|
||||||
|
"LABEL": "Exclusion rules",
|
||||||
|
"DESCRIPTION": "Conversations that satisfy the following conditions would not count towards agent capacity",
|
||||||
|
"TAGS": {
|
||||||
|
"LABEL": "Exclude conversations tagged with specific labels",
|
||||||
|
"ADD_TAG": "add tag",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select tags to add"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No tags added to this policy."
|
||||||
|
},
|
||||||
|
"DURATION": {
|
||||||
|
"LABEL": "Exclude conversations older than a specified duration",
|
||||||
|
"PLACEHOLDER": "Set time"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"USERS": {
|
||||||
|
"LABEL": "Assigned agents",
|
||||||
|
"DESCRIPTION": "Add agents for which this policy will be applicable.",
|
||||||
|
"ADD_BUTTON": "Add agent",
|
||||||
|
"DROPDOWN": {
|
||||||
|
"SEARCH_PLACEHOLDER": "Search and select agents to add",
|
||||||
|
"ADD_BUTTON": "追加"
|
||||||
|
},
|
||||||
|
"EMPTY_STATE": "No agents added",
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent successfully added to policy",
|
||||||
|
"ERROR_MESSAGE": "Failed to add agent to policy"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"SUCCESS_MESSAGE": "Agent capacity policy deleted successfully",
|
||||||
|
"ERROR_MESSAGE": "Failed to delete agent capacity policy"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"DELETE_POLICY": {
|
||||||
|
"TITLE": "Delete policy",
|
||||||
|
"DESCRIPTION": "Are you sure you want to delete this policy? This action cannot be undone.",
|
||||||
|
"CONFIRM_BUTTON_LABEL": "削除",
|
||||||
|
"CANCEL_BUTTON_LABEL": "キャンセル"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user