Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0bbb28c432 | ||
|
|
cf91e9eb58 | ||
|
|
b529baa5eb | ||
|
|
c071f66cdd | ||
|
|
92fa9c4fdc | ||
|
|
f6e0453bb2 | ||
|
|
1a07828b1b | ||
|
|
54880b2342 | ||
|
|
e32f3e71e4 | ||
|
|
0874aeee2d | ||
|
|
f1fc658a0d | ||
|
|
e3193dcabc | ||
|
|
f825a22997 | ||
|
|
815322b27a | ||
|
|
474e65f4c8 | ||
|
|
3a35281b3f | ||
|
|
ac6de50b4d | ||
|
|
a34729c153 | ||
|
|
6b2736aa63 | ||
|
|
d1584eea72 | ||
|
|
527042afd1 | ||
|
|
bd1e69e4b4 | ||
|
|
76d4c22c2d | ||
|
|
5cdc7d654a | ||
|
|
821d49943a | ||
|
|
9c0259da6b | ||
|
|
ea2c442328 | ||
|
|
b93b8cdab6 | ||
|
|
e6505fc7a4 | ||
|
|
c5c36af529 | ||
|
|
026e03c307 | ||
|
|
37b7098673 |
@@ -71,6 +71,10 @@ Rails/ApplicationController:
|
|||||||
- 'app/controllers/platform_controller.rb'
|
- 'app/controllers/platform_controller.rb'
|
||||||
- 'app/controllers/public_controller.rb'
|
- 'app/controllers/public_controller.rb'
|
||||||
- 'app/controllers/survey/responses_controller.rb'
|
- 'app/controllers/survey/responses_controller.rb'
|
||||||
|
Rails/FindEach:
|
||||||
|
Enabled: true
|
||||||
|
Include:
|
||||||
|
- 'app/**/*.rb'
|
||||||
Rails/CompactBlank:
|
Rails/CompactBlank:
|
||||||
Enabled: false
|
Enabled: false
|
||||||
Rails/EnvironmentVariableAccess:
|
Rails/EnvironmentVariableAccess:
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
# Variables
|
||||||
|
APP_NAME := chatwoot
|
||||||
|
RAILS_ENV ?= development
|
||||||
|
|
||||||
|
# Targets
|
||||||
|
setup:
|
||||||
|
gem install bundler
|
||||||
|
bundle install
|
||||||
|
yarn install
|
||||||
|
|
||||||
|
db_create:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails db:create
|
||||||
|
|
||||||
|
db_migrate:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails db:migrate
|
||||||
|
|
||||||
|
db_seed:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails db:seed
|
||||||
|
|
||||||
|
db:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails db:chatwoot_prepare
|
||||||
|
|
||||||
|
console:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails console
|
||||||
|
|
||||||
|
server:
|
||||||
|
RAILS_ENV=$(RAILS_ENV) bundle exec rails server -b 0.0.0.0 -p 3000
|
||||||
|
|
||||||
|
burn:
|
||||||
|
bundle && yarn
|
||||||
|
|
||||||
|
run:
|
||||||
|
overmind start -f Procfile.dev
|
||||||
|
|
||||||
|
docker:
|
||||||
|
docker build -t $(APP_NAME) -f ./docker/Dockerfile .
|
||||||
|
|
||||||
|
.PHONY: setup db_create db_migrate db_seed db console server burn docker run
|
||||||
@@ -49,10 +49,10 @@ class Messages::MessageBuilder
|
|||||||
return unless @conversation.inbox&.inbox_type == 'Email'
|
return unless @conversation.inbox&.inbox_type == 'Email'
|
||||||
|
|
||||||
cc_emails = []
|
cc_emails = []
|
||||||
cc_emails = @params[:cc_emails].split(',') if @params[:cc_emails].present?
|
cc_emails = @params[:cc_emails].gsub(/\s+/, '').split(',') if @params[:cc_emails].present?
|
||||||
|
|
||||||
bcc_emails = []
|
bcc_emails = []
|
||||||
bcc_emails = @params[:bcc_emails].split(',') if @params[:bcc_emails].present?
|
bcc_emails = @params[:bcc_emails].gsub(/\s+/, '').split(',') if @params[:bcc_emails].present?
|
||||||
|
|
||||||
all_email_addresses = cc_emails + bcc_emails
|
all_email_addresses = cc_emails + bcc_emails
|
||||||
validate_email_addresses(all_email_addresses)
|
validate_email_addresses(all_email_addresses)
|
||||||
|
|||||||
@@ -64,13 +64,14 @@ class Api::V1::Accounts::ConversationsController < Api::V1::Accounts::BaseContro
|
|||||||
assign_conversation if @conversation.status == 'open' && Current.user.is_a?(User) && Current.user&.agent?
|
assign_conversation if @conversation.status == 'open' && Current.user.is_a?(User) && Current.user&.agent?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def toggle_priority
|
||||||
|
@conversation.toggle_priority(params[:priority])
|
||||||
|
head :ok
|
||||||
|
end
|
||||||
|
|
||||||
def toggle_typing_status
|
def toggle_typing_status
|
||||||
case params[:typing_status]
|
typing_status_manager = ::Conversations::TypingStatusManager.new(@conversation, current_user, params)
|
||||||
when 'on'
|
typing_status_manager.toggle_typing_status
|
||||||
trigger_typing_event(CONVERSATION_TYPING_ON, params[:is_private])
|
|
||||||
when 'off'
|
|
||||||
trigger_typing_event(CONVERSATION_TYPING_OFF, params[:is_private])
|
|
||||||
end
|
|
||||||
head :ok
|
head :ok
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -111,11 +112,6 @@ class Api::V1::Accounts::ConversationsController < Api::V1::Accounts::BaseContro
|
|||||||
@conversation.update_assignee(@agent)
|
@conversation.update_assignee(@agent)
|
||||||
end
|
end
|
||||||
|
|
||||||
def trigger_typing_event(event, is_private)
|
|
||||||
user = current_user.presence || @resource
|
|
||||||
Rails.configuration.dispatcher.dispatch(event, Time.zone.now, conversation: @conversation, user: user, is_private: is_private)
|
|
||||||
end
|
|
||||||
|
|
||||||
def conversation
|
def conversation
|
||||||
@conversation ||= Current.account.conversations.find_by!(display_id: params[:id])
|
@conversation ||= Current.account.conversations.find_by!(display_id: params[:id])
|
||||||
authorize @conversation.inbox, :show?
|
authorize @conversation.inbox, :show?
|
||||||
|
|||||||
@@ -114,10 +114,13 @@ class Api::V1::Accounts::InboxesController < Api::V1::Accounts::BaseController
|
|||||||
def inbox_attributes
|
def inbox_attributes
|
||||||
[:name, :avatar, :greeting_enabled, :greeting_message, :enable_email_collect, :csat_survey_enabled,
|
[:name, :avatar, :greeting_enabled, :greeting_message, :enable_email_collect, :csat_survey_enabled,
|
||||||
:enable_auto_assignment, :working_hours_enabled, :out_of_office_message, :timezone, :allow_messages_after_resolved,
|
:enable_auto_assignment, :working_hours_enabled, :out_of_office_message, :timezone, :allow_messages_after_resolved,
|
||||||
:lock_to_single_conversation]
|
:lock_to_single_conversation, :portal_id]
|
||||||
end
|
end
|
||||||
|
|
||||||
def permitted_params(channel_attributes = [])
|
def permitted_params(channel_attributes = [])
|
||||||
|
# We will remove this line after fixing https://linear.app/chatwoot/issue/CW-1567/null-value-passed-as-null-string-to-backend
|
||||||
|
params.each { |k, v| params[k] = params[k] == 'null' ? nil : v }
|
||||||
|
|
||||||
params.permit(
|
params.permit(
|
||||||
*inbox_attributes,
|
*inbox_attributes,
|
||||||
channel: [:type, *channel_attributes]
|
channel: [:type, *channel_attributes]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
class Api::V1::Accounts::Integrations::HooksController < Api::V1::Accounts::BaseController
|
class Api::V1::Accounts::Integrations::HooksController < Api::V1::Accounts::BaseController
|
||||||
before_action :fetch_hook, only: [:update, :destroy]
|
before_action :fetch_hook, except: [:create]
|
||||||
before_action :check_authorization
|
before_action :check_authorization
|
||||||
|
|
||||||
def create
|
def create
|
||||||
@@ -10,6 +10,10 @@ class Api::V1::Accounts::Integrations::HooksController < Api::V1::Accounts::Base
|
|||||||
@hook.update!(permitted_params.slice(:status, :settings))
|
@hook.update!(permitted_params.slice(:status, :settings))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def process_event
|
||||||
|
render json: { message: @hook.process_event(params[:event]) }
|
||||||
|
end
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
@hook.destroy!
|
@hook.destroy!
|
||||||
head :ok
|
head :ok
|
||||||
|
|||||||
@@ -72,14 +72,16 @@ class Api::V2::Accounts::ReportsController < Api::V1::Accounts::BaseController
|
|||||||
def current_summary_params
|
def current_summary_params
|
||||||
common_params.merge({
|
common_params.merge({
|
||||||
since: range[:current][:since],
|
since: range[:current][:since],
|
||||||
until: range[:current][:until]
|
until: range[:current][:until],
|
||||||
|
timezone_offset: params[:timezone_offset]
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
def previous_summary_params
|
def previous_summary_params
|
||||||
common_params.merge({
|
common_params.merge({
|
||||||
since: range[:previous][:since],
|
since: range[:previous][:since],
|
||||||
until: range[:previous][:until]
|
until: range[:previous][:until],
|
||||||
|
timezone_offset: params[:timezone_offset]
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ module DateRangeHelper
|
|||||||
def range
|
def range
|
||||||
return if params[:since].blank? || params[:until].blank?
|
return if params[:since].blank? || params[:until].blank?
|
||||||
|
|
||||||
parse_date_time(params[:since])..parse_date_time(params[:until])
|
parse_date_time(params[:since])...parse_date_time(params[:until])
|
||||||
end
|
end
|
||||||
|
|
||||||
def parse_date_time(datetime)
|
def parse_date_time(datetime)
|
||||||
|
|||||||
@@ -52,6 +52,12 @@ class ConversationApi extends ApiClient {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
togglePriority({ conversationId, priority }) {
|
||||||
|
return axios.post(`${this.url}/${conversationId}/toggle_priority`, {
|
||||||
|
priority,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
assignAgent({ conversationId, agentId }) {
|
assignAgent({ conversationId, agentId }) {
|
||||||
return axios.post(
|
return axios.post(
|
||||||
`${this.url}/${conversationId}/assignments?assignee_id=${agentId}`,
|
`${this.url}/${conversationId}/assignments?assignee_id=${agentId}`,
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/* global axios */
|
||||||
|
|
||||||
|
import ApiClient from '../ApiClient';
|
||||||
|
|
||||||
|
class OpenAIAPI extends ApiClient {
|
||||||
|
constructor() {
|
||||||
|
super('integrations', { accountScoped: true });
|
||||||
|
}
|
||||||
|
|
||||||
|
processEvent({ name = 'rephrase', content, tone, hookId }) {
|
||||||
|
return axios.post(`${this.url}/hooks/${hookId}/process_event`, {
|
||||||
|
event: {
|
||||||
|
name: name,
|
||||||
|
data: {
|
||||||
|
tone,
|
||||||
|
content,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default new OpenAIAPI();
|
||||||
@@ -40,6 +40,7 @@ class ReportsAPI extends ApiClient {
|
|||||||
id,
|
id,
|
||||||
group_by: groupBy,
|
group_by: groupBy,
|
||||||
business_hours: businessHours,
|
business_hours: businessHours,
|
||||||
|
timezone_offset: getTimeOffset(),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,9 +42,13 @@ describe('#Reports API', () => {
|
|||||||
'/api/v2/reports/summary',
|
'/api/v2/reports/summary',
|
||||||
{
|
{
|
||||||
params: {
|
params: {
|
||||||
|
business_hours: undefined,
|
||||||
|
group_by: undefined,
|
||||||
|
id: undefined,
|
||||||
since: 1621103400,
|
since: 1621103400,
|
||||||
until: 1621621800,
|
timezone_offset: -0,
|
||||||
type: 'account',
|
type: 'account',
|
||||||
|
until: 1621621800,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.settings.back-button {
|
.header-section.back-button {
|
||||||
direction: initial;
|
direction: initial;
|
||||||
margin-left: var(--space-normal);
|
margin-left: var(--space-normal);
|
||||||
margin-right: var(--space-smaller);
|
margin-right: var(--space-smaller);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
.multiselect--active {
|
.multiselect--active {
|
||||||
>.multiselect__tags {
|
>.multiselect__tags {
|
||||||
border-color: $color-woot;
|
border-color: var(--w-500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,16 +75,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
&.multiselect__option--selected {
|
&.multiselect__option--selected {
|
||||||
background: var(--w-400);
|
background: var(--w-75);
|
||||||
color: var(--white);
|
|
||||||
|
|
||||||
&.multiselect__option--highlight:hover {
|
&.multiselect__option--highlight:hover {
|
||||||
background: var(--w-600);
|
background: var(--w-75);
|
||||||
color: var(--white);
|
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
background: transparent;
|
background: transparent;
|
||||||
color: var(--white);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&::after:hover {
|
&::after:hover {
|
||||||
@@ -196,6 +193,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
font-size: var(--font-size-small);
|
font-size: var(--font-size-small);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
max-height: 3.8rem;
|
||||||
padding: var(--space-smaller) var(--space-micro);
|
padding: var(--space-smaller) var(--space-micro);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,6 +125,7 @@
|
|||||||
@update-conversation-status="toggleConversationStatus"
|
@update-conversation-status="toggleConversationStatus"
|
||||||
@context-menu-toggle="onContextMenuToggle"
|
@context-menu-toggle="onContextMenuToggle"
|
||||||
@mark-as-unread="markAsUnread"
|
@mark-as-unread="markAsUnread"
|
||||||
|
@assign-priority="assignPriority"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div v-if="chatListLoading" class="text-center">
|
<div v-if="chatListLoading" class="text-center">
|
||||||
@@ -191,6 +192,7 @@ import {
|
|||||||
isOnMentionsView,
|
isOnMentionsView,
|
||||||
isOnUnattendedView,
|
isOnUnattendedView,
|
||||||
} from '../store/modules/conversations/helpers/actionHelpers';
|
} from '../store/modules/conversations/helpers/actionHelpers';
|
||||||
|
import { CONVERSATION_EVENTS } from '../helper/AnalyticsHelper/events';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -248,6 +250,9 @@ export default {
|
|||||||
...filter,
|
...filter,
|
||||||
attributeName: this.$t(`FILTER.ATTRIBUTES.${filter.attributeI18nKey}`),
|
attributeName: this.$t(`FILTER.ATTRIBUTES.${filter.attributeI18nKey}`),
|
||||||
})),
|
})),
|
||||||
|
// chatsOnView is to store the chats that are currently visible on the screen,
|
||||||
|
// which mirrors the conversationList.
|
||||||
|
chatsOnView: [],
|
||||||
foldersQuery: {},
|
foldersQuery: {},
|
||||||
showAddFoldersModal: false,
|
showAddFoldersModal: false,
|
||||||
showDeleteFoldersModal: false,
|
showDeleteFoldersModal: false,
|
||||||
@@ -347,18 +352,39 @@ export default {
|
|||||||
this.currentPageFilterKey
|
this.currentPageFilterKey
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
activeAssigneeTabCount() {
|
||||||
|
const { activeAssigneeTab } = this;
|
||||||
|
const count = this.assigneeTabItems.find(
|
||||||
|
item => item.key === activeAssigneeTab
|
||||||
|
).count;
|
||||||
|
return count;
|
||||||
|
},
|
||||||
conversationFilters() {
|
conversationFilters() {
|
||||||
return {
|
return {
|
||||||
inboxId: this.conversationInbox ? this.conversationInbox : undefined,
|
inboxId: this.conversationInbox ? this.conversationInbox : undefined,
|
||||||
assigneeType: this.activeAssigneeTab,
|
assigneeType: this.activeAssigneeTab,
|
||||||
status: this.activeStatus,
|
status: this.activeStatus,
|
||||||
page: this.currentPage + 1,
|
page: this.conversationListPagination,
|
||||||
labels: this.label ? [this.label] : undefined,
|
labels: this.label ? [this.label] : undefined,
|
||||||
teamId: this.teamId || undefined,
|
teamId: this.teamId || undefined,
|
||||||
conversationType: this.conversationType || undefined,
|
conversationType: this.conversationType || undefined,
|
||||||
folders: this.hasActiveFolders ? this.savedFoldersValue : undefined,
|
folders: this.hasActiveFolders ? this.savedFoldersValue : undefined,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
conversationListPagination() {
|
||||||
|
const conversationsPerPage = 25;
|
||||||
|
const isNoFiltersOrFoldersAndChatListNotEmpty =
|
||||||
|
!this.hasAppliedFiltersOrActiveFolders && this.chatsOnView !== [];
|
||||||
|
const isUnderPerPage =
|
||||||
|
this.chatsOnView.length < conversationsPerPage &&
|
||||||
|
this.activeAssigneeTabCount < conversationsPerPage &&
|
||||||
|
this.activeAssigneeTabCount > this.chatsOnView.length;
|
||||||
|
|
||||||
|
if (isNoFiltersOrFoldersAndChatListNotEmpty && isUnderPerPage) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return this.currentPage + 1;
|
||||||
|
},
|
||||||
pageTitle() {
|
pageTitle() {
|
||||||
if (this.hasAppliedFilters) {
|
if (this.hasAppliedFilters) {
|
||||||
return this.$t('CHAT_LIST.TAB_HEADING');
|
return this.$t('CHAT_LIST.TAB_HEADING');
|
||||||
@@ -400,7 +426,6 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
conversationList = [...this.chatLists];
|
conversationList = [...this.chatLists];
|
||||||
}
|
}
|
||||||
|
|
||||||
return conversationList;
|
return conversationList;
|
||||||
},
|
},
|
||||||
activeFolder() {
|
activeFolder() {
|
||||||
@@ -449,6 +474,9 @@ export default {
|
|||||||
this.resetAndFetchData();
|
this.resetAndFetchData();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
chatLists() {
|
||||||
|
this.chatsOnView = this.conversationList;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.$store.dispatch('setChatFilter', this.activeStatus);
|
this.$store.dispatch('setChatFilter', this.activeStatus);
|
||||||
@@ -670,6 +698,26 @@ export default {
|
|||||||
this.showAlert(this.$t('BULK_ACTION.ASSIGN_FAILED'));
|
this.showAlert(this.$t('BULK_ACTION.ASSIGN_FAILED'));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
async assignPriority(priority, conversationId = null) {
|
||||||
|
this.$store.dispatch('setCurrentChatPriority', {
|
||||||
|
priority,
|
||||||
|
conversationId,
|
||||||
|
});
|
||||||
|
this.$store
|
||||||
|
.dispatch('assignPriority', { conversationId, priority })
|
||||||
|
.then(() => {
|
||||||
|
this.$track(CONVERSATION_EVENTS.CHANGE_PRIORITY, {
|
||||||
|
newValue: priority,
|
||||||
|
from: 'Context menu',
|
||||||
|
});
|
||||||
|
this.showAlert(
|
||||||
|
this.$t('CONVERSATION.PRIORITY.CHANGE_PRIORITY.SUCCESSFUL', {
|
||||||
|
priority,
|
||||||
|
conversationId,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
});
|
||||||
|
},
|
||||||
async markAsUnread(conversationId) {
|
async markAsUnread(conversationId) {
|
||||||
try {
|
try {
|
||||||
await this.$store.dispatch('markMessagesUnread', {
|
await this.$store.dispatch('markMessagesUnread', {
|
||||||
|
|||||||
@@ -0,0 +1,171 @@
|
|||||||
|
<template>
|
||||||
|
<div v-if="isAIIntegrationEnabled" class="position-relative">
|
||||||
|
<woot-button
|
||||||
|
v-tooltip.top-end="$t('INTEGRATION_SETTINGS.OPEN_AI.TITLE')"
|
||||||
|
icon="wand"
|
||||||
|
color-scheme="secondary"
|
||||||
|
variant="smooth"
|
||||||
|
size="small"
|
||||||
|
@click="toggleDropdown"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
v-if="showDropdown"
|
||||||
|
v-on-clickaway="closeDropdown"
|
||||||
|
class="dropdown-pane dropdown-pane--open ai-modal"
|
||||||
|
>
|
||||||
|
<h4 class="sub-block-title margin-top-1">
|
||||||
|
{{ $t('INTEGRATION_SETTINGS.OPEN_AI.TITLE') }}
|
||||||
|
</h4>
|
||||||
|
<p>
|
||||||
|
{{ $t('INTEGRATION_SETTINGS.OPEN_AI.SUBTITLE') }}
|
||||||
|
</p>
|
||||||
|
<label>
|
||||||
|
{{ $t('INTEGRATION_SETTINGS.OPEN_AI.TONE.TITLE') }}
|
||||||
|
</label>
|
||||||
|
<div class="tone__item">
|
||||||
|
<select v-model="activeTone" class="status--filter small">
|
||||||
|
<option v-for="tone in tones" :key="tone.key" :value="tone.key">
|
||||||
|
{{ tone.value }}
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer flex-container align-right">
|
||||||
|
<woot-button variant="clear" size="small" @click="closeDropdown">
|
||||||
|
{{ $t('INTEGRATION_SETTINGS.OPEN_AI.BUTTONS.CANCEL') }}
|
||||||
|
</woot-button>
|
||||||
|
<woot-button
|
||||||
|
:is-loading="isGenerating"
|
||||||
|
size="small"
|
||||||
|
@click="processText"
|
||||||
|
>
|
||||||
|
{{ buttonText }}
|
||||||
|
</woot-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { mapGetters } from 'vuex';
|
||||||
|
import { mixin as clickaway } from 'vue-clickaway';
|
||||||
|
import OpenAPI from 'dashboard/api/integrations/openapi';
|
||||||
|
import alertMixin from 'shared/mixins/alertMixin';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
mixins: [alertMixin, clickaway],
|
||||||
|
props: {
|
||||||
|
conversationId: {
|
||||||
|
type: Number,
|
||||||
|
default: 0,
|
||||||
|
},
|
||||||
|
message: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
isGenerating: false,
|
||||||
|
showDropdown: false,
|
||||||
|
activeTone: 'professional',
|
||||||
|
tones: [
|
||||||
|
{
|
||||||
|
key: 'professional',
|
||||||
|
value: this.$t(
|
||||||
|
'INTEGRATION_SETTINGS.OPEN_AI.TONE.OPTIONS.PROFESSIONAL'
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'friendly',
|
||||||
|
value: this.$t('INTEGRATION_SETTINGS.OPEN_AI.TONE.OPTIONS.FRIENDLY'),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapGetters({ appIntegrations: 'integrations/getAppIntegrations' }),
|
||||||
|
isAIIntegrationEnabled() {
|
||||||
|
return this.appIntegrations.find(
|
||||||
|
integration => integration.id === 'openai' && !!integration.hooks.length
|
||||||
|
);
|
||||||
|
},
|
||||||
|
hookId() {
|
||||||
|
return this.appIntegrations.find(
|
||||||
|
integration => integration.id === 'openai' && !!integration.hooks.length
|
||||||
|
).hooks[0].id;
|
||||||
|
},
|
||||||
|
buttonText() {
|
||||||
|
return this.isGenerating
|
||||||
|
? this.$t('INTEGRATION_SETTINGS.OPEN_AI.BUTTONS.GENERATING')
|
||||||
|
: this.$t('INTEGRATION_SETTINGS.OPEN_AI.BUTTONS.GENERATE');
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
if (!this.appIntegrations.length) {
|
||||||
|
this.$store.dispatch('integrations/get');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toggleDropdown() {
|
||||||
|
this.showDropdown = !this.showDropdown;
|
||||||
|
},
|
||||||
|
closeDropdown() {
|
||||||
|
this.showDropdown = false;
|
||||||
|
},
|
||||||
|
async processText() {
|
||||||
|
this.isGenerating = true;
|
||||||
|
try {
|
||||||
|
const result = await OpenAPI.processEvent({
|
||||||
|
hookId: this.hookId,
|
||||||
|
type: 'rephrase',
|
||||||
|
content: this.message,
|
||||||
|
tone: this.activeTone,
|
||||||
|
});
|
||||||
|
const {
|
||||||
|
data: { message: generatedMessage },
|
||||||
|
} = result;
|
||||||
|
this.$emit('replace-text', generatedMessage || this.message);
|
||||||
|
this.closeDropdown();
|
||||||
|
} catch (error) {
|
||||||
|
this.showAlert(this.$t('INTEGRATION_SETTINGS.OPEN_AI.GENERATE_ERROR'));
|
||||||
|
} finally {
|
||||||
|
this.isGenerating = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.ai-modal {
|
||||||
|
width: 400px;
|
||||||
|
right: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: var(--space-normal);
|
||||||
|
bottom: 34px;
|
||||||
|
position: absolute;
|
||||||
|
span {
|
||||||
|
font-size: var(--font-size-small);
|
||||||
|
font-weight: var(--font-weight-medium);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color: var(--s-600);
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
margin-bottom: var(--space-smaller);
|
||||||
|
}
|
||||||
|
|
||||||
|
.status--filter {
|
||||||
|
background-color: var(--color-background-light);
|
||||||
|
border: 1px solid var(--color-border);
|
||||||
|
font-size: var(--font-size-small);
|
||||||
|
height: var(--space-large);
|
||||||
|
padding: 0 var(--space-medium) 0 var(--space-small);
|
||||||
|
}
|
||||||
|
|
||||||
|
.modal-footer {
|
||||||
|
gap: var(--space-smaller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<button class="settings back-button" @click.capture="goBack">
|
<button class="header-section back-button" @click.capture="goBack">
|
||||||
<fluent-icon icon="chevron-left" />
|
<fluent-icon icon="chevron-left" />
|
||||||
{{ buttonLabel || $t('GENERAL_SETTINGS.BACK') }}
|
{{ buttonLabel || $t('GENERAL_SETTINGS.BACK') }}
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="dashboard-app--container">
|
<div v-if="hasOpenedAtleastOnce" class="dashboard-app--container">
|
||||||
<div
|
<div
|
||||||
v-for="(configItem, index) in config"
|
v-for="(configItem, index) in config"
|
||||||
:key="index"
|
:key="index"
|
||||||
@@ -35,9 +35,14 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({}),
|
default: () => ({}),
|
||||||
},
|
},
|
||||||
|
isVisible: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
hasOpenedAtleastOnce: false,
|
||||||
iframeLoading: true,
|
iframeLoading: true,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@@ -57,6 +62,13 @@ export default {
|
|||||||
return { id, name, email };
|
return { id, name, email };
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
watch: {
|
||||||
|
isVisible() {
|
||||||
|
if (this.isVisible) {
|
||||||
|
this.hasOpenedAtleastOnce = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
window.onmessage = e => {
|
window.onmessage = e => {
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
import InboxDropdownItem from './InboxDropdownItem';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
title: 'Components/DropDowns/InboxDropdownItem',
|
||||||
|
component: InboxDropdownItem,
|
||||||
|
argTypes: {
|
||||||
|
name: {
|
||||||
|
defaultValue: 'My new inbox',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
inboxIdentifier: {
|
||||||
|
defaultValue: 'nithin@mail.com',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
channelType: {
|
||||||
|
defaultValue: 'email',
|
||||||
|
control: {
|
||||||
|
type: 'text',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const Template = (args, { argTypes }) => ({
|
||||||
|
props: Object.keys(argTypes),
|
||||||
|
components: { InboxDropdownItem },
|
||||||
|
template: '<inbox-dropdown-item v-bind="$props" ></inbox-dropdown-item>',
|
||||||
|
});
|
||||||
|
|
||||||
|
export const Banner = Template.bind({});
|
||||||
|
Banner.args = {};
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
<template>
|
||||||
|
<div class="option-item--inbox">
|
||||||
|
<span class="badge--icon">
|
||||||
|
<fluent-icon :icon="computedInboxIcon" size="14" />
|
||||||
|
</span>
|
||||||
|
<div class="option__user-data">
|
||||||
|
<h5 class="option__title">
|
||||||
|
{{ name }}
|
||||||
|
</h5>
|
||||||
|
<p class="option__body text-truncate" :title="inboxIdentifier">
|
||||||
|
{{ inboxIdentifier || computedInboxType }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
getInboxClassByType,
|
||||||
|
getReadableInboxByType,
|
||||||
|
} from 'dashboard/helper/inbox';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {},
|
||||||
|
props: {
|
||||||
|
name: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
inboxIdentifier: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
channelType: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
computedInboxIcon() {
|
||||||
|
if (!this.channelType) return 'chat';
|
||||||
|
const classByType = getInboxClassByType(
|
||||||
|
this.channelType,
|
||||||
|
this.inboxIdentifier
|
||||||
|
);
|
||||||
|
return classByType;
|
||||||
|
},
|
||||||
|
computedInboxType() {
|
||||||
|
if (!this.channelType) return 'chat';
|
||||||
|
const classByType = getReadableInboxByType(
|
||||||
|
this.channelType,
|
||||||
|
this.inboxIdentifier
|
||||||
|
);
|
||||||
|
return classByType;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.option-item--inbox {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 3.8rem;
|
||||||
|
min-width: 0;
|
||||||
|
padding: 0 var(--space-smaller);
|
||||||
|
}
|
||||||
|
.badge--icon {
|
||||||
|
display: inline-flex;
|
||||||
|
border-radius: var(--border-radius-small);
|
||||||
|
margin-right: var(--space-smaller);
|
||||||
|
background: var(--s-25);
|
||||||
|
padding: var(--space-micro);
|
||||||
|
align-items: center;
|
||||||
|
flex-shrink: 0;
|
||||||
|
justify-content: center;
|
||||||
|
width: var(--space-medium);
|
||||||
|
height: var(--space-medium);
|
||||||
|
}
|
||||||
|
|
||||||
|
.option__user-data {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
margin-left: var(--space-smaller);
|
||||||
|
margin-right: var(--space-smaller);
|
||||||
|
}
|
||||||
|
.option__body {
|
||||||
|
display: inline-block;
|
||||||
|
color: var(--s-600);
|
||||||
|
font-size: var(--font-size-small);
|
||||||
|
line-height: 1.3;
|
||||||
|
min-width: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.option__title {
|
||||||
|
line-height: 1.1;
|
||||||
|
font-size: var(--font-size-mini);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -91,6 +91,12 @@
|
|||||||
v-if="(isAWebWidgetInbox || isAPIInbox) && !isOnPrivateNote"
|
v-if="(isAWebWidgetInbox || isAPIInbox) && !isOnPrivateNote"
|
||||||
:conversation-id="conversationId"
|
:conversation-id="conversationId"
|
||||||
/>
|
/>
|
||||||
|
<AIAssistanceButton
|
||||||
|
v-if="message"
|
||||||
|
:conversation-id="conversationId"
|
||||||
|
:message="message"
|
||||||
|
@replace-text="replaceText"
|
||||||
|
/>
|
||||||
<transition name="modal-fade">
|
<transition name="modal-fade">
|
||||||
<div
|
<div
|
||||||
v-show="$refs.upload && $refs.upload.dropActive"
|
v-show="$refs.upload && $refs.upload.dropActive"
|
||||||
@@ -129,12 +135,13 @@ import {
|
|||||||
ALLOWED_FILE_TYPES_FOR_TWILIO_WHATSAPP,
|
ALLOWED_FILE_TYPES_FOR_TWILIO_WHATSAPP,
|
||||||
} from 'shared/constants/messages';
|
} from 'shared/constants/messages';
|
||||||
import VideoCallButton from '../VideoCallButton';
|
import VideoCallButton from '../VideoCallButton';
|
||||||
|
import AIAssistanceButton from '../AIAssistanceButton.vue';
|
||||||
import { REPLY_EDITOR_MODES } from './constants';
|
import { REPLY_EDITOR_MODES } from './constants';
|
||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ReplyBottomPanel',
|
name: 'ReplyBottomPanel',
|
||||||
components: { FileUpload, VideoCallButton },
|
components: { FileUpload, VideoCallButton, AIAssistanceButton },
|
||||||
mixins: [eventListenerMixins, uiSettingsMixin, inboxMixin],
|
mixins: [eventListenerMixins, uiSettingsMixin, inboxMixin],
|
||||||
props: {
|
props: {
|
||||||
mode: {
|
mode: {
|
||||||
@@ -217,6 +224,10 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
message: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
@@ -303,6 +314,9 @@ export default {
|
|||||||
send_with_signature: !this.sendWithSignature,
|
send_with_signature: !this.sendWithSignature,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
replaceText(text) {
|
||||||
|
this.$emit('replace-text', text);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
:show-badge="false"
|
:show-badge="false"
|
||||||
/>
|
/>
|
||||||
</woot-tabs>
|
</woot-tabs>
|
||||||
<div v-if="!activeIndex" class="messages-and-sidebar">
|
<div v-show="!activeIndex" class="messages-and-sidebar">
|
||||||
<messages-view
|
<messages-view
|
||||||
v-if="currentChat.id"
|
v-if="currentChat.id"
|
||||||
:inbox-id="inboxId"
|
:inbox-id="inboxId"
|
||||||
@@ -41,9 +41,11 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<dashboard-app-frame
|
<dashboard-app-frame
|
||||||
v-else
|
v-for="(dashboardApp, index) in dashboardApps"
|
||||||
:key="currentChat.id + '-' + activeIndex"
|
v-show="activeIndex - 1 === index"
|
||||||
:config="dashboardApps[activeIndex - 1].content"
|
:key="currentChat.id + '-' + dashboardApp.id"
|
||||||
|
:is-visible="activeIndex - 1 === index"
|
||||||
|
:config="dashboardApps[index].content"
|
||||||
:current-chat="currentChat"
|
:current-chat="currentChat"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
@@ -112,6 +114,7 @@ export default {
|
|||||||
},
|
},
|
||||||
'currentChat.id'() {
|
'currentChat.id'() {
|
||||||
this.fetchLabels();
|
this.fetchLabels();
|
||||||
|
this.activeIndex = 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|||||||
@@ -33,13 +33,16 @@
|
|||||||
<div class="conversation--details columns">
|
<div class="conversation--details columns">
|
||||||
<div class="conversation--metadata">
|
<div class="conversation--metadata">
|
||||||
<inbox-name v-if="showInboxName" :inbox="inbox" />
|
<inbox-name v-if="showInboxName" :inbox="inbox" />
|
||||||
<span
|
<div class="conversation-metadata-attributes">
|
||||||
v-if="showAssignee && assignee.name"
|
<span
|
||||||
class="label assignee-label text-truncate"
|
v-if="showAssignee && assignee.name"
|
||||||
>
|
class="label assignee-label text-truncate"
|
||||||
<fluent-icon icon="person" size="12" />
|
>
|
||||||
{{ assignee.name }}
|
<fluent-icon icon="person" size="12" />
|
||||||
</span>
|
{{ assignee.name }}
|
||||||
|
</span>
|
||||||
|
<priority-mark :priority="chat.priority" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h4 class="conversation--user">
|
<h4 class="conversation--user">
|
||||||
{{ currentContact.name }}
|
{{ currentContact.name }}
|
||||||
@@ -106,12 +109,14 @@
|
|||||||
<conversation-context-menu
|
<conversation-context-menu
|
||||||
:status="chat.status"
|
:status="chat.status"
|
||||||
:inbox-id="inbox.id"
|
:inbox-id="inbox.id"
|
||||||
|
:priority="chat.priority"
|
||||||
:has-unread-messages="hasUnread"
|
:has-unread-messages="hasUnread"
|
||||||
@update-conversation="onUpdateConversation"
|
@update-conversation="onUpdateConversation"
|
||||||
@assign-agent="onAssignAgent"
|
@assign-agent="onAssignAgent"
|
||||||
@assign-label="onAssignLabel"
|
@assign-label="onAssignLabel"
|
||||||
@assign-team="onAssignTeam"
|
@assign-team="onAssignTeam"
|
||||||
@mark-as-unread="markAsUnread"
|
@mark-as-unread="markAsUnread"
|
||||||
|
@assign-priority="assignPriority"
|
||||||
/>
|
/>
|
||||||
</woot-context-menu>
|
</woot-context-menu>
|
||||||
</div>
|
</div>
|
||||||
@@ -131,6 +136,7 @@ import ConversationContextMenu from './contextMenu/Index.vue';
|
|||||||
import alertMixin from 'shared/mixins/alertMixin';
|
import alertMixin from 'shared/mixins/alertMixin';
|
||||||
import TimeAgo from 'dashboard/components/ui/TimeAgo';
|
import TimeAgo from 'dashboard/components/ui/TimeAgo';
|
||||||
import CardLabels from './conversationCardComponents/CardLabels.vue';
|
import CardLabels from './conversationCardComponents/CardLabels.vue';
|
||||||
|
import PriorityMark from './PriorityMark.vue';
|
||||||
const ATTACHMENT_ICONS = {
|
const ATTACHMENT_ICONS = {
|
||||||
image: 'image',
|
image: 'image',
|
||||||
audio: 'headphones-sound-wave',
|
audio: 'headphones-sound-wave',
|
||||||
@@ -147,6 +153,7 @@ export default {
|
|||||||
Thumbnail,
|
Thumbnail,
|
||||||
ConversationContextMenu,
|
ConversationContextMenu,
|
||||||
TimeAgo,
|
TimeAgo,
|
||||||
|
PriorityMark,
|
||||||
},
|
},
|
||||||
|
|
||||||
mixins: [
|
mixins: [
|
||||||
@@ -370,6 +377,10 @@ export default {
|
|||||||
this.$emit('mark-as-unread', this.chat.id);
|
this.$emit('mark-as-unread', this.chat.id);
|
||||||
this.closeContextMenu();
|
this.closeContextMenu();
|
||||||
},
|
},
|
||||||
|
async assignPriority(priority) {
|
||||||
|
this.$emit('assign-priority', priority, this.chat.id);
|
||||||
|
this.closeContextMenu();
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -429,6 +440,11 @@ export default {
|
|||||||
padding: var(--space-micro) 0 var(--space-micro) 0;
|
padding: var(--space-micro) 0 var(--space-micro) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.conversation-metadata-attributes {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--space-small);
|
||||||
|
}
|
||||||
|
|
||||||
.assignee-label {
|
.assignee-label {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
margin-left: var(--space-small);
|
margin-left: var(--space-small);
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
<template>
|
||||||
|
<span
|
||||||
|
v-if="priority"
|
||||||
|
v-tooltip="{
|
||||||
|
content: tooltipText,
|
||||||
|
delay: { show: 1500, hide: 0 },
|
||||||
|
hideOnClick: true,
|
||||||
|
}"
|
||||||
|
class="conversation-priority-mark"
|
||||||
|
:class="{ urgent: priority === CONVERSATION_PRIORITY.URGENT }"
|
||||||
|
>
|
||||||
|
<fluent-icon
|
||||||
|
:icon="`priority-${priority.toLowerCase()}`"
|
||||||
|
size="14"
|
||||||
|
view-box="0 0 14 14"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { CONVERSATION_PRIORITY } from '../../../../shared/constants/messages';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'PriorityMark',
|
||||||
|
props: {
|
||||||
|
priority: {
|
||||||
|
type: String,
|
||||||
|
default: '',
|
||||||
|
validate: value =>
|
||||||
|
[...Object.values(CONVERSATION_PRIORITY), ''].includes(value),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
CONVERSATION_PRIORITY,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
tooltipText() {
|
||||||
|
return this.$t(
|
||||||
|
`CONVERSATION.PRIORITY.OPTIONS.${this.priority.toUpperCase()}`
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
.conversation-priority-mark {
|
||||||
|
align-items: center;
|
||||||
|
background: var(--s-50);
|
||||||
|
border-radius: var(--border-radius-small);
|
||||||
|
color: var(--s-600);
|
||||||
|
display: inline-flex;
|
||||||
|
width: var(--space-snug);
|
||||||
|
|
||||||
|
&.urgent {
|
||||||
|
background: var(--r-500);
|
||||||
|
color: var(--w-25);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -120,8 +120,10 @@
|
|||||||
:toggle-audio-recorder-play-pause="toggleAudioRecorderPlayPause"
|
:toggle-audio-recorder-play-pause="toggleAudioRecorderPlayPause"
|
||||||
:toggle-audio-recorder="toggleAudioRecorder"
|
:toggle-audio-recorder="toggleAudioRecorder"
|
||||||
:toggle-emoji-picker="toggleEmojiPicker"
|
:toggle-emoji-picker="toggleEmojiPicker"
|
||||||
|
:message="message"
|
||||||
@selectWhatsappTemplate="openWhatsappTemplateModal"
|
@selectWhatsappTemplate="openWhatsappTemplateModal"
|
||||||
@toggle-editor="toggleRichContentEditor"
|
@toggle-editor="toggleRichContentEditor"
|
||||||
|
@replace-text="replaceText"
|
||||||
/>
|
/>
|
||||||
<whatsapp-templates
|
<whatsapp-templates
|
||||||
:inbox-id="inbox.id"
|
:inbox-id="inbox.id"
|
||||||
|
|||||||
@@ -23,6 +23,14 @@
|
|||||||
@click="snoozeConversation(option.snoozedUntil)"
|
@click="snoozeConversation(option.snoozedUntil)"
|
||||||
/>
|
/>
|
||||||
</menu-item-with-submenu>
|
</menu-item-with-submenu>
|
||||||
|
<menu-item-with-submenu :option="priorityConfig">
|
||||||
|
<menu-item
|
||||||
|
v-for="(option, i) in priorityConfig.options"
|
||||||
|
:key="i"
|
||||||
|
:option="option"
|
||||||
|
@click="assignPriority(option.key)"
|
||||||
|
/>
|
||||||
|
</menu-item-with-submenu>
|
||||||
<menu-item-with-submenu
|
<menu-item-with-submenu
|
||||||
:option="labelMenuConfig"
|
:option="labelMenuConfig"
|
||||||
:sub-menu-available="!!labels.length"
|
:sub-menu-available="!!labels.length"
|
||||||
@@ -93,6 +101,10 @@ export default {
|
|||||||
type: Number,
|
type: Number,
|
||||||
default: null,
|
default: null,
|
||||||
},
|
},
|
||||||
|
priority: {
|
||||||
|
type: String,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -140,6 +152,33 @@ export default {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
priorityConfig: {
|
||||||
|
key: 'priority',
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.TITLE'),
|
||||||
|
icon: 'warning',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.OPTIONS.NONE'),
|
||||||
|
key: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.OPTIONS.URGENT'),
|
||||||
|
key: 'urgent',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.OPTIONS.HIGH'),
|
||||||
|
key: 'high',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.OPTIONS.MEDIUM'),
|
||||||
|
key: 'medium',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: this.$t('CONVERSATION.PRIORITY.OPTIONS.LOW'),
|
||||||
|
key: 'low',
|
||||||
|
},
|
||||||
|
].filter(item => item.key !== this.priority),
|
||||||
|
},
|
||||||
labelMenuConfig: {
|
labelMenuConfig: {
|
||||||
key: 'label',
|
key: 'label',
|
||||||
icon: 'tag',
|
icon: 'tag',
|
||||||
@@ -193,6 +232,9 @@ export default {
|
|||||||
this.snoozeTimes[snoozedUntil] || null
|
this.snoozeTimes[snoozedUntil] || null
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
assignPriority(priority) {
|
||||||
|
this.$emit('assign-priority', priority);
|
||||||
|
},
|
||||||
show(key) {
|
show(key) {
|
||||||
// If the conversation status is same as the action, then don't display the option
|
// If the conversation status is same as the action, then don't display the option
|
||||||
// i.e.: Don't show an option to resolve if the conversation is already resolved.
|
// i.e.: Don't show an option to resolve if the conversation is already resolved.
|
||||||
|
|||||||
@@ -2,6 +2,6 @@ import emailValidator from 'vuelidate/lib/validators/email';
|
|||||||
|
|
||||||
export const validEmailsByComma = value => {
|
export const validEmailsByComma = value => {
|
||||||
if (!value.length) return true;
|
if (!value.length) return true;
|
||||||
const emails = value.split(',');
|
const emails = value.replace(/\s+/g, '').split(',');
|
||||||
return emails.every(email => emailValidator(email));
|
return emails.every(email => emailValidator(email));
|
||||||
};
|
};
|
||||||
|
|||||||
+3
@@ -10,4 +10,7 @@ describe('#validEmailsByComma', () => {
|
|||||||
it('returns false when one of the email passed is invalid', () => {
|
it('returns false when one of the email passed is invalid', () => {
|
||||||
expect(validEmailsByComma('ni@njan.com,pova.da')).toEqual(false);
|
expect(validEmailsByComma('ni@njan.com,pova.da')).toEqual(false);
|
||||||
});
|
});
|
||||||
|
it('strips spaces between emails before validating', () => {
|
||||||
|
expect(validEmailsByComma('1@test.com , 2@test.com')).toEqual(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ export const CONVERSATION_EVENTS = Object.freeze({
|
|||||||
USED_MENTIONS: 'Used mentions',
|
USED_MENTIONS: 'Used mentions',
|
||||||
SEARCH_CONVERSATION: 'Searched conversations',
|
SEARCH_CONVERSATION: 'Searched conversations',
|
||||||
APPLY_FILTER: 'Applied filters in the conversation list',
|
APPLY_FILTER: 'Applied filters in the conversation list',
|
||||||
|
CHANGE_PRIORITY: 'Assigned priority to a conversation',
|
||||||
});
|
});
|
||||||
|
|
||||||
export const ACCOUNT_EVENTS = Object.freeze({
|
export const ACCOUNT_EVENTS = Object.freeze({
|
||||||
|
|||||||
@@ -30,6 +30,36 @@ class ActionCableConnector extends BaseActionCableConnector {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onReconnect = () => {
|
||||||
|
this.syncActiveConversationMessages();
|
||||||
|
};
|
||||||
|
|
||||||
|
onDisconnected = () => {
|
||||||
|
this.setActiveConversationLastMessageId();
|
||||||
|
};
|
||||||
|
|
||||||
|
setActiveConversationLastMessageId = () => {
|
||||||
|
const {
|
||||||
|
params: { conversation_id },
|
||||||
|
} = this.app.$route;
|
||||||
|
if (conversation_id) {
|
||||||
|
this.app.$store.dispatch('setConversationLastMessageId', {
|
||||||
|
conversationId: Number(conversation_id),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
syncActiveConversationMessages = () => {
|
||||||
|
const {
|
||||||
|
params: { conversation_id },
|
||||||
|
} = this.app.$route;
|
||||||
|
if (conversation_id) {
|
||||||
|
this.app.$store.dispatch('syncActiveConversationMessages', {
|
||||||
|
conversationId: Number(conversation_id),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
isAValidEvent = data => {
|
isAValidEvent = data => {
|
||||||
return this.app.$store.getters.getCurrentAccountId === data.account_id;
|
return this.app.$store.getters.getCurrentAccountId === data.account_id;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,6 +16,29 @@ const MESSAGE_CONDITION_VALUES = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const PRIORITY_CONDITION_VALUES = [
|
||||||
|
{
|
||||||
|
id: 'nil',
|
||||||
|
name: 'None',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'low',
|
||||||
|
name: 'Low',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'medium',
|
||||||
|
name: 'Medium',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'high',
|
||||||
|
name: 'High',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'urgent',
|
||||||
|
name: 'Urgent',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
export const getCustomAttributeInputType = key => {
|
export const getCustomAttributeInputType = key => {
|
||||||
const customAttributeMap = {
|
const customAttributeMap = {
|
||||||
date: 'date',
|
date: 'date',
|
||||||
@@ -103,6 +126,7 @@ export const getActionOptions = ({ agents, teams, labels, type }) => {
|
|||||||
assign_team: teams,
|
assign_team: teams,
|
||||||
send_email_to_team: teams,
|
send_email_to_team: teams,
|
||||||
add_label: generateConditionOptions(labels, 'title'),
|
add_label: generateConditionOptions(labels, 'title'),
|
||||||
|
change_priority: PRIORITY_CONDITION_VALUES,
|
||||||
};
|
};
|
||||||
return actionsMap[type];
|
return actionsMap[type];
|
||||||
};
|
};
|
||||||
@@ -139,6 +163,7 @@ export const getConditionOptions = ({
|
|||||||
conversation_language: languages,
|
conversation_language: languages,
|
||||||
country_code: countries,
|
country_code: countries,
|
||||||
message_type: MESSAGE_CONDITION_VALUES,
|
message_type: MESSAGE_CONDITION_VALUES,
|
||||||
|
priority: PRIORITY_CONDITION_VALUES,
|
||||||
};
|
};
|
||||||
|
|
||||||
return conditionFilterMaps[type];
|
return conditionFilterMaps[type];
|
||||||
|
|||||||
@@ -1,5 +1,55 @@
|
|||||||
import { INBOX_TYPES } from 'shared/mixins/inboxMixin';
|
import { INBOX_TYPES } from 'shared/mixins/inboxMixin';
|
||||||
|
|
||||||
|
export const getInboxSource = (type, phoneNumber, inbox) => {
|
||||||
|
switch (type) {
|
||||||
|
case INBOX_TYPES.WEB:
|
||||||
|
return inbox.website_url || '';
|
||||||
|
|
||||||
|
case INBOX_TYPES.TWILIO:
|
||||||
|
case INBOX_TYPES.WHATSAPP:
|
||||||
|
return phoneNumber || '';
|
||||||
|
|
||||||
|
case INBOX_TYPES.EMAIL:
|
||||||
|
return inbox.email || '';
|
||||||
|
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
export const getReadableInboxByType = (type, phoneNumber) => {
|
||||||
|
switch (type) {
|
||||||
|
case INBOX_TYPES.WEB:
|
||||||
|
return 'livechat';
|
||||||
|
|
||||||
|
case INBOX_TYPES.FB:
|
||||||
|
return 'facebook';
|
||||||
|
|
||||||
|
case INBOX_TYPES.TWITTER:
|
||||||
|
return 'twitter';
|
||||||
|
|
||||||
|
case INBOX_TYPES.TWILIO:
|
||||||
|
return phoneNumber?.startsWith('whatsapp') ? 'whatsapp' : 'sms';
|
||||||
|
|
||||||
|
case INBOX_TYPES.WHATSAPP:
|
||||||
|
return 'whatsapp';
|
||||||
|
|
||||||
|
case INBOX_TYPES.API:
|
||||||
|
return 'api';
|
||||||
|
|
||||||
|
case INBOX_TYPES.EMAIL:
|
||||||
|
return 'email';
|
||||||
|
|
||||||
|
case INBOX_TYPES.TELEGRAM:
|
||||||
|
return 'telegram';
|
||||||
|
|
||||||
|
case INBOX_TYPES.LINE:
|
||||||
|
return 'line';
|
||||||
|
|
||||||
|
default:
|
||||||
|
return 'chat';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const getInboxClassByType = (type, phoneNumber) => {
|
export const getInboxClassByType = (type, phoneNumber) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case INBOX_TYPES.WEB:
|
case INBOX_TYPES.WEB:
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ export const initializeChatwootEvents = () => {
|
|||||||
window.$chatwoot.setCustomAttributes({
|
window.$chatwoot.setCustomAttributes({
|
||||||
signedUpAt: user.created_at,
|
signedUpAt: user.created_at,
|
||||||
cloudCustomer: 'true',
|
cloudCustomer: 'true',
|
||||||
|
account_id: user.account_id,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ describe('#resolveActionName', () => {
|
|||||||
expect(resolveActionName(MACRO_ACTION_TYPES[1].key)).not.toEqual(
|
expect(resolveActionName(MACRO_ACTION_TYPES[1].key)).not.toEqual(
|
||||||
MACRO_ACTION_TYPES[0].label
|
MACRO_ACTION_TYPES[0].label
|
||||||
);
|
);
|
||||||
|
expect(resolveActionName('change_priority')).toEqual('Change Priority');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "لا توجد عناصر مطابقة لهذا الاستعلام",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"عنوان IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "تعذر الاتصال بالخادم، الرجاء المحاولة مرة أخرى لاحقاً"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "أدخل رقم الهاتف الخاص بجهة الاتصال",
|
"PLACEHOLDER": "أدخل رقم الهاتف الخاص بجهة الاتصال",
|
||||||
"LABEL": "رقم الهاتف",
|
"LABEL": "رقم الهاتف",
|
||||||
"HELP": "يجب ان يحتوى رقم الهاتف على كود دولتك تسبقها علامة +\nمثال: +20101243567",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "يجب ان تكون خانة رقم الهاتف إما فارغة او مكتملة مع رمز الدولة",
|
"ERROR": "يجب ان تكون خانة رقم الهاتف إما فارغة او مكتملة مع رمز الدولة",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "رقم الهاتف هذا مستخدم لجهة اتصال أخرى."
|
"DUPLICATE": "رقم الهاتف هذا مستخدم لجهة اتصال أخرى."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "إلى"
|
"LABEL": "إلى"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "صندوق الوارد",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "حدد صندوق الوارد"
|
"ERROR": "حدد صندوق الوارد"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "تحديث",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "تحديث",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "رمز التحقق من Webhook",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "الرئيسية",
|
"HOME": "الرئيسية",
|
||||||
"AGENTS": "موظف الدعم",
|
"AGENTS": "موظف الدعم",
|
||||||
"AGENT_BOTS": "البوتات",
|
"AGENT_BOTS": "البوتات",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "قنوات التواصل",
|
"INBOXES": "قنوات التواصل",
|
||||||
"NOTIFICATIONS": "الإشعارات",
|
"NOTIFICATIONS": "الإشعارات",
|
||||||
"CANNED_RESPONSES": "الردود السريعة",
|
"CANNED_RESPONSES": "الردود السريعة",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Няма резултати отговарящи на тази заявка",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP адрес",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Не можа да се свърже с Woot сървър. Моля, опитайте отново по-късно"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Добавете телефона на контакта",
|
"PLACEHOLDER": "Добавете телефона на контакта",
|
||||||
"LABEL": "Телефон",
|
"LABEL": "Телефон",
|
||||||
"HELP": "Телефона трябва да е във E.164 формат, например: +35955555555 [+][код на държавата][телефонен номер]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Телефона трябва да е празен или във E.164 формат",
|
"ERROR": "Телефона трябва да е празен или във E.164 формат",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Телефона се използва от друг контакт."
|
"DUPLICATE": "Телефона се използва от друг контакт."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "До"
|
"LABEL": "До"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Входяща кутия",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Изберете входяща кутия"
|
"ERROR": "Изберете входяща кутия"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Обновяване",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Обновяване",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Home",
|
"HOME": "Home",
|
||||||
"AGENTS": "Агенти",
|
"AGENTS": "Агенти",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Inboxes",
|
"INBOXES": "Inboxes",
|
||||||
"NOTIFICATIONS": "Notifications",
|
"NOTIFICATIONS": "Notifications",
|
||||||
"CANNED_RESPONSES": "Готови отговори",
|
"CANNED_RESPONSES": "Готови отговори",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "No hi ha cap resposta que coincideixi amb aquesta consulta",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"Adreça IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "No s'ha pogut connectar amb el servidor Woot. Torna-ho a provar més endavant"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Introdueix el número de telèfon del contacte",
|
"PLACEHOLDER": "Introdueix el número de telèfon del contacte",
|
||||||
"LABEL": "Número de telèfon",
|
"LABEL": "Número de telèfon",
|
||||||
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Phone number should be either empty or of E.164 format",
|
"ERROR": "Phone number should be either empty or of E.164 format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "This phone number is in use for another contact."
|
"DUPLICATE": "This phone number is in use for another contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Actualitza",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Actualitza",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Inici",
|
"HOME": "Inici",
|
||||||
"AGENTS": "Agents",
|
"AGENTS": "Agents",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Safates d'entrada",
|
"INBOXES": "Safates d'entrada",
|
||||||
"NOTIFICATIONS": "Notificacions",
|
"NOTIFICATIONS": "Notificacions",
|
||||||
"CANNED_RESPONSES": "Respostes predeterminades",
|
"CANNED_RESPONSES": "Respostes predeterminades",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Neexistují žádné položky odpovídající tomuto dotazu",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP adresa",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Nelze se připojit k Woot serveru, opakujte akci později"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Zadejte telefonní číslo kontaktu",
|
"PLACEHOLDER": "Zadejte telefonní číslo kontaktu",
|
||||||
"LABEL": "Telefonní číslo",
|
"LABEL": "Telefonní číslo",
|
||||||
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Phone number should be either empty or of E.164 format",
|
"ERROR": "Phone number should be either empty or of E.164 format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "This phone number is in use for another contact."
|
"DUPLICATE": "This phone number is in use for another contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualizovat",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualizovat",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Domů",
|
"HOME": "Domů",
|
||||||
"AGENTS": "Agenti",
|
"AGENTS": "Agenti",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Schránky",
|
"INBOXES": "Schránky",
|
||||||
"NOTIFICATIONS": "Oznámení",
|
"NOTIFICATIONS": "Oznámení",
|
||||||
"CANNED_RESPONSES": "Konzervované odpovědi",
|
"CANNED_RESPONSES": "Konzervované odpovědi",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Der er ingen elementer, der matcher denne forespørgsel",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"Ip Adresse",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Kunne ikke oprette forbindelse til Woot Server, Prøv igen senere"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Indtast telefonnummeret på kontaktpersonen",
|
"PLACEHOLDER": "Indtast telefonnummeret på kontaktpersonen",
|
||||||
"LABEL": "Telefonnummer",
|
"LABEL": "Telefonnummer",
|
||||||
"HELP": "Telefonnummer skal være af E.164 format fx: +1415555555 [+] [landekode] [områdekode] [lokalt telefonnummer]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Telefonnummer skal være enten tomt eller i E.164-format",
|
"ERROR": "Telefonnummer skal være enten tomt eller i E.164-format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Dette telefonnummer er i brug for en anden kontakt."
|
"DUPLICATE": "Dette telefonnummer er i brug for en anden kontakt."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "Til"
|
"LABEL": "Til"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Indbakke",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Vælg en indbakke"
|
"ERROR": "Vælg en indbakke"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Opdater",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Opdater",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verificér Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Hjem",
|
"HOME": "Hjem",
|
||||||
"AGENTS": "Agenter",
|
"AGENTS": "Agenter",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Indbakker",
|
"INBOXES": "Indbakker",
|
||||||
"NOTIFICATIONS": "Notifikationer",
|
"NOTIFICATIONS": "Notifikationer",
|
||||||
"CANNED_RESPONSES": "Standardsvar Svar",
|
"CANNED_RESPONSES": "Standardsvar Svar",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Es gibt keine Elemente, die dieser Abfrage entsprechen",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP-Adresse",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Es konnte keine Verbindung zum Woot Server hergestellt werden. Bitte versuchen Sie es später erneut"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Geben Sie die Telefonnummer des Kontakts ein",
|
"PLACEHOLDER": "Geben Sie die Telefonnummer des Kontakts ein",
|
||||||
"LABEL": "Telefonnummer",
|
"LABEL": "Telefonnummer",
|
||||||
"HELP": "Telefonnummer sollte im E.164-Format sein, z. B.: +1415555555 [+][Landesvorwahl][Landesvorwahl][Ortsvorwahl]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Telefonnummer muss leer sein oder im E.164-Format",
|
"ERROR": "Telefonnummer muss leer sein oder im E.164-Format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Diese Telefonnummer wird für einen anderen Kontakt verwendet."
|
"DUPLICATE": "Diese Telefonnummer wird für einen anderen Kontakt verwendet."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "An"
|
"LABEL": "An"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Posteingang",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Posteingang auswählen"
|
"ERROR": "Posteingang auswählen"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualisieren",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Aktualisieren",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook-Verifizierungstoken",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Hauptseite",
|
"HOME": "Hauptseite",
|
||||||
"AGENTS": "Agenten",
|
"AGENTS": "Agenten",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Posteingänge",
|
"INBOXES": "Posteingänge",
|
||||||
"NOTIFICATIONS": "Push-Benachrichtigungen",
|
"NOTIFICATIONS": "Push-Benachrichtigungen",
|
||||||
"CANNED_RESPONSES": "Vorgefertigte Antworten",
|
"CANNED_RESPONSES": "Vorgefertigte Antworten",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Δεν υπάρχουν αντικείμενα να ταιριάζουν με αυτό το ερώτημα",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"Διεύθυνση IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Αδυναμία σύνδεσης με τον Woot Server, Παρακαλώ προσπαθήστε αργότερα"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Εισάγετε τον αριθμό τηλεφώνου της επαφής",
|
"PLACEHOLDER": "Εισάγετε τον αριθμό τηλεφώνου της επαφής",
|
||||||
"LABEL": "Αριθμός Τηλεφώνου",
|
"LABEL": "Αριθμός Τηλεφώνου",
|
||||||
"HELP": "Ο αριθμός τηλεφώνου πρέπει να έχει μορφή E.164 π.χ.: +14155555 [+][κωδικός χώρας][κωδικός περιοχής][αριθμός τοπικού τηλεφώνου]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Ο αριθμός τηλεφώνου πρέπει να είναι είτε άδειος είτε με μορφή E.164",
|
"ERROR": "Ο αριθμός τηλεφώνου πρέπει να είναι είτε άδειος είτε με μορφή E.164",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Αυτός ο αριθμός τηλεφώνου χρησιμοποιείται σε άλλη επαφή."
|
"DUPLICATE": "Αυτός ο αριθμός τηλεφώνου χρησιμοποιείται σε άλλη επαφή."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "Προς"
|
"LABEL": "Προς"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Εισερχόμενα",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Επιλέξτε ένα κιβώτιο εισερχόμενων"
|
"ERROR": "Επιλέξτε ένα κιβώτιο εισερχόμενων"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Ενημέρωση",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Ενημέρωση",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Token Επαλήθευσης Webhook",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Αρχική",
|
"HOME": "Αρχική",
|
||||||
"AGENTS": "Πράκτορες",
|
"AGENTS": "Πράκτορες",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Κιβώτια Εισερχομένων",
|
"INBOXES": "Κιβώτια Εισερχομένων",
|
||||||
"NOTIFICATIONS": "Ειδοποιήσεις",
|
"NOTIFICATIONS": "Ειδοποιήσεις",
|
||||||
"CANNED_RESPONSES": "Έτοιμες Απαντήσεις",
|
"CANNED_RESPONSES": "Έτοιμες Απαντήσεις",
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
"CAMPAIGN_NAME": "Campaign Name",
|
"CAMPAIGN_NAME": "Campaign Name",
|
||||||
"LABELS": "Labels",
|
"LABELS": "Labels",
|
||||||
"BROWSER_LANGUAGE": "Browser Language",
|
"BROWSER_LANGUAGE": "Browser Language",
|
||||||
|
"PRIORITY": "Priority",
|
||||||
"COUNTRY_NAME": "Country Name",
|
"COUNTRY_NAME": "Country Name",
|
||||||
"REFERER_LINK": "Referer link",
|
"REFERER_LINK": "Referer link",
|
||||||
"CUSTOM_ATTRIBUTE_LIST": "List",
|
"CUSTOM_ATTRIBUTE_LIST": "List",
|
||||||
|
|||||||
@@ -111,7 +111,8 @@
|
|||||||
},
|
},
|
||||||
"PLACEHOLDER": {
|
"PLACEHOLDER": {
|
||||||
"AGENT": "Search agents",
|
"AGENT": "Search agents",
|
||||||
"TEAM": "Search teams"
|
"TEAM": "Search teams",
|
||||||
|
"INPUT": "Search for agents"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -182,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -66,6 +66,23 @@
|
|||||||
"NEXT_WEEK": "Next week"
|
"NEXT_WEEK": "Next week"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"PRIORITY": {
|
||||||
|
"TITLE": "Priority",
|
||||||
|
"OPTIONS": {
|
||||||
|
"NONE": "None",
|
||||||
|
"URGENT": "Urgent",
|
||||||
|
"HIGH": "High",
|
||||||
|
"MEDIUM": "Medium",
|
||||||
|
"LOW": "Low"
|
||||||
|
},
|
||||||
|
"CHANGE_PRIORITY": {
|
||||||
|
"SELECT_PLACEHOLDER": "None",
|
||||||
|
"INPUT_PLACEHOLDER": "Select priority",
|
||||||
|
"NO_RESULTS": "No results found",
|
||||||
|
"SUCCESSFUL": "Changed priority of conversation id %{conversationId} to %{priority}",
|
||||||
|
"FAILED": "Couldn't change priority. Please try again."
|
||||||
|
}
|
||||||
|
},
|
||||||
"CARD_CONTEXT_MENU": {
|
"CARD_CONTEXT_MENU": {
|
||||||
"PENDING": "Mark as pending",
|
"PENDING": "Mark as pending",
|
||||||
"RESOLVED": "Mark as resolved",
|
"RESOLVED": "Mark as resolved",
|
||||||
|
|||||||
@@ -482,6 +482,13 @@
|
|||||||
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
|
"HELP_CENTER": {
|
||||||
|
"LABEL": "Help Center",
|
||||||
|
"PLACEHOLDER": "Select Help Center",
|
||||||
|
"SELECT_PLACEHOLDER": "Select Help Center",
|
||||||
|
"REMOVE": "Remove Help Center",
|
||||||
|
"SUB_TEXT": "Attach a Help Center with the inbox"
|
||||||
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
"MAX_ASSIGNMENT_LIMIT": "Auto assignment limit",
|
"MAX_ASSIGNMENT_LIMIT": "Auto assignment limit",
|
||||||
"MAX_ASSIGNMENT_LIMIT_RANGE_ERROR": "Please enter a value greater than 0",
|
"MAX_ASSIGNMENT_LIMIT_RANGE_ERROR": "Please enter a value greater than 0",
|
||||||
|
|||||||
@@ -82,6 +82,23 @@
|
|||||||
"JOIN_ERROR": "There was an error joining the call, please try again",
|
"JOIN_ERROR": "There was an error joining the call, please try again",
|
||||||
"CREATE_ERROR": "There was an error creating a meeting link, please try again"
|
"CREATE_ERROR": "There was an error creating a meeting link, please try again"
|
||||||
},
|
},
|
||||||
|
"OPEN_AI": {
|
||||||
|
"TITLE": "Improve With AI",
|
||||||
|
"SUBTITLE": "An improved reply will be generated using AI, based on your current draft.",
|
||||||
|
"TONE": {
|
||||||
|
"TITLE": "Tone",
|
||||||
|
"OPTIONS": {
|
||||||
|
"PROFESSIONAL": "Professional",
|
||||||
|
"FRIENDLY": "Friendly"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"BUTTONS": {
|
||||||
|
"GENERATE": "Generate",
|
||||||
|
"GENERATING": "Generating...",
|
||||||
|
"CANCEL": "Cancel"
|
||||||
|
},
|
||||||
|
"GENERATE_ERROR": "There was an error processing the content, please try again"
|
||||||
|
},
|
||||||
"DELETE": {
|
"DELETE": {
|
||||||
"BUTTON_TEXT": "Delete",
|
"BUTTON_TEXT": "Delete",
|
||||||
"API": {
|
"API": {
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "No hay elementos que coincidan con esta consulta",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"Dirección IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "No se pudo conectar al servidor Woot, por favor inténtalo de nuevo más tarde"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Escriba el número de teléfono del contacto",
|
"PLACEHOLDER": "Escriba el número de teléfono del contacto",
|
||||||
"LABEL": "Número telefónico",
|
"LABEL": "Número telefónico",
|
||||||
"HELP": "El número telefónico debe tener el formato E.164, por ejemplo: +753001234567 [+][código del país][código de área][número teléfonico]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "El número telefónico debe estar vacío o en formato E.164",
|
"ERROR": "El número telefónico debe estar vacío o en formato E.164",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Este número de teléfono está en uso para otro contacto."
|
"DUPLICATE": "Este número de teléfono está en uso para otro contacto."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "Para"
|
"LABEL": "Para"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Bandeja de entrada",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Seleccione una bandeja de entrada"
|
"ERROR": "Seleccione una bandeja de entrada"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Actualizar Clave API",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Actualizar Clave API",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Introduzca aquí la nueva Clave API",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Introduzca aquí la nueva Clave API",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Actualizar",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Actualizar",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Token de verificación del Webhook",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualizar configuración de Formulario de Chat"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Actualizar configuración de Formulario de Chat"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Inicio",
|
"HOME": "Inicio",
|
||||||
"AGENTS": "Agentes",
|
"AGENTS": "Agentes",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Entradas",
|
"INBOXES": "Entradas",
|
||||||
"NOTIFICATIONS": "Notificaciones",
|
"NOTIFICATIONS": "Notificaciones",
|
||||||
"CANNED_RESPONSES": "Respuestas predefinidas",
|
"CANNED_RESPONSES": "Respuestas predefinidas",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "هیچ آیتمی با این مشخصات یافت نشد",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"کاربر",
|
||||||
|
"اقدام",
|
||||||
|
"آدرس آیپی",
|
||||||
|
"زمان"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "متاسفانه ارتباط با سرور برقرار نشد، مجددا امتحان کنید"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "شماره تلفن مخاطب را وارد کنید",
|
"PLACEHOLDER": "شماره تلفن مخاطب را وارد کنید",
|
||||||
"LABEL": "شماره تلفن",
|
"LABEL": "شماره تلفن",
|
||||||
"HELP": "شماره تلفن باید با فرمت E.164 باشد به عنوان مثال: +98415555555 [+] [کد کشور] [کد منطقه] [شماره تلفن محلی]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "شماره تلفن باید یا خالی باشد و یا با فرمت E.164",
|
"ERROR": "شماره تلفن باید یا خالی باشد و یا با فرمت E.164",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "این شماره تلفن برای مخاطب دیگری در حال استفاده است."
|
"DUPLICATE": "این شماره تلفن برای مخاطب دیگری در حال استفاده است."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "به"
|
"LABEL": "به"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "صندوق ورودی",
|
"LABEL": "از طریق صندوق ورودی",
|
||||||
|
"PLACEHOLDER": "صندوق ورودی منبع را انتخاب کنید",
|
||||||
"ERROR": "انتخاب صندوق ورودی"
|
"ERROR": "انتخاب صندوق ورودی"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "کلید API را به روز کنید",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "کلید API را به روز کنید",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "کلید API جدید را در اینجا وارد کنید",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "کلید API جدید را در اینجا وارد کنید",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "اعمال شود",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "اعمال شود",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "رمز تأیید وب هوک",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "بهروزرسانی تنظیمات فرم قبل از گفتگو"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "بهروزرسانی تنظیمات فرم قبل از گفتگو"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "صفحه اصلی",
|
"HOME": "صفحه اصلی",
|
||||||
"AGENTS": "ایجنت ها",
|
"AGENTS": "ایجنت ها",
|
||||||
"AGENT_BOTS": "رباتها",
|
"AGENT_BOTS": "رباتها",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "صندوقهای ورودی",
|
"INBOXES": "صندوقهای ورودی",
|
||||||
"NOTIFICATIONS": "اعلان ها",
|
"NOTIFICATIONS": "اعلان ها",
|
||||||
"CANNED_RESPONSES": "پاسخهای آماده",
|
"CANNED_RESPONSES": "پاسخهای آماده",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Tätä hakua vastaavia kohteita ei löydy",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP-osoite",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Yhteyden muodostaminen Woot-palvelimelle ei onnistunut, yritä myöhemmin uudelleen"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Anna yhteystiedon puhelinnumero",
|
"PLACEHOLDER": "Anna yhteystiedon puhelinnumero",
|
||||||
"LABEL": "Puhelinnumero",
|
"LABEL": "Puhelinnumero",
|
||||||
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Phone number should be either empty or of E.164 format",
|
"ERROR": "Phone number should be either empty or of E.164 format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "This phone number is in use for another contact."
|
"DUPLICATE": "This phone number is in use for another contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Päivitä",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Päivitä",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Koti",
|
"HOME": "Koti",
|
||||||
"AGENTS": "Edustajat",
|
"AGENTS": "Edustajat",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Kansiot",
|
"INBOXES": "Kansiot",
|
||||||
"NOTIFICATIONS": "Ilmoitukset",
|
"NOTIFICATIONS": "Ilmoitukset",
|
||||||
"CANNED_RESPONSES": "Tallennetut vastaukset",
|
"CANNED_RESPONSES": "Tallennetut vastaukset",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Il n'y a aucun élément correspondant à cette requête",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"Adresse IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Impossible de se connecter au serveur Woot, veuillez réessayer plus tard"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Entrez le numéro de téléphone du contact",
|
"PLACEHOLDER": "Entrez le numéro de téléphone du contact",
|
||||||
"LABEL": "Numéro de téléphone",
|
"LABEL": "Numéro de téléphone",
|
||||||
"HELP": "Le numéro de téléphone doit être au format E.164. Ex. : +1415555555 [+][code pays][code régional][numéro de téléphone local]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Le numéro de téléphone doit être soit vide soit au format E.164",
|
"ERROR": "Le numéro de téléphone doit être soit vide soit au format E.164",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Ce numéro de téléphone est utilisé par un autre contact."
|
"DUPLICATE": "Ce numéro de téléphone est utilisé par un autre contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "À"
|
"LABEL": "À"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Boîte de réception",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Sélectionner une boîte de réception"
|
"ERROR": "Sélectionner une boîte de réception"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Mettre à jour",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Mettre à jour",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Accueil",
|
"HOME": "Accueil",
|
||||||
"AGENTS": "Agents",
|
"AGENTS": "Agents",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Boîtes de réception",
|
"INBOXES": "Boîtes de réception",
|
||||||
"NOTIFICATIONS": "Notifications",
|
"NOTIFICATIONS": "Notifications",
|
||||||
"CANNED_RESPONSES": "Réponses standardisées",
|
"CANNED_RESPONSES": "Réponses standardisées",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "אין פריטים התואמים לשאילתה זו",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"כתובת IP",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "לא ניתן להתחבר לשרת Woot, נסה שוב מאוחר יותר"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "הזן את מספר הטלפון של איש הקשר",
|
"PLACEHOLDER": "הזן את מספר הטלפון של איש הקשר",
|
||||||
"LABEL": "מספר טלפון",
|
"LABEL": "מספר טלפון",
|
||||||
"HELP": "מספר הטלפון צריך להיות בפורמט E.164, למשל: +1415555555 [+][קוד מדינה][אזור חיוג][מספר טלפון מקומי]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "מספר הטלפון צריך להיות ריק או בפורמט E.164",
|
"ERROR": "מספר הטלפון צריך להיות ריק או בפורמט E.164",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "מספר טלפון זה נמצאת בשימוש עבור איש קשר אחר."
|
"DUPLICATE": "מספר טלפון זה נמצאת בשימוש עבור איש קשר אחר."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "אל"
|
"LABEL": "אל"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "תיבת הדואר הנכנס",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "בחר תיבת דואר נכנס"
|
"ERROR": "בחר תיבת דואר נכנס"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "עדכון מפתח API",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "עדכון מפתח API",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "הזן את מפתח ה-API החדש כאן",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "הזן את מפתח ה-API החדש כאן",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "עדכן",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "עדכן",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "עדכון הגדרות טופס טרום צ'אט"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "עדכון הגדרות טופס טרום צ'אט"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "בית",
|
"HOME": "בית",
|
||||||
"AGENTS": "סוכנים",
|
"AGENTS": "סוכנים",
|
||||||
"AGENT_BOTS": "בוטים",
|
"AGENT_BOTS": "בוטים",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "תיבות דואר נכנס",
|
"INBOXES": "תיבות דואר נכנס",
|
||||||
"NOTIFICATIONS": "התראות",
|
"NOTIFICATIONS": "התראות",
|
||||||
"CANNED_RESPONSES": "תגובות מוכנות",
|
"CANNED_RESPONSES": "תגובות מוכנות",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "There are no items matching this query",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP Address",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Could not connect to Woot Server, Please try again later"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Enter the phone number of the contact",
|
"PLACEHOLDER": "Enter the phone number of the contact",
|
||||||
"LABEL": "Phone Number",
|
"LABEL": "Phone Number",
|
||||||
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Phone number should be either empty or of E.164 format",
|
"ERROR": "Phone number should be either empty or of E.164 format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "This phone number is in use for another contact."
|
"DUPLICATE": "This phone number is in use for another contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Update",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Update",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Home",
|
"HOME": "Home",
|
||||||
"AGENTS": "Agents",
|
"AGENTS": "Agents",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Inboxes",
|
"INBOXES": "Inboxes",
|
||||||
"NOTIFICATIONS": "Notifications",
|
"NOTIFICATIONS": "Notifications",
|
||||||
"CANNED_RESPONSES": "Canned Responses",
|
"CANNED_RESPONSES": "Canned Responses",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logovi",
|
||||||
|
"HEADER_BTN_TXT": "Dodaj Audit Logove",
|
||||||
|
"LOADING": "Dohvat Audit Logova",
|
||||||
|
"SEARCH_404": "Ne postoji rezultat za zadano pretraživanje",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logovi</b> </p><p> Audit Logovi su tragovi događaja i akcija u Chatwoot sustavu. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "Na ovom korisničkom računu nema dostupnih Audit Logova.",
|
||||||
|
"TITLE": "Upravljanje Audit Logovima",
|
||||||
|
"DESC": "Audit Logovi su tragovi događaja i akcija u Chatwoot sustavu.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"Korisnik",
|
||||||
|
"Akcija",
|
||||||
|
"IP adresa",
|
||||||
|
"Vrijeme"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "Audit Logovi su uspješno dohvaćeni",
|
||||||
|
"ERROR_MESSAGE": "Neuspješno spajanje na Woot Server, Molimo pokušajte kasnije"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "Enter the phone number of the contact",
|
"PLACEHOLDER": "Enter the phone number of the contact",
|
||||||
"LABEL": "Phone Number",
|
"LABEL": "Phone Number",
|
||||||
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "Phone number should be either empty or of E.164 format",
|
"ERROR": "Phone number should be either empty or of E.164 format",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "This phone number is in use for another contact."
|
"DUPLICATE": "This phone number is in use for another contact."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "To"
|
"LABEL": "To"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Inbox",
|
"LABEL": "Kroz Inbox",
|
||||||
|
"PLACEHOLDER": "Izaberi izvorišni inbox",
|
||||||
"ERROR": "Select an inbox"
|
"ERROR": "Select an inbox"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Update",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Update",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Token za verifikaciju Webhook-a",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "Ovaj token se koristi za verifikaciju autentičnosti webhook endpoint-a.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Home",
|
"HOME": "Home",
|
||||||
"AGENTS": "Agents",
|
"AGENTS": "Agents",
|
||||||
"AGENT_BOTS": "Botovi",
|
"AGENT_BOTS": "Botovi",
|
||||||
|
"AUDIT_LOGS": "Audit Logovi",
|
||||||
"INBOXES": "Inboxes",
|
"INBOXES": "Inboxes",
|
||||||
"NOTIFICATIONS": "Notifications",
|
"NOTIFICATIONS": "Notifications",
|
||||||
"CANNED_RESPONSES": "Canned Responses",
|
"CANNED_RESPONSES": "Canned Responses",
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"AUDIT_LOGS": {
|
||||||
|
"HEADER": "Audit Logs",
|
||||||
|
"HEADER_BTN_TXT": "Add Audit Logs",
|
||||||
|
"LOADING": "Fetching Audit Logs",
|
||||||
|
"SEARCH_404": "Nincs megfelelő elem",
|
||||||
|
"SIDEBAR_TXT": "<p><b>Audit Logs</b> </p><p> Audit Logs are trails for events and actions in a Chatwoot System. </p>",
|
||||||
|
"LIST": {
|
||||||
|
"404": "There are no Audit Logs available in this account.",
|
||||||
|
"TITLE": "Manage Audit Logs",
|
||||||
|
"DESC": "Audit Logs are trails for events and actions in a Chatwoot System.",
|
||||||
|
"TABLE_HEADER": [
|
||||||
|
"User",
|
||||||
|
"Action",
|
||||||
|
"IP cím",
|
||||||
|
"Time"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"API": {
|
||||||
|
"SUCCESS_MESSAGE": "AuditLogs retrieved successfully",
|
||||||
|
"ERROR_MESSAGE": "Nem sikerült csatlakozni a Woot szerverhez, kérjük próbáld később"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -120,8 +120,9 @@
|
|||||||
"PHONE_NUMBER": {
|
"PHONE_NUMBER": {
|
||||||
"PLACEHOLDER": "A kontakt telefonszámának megadása",
|
"PLACEHOLDER": "A kontakt telefonszámának megadása",
|
||||||
"LABEL": "Telefonszám",
|
"LABEL": "Telefonszám",
|
||||||
"HELP": "A telefonszámnak E.164 formátumúnak kell lennie, pl: +[+][országkód][körzetszám][helyi telefonszám]",
|
"HELP": "Phone number should be of E.164 format eg: +1415555555 [+][country code][area code][local phone number]. You can select the dial code from the dropdown.",
|
||||||
"ERROR": "A telefonszámnak üresnek vagy E.164 formátumúnak kell lennie",
|
"ERROR": "A telefonszámnak üresnek vagy E.164 formátumúnak kell lennie",
|
||||||
|
"DIAL_CODE_ERROR": "Please select a dial code from the list",
|
||||||
"DUPLICATE": "Ez a telefonszám már egy másik kontakthoz tartozik."
|
"DUPLICATE": "Ez a telefonszám már egy másik kontakthoz tartozik."
|
||||||
},
|
},
|
||||||
"LOCATION": {
|
"LOCATION": {
|
||||||
@@ -181,7 +182,8 @@
|
|||||||
"LABEL": "Ide"
|
"LABEL": "Ide"
|
||||||
},
|
},
|
||||||
"INBOX": {
|
"INBOX": {
|
||||||
"LABEL": "Fiók",
|
"LABEL": "Via Inbox",
|
||||||
|
"PLACEHOLDER": "Choose source inbox",
|
||||||
"ERROR": "Válassz egy fiókot"
|
"ERROR": "Válassz egy fiókot"
|
||||||
},
|
},
|
||||||
"SUBJECT": {
|
"SUBJECT": {
|
||||||
|
|||||||
@@ -478,6 +478,8 @@
|
|||||||
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
"WHATSAPP_SECTION_UPDATE_TITLE": "Update API Key",
|
||||||
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
"WHATSAPP_SECTION_UPDATE_PLACEHOLDER": "Enter the new API Key here",
|
||||||
"WHATSAPP_SECTION_UPDATE_BUTTON": "Frissítés",
|
"WHATSAPP_SECTION_UPDATE_BUTTON": "Frissítés",
|
||||||
|
"WHATSAPP_WEBHOOK_TITLE": "Webhook Verify Token",
|
||||||
|
"WHATSAPP_WEBHOOK_SUBHEADER": "This token is used to verify the authenticity of the webhook endpoint.",
|
||||||
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
"UPDATE_PRE_CHAT_FORM_SETTINGS": "Update Pre Chat Form Settings"
|
||||||
},
|
},
|
||||||
"AUTO_ASSIGNMENT": {
|
"AUTO_ASSIGNMENT": {
|
||||||
|
|||||||
@@ -203,6 +203,7 @@
|
|||||||
"HOME": "Nyitólap",
|
"HOME": "Nyitólap",
|
||||||
"AGENTS": "Ügynökök",
|
"AGENTS": "Ügynökök",
|
||||||
"AGENT_BOTS": "Bots",
|
"AGENT_BOTS": "Bots",
|
||||||
|
"AUDIT_LOGS": "Audit Logs",
|
||||||
"INBOXES": "Bejövők",
|
"INBOXES": "Bejövők",
|
||||||
"NOTIFICATIONS": "Értesítések",
|
"NOTIFICATIONS": "Értesítések",
|
||||||
"CANNED_RESPONSES": "Mentett válaszok",
|
"CANNED_RESPONSES": "Mentett válaszok",
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user