* feat: Adds model for scheduling messages * feat: Implement scheduled message handling and processing jobs * feat: Add ScheduledMessagesController and associated specs for managing scheduled messages * refactor: Simplify scheduled message job specs and improve metadata handling * feat: Add ScheduledMessagePolicy for managing access to scheduled messages * feat: Add routes for managing scheduled messages * feat: Add scheduled message event handling and broadcasting * feat: Add JSON views for scheduled messages creation, destruction, updating, and indexing * feat: Update scheduled message status and dispatch update event after message creation * feat: Ensure scheduled message updates trigger dispatch event * feat: Add mutation types for managing scheduled messages * feat: Add additionalAttributes prop to Message component and provider * feat: Implement scheduled message handling in ActionCable and Vuex store * feat: Add unit tests for scheduled messages actions and mutations * feat: implement scheduled messages functionality - Added support for scheduling messages in the conversation dashboard. - Introduced new components: ScheduledMessageModal and ScheduledMessages for managing scheduled messages. - Enhanced ReplyBottomPanel to include scheduling options. - Updated Base.vue to handle scheduled message styling. - Integrated Vuex store module for managing scheduled messages state. - Added necessary translations for scheduled messages in English and Portuguese. * feat: add pagination to scheduled messages index and update tests accordingly * chore: update scheduled messages specs for future time validation and response status * chore: enhance scheduled messages API with pagination and add skeleton loader component * feat: add create_scheduled_message action to automation rule attributes * feat: implement create_scheduled_message action and enhance attachment handling * feat: add scheduled message functionality with UI components and localization * test: enhance scheduledMessages mutations tests with meta handling and structure * chore: update label to display file name upon successful upload in AutomationFileInput component * feat: add initialAttachment prop to ScheduledMessageModal and update ReplyBox to pass attachment * chore: prepend_mod_with to ScheduledMessagesController for better module handling * fix: attachment visibility in ScheduledMessageItem component * chore: enhance ScheduledMessage model with validations and reduce controller load * refactor: simplify ScheduledMessagesAPI methods by removing unnecessary instance variable * chore: update event emission for scheduled message creation in ReplyBox and ScheduledMessageModal * refactor: update status configuration to use label keys * chore: update date formatting in ScheduledMessageItem component * refactor: collapse logic to checkOverflow and update related functionality * chore: add author indication for current user in scheduled messages * chore: enhance scheduled message metadata with author information and localization * fix: send message shortcut * chore: handle errors in scheduled message submission * chore: update scheduled message modal to use combined date and time input * chore: refactor scheduled messages handling to remove pagination and update related tests * fix: ensure scheduled messages update status and dispatch on failure * fix: update scheduled message due date logic and simplify sending checks * refactor: rename build_message method for send_message * fix: update scheduled message creation time and improve test reliability * chore: ignore unnecessary check * chore: add scheduled message metadata handling in message builder, add scheduled message factorie and update specs * refactor: use scheduled message factorie creation in specs * chore: streamline error handling in scheduled message job and remove dispatch logic * fix: change scheduled_messages association to destroy dependent records * refactor: remove unused attributes from scheduled message payload builder * chore: update scheduled message retrieval to use conversation association * chore: correct cron format for scheduled messages job * chore: remove migration for author_type in scheduled_messages * feat: enhance scheduled messages management with delete confirmation and error handling * chore: set cron poll interval to 10 seconds for improved scheduling precision * feat: include additional_attributes in message JSON response * feat: enhance scheduled message validation and localization support * chore: update scheduled message display * Merge branch 'main' into Cayo-Oliveira/CU-86aenh268/Mensagens-agendadas * feat: add scheduled message indicators and validation for message length * fix: remove unnecessary condition from line-clamp class binding * feat: update scheduled messages localization and enhance content validation * feat: update scheduled messages order, enhance scheduledAt computation, and add message association * fix: reorder condition for Facebook channel message length computation * fix: change detection for attachments in scheduled messages * fix: remove unnecessary colon from close-on-backdrop-click prop in ScheduledMessageModal * chore: add error handling for scheduled message deletion and update localization for delete failure * fix: enforce minimum delay of 1 minute for scheduled messages and update validation * fix: remove unused private property and improve locale formatting for scheduled messages * fix: adjust positioning of DropdownBody in ReplyBottomPanel and clean up schema foreign keys * docs: add scheduled messages management APIs and payload definitions --------- Co-authored-by: gabrieljablonski <contact@gabrieljablonski.com>
527 lines
21 KiB
JSON
527 lines
21 KiB
JSON
{
|
||
"CONVERSATION": {
|
||
"SELECT_A_CONVERSATION": "Please select a conversation from left pane",
|
||
"CSAT_REPLY_MESSAGE": "Please rate the conversation",
|
||
"404": "Sorry, we cannot find the conversation. Please try again",
|
||
"SWITCH_VIEW_LAYOUT": "Switch the layout",
|
||
"DASHBOARD_APP_TAB_MESSAGES": "Messages",
|
||
"UNVERIFIED_SESSION": "The identity of this user is not verified",
|
||
"NO_MESSAGE_1": "Uh oh! Looks like there are no messages from customers in your inbox.",
|
||
"NO_MESSAGE_2": " to send a message to your page!",
|
||
"NO_INBOX_1": "Hola! Looks like you haven't added any inboxes yet.",
|
||
"NO_INBOX_2": " to get started",
|
||
"NO_INBOX_AGENT": "Uh Oh! Looks like you are not part of any inbox. Please contact your administrator",
|
||
"SEARCH_MESSAGES": "Search for messages in conversations",
|
||
"VIEW_ORIGINAL": "View original",
|
||
"VIEW_TRANSLATED": "View translated",
|
||
"EMPTY_STATE": {
|
||
"CMD_BAR": "to open command menu",
|
||
"KEYBOARD_SHORTCUTS": "to view keyboard shortcuts"
|
||
},
|
||
"SEARCH": {
|
||
"TITLE": "Search messages",
|
||
"RESULT_TITLE": "Search Results",
|
||
"LOADING_MESSAGE": "Crunching data...",
|
||
"PLACEHOLDER": "Type any text to search messages",
|
||
"NO_MATCHING_RESULTS": "No results found."
|
||
},
|
||
"UNREAD_MESSAGES": "Unread Messages",
|
||
"UNREAD_MESSAGE": "Unread Message",
|
||
"CLICK_HERE": "Click here",
|
||
"LOADING_INBOXES": "Loading inboxes",
|
||
"LOADING_CONVERSATIONS": "Loading Conversations",
|
||
"CANNOT_REPLY": "You cannot reply due to",
|
||
"24_HOURS_WINDOW": "24 hour message window restriction",
|
||
"48_HOURS_WINDOW": "48 hour message window restriction",
|
||
"API_HOURS_WINDOW": "You can only reply to this conversation within {hours} hours",
|
||
"NOT_ASSIGNED_TO_YOU": "This conversation is not assigned to you. Would you like to assign this conversation to yourself?",
|
||
"ASSIGN_TO_ME": "Assign to me",
|
||
"BOT_HANDOFF_MESSAGE": "You are responding to a conversation which is currently handled by an assistant or a bot.",
|
||
"BOT_HANDOFF_ACTION": "Mark open and assign to you",
|
||
"BOT_HANDOFF_REOPEN_ACTION": "Mark conversation open",
|
||
"BOT_HANDOFF_SUCCESS": "Conversation has been handed over to you",
|
||
"BOT_HANDOFF_ERROR": "Failed to take over the conversation. Please try again.",
|
||
"TWILIO_WHATSAPP_CAN_REPLY": "You can only reply to this conversation using a template message due to",
|
||
"TWILIO_WHATSAPP_24_HOURS_WINDOW": "24 hour message window restriction",
|
||
"OLD_INSTAGRAM_INBOX_REPLY_BANNER": "This Instagram account was migrated to the new Instagram channel inbox. All new messages will show up there. You won’t be able to send messages from this conversation anymore.",
|
||
"REPLYING_TO": "You are replying to:",
|
||
"REMOVE_SELECTION": "Remove Selection",
|
||
"DOWNLOAD": "Download",
|
||
"UNKNOWN_FILE_TYPE": "Unknown File",
|
||
"SAVE_CONTACT": "Save Contact",
|
||
"NO_CONTENT": "No content to display",
|
||
"SHARED_ATTACHMENT": {
|
||
"CONTACT": "{sender} has shared a contact",
|
||
"LOCATION": "{sender} has shared a location",
|
||
"FILE": "{sender} has shared a file",
|
||
"MEETING": "{sender} has started a meeting"
|
||
},
|
||
"UPLOADING_ATTACHMENTS": "Uploading attachments...",
|
||
"REPLIED_TO_STORY": "Replied to your story",
|
||
"UNSUPPORTED_MESSAGE": "This message is unsupported. You can view this message on the app.",
|
||
"UNSUPPORTED_MESSAGE_WHATSAPP": "This message is unsupported. You can view this message on the WhatsApp app.",
|
||
"UNSUPPORTED_MESSAGE_FACEBOOK": "This message is unsupported. You can view this message on the Facebook Messenger app.",
|
||
"UNSUPPORTED_MESSAGE_INSTAGRAM": "This message is unsupported. You can view this message on the Instagram app.",
|
||
"SUCCESS_DELETE_MESSAGE": "Message deleted successfully",
|
||
"FAIL_DELETE_MESSSAGE": "Couldn't delete message! Try again",
|
||
"NO_RESPONSE": "No response",
|
||
"RESPONSE": "Response",
|
||
"RATING_TITLE": "Rating",
|
||
"FEEDBACK_TITLE": "Feedback",
|
||
"REPLY_MESSAGE_NOT_FOUND": "Message not available",
|
||
"CARD": {
|
||
"SHOW_LABELS": "Show labels",
|
||
"HIDE_LABELS": "Hide labels"
|
||
},
|
||
"VOICE_CALL": {
|
||
"INCOMING_CALL": "Incoming call",
|
||
"OUTGOING_CALL": "Outgoing call",
|
||
"CALL_IN_PROGRESS": "Call in progress",
|
||
"NO_ANSWER": "No answer",
|
||
"MISSED_CALL": "Missed call",
|
||
"CALL_ENDED": "Call ended",
|
||
"NOT_ANSWERED_YET": "Not answered yet",
|
||
"THEY_ANSWERED": "They answered",
|
||
"YOU_ANSWERED": "You answered"
|
||
},
|
||
"HEADER": {
|
||
"RESOLVE_ACTION": "Resolve",
|
||
"REOPEN_ACTION": "Reopen",
|
||
"OPEN_ACTION": "Open",
|
||
"MORE_ACTIONS": "More actions",
|
||
"OPEN": "More",
|
||
"CLOSE": "Close",
|
||
"DETAILS": "details",
|
||
"SNOOZED_UNTIL": "Snoozed until",
|
||
"SNOOZED_UNTIL_TOMORROW": "Snoozed until tomorrow",
|
||
"SNOOZED_UNTIL_NEXT_WEEK": "Snoozed until next week",
|
||
"SNOOZED_UNTIL_NEXT_REPLY": "Snoozed until next reply",
|
||
"SLA_STATUS": {
|
||
"FRT": "FRT {status}",
|
||
"NRT": "NRT {status}",
|
||
"RT": "RT {status}",
|
||
"MISSED": "missed",
|
||
"DUE": "due"
|
||
}
|
||
},
|
||
"RESOLVE_DROPDOWN": {
|
||
"MARK_PENDING": "Mark as pending",
|
||
"SNOOZE_UNTIL": "Snooze",
|
||
"SNOOZE": {
|
||
"TITLE": "Snooze until",
|
||
"NEXT_REPLY": "Next reply",
|
||
"TOMORROW": "Tomorrow",
|
||
"NEXT_WEEK": "Next week"
|
||
}
|
||
},
|
||
"MENTION": {
|
||
"AGENTS": "Agents",
|
||
"TEAMS": "Teams"
|
||
},
|
||
"CUSTOM_SNOOZE": {
|
||
"TITLE": "Snooze until",
|
||
"APPLY": "Snooze",
|
||
"CANCEL": "Cancel"
|
||
},
|
||
"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."
|
||
}
|
||
},
|
||
"DELETE_CONVERSATION": {
|
||
"TITLE": "Delete conversation #{conversationId}",
|
||
"DESCRIPTION": "Are you sure you want to delete this conversation?",
|
||
"CONFIRM": "Delete"
|
||
},
|
||
"CARD_CONTEXT_MENU": {
|
||
"PENDING": "Mark as pending",
|
||
"RESOLVED": "Mark as resolved",
|
||
"MARK_AS_UNREAD": "Mark as unread",
|
||
"MARK_AS_READ": "Mark as read",
|
||
"REOPEN": "Reopen conversation",
|
||
"SNOOZE": {
|
||
"TITLE": "Snooze",
|
||
"NEXT_REPLY": "Until next reply",
|
||
"TOMORROW": "Until tomorrow",
|
||
"NEXT_WEEK": "Until next week"
|
||
},
|
||
"ASSIGN_AGENT": "Assign agent",
|
||
"ASSIGN_LABEL": "Assign label",
|
||
"AGENTS_LOADING": "Loading agents...",
|
||
"ASSIGN_TEAM": "Assign team",
|
||
"DELETE": "Delete conversation",
|
||
"OPEN_IN_NEW_TAB": "Open in new tab",
|
||
"COPY_LINK": "Copy conversation link",
|
||
"COPY_LINK_SUCCESS": "Conversation link copied to clipboard",
|
||
"API": {
|
||
"AGENT_ASSIGNMENT": {
|
||
"SUCCESFUL": "Conversation id {conversationId} assigned to \"{agentName}\"",
|
||
"FAILED": "Couldn't assign agent. Please try again."
|
||
},
|
||
"LABEL_ASSIGNMENT": {
|
||
"SUCCESFUL": "Assigned label #{labelName} to conversation id {conversationId}",
|
||
"FAILED": "Couldn't assign label. Please try again."
|
||
},
|
||
"TEAM_ASSIGNMENT": {
|
||
"SUCCESFUL": "Assigned team \"{team}\" to conversation id {conversationId}",
|
||
"FAILED": "Couldn't assign team. Please try again."
|
||
}
|
||
}
|
||
},
|
||
"FOOTER": {
|
||
"MESSAGE_SIGN_TOOLTIP": "Message signature",
|
||
"ENABLE_SIGN_TOOLTIP": "Enable signature",
|
||
"DISABLE_SIGN_TOOLTIP": "Disable signature",
|
||
"SIGNATURE_LABEL_TOP": "↓ Signature",
|
||
"SIGNATURE_LABEL_BOTTOM": "↑ Signature",
|
||
"MSG_INPUT": "Shift + enter for new line. Start with '/' to select a Canned Response.",
|
||
"PRIVATE_MSG_INPUT": "Shift + enter for new line. This will be visible only to Agents",
|
||
"MESSAGE_SIGNATURE_NOT_CONFIGURED": "Message signature is not configured, please configure it in profile settings.",
|
||
"CLICK_HERE": "Click here to update",
|
||
"WHATSAPP_TEMPLATES": "Whatsapp Templates"
|
||
},
|
||
"REPLYBOX": {
|
||
"REPLY": "Reply",
|
||
"PRIVATE_NOTE": "Private Note",
|
||
"SEND": "Send",
|
||
"CREATE": "Add Note",
|
||
"INSERT_READ_MORE": "Read more",
|
||
"DISMISS_REPLY": "Dismiss reply",
|
||
"REPLYING_TO": "Replying to:",
|
||
"TIP_EMOJI_ICON": "Show emoji selector",
|
||
"TIP_ATTACH_ICON": "Attach files",
|
||
"TIP_AUDIORECORDER_ICON": "Record audio",
|
||
"TIP_AUDIORECORDER_PERMISSION": "Allow access to audio",
|
||
"TIP_AUDIORECORDER_ERROR": "Could not open the audio",
|
||
"DRAG_DROP": "Drag and drop here to attach",
|
||
"START_AUDIO_RECORDING": "Start audio recording",
|
||
"STOP_AUDIO_RECORDING": "Stop audio recording",
|
||
"": "",
|
||
"EMAIL_HEAD": {
|
||
"TO": "TO",
|
||
"ADD_BCC": "Add bcc",
|
||
"CC": {
|
||
"LABEL": "CC",
|
||
"PLACEHOLDER": "Emails separated by commas",
|
||
"ERROR": "Please enter valid email addresses"
|
||
},
|
||
"BCC": {
|
||
"LABEL": "BCC",
|
||
"PLACEHOLDER": "Emails separated by commas",
|
||
"ERROR": "Please enter valid email addresses"
|
||
}
|
||
},
|
||
"UNDEFINED_VARIABLES": {
|
||
"TITLE": "Undefined variables",
|
||
"MESSAGE": "You have {undefinedVariablesCount} undefined variables in your message: {undefinedVariables}. Would you like to send the message anyway?",
|
||
"CONFIRM": {
|
||
"YES": "Send",
|
||
"CANCEL": "Cancel"
|
||
}
|
||
},
|
||
"QUOTED_REPLY": {
|
||
"ENABLE_TOOLTIP": "Include quoted email thread",
|
||
"DISABLE_TOOLTIP": "Don't include quoted email thread",
|
||
"REMOVE_PREVIEW": "Remove quoted email thread",
|
||
"COLLAPSE": "Collapse preview",
|
||
"EXPAND": "Expand preview"
|
||
},
|
||
"SCHEDULE_SEND": "Schedule send"
|
||
},
|
||
"VISIBLE_TO_AGENTS": "Private Note: Only visible to you and your team",
|
||
"CHANGE_STATUS": "Conversation status changed",
|
||
"CHANGE_STATUS_FAILED": "Conversation status change failed",
|
||
"CHANGE_AGENT": "Conversation Assignee changed",
|
||
"CHANGE_AGENT_FAILED": "Assignee change failed",
|
||
"ASSIGN_LABEL_SUCCESFUL": "Label assigned successfully",
|
||
"ASSIGN_LABEL_FAILED": "Label assignment failed",
|
||
"CHANGE_TEAM": "Conversation team changed",
|
||
"SUCCESS_DELETE_CONVERSATION": "Conversation deleted successfully",
|
||
"FAIL_DELETE_CONVERSATION": "Couldn't delete conversation! Try again",
|
||
"FILE_SIZE_LIMIT": "File exceeds the {MAXIMUM_SUPPORTED_FILE_UPLOAD_SIZE} MB attachment limit",
|
||
"FILE_TYPE_NOT_SUPPORTED": "This {fileName} file type is not supported in this conversation",
|
||
"MESSAGE_ERROR": "Unable to send this message, please try again later",
|
||
"SENT_BY": "Sent by:",
|
||
"BOT": "Bot",
|
||
"SEND_FAILED": "Couldn't send message! Try again",
|
||
"TRY_AGAIN": "retry",
|
||
"ASSIGNMENT": {
|
||
"SELECT_AGENT": "Select Agent",
|
||
"REMOVE": "Remove",
|
||
"ASSIGN": "Assign"
|
||
},
|
||
"CONTEXT_MENU": {
|
||
"COPY": "Copy",
|
||
"REPLY_TO": "Reply to this message",
|
||
"DELETE": "Delete",
|
||
"CREATE_A_CANNED_RESPONSE": "Add to canned responses",
|
||
"TRANSLATE": "Translate",
|
||
"COPY_PERMALINK": "Copy link to the message",
|
||
"LINK_COPIED": "Message URL copied to the clipboard",
|
||
"DELETE_CONFIRMATION": {
|
||
"TITLE": "Are you sure you want to delete this message?",
|
||
"MESSAGE": "You cannot undo this action",
|
||
"DELETE": "Delete",
|
||
"CANCEL": "Cancel"
|
||
},
|
||
"EDIT": {
|
||
"LABEL": "Edit",
|
||
"TITLE": "Edit message",
|
||
"PLACEHOLDER": "Enter message content",
|
||
"SAVE": "Save",
|
||
"CANCEL": "Cancel",
|
||
"SUCCESS": "Message edited successfully",
|
||
"ERROR": "Failed to edit message",
|
||
"EMPTY_CONTENT": "Message content cannot be empty"
|
||
}
|
||
},
|
||
"SIDEBAR": {
|
||
"CONTACT": "Contact",
|
||
"COPILOT": "Copilot"
|
||
},
|
||
"VOICE_WIDGET": {
|
||
"INCOMING_CALL": "Incoming call",
|
||
"OUTGOING_CALL": "Outgoing call",
|
||
"CALL_IN_PROGRESS": "Call in progress",
|
||
"NOT_ANSWERED_YET": "Not answered yet",
|
||
"HANDLED_IN_ANOTHER_TAB": "Being handled in another tab",
|
||
"REJECT_CALL": "Reject",
|
||
"JOIN_CALL": "Join call",
|
||
"END_CALL": "End call"
|
||
},
|
||
"INBOX": {
|
||
"WHATSAPP_PROVIDER_CONNECTION": {
|
||
"NOT_CONNECTED": "WhatsApp is not connected. Please link your device again.",
|
||
"NOT_CONNECTED_CONTACT_ADMIN": "WhatsApp is not connected. Click this button to try to reconnect, or please contact your administrator to link your device again.",
|
||
"LINK_DEVICE": "Link device",
|
||
"RECONNECT_FAILED": "Failed to reconnect. Please contact your administrator to link your device again."
|
||
}
|
||
}
|
||
},
|
||
"EMAIL_TRANSCRIPT": {
|
||
"TITLE": "Send conversation transcript",
|
||
"DESC": "Send a copy of the conversation transcript to the specified email address",
|
||
"SUBMIT": "Submit",
|
||
"CANCEL": "Cancel",
|
||
"SEND_EMAIL_SUCCESS": "The chat transcript was sent successfully",
|
||
"SEND_EMAIL_ERROR": "There was an error, please try again",
|
||
"FORM": {
|
||
"SEND_TO_CONTACT": "Send the transcript to the customer",
|
||
"SEND_TO_AGENT": "Send the transcript to the assigned agent",
|
||
"SEND_TO_OTHER_EMAIL_ADDRESS": "Send the transcript to another email address",
|
||
"EMAIL": {
|
||
"PLACEHOLDER": "Enter an email address",
|
||
"ERROR": "Please enter a valid email address"
|
||
}
|
||
}
|
||
},
|
||
"ONBOARDING": {
|
||
"TITLE": "Hey 👋, Welcome to {installationName}!",
|
||
"DESCRIPTION": "Thanks for signing up. We want you to get the most out of {installationName}. Here are a few things you can do in {installationName} to make the experience delightful.",
|
||
"GREETING_MORNING": "👋 Good morning, {name}. Welcome to {installationName}.",
|
||
"GREETING_AFTERNOON": "👋 Good afternoon, {name}. Welcome to {installationName}.",
|
||
"GREETING_EVENING": "👋 Good evening, {name}. Welcome to {installationName}.",
|
||
"READ_LATEST_UPDATES": "Read our latest updates",
|
||
"ALL_CONVERSATION": {
|
||
"TITLE": "All your conversations in one place",
|
||
"DESCRIPTION": "View all the conversations from your customers in one single dashboard. You can filter the conversations by the incoming channel, label and status.",
|
||
"NEW_LINK": "Click here to create an inbox"
|
||
},
|
||
"TEAM_MEMBERS": {
|
||
"TITLE": "Invite your team members",
|
||
"DESCRIPTION": "Since you are getting ready to talk to your customer, bring in your teammates to assist you. You can invite your teammates by adding their email addresses to the agent list.",
|
||
"NEW_LINK": "Click here to invite a team member"
|
||
},
|
||
"LABELS": {
|
||
"TITLE": "Organize conversations with labels",
|
||
"DESCRIPTION": "Labels provide an easier way to categorize your conversation. Create some labels like #support-enquiry, #billing-question etc., so that you can use them in a conversation later.",
|
||
"NEW_LINK": "Click here to create tags"
|
||
},
|
||
"CANNED_RESPONSES": {
|
||
"TITLE": "Create canned responses",
|
||
"DESCRIPTION": "Pre-written quick reply templates help you quickly respond to a conversation. Agents can type the '/' character followed by the shortcode to insert a response.",
|
||
"NEW_LINK": "Click here to create a canned response"
|
||
}
|
||
},
|
||
"CONVERSATION_SIDEBAR": {
|
||
"ASSIGNEE_LABEL": "Assigned Agent",
|
||
"SELF_ASSIGN": "Assign to me",
|
||
"TEAM_LABEL": "Assigned Team",
|
||
"SELECT": {
|
||
"PLACEHOLDER": "None"
|
||
},
|
||
"ACCORDION": {
|
||
"CONTACT_DETAILS": "Contact Details",
|
||
"SCHEDULED_MESSAGES": "Scheduled Messages",
|
||
"CONVERSATION_ACTIONS": "Conversation Actions",
|
||
"CONVERSATION_LABELS": "Conversation Labels",
|
||
"CONVERSATION_INFO": "Conversation Information",
|
||
"CONTACT_NOTES": "Contact Notes",
|
||
"CONTACT_ATTRIBUTES": "Contact Attributes",
|
||
"PREVIOUS_CONVERSATION": "Previous Conversations",
|
||
"MACROS": "Macros",
|
||
"LINEAR_ISSUES": "Linked Linear Issues",
|
||
"SHOPIFY_ORDERS": "Shopify Orders"
|
||
},
|
||
"SHOPIFY": {
|
||
"ORDER_ID": "Order #{id}",
|
||
"ERROR": "Error loading orders",
|
||
"NO_SHOPIFY_ORDERS": "No orders found",
|
||
"FINANCIAL_STATUS": {
|
||
"PENDING": "Pending",
|
||
"AUTHORIZED": "Authorized",
|
||
"PARTIALLY_PAID": "Partially Paid",
|
||
"PAID": "Paid",
|
||
"PARTIALLY_REFUNDED": "Partially Refunded",
|
||
"REFUNDED": "Refunded",
|
||
"VOIDED": "Voided"
|
||
},
|
||
"FULFILLMENT_STATUS": {
|
||
"FULFILLED": "Fulfilled",
|
||
"PARTIALLY_FULFILLED": "Partially Fulfilled",
|
||
"UNFULFILLED": "Unfulfilled"
|
||
}
|
||
}
|
||
},
|
||
"SCHEDULED_MESSAGES": {
|
||
"NEW_BUTTON": "Schedule message",
|
||
"PAST_MESSAGES_SECTION": "Sent",
|
||
"EMPTY_STATE": "There are no scheduled messages yet.",
|
||
"STATUS": {
|
||
"DRAFT": "Draft",
|
||
"PENDING": "Pending",
|
||
"SENT": "Sent",
|
||
"FAILED": "Failed"
|
||
},
|
||
"ITEM": {
|
||
"SCHEDULED_FOR": "Scheduled for {time}",
|
||
"NO_SCHEDULE": "No schedule",
|
||
"TEMPLATE_PREVIEW": "Template: {name}",
|
||
"ATTACHMENT_PREVIEW": "Attachment: {filename}",
|
||
"ATTACHMENT_LABEL": "Attachment: {filename}",
|
||
"EMPTY_PREVIEW": "No content",
|
||
"EXPAND": "Expand",
|
||
"COLLAPSE": "Collapse"
|
||
},
|
||
"MODAL": {
|
||
"TITLE_NEW": "Schedule a message",
|
||
"TITLE_EDIT": "Edit scheduled message",
|
||
"MESSAGE_LABEL": "Message",
|
||
"MESSAGE_PLACEHOLDER": "Write your message...",
|
||
"DATETIME_LABEL": "Date and time to send",
|
||
"DATETIME_PLACEHOLDER": "Select date and time",
|
||
"ATTACHMENT_LABEL": "Attachment",
|
||
"ATTACHMENT_ADD": "Attach file",
|
||
"ATTACHMENT_CURRENT": "Current attachment: {filename}",
|
||
"CANCEL": "Cancel",
|
||
"SAVE_DRAFT": "Save as draft",
|
||
"SCHEDULE": "Schedule"
|
||
},
|
||
"CONFIRM_CLOSE": {
|
||
"TITLE": "Unsaved changes",
|
||
"MESSAGE": "You have unsaved content. Would you like to discard your changes?",
|
||
"CONTINUE_EDITING": "Continue editing",
|
||
"DISCARD": "Discard",
|
||
"CANCEL": "Cancel"
|
||
},
|
||
"CONFIRM_DELETE": {
|
||
"TITLE": "Delete scheduled message",
|
||
"MESSAGE": "Are you sure you want to delete this scheduled message? This action cannot be undone.",
|
||
"CANCEL": "Cancel",
|
||
"DELETE": "Delete"
|
||
},
|
||
"META": {
|
||
"TOOLTIP": "Scheduled at {time} by {author}",
|
||
"YOU": "You",
|
||
"AUTHOR_YOU": "{name} (You)",
|
||
"AUTOMATION": "Automation",
|
||
"UNKNOWN_AUTHOR": "Unknown"
|
||
},
|
||
"ERRORS": {
|
||
"CONTENT_REQUIRED": "Add a message, template, or attachment before saving.",
|
||
"CONTENT_TOO_LONG": "Message is too long. Maximum {maxLength} characters allowed.",
|
||
"DATETIME_REQUIRED": "Select a date and time to schedule the message.",
|
||
"SCHEDULE_IN_PAST": "Scheduled time must be in the future.",
|
||
"SAVE_FAILED": "Unable to save scheduled message. Please try again.",
|
||
"DELETE_FAILED": "Unable to delete scheduled message. Please try again."
|
||
}
|
||
},
|
||
"CONVERSATION_CUSTOM_ATTRIBUTES": {
|
||
"ADD_BUTTON_TEXT": "Create attribute",
|
||
"NO_RECORDS_FOUND": "No attributes found",
|
||
"UPDATE": {
|
||
"SUCCESS": "Attribute updated successfully",
|
||
"ERROR": "Unable to update attribute. Please try again later"
|
||
},
|
||
"ADD": {
|
||
"TITLE": "Add",
|
||
"SUCCESS": "Attribute added successfully",
|
||
"ERROR": "Unable to add attribute. Please try again later"
|
||
},
|
||
"DELETE": {
|
||
"SUCCESS": "Attribute deleted successfully",
|
||
"ERROR": "Unable to delete attribute. Please try again later"
|
||
},
|
||
"ATTRIBUTE_SELECT": {
|
||
"TITLE": "Add attributes",
|
||
"PLACEHOLDER": "Search attributes",
|
||
"NO_RESULT": "No attributes found"
|
||
}
|
||
},
|
||
"EMAIL_HEADER": {
|
||
"FROM": "From",
|
||
"TO": "To",
|
||
"BCC": "Bcc",
|
||
"CC": "Cc",
|
||
"SUBJECT": "Subject",
|
||
"EXPAND": "Expand email"
|
||
},
|
||
"CONVERSATION_PARTICIPANTS": {
|
||
"SIDEBAR_MENU_TITLE": "Participating",
|
||
"SIDEBAR_TITLE": "Conversation participants",
|
||
"NO_RECORDS_FOUND": "No results found",
|
||
"ADD_PARTICIPANTS": "Select participants",
|
||
"REMANING_PARTICIPANTS_TEXT": "+{count} others",
|
||
"REMANING_PARTICIPANT_TEXT": "+{count} other",
|
||
"TOTAL_PARTICIPANTS_TEXT": "{count} people are participating.",
|
||
"TOTAL_PARTICIPANT_TEXT": "{count} person is participating.",
|
||
"NO_PARTICIPANTS_TEXT": "No one is participating!.",
|
||
"WATCH_CONVERSATION": "Join conversation",
|
||
"YOU_ARE_WATCHING": "You are participating",
|
||
"API": {
|
||
"ERROR_MESSAGE": "Could not update, try again!",
|
||
"SUCCESS_MESSAGE": "Participants updated!"
|
||
}
|
||
},
|
||
"TRANSLATE_MODAL": {
|
||
"TITLE": "View translated content",
|
||
"DESC": "You can view the translated content in each langauge.",
|
||
"ORIGINAL_CONTENT": "Original Content",
|
||
"TRANSLATED_CONTENT": "Translated Content",
|
||
"NO_TRANSLATIONS_AVAILABLE": "No translations are available for this content"
|
||
},
|
||
"TYPING": {
|
||
"ONE": "{user} is typing",
|
||
"TWO": "{user} and {secondUser} are typing",
|
||
"MULTIPLE": "{user} and {count} others are typing"
|
||
},
|
||
"COPILOT": {
|
||
"TRY_THESE_PROMPTS": "Try these prompts"
|
||
},
|
||
"GALLERY_VIEW": {
|
||
"ERROR_DOWNLOADING": "Unable to download attachment. Please try again"
|
||
}
|
||
}
|