From c6be04cdc1c30d70cfd39aa47feecd4fe3182125 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 14 Aug 2025 12:39:21 +0530 Subject: [PATCH 001/132] feat: scenario agents & runner (#11944) Co-authored-by: Muhsin Keloth Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sojan Jose Co-authored-by: Pranav Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> --- .gitignore | 1 + Gemfile | 5 +- Gemfile.lock | 8 +- config/initializers/ai_agents.rb | 23 ++ .../conversation/response_builder_job.rb | 16 +- enterprise/app/models/captain/assistant.rb | 30 ++ enterprise/app/models/captain/scenario.rb | 34 ++ enterprise/app/models/concerns/agentable.rb | 56 +++ .../captain/assistant/agent_runner_service.rb | 161 +++++++++ enterprise/lib/captain/prompt_renderer.rb | 25 ++ .../lib/captain/prompts/assistant.liquid | 80 +++++ .../lib/captain/prompts/scenario.liquid | 24 ++ .../captain/prompts/snippets/contact.liquid | 17 + .../prompts/snippets/conversation.liquid | 18 + enterprise/lib/captain/response_schema.rb | 6 + lib/open_ai_constants.rb | 6 + lib/tasks/captain_chat.rake | 235 +++++++++++++ .../conversation/response_builder_job_spec.rb | 79 ++++- .../lib/captain/prompt_renderer_spec.rb | 123 +++++++ .../models/concerns/agentable_spec.rb | 186 ++++++++++ .../assistant/agent_runner_service_spec.rb | 320 ++++++++++++++++++ 21 files changed, 1437 insertions(+), 16 deletions(-) create mode 100644 config/initializers/ai_agents.rb create mode 100644 enterprise/app/models/concerns/agentable.rb create mode 100644 enterprise/app/services/captain/assistant/agent_runner_service.rb create mode 100644 enterprise/lib/captain/prompt_renderer.rb create mode 100644 enterprise/lib/captain/prompts/assistant.liquid create mode 100644 enterprise/lib/captain/prompts/scenario.liquid create mode 100644 enterprise/lib/captain/prompts/snippets/contact.liquid create mode 100644 enterprise/lib/captain/prompts/snippets/conversation.liquid create mode 100644 enterprise/lib/captain/response_schema.rb create mode 100644 lib/open_ai_constants.rb create mode 100644 lib/tasks/captain_chat.rake create mode 100644 spec/enterprise/lib/captain/prompt_renderer_spec.rb create mode 100644 spec/enterprise/models/concerns/agentable_spec.rb create mode 100644 spec/enterprise/services/captain/assistant/agent_runner_service_spec.rb diff --git a/.gitignore b/.gitignore index c64fb5c1b..bb0df62a8 100644 --- a/.gitignore +++ b/.gitignore @@ -94,3 +94,4 @@ yarn-debug.log* .vscode .claude/settings.local.json .cursor +CLAUDE.local.md diff --git a/Gemfile b/Gemfile index 269614d8b..9929575d4 100644 --- a/Gemfile +++ b/Gemfile @@ -179,7 +179,10 @@ gem 'reverse_markdown' gem 'iso-639' gem 'ruby-openai' -gem 'ai-agents', '>= 0.2.1' +gem 'ai-agents', '>= 0.4.3' + +# TODO: Move this gem as a dependency of ai-agents +gem 'ruby_llm-schema' gem 'shopify_api' diff --git a/Gemfile.lock b/Gemfile.lock index 405300a7c..1c64914b3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -126,7 +126,7 @@ GEM jbuilder (~> 2) rails (>= 4.2, < 7.2) selectize-rails (~> 0.6) - ai-agents (0.2.1) + ai-agents (0.4.3) ruby_llm (~> 1.3) annotate (3.2.0) activerecord (>= 3.2, < 8.0) @@ -720,7 +720,7 @@ GEM ruby2ruby (2.5.0) ruby_parser (~> 3.1) sexp_processor (~> 4.6) - ruby_llm (1.3.1) + ruby_llm (1.5.1) base64 event_stream_parser (~> 1) faraday (>= 1.10.0) @@ -729,6 +729,7 @@ GEM faraday-retry (>= 1) marcel (~> 1.0) zeitwerk (~> 2) + ruby_llm-schema (0.1.0) ruby_parser (3.20.0) sexp_processor (~> 4.16) sass (3.7.4) @@ -910,7 +911,7 @@ DEPENDENCIES administrate (>= 0.20.1) administrate-field-active_storage (>= 1.0.3) administrate-field-belongs_to_search (>= 0.9.0) - ai-agents (>= 0.2.1) + ai-agents (>= 0.4.3) annotate attr_extras audited (~> 5.4, >= 5.4.1) @@ -1004,6 +1005,7 @@ DEPENDENCIES rubocop-rails rubocop-rspec ruby-openai + ruby_llm-schema scout_apm scss_lint seed_dump diff --git a/config/initializers/ai_agents.rb b/config/initializers/ai_agents.rb new file mode 100644 index 000000000..37bdd589f --- /dev/null +++ b/config/initializers/ai_agents.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +require 'agents' + +Rails.application.config.after_initialize do + api_key = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_API_KEY')&.value + model = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || OpenAiConstants::DEFAULT_MODEL + api_endpoint = InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_ENDPOINT')&.value || OpenAiConstants::DEFAULT_ENDPOINT + + if api_key.present? + Agents.configure do |config| + config.openai_api_key = api_key + if api_endpoint.present? + api_base = "#{api_endpoint.chomp('/')}/v1" + config.openai_api_base = api_base + end + config.default_model = model + config.debug = false + end + end +rescue StandardError => e + Rails.logger.error "Failed to configure AI Agents SDK: #{e.message}" +end diff --git a/enterprise/app/jobs/captain/conversation/response_builder_job.rb b/enterprise/app/jobs/captain/conversation/response_builder_job.rb index b207bd2a4..7ede1201d 100644 --- a/enterprise/app/jobs/captain/conversation/response_builder_job.rb +++ b/enterprise/app/jobs/captain/conversation/response_builder_job.rb @@ -26,9 +26,15 @@ class Captain::Conversation::ResponseBuilderJob < ApplicationJob delegate :account, :inbox, to: :@conversation def generate_and_process_response - @response = Captain::Llm::AssistantChatService.new(assistant: @assistant).generate_response( - message_history: collect_previous_messages - ) + @response = if captain_v2_enabled? + Captain::Assistant::AgentRunnerService.new(assistant: @assistant, conversation: @conversation).generate_response( + message_history: collect_previous_messages + ) + else + Captain::Llm::AssistantChatService.new(assistant: @assistant).generate_response( + message_history: collect_previous_messages + ) + end return process_action('handoff') if handoff_requested? @@ -104,4 +110,8 @@ class Captain::Conversation::ResponseBuilderJob < ApplicationJob def log_error(error) ChatwootExceptionTracker.new(error, account: account).capture_exception end + + def captain_v2_enabled? + return account.feature_enabled?('captain_integration_v2') + end end diff --git a/enterprise/app/models/captain/assistant.rb b/enterprise/app/models/captain/assistant.rb index cdf2b53f3..0423abf67 100644 --- a/enterprise/app/models/captain/assistant.rb +++ b/enterprise/app/models/captain/assistant.rb @@ -19,6 +19,7 @@ class Captain::Assistant < ApplicationRecord include Avatarable include Concerns::CaptainToolsHelpers + include Concerns::Agentable self.table_name = 'captain_assistants' @@ -35,6 +36,8 @@ class Captain::Assistant < ApplicationRecord has_many :copilot_threads, dependent: :destroy_async has_many :scenarios, class_name: 'Captain::Scenario', dependent: :destroy_async + store_accessor :config, :temperature, :feature_faq, :feature_memory, :product_name + validates :name, presence: true validates :description, presence: true validates :account_id, presence: true @@ -71,6 +74,33 @@ class Captain::Assistant < ApplicationRecord private + def agent_name + name + end + + def agent_tools + [ + self.class.resolve_tool_class('faq_lookup').new(self), + self.class.resolve_tool_class('handoff').new(self) + ] + end + + def prompt_context + { + name: name, + description: description, + product_name: config['product_name'] || 'this product', + scenarios: scenarios.enabled.map do |scenario| + { + key: scenario.title.parameterize.underscore, + description: scenario.description + } + end, + response_guidelines: response_guidelines || [], + guardrails: guardrails || [] + } + end + def default_avatar_url "#{ENV.fetch('FRONTEND_URL', nil)}/assets/images/dashboard/captain/logo.svg" end diff --git a/enterprise/app/models/captain/scenario.rb b/enterprise/app/models/captain/scenario.rb index ecfba396f..aac7e2411 100644 --- a/enterprise/app/models/captain/scenario.rb +++ b/enterprise/app/models/captain/scenario.rb @@ -22,6 +22,7 @@ # class Captain::Scenario < ApplicationRecord include Concerns::CaptainToolsHelpers + include Concerns::Agentable self.table_name = 'captain_scenarios' @@ -37,10 +38,43 @@ class Captain::Scenario < ApplicationRecord scope :enabled, -> { where(enabled: true) } + delegate :temperature, :feature_faq, :feature_memory, :product_name, to: :assistant + before_save :resolve_tool_references + def prompt_context + { + title: title, + instructions: resolved_instructions, + tools: resolved_tools + } + end + private + def agent_name + "#{title} Agent".titleize + end + + def agent_tools + resolved_tools.map { |tool| self.class.resolve_tool_class(tool[:id]) }.map { |tool| tool.new(assistant) } + end + + def resolved_instructions + instruction.gsub(TOOL_REFERENCE_REGEX) do |match| + "#{match} tool " + end + end + + def resolved_tools + return [] if tools.blank? + + available_tools = self.class.available_agent_tools + tools.filter_map do |tool_id| + available_tools.find { |tool| tool[:id] == tool_id } + end + end + # Validates that all tool references in the instruction are valid. # Parses the instruction for tool references and checks if they exist # in the available tools configuration. diff --git a/enterprise/app/models/concerns/agentable.rb b/enterprise/app/models/concerns/agentable.rb new file mode 100644 index 000000000..dab76a726 --- /dev/null +++ b/enterprise/app/models/concerns/agentable.rb @@ -0,0 +1,56 @@ +module Concerns::Agentable + extend ActiveSupport::Concern + + def agent + Agents::Agent.new( + name: agent_name, + instructions: ->(context) { agent_instructions(context) }, + tools: agent_tools, + model: agent_model, + temperature: temperature.to_f || 0.7, + response_schema: agent_response_schema + ) + end + + def agent_instructions(context = nil) + enhanced_context = prompt_context + + if context + state = context.context[:state] || {} + conversation_data = state[:conversation] || {} + contact_data = state[:contact] || {} + enhanced_context = enhanced_context.merge( + conversation: conversation_data, + contact: contact_data + ) + end + + Captain::PromptRenderer.render(template_name, enhanced_context.with_indifferent_access) + end + + private + + def agent_name + raise NotImplementedError, "#{self.class} must implement agent_name" + end + + def template_name + self.class.name.demodulize.underscore + end + + def agent_tools + [] # Default implementation, override if needed + end + + def agent_model + InstallationConfig.find_by(name: 'CAPTAIN_OPEN_AI_MODEL')&.value.presence || OpenAiConstants::DEFAULT_MODEL + end + + def agent_response_schema + Captain::ResponseSchema + end + + def prompt_context + raise NotImplementedError, "#{self.class} must implement prompt_context" + end +end diff --git a/enterprise/app/services/captain/assistant/agent_runner_service.rb b/enterprise/app/services/captain/assistant/agent_runner_service.rb new file mode 100644 index 000000000..7a35e6d07 --- /dev/null +++ b/enterprise/app/services/captain/assistant/agent_runner_service.rb @@ -0,0 +1,161 @@ +require 'agents' + +class Captain::Assistant::AgentRunnerService + CONVERSATION_STATE_ATTRIBUTES = %i[ + id display_id inbox_id contact_id status priority + label_list custom_attributes additional_attributes + ].freeze + + CONTACT_STATE_ATTRIBUTES = %i[ + id name email phone_number identifier contact_type + custom_attributes additional_attributes + ].freeze + + def initialize(assistant:, conversation: nil, callbacks: {}) + @assistant = assistant + @conversation = conversation + @callbacks = callbacks + end + + def generate_response(message_history: []) + agents = build_and_wire_agents + context = build_context(message_history) + message_to_process = extract_last_user_message(message_history) + runner = Agents::Runner.with_agents(*agents) + runner = add_callbacks_to_runner(runner) if @callbacks.any? + result = runner.run(message_to_process, context: context) + + process_agent_result(result) + rescue StandardError => e + # when running the agent runner service in a rake task, the conversation might not have an account associated + # for regular production usage, it will run just fine + ChatwootExceptionTracker.new(e, account: @conversation&.account).capture_exception + Rails.logger.error "[Captain V2] AgentRunnerService error: #{e.message}" + Rails.logger.error e.backtrace.join("\n") + + error_response(e.message) + end + + private + + def build_context(message_history) + conversation_history = message_history.map do |msg| + content = extract_text_from_content(msg[:content]) + + { + role: msg[:role].to_sym, + content: content, + agent_name: msg[:agent_name] + } + end + + { + conversation_history: conversation_history, + state: build_state + } + end + + def extract_last_user_message(message_history) + last_user_msg = message_history.reverse.find { |msg| msg[:role] == 'user' } + + extract_text_from_content(last_user_msg[:content]) + end + + def extract_text_from_content(content) + # Handle structured output from agents + return content[:response] || content['response'] || content.to_s if content.is_a?(Hash) + + return content unless content.is_a?(Array) + + text_parts = content.select { |part| part[:type] == 'text' }.pluck(:text) + text_parts.join(' ') + end + + # Response formatting methods + def process_agent_result(result) + Rails.logger.info "[Captain V2] Agent result: #{result.inspect}" + format_response(result.output) + end + + def format_response(output) + return output.with_indifferent_access if output.is_a?(Hash) + + # Fallback for backwards compatibility + { + 'response' => output.to_s, + 'reasoning' => 'Processed by agent' + } + end + + def error_response(error_message) + { + 'response' => 'conversation_handoff', + 'reasoning' => "Error occurred: #{error_message}" + } + end + + def build_state + state = { + account_id: @assistant.account_id, + assistant_id: @assistant.id, + assistant_config: @assistant.config + } + + if @conversation + state[:conversation] = @conversation.attributes.symbolize_keys.slice(*CONVERSATION_STATE_ATTRIBUTES) + state[:contact] = @conversation.contact.attributes.symbolize_keys.slice(*CONTACT_STATE_ATTRIBUTES) if @conversation.contact + end + + state + end + + def build_and_wire_agents + assistant_agent = @assistant.agent + scenario_agents = @assistant.scenarios.enabled.map(&:agent) + + assistant_agent.register_handoffs(*scenario_agents) if scenario_agents.any? + scenario_agents.each { |scenario_agent| scenario_agent.register_handoffs(assistant_agent) } + + [assistant_agent] + scenario_agents + end + + def add_callbacks_to_runner(runner) + runner = add_agent_thinking_callback(runner) if @callbacks[:on_agent_thinking] + runner = add_tool_start_callback(runner) if @callbacks[:on_tool_start] + runner = add_tool_complete_callback(runner) if @callbacks[:on_tool_complete] + runner = add_agent_handoff_callback(runner) if @callbacks[:on_agent_handoff] + runner + end + + def add_agent_thinking_callback(runner) + runner.on_agent_thinking do |*args| + @callbacks[:on_agent_thinking].call(*args) + rescue StandardError => e + Rails.logger.warn "[Captain] Callback error for agent_thinking: #{e.message}" + end + end + + def add_tool_start_callback(runner) + runner.on_tool_start do |*args| + @callbacks[:on_tool_start].call(*args) + rescue StandardError => e + Rails.logger.warn "[Captain] Callback error for tool_start: #{e.message}" + end + end + + def add_tool_complete_callback(runner) + runner.on_tool_complete do |*args| + @callbacks[:on_tool_complete].call(*args) + rescue StandardError => e + Rails.logger.warn "[Captain] Callback error for tool_complete: #{e.message}" + end + end + + def add_agent_handoff_callback(runner) + runner.on_agent_handoff do |*args| + @callbacks[:on_agent_handoff].call(*args) + rescue StandardError => e + Rails.logger.warn "[Captain] Callback error for agent_handoff: #{e.message}" + end + end +end diff --git a/enterprise/lib/captain/prompt_renderer.rb b/enterprise/lib/captain/prompt_renderer.rb new file mode 100644 index 000000000..1a73ddd15 --- /dev/null +++ b/enterprise/lib/captain/prompt_renderer.rb @@ -0,0 +1,25 @@ +require 'liquid' + +class Captain::PromptRenderer + class << self + def render(template_name, context = {}) + template = load_template(template_name) + liquid_template = Liquid::Template.parse(template) + liquid_template.render(stringify_keys(context)) + end + + private + + def load_template(template_name) + template_path = Rails.root.join('enterprise', 'lib', 'captain', 'prompts', "#{template_name}.liquid") + + raise "Template not found: #{template_name}" unless File.exist?(template_path) + + File.read(template_path) + end + + def stringify_keys(hash) + hash.deep_stringify_keys + end + end +end diff --git a/enterprise/lib/captain/prompts/assistant.liquid b/enterprise/lib/captain/prompts/assistant.liquid new file mode 100644 index 000000000..69c967d73 --- /dev/null +++ b/enterprise/lib/captain/prompts/assistant.liquid @@ -0,0 +1,80 @@ +# System Context +You are part of Captain, a multi-agent AI system designed for seamless agent coordination and task execution. You can transfer conversations to specialized agents using handoff functions (e.g., `handoff_to_[agent_name]`). These transfers happen in the background - never mention or draw attention to them in your responses. + +# Your Identity +You are {{name}}, a helpful and knowledgeable assistant. Your role is to provide accurate information, assist with tasks, and ensure users get the help they need. + +{{ description }} + +Don't digress away from your instructions, and use all the available tools at your disposal for solving customer issues. If you are to state something factual about {{product_name}} ensure you source that information from the FAQs only. Use the faq_lookup tool for this. + +# Current Context + +Here's the metadata we have about the current conversation and the contact associated with it: + +{% if conversation -%} +{% render 'conversation' %} +{% endif -%} + +{% if contact -%} +{% render 'contact' %} +{% endif -%} + +{% if response_guidelines.size > 0 -%} +# Response Guidelines +Your responses should follow these guidelines: +{% for guideline in response_guidelines -%} +- {{ guideline }} +{% endfor %} +{% endif -%} + +{% if guardrails.size > 0 -%} +# Guardrails +Always respect these boundaries: +{% for guardrail in guardrails -%} +- {{ guardrail }} +{% endfor %} +{% endif -%} + +# Decision Framework + +## 1. Analyze the Request +First, understand what the user is asking: +- **Intent**: What are they trying to achieve? +- **Type**: Is it a question, task, complaint, or request? +- **Complexity**: Can you handle it or does it need specialized expertise? + +## 2. Check for Specialized Scenarios First +Before using any tools, check if the request matches any of these scenarios. If unclear, ask clarifying questions to determine if a scenario applies: + +{% for scenario in scenarios -%} +### handoff_to_{{ scenario.key }} +{{ scenario.description }} +{% endfor -%} + +## 3. Handle the Request +If no specialized scenario clearly matches, handle it yourself: + +### For Questions and Information Requests +1. **First, check existing knowledge**: Use `faq_lookup` tool to search for relevant information +2. **If not found in FAQs**: Provide your best answer based on available context +3. **If unable to answer**: Use `handoff` tool to transfer to a human expert + +### For Complex or Unclear Requests +1. **Ask clarifying questions**: Gather more information if needed +2. **Break down complex tasks**: Handle step by step or hand off if too complex +3. **Escalate when necessary**: Use `handoff` tool for issues beyond your capabilities + +## Response Best Practices +- Be conversational but professional +- Provide actionable information +- Include relevant details from tool responses + +# Human Handoff Protocol +Transfer to a human agent when: +- User explicitly requests human assistance +- You cannot find needed information after checking FAQs +- The issue requires specialized knowledge or permissions you don't have +- Multiple attempts to help have been unsuccessful + +When using the `handoff` tool, provide a clear reason that helps the human agent understand the context. diff --git a/enterprise/lib/captain/prompts/scenario.liquid b/enterprise/lib/captain/prompts/scenario.liquid new file mode 100644 index 000000000..339820b83 --- /dev/null +++ b/enterprise/lib/captain/prompts/scenario.liquid @@ -0,0 +1,24 @@ +# System context +You are part of a multi-agent system where you've been handed off a conversation to handle a specific task. +The handoff was seamless - the user is not aware of any transfer. Continue the conversation naturally. + +# Your Role +You are a specialized agent called {{ title }}, your task is to handle the following scenario: + +{{ instructions }} + +{% if conversation -%} +{% render 'conversation' %} + +{% if contact -%} +{% render 'contact' %} +{% endif -%} +{% endif -%} + +{% if tools.size > 0 -%} +# Available Tools +You have access to these tools: +{% for tool in tools -%} +- {{ tool.id }}: {{ tool.description }} +{% endfor %} +{%- endif %} diff --git a/enterprise/lib/captain/prompts/snippets/contact.liquid b/enterprise/lib/captain/prompts/snippets/contact.liquid new file mode 100644 index 000000000..372389cbb --- /dev/null +++ b/enterprise/lib/captain/prompts/snippets/contact.liquid @@ -0,0 +1,17 @@ +# Contact Information +- Contact ID: {{ contact.id }} +- Name: {{ contact.name || "Unknown" }} +- Email: {{ contact.email || "None" }} +- Phone: {{ contact.phone_number || "None" }} +- Identifier: {{ contact.identifier || "None" }} +- Type: {{ contact.contact_type || "visitor" }} +{% if contact.custom_attributes -%} + {% for attribute in contact.custom_attributes -%} +- {{ attribute[0] }}: {{ attribute[1] }} + {% endfor -%} +{% endif -%} +{% if contact.additional_attributes -%} + {% for attribute in contact.additional_attributes -%} +- {{ attribute[0] }}: {{ attribute[1] }} + {% endfor -%} +{% endif -%} \ No newline at end of file diff --git a/enterprise/lib/captain/prompts/snippets/conversation.liquid b/enterprise/lib/captain/prompts/snippets/conversation.liquid new file mode 100644 index 000000000..b5faee7d6 --- /dev/null +++ b/enterprise/lib/captain/prompts/snippets/conversation.liquid @@ -0,0 +1,18 @@ +# Current Conversation Context +- Conversation ID: {{ conversation.display_id }} +- Contact ID: {{ conversation.contact_id }} +- Status: {{ conversation.status }} +- Priority: {{ conversation.priority || "None" }} +{% if conversation.label_list.size > 0 -%} +- Labels: {{ conversation.label_list | join: ", " }} +{% endif -%} +{% if conversation.custom_attributes -%} + {% for attribute in conversation.custom_attributes -%} +- {{ attribute[0] }}: {{ attribute[1] }} + {% endfor -%} +{% endif -%} +{% if conversation.additional_attributes -%} + {% for attribute in conversation.additional_attributes -%} +- {{ attribute[0] }}: {{ attribute[1] }} + {% endfor -%} +{% endif -%} \ No newline at end of file diff --git a/enterprise/lib/captain/response_schema.rb b/enterprise/lib/captain/response_schema.rb new file mode 100644 index 000000000..651eb7e23 --- /dev/null +++ b/enterprise/lib/captain/response_schema.rb @@ -0,0 +1,6 @@ +# TODO: Wrap the schema lib under ai-agents +# So we can extend it as Agents::Schema +class Captain::ResponseSchema < RubyLLM::Schema + string :response, description: 'The message to send to the user' + string :reasoning, description: "Agent's thought process" +end diff --git a/lib/open_ai_constants.rb b/lib/open_ai_constants.rb new file mode 100644 index 000000000..2c87f3378 --- /dev/null +++ b/lib/open_ai_constants.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +module OpenAiConstants + DEFAULT_MODEL = 'gpt-4.1-mini' + DEFAULT_ENDPOINT = 'https://api.openai.com' +end diff --git a/lib/tasks/captain_chat.rake b/lib/tasks/captain_chat.rake new file mode 100644 index 000000000..cfe257196 --- /dev/null +++ b/lib/tasks/captain_chat.rake @@ -0,0 +1,235 @@ +require 'io/console' +require 'readline' + +namespace :captain do + desc 'Start interactive chat with Captain assistant - Usage: rake captain:chat[assistant_id] or rake captain:chat -- assistant_id' + task :chat, [:assistant_id] => :environment do |_, args| + assistant_id = args[:assistant_id] || ARGV[1] + + unless assistant_id + puts '❌ Please provide an assistant ID' + puts 'Usage: rake captain:chat[assistant_id]' + puts "\nAvailable assistants:" + Captain::Assistant.includes(:account).each do |assistant| + puts " ID: #{assistant.id} - #{assistant.name} (Account: #{assistant.account.name})" + end + exit 1 + end + + assistant = Captain::Assistant.find_by(id: assistant_id) + unless assistant + puts "❌ Assistant with ID #{assistant_id} not found" + exit 1 + end + + # Clear ARGV to prevent gets from reading files + ARGV.clear + + chat_session = CaptainChatSession.new(assistant) + chat_session.start + end +end + +class CaptainChatSession + def initialize(assistant) + @assistant = assistant + @message_history = [] + end + + def start + show_assistant_info + show_instructions + chat_loop + show_exit_message + end + + private + + def show_instructions + puts "💡 Type 'exit', 'quit', or 'bye' to end the session" + puts "💡 Type 'clear' to clear message history" + puts('-' * 50) + end + + def chat_loop + loop do + puts '' # Add spacing before prompt + user_input = Readline.readline('👤 You: ', true) + next unless user_input # Handle Ctrl+D + + break unless handle_user_input(user_input.strip) + end + end + + def handle_user_input(user_input) + case user_input.downcase + when 'exit', 'quit', 'bye' + false + when 'clear' + clear_history + true + when '' + true + else + process_user_message(user_input) + true + end + end + + def show_exit_message + puts "\nChat session ended" + puts "Final conversation log has #{@message_history.length} messages" + end + + def show_assistant_info + show_basic_info + show_scenarios + show_available_tools + puts '' + end + + def show_basic_info + puts "🤖 Starting chat with #{@assistant.name}" + puts "🏢 Account: #{@assistant.account.name}" + puts "🆔 Assistant ID: #{@assistant.id}" + end + + def show_scenarios + scenarios = @assistant.scenarios.enabled + if scenarios.any? + puts "⚡ Enabled Scenarios (#{scenarios.count}):" + scenarios.each { |scenario| display_scenario(scenario) } + else + puts '⚡ No scenarios enabled' + end + end + + def display_scenario(scenario) + tools_count = scenario.tools&.length || 0 + puts " • #{scenario.title} (#{tools_count} tools)" + return if scenario.description.blank? + + description = truncate_description(scenario.description) + puts " #{description}" + end + + def truncate_description(description) + description.length > 60 ? "#{description[0..60]}..." : description + end + + def show_available_tools + available_tools = Captain::Assistant.available_tool_ids + if available_tools.any? + puts "🔧 Available Tools (#{available_tools.count}): #{available_tools.join(', ')}" + else + puts '🔧 No tools available' + end + end + + def process_user_message(user_input) + add_to_history('user', user_input) + + begin + print "🤖 #{@assistant.name}: " + @current_system_messages = [] + + result = generate_assistant_response + display_response(result) + rescue StandardError => e + handle_error(e) + end + end + + def generate_assistant_response + runner = Captain::Assistant::AgentRunnerService.new(assistant: @assistant, callbacks: build_callbacks) + runner.generate_response(message_history: @message_history) + end + + def build_callbacks + { + on_agent_thinking: method(:handle_agent_thinking), + on_tool_start: method(:handle_tool_start), + on_tool_complete: method(:handle_tool_complete), + on_agent_handoff: method(:handle_agent_handoff) + } + end + + def handle_agent_thinking(agent, _input) + agent_name = extract_name(agent) + @current_system_messages << "#{agent_name} is thinking..." + add_to_history('system', "#{agent_name} is thinking...") + end + + def handle_tool_start(tool, _args) + tool_name = extract_tool_name(tool) + @current_system_messages << "Using tool: #{tool_name}" + add_to_history('system', "Using tool: #{tool_name}") + end + + def handle_tool_complete(tool, _result) + tool_name = extract_tool_name(tool) + @current_system_messages << "Tool #{tool_name} completed" + add_to_history('system', "Tool #{tool_name} completed") + end + + def handle_agent_handoff(from, to, reason) + @current_system_messages << "Handoff: #{extract_name(from)} → #{extract_name(to)} (#{reason})" + add_to_history('system', "Agent handoff: #{extract_name(from)} → #{extract_name(to)} (#{reason})") + end + + def display_response(result) + response_text = result['response'] || 'No response generated' + reasoning = result['reasoning'] + + puts dim_text("\n#{@current_system_messages.join("\n")}") if @current_system_messages.any? + puts response_text + puts dim_italic_text("(Reasoning: #{reasoning})") if reasoning && reasoning != 'Processed by agent' + + add_to_history('assistant', response_text, reasoning: reasoning) + end + + def handle_error(error) + error_msg = "Error: #{error.message}" + puts "❌ #{error_msg}" + add_to_history('system', error_msg) + end + + def add_to_history(role, content, agent_name: nil, reasoning: nil) + message = { + role: role, + content: content, + timestamp: Time.current, + agent_name: agent_name || (role == 'assistant' ? @assistant.name : nil) + } + message[:reasoning] = reasoning if reasoning + + @message_history << message + end + + def clear_history + @message_history.clear + puts 'Message history cleared' + end + + def dim_text(text) + # ANSI escape code for very dim gray text (bright black/dark gray) + "\e[90m#{text}\e[0m" + end + + def dim_italic_text(text) + # ANSI escape codes for dim gray + italic text + "\e[90m\e[3m#{text}\e[0m" + end + + def extract_tool_name(tool) + return tool if tool.is_a?(String) + + tool.class.name.split('::').last.gsub('Tool', '') + rescue StandardError + tool.to_s + end + + def extract_name(obj) + obj.respond_to?(:name) ? obj.name : obj.to_s + end +end diff --git a/spec/enterprise/jobs/captain/conversation/response_builder_job_spec.rb b/spec/enterprise/jobs/captain/conversation/response_builder_job_spec.rb index c21205d52..23ed2ecec 100644 --- a/spec/enterprise/jobs/captain/conversation/response_builder_job_spec.rb +++ b/spec/enterprise/jobs/captain/conversation/response_builder_job_spec.rb @@ -9,6 +9,7 @@ RSpec.describe Captain::Conversation::ResponseBuilderJob, type: :job do describe '#perform' do let(:conversation) { create(:conversation, inbox: inbox, account: account) } let(:mock_llm_chat_service) { instance_double(Captain::Llm::AssistantChatService) } + let(:mock_agent_runner_service) { instance_double(Captain::Assistant::AgentRunnerService) } before do create(:message, conversation: conversation, content: 'Hello', message_type: :incoming) @@ -16,19 +17,79 @@ RSpec.describe Captain::Conversation::ResponseBuilderJob, type: :job do allow(inbox).to receive(:captain_active?).and_return(true) allow(Captain::Llm::AssistantChatService).to receive(:new).and_return(mock_llm_chat_service) allow(mock_llm_chat_service).to receive(:generate_response).and_return({ 'response' => 'Hey, welcome to Captain Specs' }) + allow(Captain::Assistant::AgentRunnerService).to receive(:new).and_return(mock_agent_runner_service) + allow(mock_agent_runner_service).to receive(:generate_response).and_return({ 'response' => 'Hey, welcome to Captain V2' }) end - it 'generates and processes response' do - described_class.perform_now(conversation, assistant) - expect(conversation.messages.count).to eq(2) - expect(conversation.messages.outgoing.count).to eq(1) - expect(conversation.messages.last.content).to eq('Hey, welcome to Captain Specs') + context 'when captain_v2 is disabled' do + before do + allow(account).to receive(:feature_enabled?).and_return(false) + allow(account).to receive(:feature_enabled?).with('captain_integration_v2').and_return(false) + end + + it 'uses Captain::Llm::AssistantChatService' do + expect(Captain::Llm::AssistantChatService).to receive(:new).with(assistant: assistant) + expect(Captain::Assistant::AgentRunnerService).not_to receive(:new) + + described_class.perform_now(conversation, assistant) + expect(conversation.messages.last.content).to eq('Hey, welcome to Captain Specs') + end + + it 'generates and processes response' do + described_class.perform_now(conversation, assistant) + expect(conversation.messages.count).to eq(2) + expect(conversation.messages.outgoing.count).to eq(1) + expect(conversation.messages.last.content).to eq('Hey, welcome to Captain Specs') + end + + it 'increments usage response' do + described_class.perform_now(conversation, assistant) + account.reload + expect(account.usage_limits[:captain][:responses][:consumed]).to eq(1) + end end - it 'increments usage response' do - described_class.perform_now(conversation, assistant) - account.reload - expect(account.usage_limits[:captain][:responses][:consumed]).to eq(1) + context 'when captain_v2 is enabled' do + before do + allow(account).to receive(:feature_enabled?).and_return(false) + allow(account).to receive(:feature_enabled?).with('captain_integration_v2').and_return(true) + end + + it 'uses Captain::Assistant::AgentRunnerService' do + expect(Captain::Assistant::AgentRunnerService).to receive(:new).with( + assistant: assistant, + conversation: conversation + ) + expect(Captain::Llm::AssistantChatService).not_to receive(:new) + + described_class.perform_now(conversation, assistant) + expect(conversation.messages.last.content).to eq('Hey, welcome to Captain V2') + end + + it 'passes message history to agent runner service' do + expected_messages = [ + { content: 'Hello', role: 'user' } + ] + + expect(mock_agent_runner_service).to receive(:generate_response).with( + message_history: expected_messages + ) + + described_class.perform_now(conversation, assistant) + end + + it 'generates and processes response' do + described_class.perform_now(conversation, assistant) + expect(conversation.messages.count).to eq(2) + expect(conversation.messages.outgoing.count).to eq(1) + expect(conversation.messages.last.content).to eq('Hey, welcome to Captain V2') + end + + it 'increments usage response' do + described_class.perform_now(conversation, assistant) + account.reload + expect(account.usage_limits[:captain][:responses][:consumed]).to eq(1) + end end context 'when message contains an image' do diff --git a/spec/enterprise/lib/captain/prompt_renderer_spec.rb b/spec/enterprise/lib/captain/prompt_renderer_spec.rb new file mode 100644 index 000000000..761d55f99 --- /dev/null +++ b/spec/enterprise/lib/captain/prompt_renderer_spec.rb @@ -0,0 +1,123 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Captain::PromptRenderer do + let(:template_name) { 'test_template' } + let(:template_content) { 'Hello {{name}}, your balance is {{balance}}' } + let(:template_path) { Rails.root.join('enterprise', 'lib', 'captain', 'prompts', "#{template_name}.liquid") } + let(:context) { { name: 'John', balance: 100 } } + + before do + allow(File).to receive(:exist?).and_return(false) + allow(File).to receive(:exist?).with(template_path).and_return(true) + allow(File).to receive(:read).with(template_path).and_return(template_content) + end + + describe '.render' do + it 'renders template with context' do + result = described_class.render(template_name, context) + + expect(result).to eq('Hello John, your balance is 100') + end + + it 'handles string keys in context' do + string_context = { 'name' => 'Jane', 'balance' => 200 } + result = described_class.render(template_name, string_context) + + expect(result).to eq('Hello Jane, your balance is 200') + end + + it 'handles mixed symbol and string keys' do + mixed_context = { :name => 'Bob', 'balance' => 300 } + result = described_class.render(template_name, mixed_context) + + expect(result).to eq('Hello Bob, your balance is 300') + end + + it 'handles nested hash context' do + nested_template = 'User: {{user.name}}, Account: {{user.account.type}}' + nested_context = { user: { name: 'Alice', account: { type: 'premium' } } } + + allow(File).to receive(:read).with(template_path).and_return(nested_template) + + result = described_class.render(template_name, nested_context) + + expect(result).to eq('User: Alice, Account: premium') + end + + it 'handles empty context' do + simple_template = 'Hello World' + allow(File).to receive(:read).with(template_path).and_return(simple_template) + + result = described_class.render(template_name, {}) + + expect(result).to eq('Hello World') + end + + it 'loads and parses liquid template' do + liquid_template_double = instance_double(Liquid::Template) + allow(Liquid::Template).to receive(:parse).with(template_content).and_return(liquid_template_double) + allow(liquid_template_double).to receive(:render).with(hash_including('name', 'balance')).and_return('rendered') + + result = described_class.render(template_name, context) + + expect(result).to eq('rendered') + expect(Liquid::Template).to have_received(:parse).with(template_content) + end + end + + describe '.load_template' do + it 'reads template file from correct path' do + described_class.send(:load_template, template_name) + + expect(File).to have_received(:read).with(template_path) + end + + it 'raises error when template does not exist' do + allow(File).to receive(:exist?).with(template_path).and_return(false) + + expect { described_class.send(:load_template, template_name) } + .to raise_error("Template not found: #{template_name}") + end + + it 'constructs correct template path' do + expected_path = Rails.root.join('enterprise/lib/captain/prompts/my_template.liquid') + allow(File).to receive(:exist?).with(expected_path).and_return(true) + allow(File).to receive(:read).with(expected_path).and_return('test content') + + described_class.send(:load_template, 'my_template') + + expect(File).to have_received(:exist?).with(expected_path) + end + end + + describe '.stringify_keys' do + it 'converts symbol keys to strings' do + hash = { name: 'John', age: 30 } + result = described_class.send(:stringify_keys, hash) + + expect(result).to eq({ 'name' => 'John', 'age' => 30 }) + end + + it 'handles nested hashes' do + hash = { user: { name: 'John', profile: { age: 30 } } } + result = described_class.send(:stringify_keys, hash) + + expect(result).to eq({ 'user' => { 'name' => 'John', 'profile' => { 'age' => 30 } } }) + end + + it 'handles arrays with hashes' do + hash = { users: [{ name: 'John' }, { name: 'Jane' }] } + result = described_class.send(:stringify_keys, hash) + + expect(result).to eq({ 'users' => [{ 'name' => 'John' }, { 'name' => 'Jane' }] }) + end + + it 'handles empty hash' do + result = described_class.send(:stringify_keys, {}) + + expect(result).to eq({}) + end + end +end diff --git a/spec/enterprise/models/concerns/agentable_spec.rb b/spec/enterprise/models/concerns/agentable_spec.rb new file mode 100644 index 000000000..767e51d44 --- /dev/null +++ b/spec/enterprise/models/concerns/agentable_spec.rb @@ -0,0 +1,186 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Concerns::Agentable do + let(:dummy_class) do + Class.new do + include Concerns::Agentable + + attr_accessor :temperature + + def initialize(name: 'Test Agent', temperature: 0.8) + @name = name + @temperature = temperature + end + + def self.name + 'DummyClass' + end + + private + + def agent_name + @name + end + + def prompt_context + { base_key: 'base_value' } + end + end + end + + let(:dummy_instance) { dummy_class.new } + let(:mock_agents_agent) { instance_double(Agents::Agent) } + let(:mock_installation_config) { instance_double(InstallationConfig, value: 'gpt-4-turbo') } + + before do + allow(Agents::Agent).to receive(:new).and_return(mock_agents_agent) + allow(InstallationConfig).to receive(:find_by).with(name: 'CAPTAIN_OPEN_AI_MODEL').and_return(mock_installation_config) + allow(Captain::PromptRenderer).to receive(:render).and_return('rendered_template') + end + + describe '#agent' do + it 'creates an Agents::Agent with correct parameters' do + expect(Agents::Agent).to receive(:new).with( + name: 'Test Agent', + instructions: instance_of(Proc), + tools: [], + model: 'gpt-4-turbo', + temperature: 0.8, + response_schema: Captain::ResponseSchema + ) + + dummy_instance.agent + end + + it 'converts nil temperature to 0.0' do + dummy_instance.temperature = nil + + expect(Agents::Agent).to receive(:new).with( + hash_including(temperature: 0.0) + ) + + dummy_instance.agent + end + + it 'converts temperature to float' do + dummy_instance.temperature = '0.5' + + expect(Agents::Agent).to receive(:new).with( + hash_including(temperature: 0.5) + ) + + dummy_instance.agent + end + end + + describe '#agent_instructions' do + it 'calls Captain::PromptRenderer with base context' do + expect(Captain::PromptRenderer).to receive(:render).with( + 'dummy_class', + hash_including(base_key: 'base_value') + ) + + dummy_instance.agent_instructions + end + + it 'merges context state when provided' do + context_double = instance_double(Agents::RunContext, + context: { + state: { + conversation: { id: 123 }, + contact: { name: 'John' } + } + }) + + expected_context = { + base_key: 'base_value', + conversation: { id: 123 }, + contact: { name: 'John' } + } + + expect(Captain::PromptRenderer).to receive(:render).with( + 'dummy_class', + hash_including(expected_context) + ) + + dummy_instance.agent_instructions(context_double) + end + + it 'handles context without state' do + context_double = instance_double(Agents::RunContext, context: {}) + + expect(Captain::PromptRenderer).to receive(:render).with( + 'dummy_class', + hash_including( + base_key: 'base_value', + conversation: {}, + contact: {} + ) + ) + + dummy_instance.agent_instructions(context_double) + end + end + + describe '#template_name' do + it 'returns underscored class name' do + expect(dummy_instance.send(:template_name)).to eq('dummy_class') + end + end + + describe '#agent_tools' do + it 'returns empty array by default' do + expect(dummy_instance.send(:agent_tools)).to eq([]) + end + end + + describe '#agent_model' do + it 'returns value from InstallationConfig when present' do + expect(dummy_instance.send(:agent_model)).to eq('gpt-4-turbo') + end + + it 'returns default model when config not found' do + allow(InstallationConfig).to receive(:find_by).and_return(nil) + + expect(dummy_instance.send(:agent_model)).to eq('gpt-4.1-mini') + end + + it 'returns default model when config value is nil' do + allow(mock_installation_config).to receive(:value).and_return(nil) + + expect(dummy_instance.send(:agent_model)).to eq('gpt-4.1-mini') + end + end + + describe '#agent_response_schema' do + it 'returns Captain::ResponseSchema' do + expect(dummy_instance.send(:agent_response_schema)).to eq(Captain::ResponseSchema) + end + end + + describe 'required methods' do + let(:incomplete_class) do + Class.new do + include Concerns::Agentable + end + end + + let(:incomplete_instance) { incomplete_class.new } + + describe '#agent_name' do + it 'raises NotImplementedError when not implemented' do + expect { incomplete_instance.send(:agent_name) } + .to raise_error(NotImplementedError, /must implement agent_name/) + end + end + + describe '#prompt_context' do + it 'raises NotImplementedError when not implemented' do + expect { incomplete_instance.send(:prompt_context) } + .to raise_error(NotImplementedError, /must implement prompt_context/) + end + end + end +end diff --git a/spec/enterprise/services/captain/assistant/agent_runner_service_spec.rb b/spec/enterprise/services/captain/assistant/agent_runner_service_spec.rb new file mode 100644 index 000000000..f31177fc2 --- /dev/null +++ b/spec/enterprise/services/captain/assistant/agent_runner_service_spec.rb @@ -0,0 +1,320 @@ +# frozen_string_literal: true + +require 'rails_helper' + +RSpec.describe Captain::Assistant::AgentRunnerService do + let(:account) { create(:account) } + let(:inbox) { create(:inbox, account: account) } + let(:contact) { create(:contact, account: account) } + let(:conversation) { create(:conversation, account: account, inbox: inbox, contact: contact) } + let(:assistant) { create(:captain_assistant, account: account) } + let(:scenario) { create(:captain_scenario, assistant: assistant, enabled: true) } + + let(:mock_runner) { instance_double(Agents::Runner) } + let(:mock_agent) { instance_double(Agents::Agent) } + let(:mock_scenario_agent) { instance_double(Agents::Agent) } + let(:mock_result) { instance_double(Agents::RunResult, output: { 'response' => 'Test response' }) } + + let(:message_history) do + [ + { role: 'user', content: 'Hello there' }, + { role: 'assistant', content: 'Hi! How can I help you?', agent_name: 'Assistant' }, + { role: 'user', content: 'I need help with my account' } + ] + end + + before do + allow(assistant).to receive(:agent).and_return(mock_agent) + scenarios_relation = instance_double(Captain::Scenario) + allow(scenarios_relation).to receive(:enabled).and_return([scenario]) + allow(assistant).to receive(:scenarios).and_return(scenarios_relation) + allow(scenario).to receive(:agent).and_return(mock_scenario_agent) + allow(Agents::Runner).to receive(:with_agents).and_return(mock_runner) + allow(mock_runner).to receive(:run).and_return(mock_result) + allow(mock_agent).to receive(:register_handoffs) + allow(mock_scenario_agent).to receive(:register_handoffs) + end + + describe '#initialize' do + it 'sets instance variables correctly' do + service = described_class.new(assistant: assistant, conversation: conversation) + + expect(service.instance_variable_get(:@assistant)).to eq(assistant) + expect(service.instance_variable_get(:@conversation)).to eq(conversation) + expect(service.instance_variable_get(:@callbacks)).to eq({}) + end + + it 'accepts callbacks parameter' do + callbacks = { on_agent_thinking: proc { |x| x } } + service = described_class.new(assistant: assistant, callbacks: callbacks) + + expect(service.instance_variable_get(:@callbacks)).to eq(callbacks) + end + end + + describe '#generate_response' do + subject(:service) { described_class.new(assistant: assistant, conversation: conversation) } + + it 'builds agents and wires them together' do + expect(assistant).to receive(:agent).and_return(mock_agent) + scenarios_relation = instance_double(Captain::Scenario) + allow(scenarios_relation).to receive(:enabled).and_return([scenario]) + expect(assistant).to receive(:scenarios).and_return(scenarios_relation) + expect(scenario).to receive(:agent).and_return(mock_scenario_agent) + expect(mock_agent).to receive(:register_handoffs).with(mock_scenario_agent) + expect(mock_scenario_agent).to receive(:register_handoffs).with(mock_agent) + + service.generate_response(message_history: message_history) + end + + it 'creates runner with agents' do + expect(Agents::Runner).to receive(:with_agents).with(mock_agent, mock_scenario_agent) + + service.generate_response(message_history: message_history) + end + + it 'runs agent with extracted user message and context' do + expected_context = { + conversation_history: [ + { role: :user, content: 'Hello there', agent_name: nil }, + { role: :assistant, content: 'Hi! How can I help you?', agent_name: 'Assistant' }, + { role: :user, content: 'I need help with my account', agent_name: nil } + ], + state: hash_including( + account_id: account.id, + assistant_id: assistant.id, + conversation: hash_including(id: conversation.id), + contact: hash_including(id: contact.id) + ) + } + + expect(mock_runner).to receive(:run).with( + 'I need help with my account', + context: expected_context + ) + + service.generate_response(message_history: message_history) + end + + it 'processes and formats agent result' do + result = service.generate_response(message_history: message_history) + + expect(result).to eq({ 'response' => 'Test response' }) + end + + context 'when no scenarios are enabled' do + before do + scenarios_relation = instance_double(Captain::Scenario) + allow(scenarios_relation).to receive(:enabled).and_return([]) + allow(assistant).to receive(:scenarios).and_return(scenarios_relation) + end + + it 'only uses assistant agent' do + expect(Agents::Runner).to receive(:with_agents).with(mock_agent) + expect(mock_agent).not_to receive(:register_handoffs) + + service.generate_response(message_history: message_history) + end + end + + context 'when agent result is a string' do + let(:mock_result) { instance_double(Agents::RunResult, output: 'Simple string response') } + + it 'formats string response correctly' do + result = service.generate_response(message_history: message_history) + + expect(result).to eq({ + 'response' => 'Simple string response', + 'reasoning' => 'Processed by agent' + }) + end + end + + context 'when an error occurs' do + let(:error) { StandardError.new('Test error') } + + before do + allow(mock_runner).to receive(:run).and_raise(error) + allow(ChatwootExceptionTracker).to receive(:new).and_return( + instance_double(ChatwootExceptionTracker, capture_exception: true) + ) + end + + it 'captures exception and returns error response' do + expect(ChatwootExceptionTracker).to receive(:new).with(error, account: conversation.account) + + result = service.generate_response(message_history: message_history) + + expect(result).to eq({ + 'response' => 'conversation_handoff', + 'reasoning' => 'Error occurred: Test error' + }) + end + + it 'logs error details' do + expect(Rails.logger).to receive(:error).with('[Captain V2] AgentRunnerService error: Test error') + expect(Rails.logger).to receive(:error).with(kind_of(String)) + + service.generate_response(message_history: message_history) + end + + context 'when conversation is nil' do + subject(:service) { described_class.new(assistant: assistant, conversation: nil) } + + it 'handles missing conversation gracefully' do + expect(ChatwootExceptionTracker).to receive(:new).with(error, account: nil) + + result = service.generate_response(message_history: message_history) + + expect(result).to eq({ + 'response' => 'conversation_handoff', + 'reasoning' => 'Error occurred: Test error' + }) + end + end + end + end + + describe '#build_context' do + subject(:service) { described_class.new(assistant: assistant, conversation: conversation) } + + it 'builds context with conversation history and state' do + context = service.send(:build_context, message_history) + + expect(context).to include( + conversation_history: array_including( + { role: :user, content: 'Hello there', agent_name: nil }, + { role: :assistant, content: 'Hi! How can I help you?', agent_name: 'Assistant' } + ), + state: hash_including( + account_id: account.id, + assistant_id: assistant.id + ) + ) + end + + context 'with multimodal content' do + let(:multimodal_message_history) do + [ + { + role: 'user', + content: [ + { type: 'text', text: 'Can you help with this image?' }, + { type: 'image_url', image_url: { url: 'https://example.com/image.jpg' } } + ] + } + ] + end + + it 'extracts text content from multimodal messages' do + context = service.send(:build_context, multimodal_message_history) + + expect(context[:conversation_history].first[:content]).to eq('Can you help with this image?') + end + end + end + + describe '#extract_last_user_message' do + subject(:service) { described_class.new(assistant: assistant, conversation: conversation) } + + it 'extracts the last user message' do + result = service.send(:extract_last_user_message, message_history) + + expect(result).to eq('I need help with my account') + end + end + + describe '#extract_text_from_content' do + subject(:service) { described_class.new(assistant: assistant, conversation: conversation) } + + it 'extracts text from string content' do + result = service.send(:extract_text_from_content, 'Simple text') + + expect(result).to eq('Simple text') + end + + it 'extracts response from hash content' do + content = { 'response' => 'Hash response' } + result = service.send(:extract_text_from_content, content) + + expect(result).to eq('Hash response') + end + + it 'extracts text from multimodal array content' do + content = [ + { type: 'text', text: 'First part' }, + { type: 'image_url', image_url: { url: 'image.jpg' } }, + { type: 'text', text: 'Second part' } + ] + + result = service.send(:extract_text_from_content, content) + + expect(result).to eq('First part Second part') + end + end + + describe '#build_state' do + subject(:service) { described_class.new(assistant: assistant, conversation: conversation) } + + it 'builds state with assistant and account information' do + state = service.send(:build_state) + + expect(state).to include( + account_id: account.id, + assistant_id: assistant.id, + assistant_config: assistant.config + ) + end + + it 'includes conversation attributes when conversation is present' do + state = service.send(:build_state) + + expect(state[:conversation]).to include( + id: conversation.id, + inbox_id: inbox.id, + contact_id: contact.id, + status: conversation.status + ) + end + + it 'includes contact attributes when contact is present' do + state = service.send(:build_state) + + expect(state[:contact]).to include( + id: contact.id, + name: contact.name, + email: contact.email + ) + end + + context 'when conversation is nil' do + subject(:service) { described_class.new(assistant: assistant, conversation: nil) } + + it 'builds state without conversation and contact' do + state = service.send(:build_state) + + expect(state).to include( + account_id: account.id, + assistant_id: assistant.id, + assistant_config: assistant.config + ) + expect(state).not_to have_key(:conversation) + expect(state).not_to have_key(:contact) + end + end + end + + describe 'constants' do + it 'defines conversation state attributes' do + expect(described_class::CONVERSATION_STATE_ATTRIBUTES).to include( + :id, :display_id, :inbox_id, :contact_id, :status, :priority + ) + end + + it 'defines contact state attributes' do + expect(described_class::CONTACT_STATE_ATTRIBUTES).to include( + :id, :name, :email, :phone_number, :identifier, :contact_type + ) + end + end +end From a42b99ada0621e2805a39038152dbf211fcac17f Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 14 Aug 2025 14:33:32 +0530 Subject: [PATCH 002/132] fix(sdk): Ignore messages from a different origin and sanitize URLs (#8879) This PR includes some specific security related fixes 1. Validate the origin of any message events 2. Sanitize URLs before opening them --------- Co-authored-by: Pranav Co-authored-by: Muhsin Keloth --- app/javascript/sdk/IFrameHelper.js | 33 ++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/app/javascript/sdk/IFrameHelper.js b/app/javascript/sdk/IFrameHelper.js index 3ab1ba1f5..25f90912d 100644 --- a/app/javascript/sdk/IFrameHelper.js +++ b/app/javascript/sdk/IFrameHelper.js @@ -50,11 +50,35 @@ const updateCampaignReadStatus = baseDomain => { }); }; +const sanitizeURL = url => { + if (url === '') return ''; + + try { + // any invalid url will not be accepted + // example - JaVaScRiP%0at:alert(document.domain)" + // this has an obfuscated javascript protocol + const parsedURL = new URL(url); + + // filter out dangerous protocols like `javascript`, `data`, `vbscript` + if (!['https', 'http'].includes(parsedURL.protocol)) { + throw new Error('Invalid Protocol'); + } + } catch (e) { + // eslint-disable-next-line no-console + console.error('Invalid URL', e); + } + + return 'about:blank'; // blank page URL +}; + export const IFrameHelper = { getUrl({ baseUrl, websiteToken }) { + baseUrl = sanitizeURL(baseUrl); return `${baseUrl}/widget?website_token=${websiteToken}`; }, createFrame: ({ baseUrl, websiteToken }) => { + baseUrl = sanitizeURL(baseUrl); + if (IFrameHelper.getAppFrame()) { return; } @@ -102,10 +126,12 @@ export const IFrameHelper = { window.onmessage = e => { if ( typeof e.data !== 'string' || - e.data.indexOf('chatwoot-widget:') !== 0 + e.data.indexOf('chatwoot-widget:') !== 0 || + e.origin !== window.location.origin ) { return; } + const message = JSON.parse(e.data.replace('chatwoot-widget:', '')); if (typeof IFrameHelper.events[message.event] === 'function') { IFrameHelper.events[message.event](message); @@ -140,7 +166,9 @@ export const IFrameHelper = { }, setupAudioListeners: () => { - const { baseUrl = '' } = window.$chatwoot; + let { baseUrl = '' } = window.$chatwoot; + baseUrl = sanitizeURL(baseUrl); + getAlertAudio(baseUrl, { type: 'widget', alertTone: 'ding' }).then(() => initOnEvents.forEach(event => { document.removeEventListener( @@ -234,6 +262,7 @@ export const IFrameHelper = { }, popoutChatWindow: ({ baseUrl, websiteToken, locale }) => { + baseUrl = sanitizeURL(baseUrl); const cwCookie = Cookies.get('cw_conversation'); window.$chatwoot.toggle('close'); popoutChatWindow(baseUrl, websiteToken, locale, cwCookie); From 1f03fc4dc35ec675b65c75ec528ec151b8c10e32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:14:30 +0200 Subject: [PATCH 003/132] chore(deps): bump activerecord from 7.1.5.1 to 7.1.5.2 (#12195) Bumps [activerecord](https://github.com/rails/rails) from 7.1.5.1 to 7.1.5.2.
Release notes

Sourced from activerecord's releases.

7.1.5.2

Active Support

  • No changes.

Active Model

  • No changes.

Active Record

  • Call inspect on ids in RecordNotFound error

    [CVE-2025-55193]

    Gannon McGibbon, John Hawthorn

Action View

  • No changes.

Action Pack

  • No changes.

Active Job

  • No changes.

Action Mailer

  • No changes.

Action Cable

  • No changes.

Active Storage

Remove dangerous transformations

[CVE-2025-24293]

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=activerecord&package-manager=bundler&previous-version=7.1.5.1&new-version=7.1.5.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/chatwoot/chatwoot/network/alerts).
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 112 +++++++++++++++++++++++++-------------------------- 1 file changed, 56 insertions(+), 56 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 1c64914b3..8a0eb4c48 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -25,35 +25,35 @@ GIT GEM remote: https://rubygems.org/ specs: - actioncable (7.1.5.1) - actionpack (= 7.1.5.1) - activesupport (= 7.1.5.1) + actioncable (7.1.5.2) + actionpack (= 7.1.5.2) + activesupport (= 7.1.5.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.1.5.1) - actionpack (= 7.1.5.1) - activejob (= 7.1.5.1) - activerecord (= 7.1.5.1) - activestorage (= 7.1.5.1) - activesupport (= 7.1.5.1) + actionmailbox (7.1.5.2) + actionpack (= 7.1.5.2) + activejob (= 7.1.5.2) + activerecord (= 7.1.5.2) + activestorage (= 7.1.5.2) + activesupport (= 7.1.5.2) mail (>= 2.7.1) net-imap net-pop net-smtp - actionmailer (7.1.5.1) - actionpack (= 7.1.5.1) - actionview (= 7.1.5.1) - activejob (= 7.1.5.1) - activesupport (= 7.1.5.1) + actionmailer (7.1.5.2) + actionpack (= 7.1.5.2) + actionview (= 7.1.5.2) + activejob (= 7.1.5.2) + activesupport (= 7.1.5.2) mail (~> 2.5, >= 2.5.4) net-imap net-pop net-smtp rails-dom-testing (~> 2.2) - actionpack (7.1.5.1) - actionview (= 7.1.5.1) - activesupport (= 7.1.5.1) + actionpack (7.1.5.2) + actionview (= 7.1.5.2) + activesupport (= 7.1.5.2) nokogiri (>= 1.8.5) racc rack (>= 2.2.4) @@ -61,38 +61,38 @@ GEM rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - actiontext (7.1.5.1) - actionpack (= 7.1.5.1) - activerecord (= 7.1.5.1) - activestorage (= 7.1.5.1) - activesupport (= 7.1.5.1) + actiontext (7.1.5.2) + actionpack (= 7.1.5.2) + activerecord (= 7.1.5.2) + activestorage (= 7.1.5.2) + activesupport (= 7.1.5.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.1.5.1) - activesupport (= 7.1.5.1) + actionview (7.1.5.2) + activesupport (= 7.1.5.2) builder (~> 3.1) erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) active_record_query_trace (1.8) - activejob (7.1.5.1) - activesupport (= 7.1.5.1) + activejob (7.1.5.2) + activesupport (= 7.1.5.2) globalid (>= 0.3.6) - activemodel (7.1.5.1) - activesupport (= 7.1.5.1) - activerecord (7.1.5.1) - activemodel (= 7.1.5.1) - activesupport (= 7.1.5.1) + activemodel (7.1.5.2) + activesupport (= 7.1.5.2) + activerecord (7.1.5.2) + activemodel (= 7.1.5.2) + activesupport (= 7.1.5.2) timeout (>= 0.4.0) activerecord-import (2.1.0) activerecord (>= 4.2) - activestorage (7.1.5.1) - actionpack (= 7.1.5.1) - activejob (= 7.1.5.1) - activerecord (= 7.1.5.1) - activesupport (= 7.1.5.1) + activestorage (7.1.5.2) + actionpack (= 7.1.5.2) + activejob (= 7.1.5.2) + activerecord (= 7.1.5.2) + activesupport (= 7.1.5.2) marcel (~> 1.0) - activesupport (7.1.5.1) + activesupport (7.1.5.2) base64 benchmark (>= 0.3) bigdecimal @@ -155,10 +155,10 @@ GEM barnes (0.0.9) multi_json (~> 1) statsd-ruby (~> 1.1) - base64 (0.2.0) + base64 (0.3.0) bcrypt (3.1.20) - benchmark (0.4.0) - bigdecimal (3.1.9) + benchmark (0.4.1) + bigdecimal (3.2.2) bindex (0.8.1) bootsnap (1.16.0) msgpack (~> 1.2) @@ -599,20 +599,20 @@ GEM rackup (1.0.1) rack (< 3) webrick - rails (7.1.5.1) - actioncable (= 7.1.5.1) - actionmailbox (= 7.1.5.1) - actionmailer (= 7.1.5.1) - actionpack (= 7.1.5.1) - actiontext (= 7.1.5.1) - actionview (= 7.1.5.1) - activejob (= 7.1.5.1) - activemodel (= 7.1.5.1) - activerecord (= 7.1.5.1) - activestorage (= 7.1.5.1) - activesupport (= 7.1.5.1) + rails (7.1.5.2) + actioncable (= 7.1.5.2) + actionmailbox (= 7.1.5.2) + actionmailer (= 7.1.5.2) + actionpack (= 7.1.5.2) + actiontext (= 7.1.5.2) + actionview (= 7.1.5.2) + activejob (= 7.1.5.2) + activemodel (= 7.1.5.2) + activerecord (= 7.1.5.2) + activestorage (= 7.1.5.2) + activesupport (= 7.1.5.2) bundler (>= 1.15.0) - railties (= 7.1.5.1) + railties (= 7.1.5.2) rails-dom-testing (2.2.0) activesupport (>= 5.0.0) minitest @@ -620,9 +620,9 @@ GEM rails-html-sanitizer (1.6.1) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.1.5.1) - actionpack (= 7.1.5.1) - activesupport (= 7.1.5.1) + railties (7.1.5.2) + actionpack (= 7.1.5.2) + activesupport (= 7.1.5.2) irb rackup (>= 1.0.0) rake (>= 12.2) From ee773f31eb961cfd01ce9697cd8710c273554e4b Mon Sep 17 00:00:00 2001 From: Chatwoot Bot <92152627+chatwoot-bot@users.noreply.github.com> Date: Thu, 14 Aug 2025 03:00:00 -0700 Subject: [PATCH 004/132] chore: Update translations (#12167) Co-authored-by: Muhsin Keloth --- .../dashboard/i18n/locale/am/automation.json | 1 + .../i18n/locale/am/integrations.json | 3 +- .../i18n/locale/am/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ar/automation.json | 1 + .../i18n/locale/ar/integrations.json | 3 +- .../i18n/locale/ar/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/az/automation.json | 1 + .../i18n/locale/az/integrations.json | 3 +- .../i18n/locale/az/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/bg/automation.json | 1 + .../i18n/locale/bg/integrations.json | 3 +- .../i18n/locale/bg/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ca/automation.json | 1 + .../i18n/locale/ca/integrations.json | 3 +- .../i18n/locale/ca/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/cs/automation.json | 1 + .../i18n/locale/cs/integrations.json | 3 +- .../i18n/locale/cs/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/da/automation.json | 1 + .../i18n/locale/da/integrations.json | 3 +- .../i18n/locale/da/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/de/automation.json | 1 + .../i18n/locale/de/integrations.json | 3 +- .../i18n/locale/de/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/el/automation.json | 1 + .../i18n/locale/el/integrations.json | 3 +- .../i18n/locale/el/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/es/automation.json | 1 + .../i18n/locale/es/integrations.json | 3 +- .../i18n/locale/es/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/fa/automation.json | 1 + .../i18n/locale/fa/integrations.json | 3 +- .../i18n/locale/fa/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/fi/automation.json | 1 + .../i18n/locale/fi/integrations.json | 3 +- .../i18n/locale/fi/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/fr/automation.json | 1 + .../i18n/locale/fr/integrations.json | 3 +- .../i18n/locale/fr/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/he/automation.json | 1 + .../i18n/locale/he/integrations.json | 3 +- .../i18n/locale/he/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/hi/automation.json | 1 + .../i18n/locale/hi/integrations.json | 3 +- .../i18n/locale/hi/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/hr/automation.json | 1 + .../i18n/locale/hr/integrations.json | 3 +- .../i18n/locale/hr/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/hu/automation.json | 1 + .../i18n/locale/hu/integrations.json | 3 +- .../i18n/locale/hu/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/hy/automation.json | 1 + .../i18n/locale/hy/integrations.json | 3 +- .../i18n/locale/hy/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/id/automation.json | 1 + .../i18n/locale/id/integrations.json | 3 +- .../i18n/locale/id/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/is/automation.json | 1 + .../i18n/locale/is/integrations.json | 3 +- .../i18n/locale/is/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/it/automation.json | 1 + .../i18n/locale/it/integrations.json | 3 +- .../i18n/locale/it/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ja/automation.json | 1 + .../i18n/locale/ja/integrations.json | 3 +- .../i18n/locale/ja/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ka/automation.json | 1 + .../i18n/locale/ka/integrations.json | 3 +- .../i18n/locale/ka/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ko/automation.json | 1 + .../i18n/locale/ko/integrations.json | 3 +- .../i18n/locale/ko/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/lt/automation.json | 1 + .../i18n/locale/lt/integrations.json | 3 +- .../i18n/locale/lt/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/lv/automation.json | 1 + .../i18n/locale/lv/integrations.json | 3 +- .../i18n/locale/lv/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ml/automation.json | 1 + .../i18n/locale/ml/integrations.json | 3 +- .../i18n/locale/ml/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ms/automation.json | 1 + .../i18n/locale/ms/integrations.json | 3 +- .../i18n/locale/ms/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ne/automation.json | 1 + .../i18n/locale/ne/integrations.json | 3 +- .../i18n/locale/ne/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/nl/automation.json | 1 + .../i18n/locale/nl/integrations.json | 3 +- .../i18n/locale/nl/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/no/automation.json | 1 + .../i18n/locale/no/integrations.json | 3 +- .../i18n/locale/no/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/pl/automation.json | 1 + .../i18n/locale/pl/integrations.json | 3 +- .../i18n/locale/pl/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/pt/automation.json | 1 + .../i18n/locale/pt/integrations.json | 3 +- .../i18n/locale/pt/whatsappTemplates.json | 69 ++++++++++++------- .../i18n/locale/pt_BR/automation.json | 1 + .../i18n/locale/pt_BR/integrations.json | 3 +- .../i18n/locale/pt_BR/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ro/automation.json | 1 + .../i18n/locale/ro/integrations.json | 3 +- .../i18n/locale/ro/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ru/automation.json | 1 + .../i18n/locale/ru/integrations.json | 3 +- .../i18n/locale/ru/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sh/automation.json | 1 + .../i18n/locale/sh/integrations.json | 3 +- .../i18n/locale/sh/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sk/automation.json | 1 + .../i18n/locale/sk/integrations.json | 3 +- .../i18n/locale/sk/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sl/automation.json | 1 + .../i18n/locale/sl/integrations.json | 3 +- .../i18n/locale/sl/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sq/automation.json | 1 + .../i18n/locale/sq/integrations.json | 3 +- .../i18n/locale/sq/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sr/automation.json | 1 + .../i18n/locale/sr/integrations.json | 3 +- .../i18n/locale/sr/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/sv/automation.json | 1 + .../i18n/locale/sv/integrations.json | 3 +- .../i18n/locale/sv/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ta/automation.json | 1 + .../i18n/locale/ta/integrations.json | 3 +- .../i18n/locale/ta/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/th/automation.json | 1 + .../i18n/locale/th/integrations.json | 3 +- .../i18n/locale/th/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/tl/automation.json | 1 + .../i18n/locale/tl/integrations.json | 3 +- .../i18n/locale/tl/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/tr/automation.json | 1 + .../i18n/locale/tr/integrations.json | 3 +- .../i18n/locale/tr/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/uk/automation.json | 1 + .../i18n/locale/uk/integrations.json | 3 +- .../i18n/locale/uk/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/ur/automation.json | 1 + .../i18n/locale/ur/integrations.json | 3 +- .../i18n/locale/ur/whatsappTemplates.json | 69 ++++++++++++------- .../i18n/locale/ur_IN/automation.json | 1 + .../i18n/locale/ur_IN/integrations.json | 3 +- .../i18n/locale/ur_IN/whatsappTemplates.json | 69 ++++++++++++------- .../dashboard/i18n/locale/vi/automation.json | 1 + .../i18n/locale/vi/integrations.json | 3 +- .../i18n/locale/vi/whatsappTemplates.json | 69 ++++++++++++------- .../i18n/locale/zh_CN/automation.json | 1 + .../i18n/locale/zh_CN/integrations.json | 3 +- .../i18n/locale/zh_CN/whatsappTemplates.json | 69 ++++++++++++------- .../i18n/locale/zh_TW/automation.json | 1 + .../i18n/locale/zh_TW/integrations.json | 3 +- .../i18n/locale/zh_TW/whatsappTemplates.json | 69 ++++++++++++------- app/javascript/widget/i18n/locale/am.json | 5 ++ app/javascript/widget/i18n/locale/ar.json | 5 ++ app/javascript/widget/i18n/locale/az.json | 5 ++ app/javascript/widget/i18n/locale/bg.json | 5 ++ app/javascript/widget/i18n/locale/ca.json | 5 ++ app/javascript/widget/i18n/locale/cs.json | 5 ++ app/javascript/widget/i18n/locale/da.json | 5 ++ app/javascript/widget/i18n/locale/de.json | 5 ++ app/javascript/widget/i18n/locale/el.json | 5 ++ app/javascript/widget/i18n/locale/es.json | 5 ++ app/javascript/widget/i18n/locale/fa.json | 5 ++ app/javascript/widget/i18n/locale/fi.json | 5 ++ app/javascript/widget/i18n/locale/fr.json | 5 ++ app/javascript/widget/i18n/locale/he.json | 5 ++ app/javascript/widget/i18n/locale/hi.json | 5 ++ app/javascript/widget/i18n/locale/hr.json | 5 ++ app/javascript/widget/i18n/locale/hu.json | 5 ++ app/javascript/widget/i18n/locale/hy.json | 5 ++ app/javascript/widget/i18n/locale/id.json | 5 ++ app/javascript/widget/i18n/locale/is.json | 5 ++ app/javascript/widget/i18n/locale/it.json | 5 ++ app/javascript/widget/i18n/locale/ja.json | 5 ++ app/javascript/widget/i18n/locale/ka.json | 5 ++ app/javascript/widget/i18n/locale/ko.json | 5 ++ app/javascript/widget/i18n/locale/lt.json | 5 ++ app/javascript/widget/i18n/locale/lv.json | 5 ++ app/javascript/widget/i18n/locale/ml.json | 5 ++ app/javascript/widget/i18n/locale/ms.json | 5 ++ app/javascript/widget/i18n/locale/ne.json | 5 ++ app/javascript/widget/i18n/locale/nl.json | 5 ++ app/javascript/widget/i18n/locale/no.json | 5 ++ app/javascript/widget/i18n/locale/pl.json | 5 ++ app/javascript/widget/i18n/locale/pt.json | 5 ++ app/javascript/widget/i18n/locale/pt_BR.json | 5 ++ app/javascript/widget/i18n/locale/ro.json | 5 ++ app/javascript/widget/i18n/locale/ru.json | 5 ++ app/javascript/widget/i18n/locale/sh.json | 5 ++ app/javascript/widget/i18n/locale/sk.json | 5 ++ app/javascript/widget/i18n/locale/sl.json | 5 ++ app/javascript/widget/i18n/locale/sq.json | 5 ++ app/javascript/widget/i18n/locale/sr.json | 5 ++ app/javascript/widget/i18n/locale/sv.json | 5 ++ app/javascript/widget/i18n/locale/ta.json | 5 ++ app/javascript/widget/i18n/locale/th.json | 5 ++ app/javascript/widget/i18n/locale/tl.json | 5 ++ app/javascript/widget/i18n/locale/tr.json | 5 ++ app/javascript/widget/i18n/locale/uk.json | 5 ++ app/javascript/widget/i18n/locale/ur.json | 5 ++ app/javascript/widget/i18n/locale/ur_IN.json | 5 ++ app/javascript/widget/i18n/locale/vi.json | 5 ++ app/javascript/widget/i18n/locale/zh_CN.json | 5 ++ app/javascript/widget/i18n/locale/zh_TW.json | 5 ++ 208 files changed, 2652 insertions(+), 1404 deletions(-) diff --git a/app/javascript/dashboard/i18n/locale/am/automation.json b/app/javascript/dashboard/i18n/locale/am/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/am/automation.json +++ b/app/javascript/dashboard/i18n/locale/am/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/am/integrations.json b/app/javascript/dashboard/i18n/locale/am/integrations.json index 1614931a0..be9281284 100644 --- a/app/javascript/dashboard/i18n/locale/am/integrations.json +++ b/app/javascript/dashboard/i18n/locale/am/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/am/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ar/automation.json b/app/javascript/dashboard/i18n/locale/ar/automation.json index be7107f4c..788652a04 100644 --- a/app/javascript/dashboard/i18n/locale/ar/automation.json +++ b/app/javascript/dashboard/i18n/locale/ar/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "تم إنشاء المحادثة", "CONVERSATION_UPDATED": "تم تحديث المحادثة", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ar/integrations.json b/app/javascript/dashboard/i18n/locale/ar/integrations.json index f00d3fe1d..bc17130c1 100644 --- a/app/javascript/dashboard/i18n/locale/ar/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ar/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "الخصائص", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json index 110eeb8af..247af32c4 100644 --- a/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ar/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "قوالب الواتساب", - "SUBTITLE": "حدد القالب الذي تريد إرساله", - "TEMPLATE_SELECTED_SUBTITLE": "معالجة {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "نماذج البحث", - "NO_TEMPLATES_FOUND": "لم يتم العثور على قوالب", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "اللغة", - "TEMPLATE_BODY": "نص القالب", - "CATEGORY": "الفئة" - } - }, - "PARSER": { - "VARIABLES_LABEL": "المتغيرات", - "VARIABLE_PLACEHOLDER": "أدخل قيمة {variable}", - "GO_BACK_LABEL": "العودة للخلف", - "SEND_MESSAGE_LABEL": "إرسال الرسالة", - "FORM_ERROR_MESSAGE": "يرجى ملء جميع المتغيرات قبل الإرسال" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "قوالب الواتساب", + "SUBTITLE": "حدد القالب الذي تريد إرساله", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "نماذج البحث", + "NO_TEMPLATES_FOUND": "لم يتم العثور على قوالب", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "الفئة", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "اللغة", + "TEMPLATE_BODY": "نص القالب", + "CATEGORY": "الفئة" + } + }, + "PARSER": { + "VARIABLES_LABEL": "المتغيرات", + "LANGUAGE": "اللغة", + "CATEGORY": "الفئة", + "VARIABLE_PLACEHOLDER": "أدخل قيمة {variable}", + "GO_BACK_LABEL": "العودة للخلف", + "SEND_MESSAGE_LABEL": "إرسال الرسالة", + "FORM_ERROR_MESSAGE": "يرجى ملء جميع المتغيرات قبل الإرسال", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/az/automation.json b/app/javascript/dashboard/i18n/locale/az/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/az/automation.json +++ b/app/javascript/dashboard/i18n/locale/az/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/az/integrations.json b/app/javascript/dashboard/i18n/locale/az/integrations.json index 1614931a0..be9281284 100644 --- a/app/javascript/dashboard/i18n/locale/az/integrations.json +++ b/app/javascript/dashboard/i18n/locale/az/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/az/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/bg/automation.json b/app/javascript/dashboard/i18n/locale/bg/automation.json index fe4d32743..006369305 100644 --- a/app/javascript/dashboard/i18n/locale/bg/automation.json +++ b/app/javascript/dashboard/i18n/locale/bg/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/bg/integrations.json b/app/javascript/dashboard/i18n/locale/bg/integrations.json index 6bcd3b584..1069559a6 100644 --- a/app/javascript/dashboard/i18n/locale/bg/integrations.json +++ b/app/javascript/dashboard/i18n/locale/bg/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/bg/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ca/automation.json b/app/javascript/dashboard/i18n/locale/ca/automation.json index e3570b417..d961c762a 100644 --- a/app/javascript/dashboard/i18n/locale/ca/automation.json +++ b/app/javascript/dashboard/i18n/locale/ca/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversa Creada", "CONVERSATION_UPDATED": "Conversa Actualitzada", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ca/integrations.json b/app/javascript/dashboard/i18n/locale/ca/integrations.json index 4607a2fe1..2668ce217 100644 --- a/app/javascript/dashboard/i18n/locale/ca/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ca/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Característiques", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json index f078ec706..e0b132286 100644 --- a/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ca/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Plantilles de Whatsapp", - "SUBTITLE": "Selecciona la plantilla de whatsapp que vols enviar", - "TEMPLATE_SELECTED_SUBTITLE": "Procés {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Cerca plantilles", - "NO_TEMPLATES_FOUND": "No s'han trobat plantilles per a", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Idioma", - "TEMPLATE_BODY": "Cos de la plantilla", - "CATEGORY": "Categoria" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Introdueix el valor {variable}", - "GO_BACK_LABEL": "Torna enrere", - "SEND_MESSAGE_LABEL": "Envia missatge", - "FORM_ERROR_MESSAGE": "Omple totes les variables abans d'enviar-les" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Plantilles de Whatsapp", + "SUBTITLE": "Selecciona la plantilla de whatsapp que vols enviar", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Cerca plantilles", + "NO_TEMPLATES_FOUND": "No s'han trobat plantilles per a", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categoria", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Idioma", + "TEMPLATE_BODY": "Cos de la plantilla", + "CATEGORY": "Categoria" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Idioma", + "CATEGORY": "Categoria", + "VARIABLE_PLACEHOLDER": "Introdueix el valor {variable}", + "GO_BACK_LABEL": "Torna enrere", + "SEND_MESSAGE_LABEL": "Envia missatge", + "FORM_ERROR_MESSAGE": "Omple totes les variables abans d'enviar-les", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/cs/automation.json b/app/javascript/dashboard/i18n/locale/cs/automation.json index d8dd12abd..6733fa929 100644 --- a/app/javascript/dashboard/i18n/locale/cs/automation.json +++ b/app/javascript/dashboard/i18n/locale/cs/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Zpráva vytvořena", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Konverzace otevřena" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/cs/integrations.json b/app/javascript/dashboard/i18n/locale/cs/integrations.json index 9b55bf386..26bc11c0c 100644 --- a/app/javascript/dashboard/i18n/locale/cs/integrations.json +++ b/app/javascript/dashboard/i18n/locale/cs/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funkce", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/cs/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/da/automation.json b/app/javascript/dashboard/i18n/locale/da/automation.json index 7910667a9..372422cfc 100644 --- a/app/javascript/dashboard/i18n/locale/da/automation.json +++ b/app/javascript/dashboard/i18n/locale/da/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Samtale Oprettet", "CONVERSATION_UPDATED": "Samtale Opdateret", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/da/integrations.json b/app/javascript/dashboard/i18n/locale/da/integrations.json index 8710dc6d8..c4b498a3a 100644 --- a/app/javascript/dashboard/i18n/locale/da/integrations.json +++ b/app/javascript/dashboard/i18n/locale/da/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funktioner", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json index 3acb3acb3..34699398c 100644 --- a/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/da/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Skabeloner", - "SUBTITLE": "Vælg den whatsapp skabelon, du vil sende", - "TEMPLATE_SELECTED_SUBTITLE": "Proces {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Søg Skabeloner", - "NO_TEMPLATES_FOUND": "Ingen skabeloner fundet for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Sprog", - "TEMPLATE_BODY": "Skabelon Krop", - "CATEGORY": "Kategori" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variabler", - "VARIABLE_PLACEHOLDER": "Indtast {variable} værdi", - "GO_BACK_LABEL": "Gå Tilbage", - "SEND_MESSAGE_LABEL": "Send Besked", - "FORM_ERROR_MESSAGE": "Udfyld venligst alle variabler før afsendelse" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Skabeloner", + "SUBTITLE": "Vælg den whatsapp skabelon, du vil sende", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Søg Skabeloner", + "NO_TEMPLATES_FOUND": "Ingen skabeloner fundet for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategori", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Sprog", + "TEMPLATE_BODY": "Skabelon Krop", + "CATEGORY": "Kategori" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variabler", + "LANGUAGE": "Sprog", + "CATEGORY": "Kategori", + "VARIABLE_PLACEHOLDER": "Indtast {variable} værdi", + "GO_BACK_LABEL": "Gå Tilbage", + "SEND_MESSAGE_LABEL": "Send Besked", + "FORM_ERROR_MESSAGE": "Udfyld venligst alle variabler før afsendelse", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/de/automation.json b/app/javascript/dashboard/i18n/locale/de/automation.json index 20e343e0a..b6cef93e1 100644 --- a/app/javascript/dashboard/i18n/locale/de/automation.json +++ b/app/javascript/dashboard/i18n/locale/de/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Konversation erstellt", "CONVERSATION_UPDATED": "Konversation aktualisiert", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/de/integrations.json b/app/javascript/dashboard/i18n/locale/de/integrations.json index fb78159f9..060389c52 100644 --- a/app/javascript/dashboard/i18n/locale/de/integrations.json +++ b/app/javascript/dashboard/i18n/locale/de/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funktionen", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json index b5f1885ae..87f5c6a2c 100644 --- a/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/de/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "WhatsApp-Vorlagen", - "SUBTITLE": "Wählen Sie die WhatsApp-Vorlage aus, die Sie senden möchten", - "TEMPLATE_SELECTED_SUBTITLE": "Verarbeite {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Vorlagen suchen", - "NO_TEMPLATES_FOUND": "Keine Vorlagen gefunden für", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Sprache", - "TEMPLATE_BODY": "Vorlagenbody", - "CATEGORY": "Kategorie" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variablen", - "VARIABLE_PLACEHOLDER": "Geben Sie den Wert {variable} ein", - "GO_BACK_LABEL": "Zurück", - "SEND_MESSAGE_LABEL": "Nachricht senden", - "FORM_ERROR_MESSAGE": "Bitte füllen Sie vor dem Absenden alle Variablen aus" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "WhatsApp-Vorlagen", + "SUBTITLE": "Wählen Sie die WhatsApp-Vorlage aus, die Sie senden möchten", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Vorlagen suchen", + "NO_TEMPLATES_FOUND": "Keine Vorlagen gefunden für", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorie", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Sprache", + "TEMPLATE_BODY": "Vorlagenbody", + "CATEGORY": "Kategorie" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variablen", + "LANGUAGE": "Sprache", + "CATEGORY": "Kategorie", + "VARIABLE_PLACEHOLDER": "Geben Sie den Wert {variable} ein", + "GO_BACK_LABEL": "Zurück", + "SEND_MESSAGE_LABEL": "Nachricht senden", + "FORM_ERROR_MESSAGE": "Bitte füllen Sie vor dem Absenden alle Variablen aus", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/el/automation.json b/app/javascript/dashboard/i18n/locale/el/automation.json index d474d9914..27afa3306 100644 --- a/app/javascript/dashboard/i18n/locale/el/automation.json +++ b/app/javascript/dashboard/i18n/locale/el/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Δημιουργήθηκε Συνομιλία", "CONVERSATION_UPDATED": "Η Συνομιλία Ενημερώθηκε", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/el/integrations.json b/app/javascript/dashboard/i18n/locale/el/integrations.json index 599d1c7e2..488107d41 100644 --- a/app/javascript/dashboard/i18n/locale/el/integrations.json +++ b/app/javascript/dashboard/i18n/locale/el/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Χαρακτηριστικά", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json index d78b9cb12..42b710727 100644 --- a/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/el/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Πρότυπα Whatsapp", - "SUBTITLE": "Επιλέξτε το πρότυπο Whatsapp που θέλετε να στείλετε", - "TEMPLATE_SELECTED_SUBTITLE": "Επεξεργασία {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Αναζήτηση Προτύπων", - "NO_TEMPLATES_FOUND": "Δεν βρέθηκαν πρότυπα για", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Γλώσσα", - "TEMPLATE_BODY": "Σώμα Προτύπου", - "CATEGORY": "Κατηγορία" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Μεταβλητές", - "VARIABLE_PLACEHOLDER": "Εισάγετε τιμή για {variable}", - "GO_BACK_LABEL": "Πίσω", - "SEND_MESSAGE_LABEL": "Αποστολή μηνύματος", - "FORM_ERROR_MESSAGE": "Παρακαλώ συμπληρώστε όλες τις μεταβλητές πριν την αποστολή" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Πρότυπα Whatsapp", + "SUBTITLE": "Επιλέξτε το πρότυπο Whatsapp που θέλετε να στείλετε", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Αναζήτηση Προτύπων", + "NO_TEMPLATES_FOUND": "Δεν βρέθηκαν πρότυπα για", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Κατηγορία", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Γλώσσα", + "TEMPLATE_BODY": "Σώμα Προτύπου", + "CATEGORY": "Κατηγορία" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Μεταβλητές", + "LANGUAGE": "Γλώσσα", + "CATEGORY": "Κατηγορία", + "VARIABLE_PLACEHOLDER": "Εισάγετε τιμή για {variable}", + "GO_BACK_LABEL": "Πίσω", + "SEND_MESSAGE_LABEL": "Αποστολή μηνύματος", + "FORM_ERROR_MESSAGE": "Παρακαλώ συμπληρώστε όλες τις μεταβλητές πριν την αποστολή", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/es/automation.json b/app/javascript/dashboard/i18n/locale/es/automation.json index a1f68a375..63b529aee 100644 --- a/app/javascript/dashboard/i18n/locale/es/automation.json +++ b/app/javascript/dashboard/i18n/locale/es/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversación creada", "CONVERSATION_UPDATED": "Conversación actualizada", "MESSAGE_CREATED": "Mensaje creado", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversación abierta" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/es/integrations.json b/app/javascript/dashboard/i18n/locale/es/integrations.json index fbf4754b8..ee297c2f8 100644 --- a/app/javascript/dashboard/i18n/locale/es/integrations.json +++ b/app/javascript/dashboard/i18n/locale/es/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Características", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json index 49a89e381..06ceacb68 100644 --- a/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/es/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Plantillas de Whatsapp", - "SUBTITLE": "Seleccione la plantilla de Whatsapp que desea enviar", - "TEMPLATE_SELECTED_SUBTITLE": "Procesar {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Buscar plantillas", - "NO_TEMPLATES_FOUND": "No se encontraron plantillas para", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Idioma", - "TEMPLATE_BODY": "Cuerpo de plantilla", - "CATEGORY": "Categoría" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Introduzca el valor de {variable}", - "GO_BACK_LABEL": "Volver", - "SEND_MESSAGE_LABEL": "Enviar mensaje", - "FORM_ERROR_MESSAGE": "Por favor, rellene todas las variables antes de enviar" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Plantillas de Whatsapp", + "SUBTITLE": "Seleccione la plantilla de Whatsapp que desea enviar", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Buscar plantillas", + "NO_TEMPLATES_FOUND": "No se encontraron plantillas para", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categoría", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Idioma", + "TEMPLATE_BODY": "Cuerpo de plantilla", + "CATEGORY": "Categoría" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Idioma", + "CATEGORY": "Categoría", + "VARIABLE_PLACEHOLDER": "Introduzca el valor de {variable}", + "GO_BACK_LABEL": "Volver", + "SEND_MESSAGE_LABEL": "Enviar mensaje", + "FORM_ERROR_MESSAGE": "Por favor, rellene todas las variables antes de enviar", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/fa/automation.json b/app/javascript/dashboard/i18n/locale/fa/automation.json index 3e4ffd18e..3e02e4a69 100644 --- a/app/javascript/dashboard/i18n/locale/fa/automation.json +++ b/app/javascript/dashboard/i18n/locale/fa/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "گفتگو ایجاد شد", "CONVERSATION_UPDATED": "گفتگو به روز شد", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fa/integrations.json b/app/javascript/dashboard/i18n/locale/fa/integrations.json index 15e4417d5..18c95d245 100644 --- a/app/javascript/dashboard/i18n/locale/fa/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fa/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "امکانات", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json index 3b470e99f..ed5d76d1c 100644 --- a/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fa/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "قالب های واتساپ", - "SUBTITLE": "قالب واتساپ مورد نظر برای ارسال را انتخاب کنید", - "TEMPLATE_SELECTED_SUBTITLE": "فرآیند {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "جستجوی الگوها", - "NO_TEMPLATES_FOUND": "هیچ قالبی برای", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "زبان", - "TEMPLATE_BODY": "بدنه الگو", - "CATEGORY": "دسته‌بندی" - } - }, - "PARSER": { - "VARIABLES_LABEL": "متغیرها", - "VARIABLE_PLACEHOLDER": "مقدار {variable} را وارد کنید", - "GO_BACK_LABEL": "بازگشت", - "SEND_MESSAGE_LABEL": "ارسال پیام", - "FORM_ERROR_MESSAGE": "لطفا قبل از ارسال همه متغیرها را پر کنید" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "قالب های واتساپ", + "SUBTITLE": "قالب واتساپ مورد نظر برای ارسال را انتخاب کنید", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "جستجوی الگوها", + "NO_TEMPLATES_FOUND": "هیچ قالبی برای", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "دسته‌بندی", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "زبان", + "TEMPLATE_BODY": "بدنه الگو", + "CATEGORY": "دسته‌بندی" + } + }, + "PARSER": { + "VARIABLES_LABEL": "متغیرها", + "LANGUAGE": "زبان", + "CATEGORY": "دسته‌بندی", + "VARIABLE_PLACEHOLDER": "مقدار {variable} را وارد کنید", + "GO_BACK_LABEL": "بازگشت", + "SEND_MESSAGE_LABEL": "ارسال پیام", + "FORM_ERROR_MESSAGE": "لطفا قبل از ارسال همه متغیرها را پر کنید", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/fi/automation.json b/app/javascript/dashboard/i18n/locale/fi/automation.json index ec63918e7..740761ca5 100644 --- a/app/javascript/dashboard/i18n/locale/fi/automation.json +++ b/app/javascript/dashboard/i18n/locale/fi/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fi/integrations.json b/app/javascript/dashboard/i18n/locale/fi/integrations.json index 1374fba42..378242517 100644 --- a/app/javascript/dashboard/i18n/locale/fi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fi/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Ominaisuudet", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json index ae8bee085..337134e31 100644 --- a/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fi/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "WhatsApp-pohjat", - "SUBTITLE": "Valitse WhatsApp-pohja, jonka haluat lähettää", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Etsi Pohjia", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Muuttujat", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Mene Takaisin", - "SEND_MESSAGE_LABEL": "Lähetä Viesti", - "FORM_ERROR_MESSAGE": "Täytä kaikki muuttujat ennen lähettämistä" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "WhatsApp-pohjat", + "SUBTITLE": "Valitse WhatsApp-pohja, jonka haluat lähettää", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Etsi Pohjia", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Muuttujat", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Mene Takaisin", + "SEND_MESSAGE_LABEL": "Lähetä Viesti", + "FORM_ERROR_MESSAGE": "Täytä kaikki muuttujat ennen lähettämistä", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/fr/automation.json b/app/javascript/dashboard/i18n/locale/fr/automation.json index 500cbbdcf..11a1ddfe6 100644 --- a/app/javascript/dashboard/i18n/locale/fr/automation.json +++ b/app/javascript/dashboard/i18n/locale/fr/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation créée", "CONVERSATION_UPDATED": "Conversation mise à jour", "MESSAGE_CREATED": "Message créé", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation ouverte" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/fr/integrations.json b/app/javascript/dashboard/i18n/locale/fr/integrations.json index 0ace6565e..9ad0fb8fd 100644 --- a/app/javascript/dashboard/i18n/locale/fr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/fr/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Fonctionnalités", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json index 0d4538240..71d0685cb 100644 --- a/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/fr/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Modèles WhatsApp", - "SUBTITLE": "Sélectionnez le modèle whatsapp que vous souhaitez envoyer", - "TEMPLATE_SELECTED_SUBTITLE": "Traiter {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Rechercher des modèles", - "NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Langue", - "TEMPLATE_BODY": "Corps du modèle", - "CATEGORY": "Catégorie" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Entrez la valeur de {variable}", - "GO_BACK_LABEL": "Retour", - "SEND_MESSAGE_LABEL": "Envoyer un message", - "FORM_ERROR_MESSAGE": "Veuillez remplir toutes les variables avant d'envoyer" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Modèles WhatsApp", + "SUBTITLE": "Sélectionnez le modèle whatsapp que vous souhaitez envoyer", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Rechercher des modèles", + "NO_TEMPLATES_FOUND": "Aucun modèle trouvé pour", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Catégorie", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Langue", + "TEMPLATE_BODY": "Corps du modèle", + "CATEGORY": "Catégorie" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Langue", + "CATEGORY": "Catégorie", + "VARIABLE_PLACEHOLDER": "Entrez la valeur de {variable}", + "GO_BACK_LABEL": "Retour", + "SEND_MESSAGE_LABEL": "Envoyer un message", + "FORM_ERROR_MESSAGE": "Veuillez remplir toutes les variables avant d'envoyer", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/he/automation.json b/app/javascript/dashboard/i18n/locale/he/automation.json index e1be1df5c..6166c90a3 100644 --- a/app/javascript/dashboard/i18n/locale/he/automation.json +++ b/app/javascript/dashboard/i18n/locale/he/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "השיחה נוצרה", "CONVERSATION_UPDATED": "השיחה עודכנה", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "השיחה נפתחה" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/he/integrations.json b/app/javascript/dashboard/i18n/locale/he/integrations.json index 16058633b..37388725a 100644 --- a/app/javascript/dashboard/i18n/locale/he/integrations.json +++ b/app/javascript/dashboard/i18n/locale/he/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "מאפיינים", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json index 295b89a23..67b54f91f 100644 --- a/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/he/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "תבניות וואטסאפ", - "SUBTITLE": "בחר את תבנית הווטסאפ שברצונך לשלוח", - "TEMPLATE_SELECTED_SUBTITLE": "עיבוד {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "חפש תבניות", - "NO_TEMPLATES_FOUND": "לא נמצאו תבניות עבור", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "שפה", - "TEMPLATE_BODY": "גוף התבנית", - "CATEGORY": "קטגוריה" - } - }, - "PARSER": { - "VARIABLES_LABEL": "משתנים", - "VARIABLE_PLACEHOLDER": "הזן ערך {variable}", - "GO_BACK_LABEL": "חזור", - "SEND_MESSAGE_LABEL": "לשלוח הודעה", - "FORM_ERROR_MESSAGE": "נא למלא את כל המשתנים לפני השליחה" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "תבניות וואטסאפ", + "SUBTITLE": "בחר את תבנית הווטסאפ שברצונך לשלוח", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "חפש תבניות", + "NO_TEMPLATES_FOUND": "לא נמצאו תבניות עבור", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "קטגוריה", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "שפה", + "TEMPLATE_BODY": "גוף התבנית", + "CATEGORY": "קטגוריה" + } + }, + "PARSER": { + "VARIABLES_LABEL": "משתנים", + "LANGUAGE": "שפה", + "CATEGORY": "קטגוריה", + "VARIABLE_PLACEHOLDER": "הזן ערך {variable}", + "GO_BACK_LABEL": "חזור", + "SEND_MESSAGE_LABEL": "לשלוח הודעה", + "FORM_ERROR_MESSAGE": "נא למלא את כל המשתנים לפני השליחה", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/hi/automation.json b/app/javascript/dashboard/i18n/locale/hi/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/hi/automation.json +++ b/app/javascript/dashboard/i18n/locale/hi/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hi/integrations.json b/app/javascript/dashboard/i18n/locale/hi/integrations.json index bbb1c6662..cab231d7d 100644 --- a/app/javascript/dashboard/i18n/locale/hi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hi/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hi/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/hr/automation.json b/app/javascript/dashboard/i18n/locale/hr/automation.json index 8e1bcd7c4..65722bbf2 100644 --- a/app/javascript/dashboard/i18n/locale/hr/automation.json +++ b/app/javascript/dashboard/i18n/locale/hr/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hr/integrations.json b/app/javascript/dashboard/i18n/locale/hr/integrations.json index 63f5370c1..09eb8edaa 100644 --- a/app/javascript/dashboard/i18n/locale/hr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hr/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json index d943a13c1..ce82b426f 100644 --- a/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hr/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Predlošci", - "SUBTITLE": "Izaberi whatsapp predložak koji želiš poslati", - "TEMPLATE_SELECTED_SUBTITLE": "Proces {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Pretraži Predloške", - "NO_TEMPLATES_FOUND": "Nije pronađen predložak za", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Jezik", - "TEMPLATE_BODY": "Tijelo predloška", - "CATEGORY": "Kategorija" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Varijable", - "VARIABLE_PLACEHOLDER": "Unesi {variable} vrijednost", - "GO_BACK_LABEL": "Nazad", - "SEND_MESSAGE_LABEL": "Šalji poruku", - "FORM_ERROR_MESSAGE": "Popuniti sve varijable prije slanja" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Predlošci", + "SUBTITLE": "Izaberi whatsapp predložak koji želiš poslati", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Pretraži Predloške", + "NO_TEMPLATES_FOUND": "Nije pronađen predložak za", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorija", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Jezik", + "TEMPLATE_BODY": "Tijelo predloška", + "CATEGORY": "Kategorija" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Varijable", + "LANGUAGE": "Jezik", + "CATEGORY": "Kategorija", + "VARIABLE_PLACEHOLDER": "Unesi {variable} vrijednost", + "GO_BACK_LABEL": "Nazad", + "SEND_MESSAGE_LABEL": "Šalji poruku", + "FORM_ERROR_MESSAGE": "Popuniti sve varijable prije slanja", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/hu/automation.json b/app/javascript/dashboard/i18n/locale/hu/automation.json index fc6accbe1..82873e610 100644 --- a/app/javascript/dashboard/i18n/locale/hu/automation.json +++ b/app/javascript/dashboard/i18n/locale/hu/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Beszélgetés létrehozva", "CONVERSATION_UPDATED": "Beszélgetés frissítve", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hu/integrations.json b/app/javascript/dashboard/i18n/locale/hu/integrations.json index 00196e987..33904dde3 100644 --- a/app/javascript/dashboard/i18n/locale/hu/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hu/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Lehetőségek", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json index 860ef1875..e28c69704 100644 --- a/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hu/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp sablonok", - "SUBTITLE": "Válaszd ki a Whatsapp sablont", - "TEMPLATE_SELECTED_SUBTITLE": "Feldolgozás: {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Sablon keresése", - "NO_TEMPLATES_FOUND": "Nem található sablon erre:", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Nyelv", - "TEMPLATE_BODY": "Sablon törzse", - "CATEGORY": "Kategória" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Változók", - "VARIABLE_PLACEHOLDER": "Add meg a {variable} értékét", - "GO_BACK_LABEL": "Vissza", - "SEND_MESSAGE_LABEL": "Üzenet küldése", - "FORM_ERROR_MESSAGE": "Kérlek add meg az összes változó értékét küldés előtt" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp sablonok", + "SUBTITLE": "Válaszd ki a Whatsapp sablont", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Sablon keresése", + "NO_TEMPLATES_FOUND": "Nem található sablon erre:", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategória", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Nyelv", + "TEMPLATE_BODY": "Sablon törzse", + "CATEGORY": "Kategória" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Változók", + "LANGUAGE": "Nyelv", + "CATEGORY": "Kategória", + "VARIABLE_PLACEHOLDER": "Add meg a {variable} értékét", + "GO_BACK_LABEL": "Vissza", + "SEND_MESSAGE_LABEL": "Üzenet küldése", + "FORM_ERROR_MESSAGE": "Kérlek add meg az összes változó értékét küldés előtt", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/hy/automation.json b/app/javascript/dashboard/i18n/locale/hy/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/hy/automation.json +++ b/app/javascript/dashboard/i18n/locale/hy/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/hy/integrations.json b/app/javascript/dashboard/i18n/locale/hy/integrations.json index 68ce25b15..f0c7abbd3 100644 --- a/app/javascript/dashboard/i18n/locale/hy/integrations.json +++ b/app/javascript/dashboard/i18n/locale/hy/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/hy/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/id/automation.json b/app/javascript/dashboard/i18n/locale/id/automation.json index ead34dbdd..e8a688248 100644 --- a/app/javascript/dashboard/i18n/locale/id/automation.json +++ b/app/javascript/dashboard/i18n/locale/id/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Percakapan Dibuat", "CONVERSATION_UPDATED": "Percakapan Diperbarui", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/id/integrations.json b/app/javascript/dashboard/i18n/locale/id/integrations.json index 116557224..98e186693 100644 --- a/app/javascript/dashboard/i18n/locale/id/integrations.json +++ b/app/javascript/dashboard/i18n/locale/id/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Fitur", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json index 88a806522..c9145225c 100644 --- a/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/id/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Templat Whatsapp", - "SUBTITLE": "Pilih templat Whatsapp yang ingin Anda kirim", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Cari Templat", - "NO_TEMPLATES_FOUND": "Tidak ditemukan templat untuk", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Bahasa", - "TEMPLATE_BODY": "Isi Templat", - "CATEGORY": "Kategori" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variabel", - "VARIABLE_PLACEHOLDER": "Masukkan nilai {variable}", - "GO_BACK_LABEL": "Kembali", - "SEND_MESSAGE_LABEL": "Kirim Pesan", - "FORM_ERROR_MESSAGE": "Harap isi semua variabel sebelum mengirim" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Templat Whatsapp", + "SUBTITLE": "Pilih templat Whatsapp yang ingin Anda kirim", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Cari Templat", + "NO_TEMPLATES_FOUND": "Tidak ditemukan templat untuk", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategori", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Bahasa", + "TEMPLATE_BODY": "Isi Templat", + "CATEGORY": "Kategori" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variabel", + "LANGUAGE": "Bahasa", + "CATEGORY": "Kategori", + "VARIABLE_PLACEHOLDER": "Masukkan nilai {variable}", + "GO_BACK_LABEL": "Kembali", + "SEND_MESSAGE_LABEL": "Kirim Pesan", + "FORM_ERROR_MESSAGE": "Harap isi semua variabel sebelum mengirim", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/is/automation.json b/app/javascript/dashboard/i18n/locale/is/automation.json index 145775f1c..8caeb2344 100644 --- a/app/javascript/dashboard/i18n/locale/is/automation.json +++ b/app/javascript/dashboard/i18n/locale/is/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/is/integrations.json b/app/javascript/dashboard/i18n/locale/is/integrations.json index d0df69b2d..620ce70cf 100644 --- a/app/javascript/dashboard/i18n/locale/is/integrations.json +++ b/app/javascript/dashboard/i18n/locale/is/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Fídusar", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json index 0be0dfc90..55b7680af 100644 --- a/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/is/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Veldu WhatsApp sniðmátið sem þú vilt senda", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Veldu WhatsApp sniðmátið sem þú vilt senda", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/it/automation.json b/app/javascript/dashboard/i18n/locale/it/automation.json index 2052230e2..df3a5c0a8 100644 --- a/app/javascript/dashboard/i18n/locale/it/automation.json +++ b/app/javascript/dashboard/i18n/locale/it/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversazione creata", "CONVERSATION_UPDATED": "Conversazione aggiornata", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/it/integrations.json b/app/javascript/dashboard/i18n/locale/it/integrations.json index 0697ac873..102539b29 100644 --- a/app/javascript/dashboard/i18n/locale/it/integrations.json +++ b/app/javascript/dashboard/i18n/locale/it/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funzionalità", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json index 2e1db45c7..b45435cca 100644 --- a/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/it/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Modelli Whatsapp", - "SUBTITLE": "Seleziona il modello whatsapp che vuoi inviare", - "TEMPLATE_SELECTED_SUBTITLE": "Elabora {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Cerca modelli", - "NO_TEMPLATES_FOUND": "Nessun modello trovato per", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Lingua", - "TEMPLATE_BODY": "Corpo modello", - "CATEGORY": "Categoria" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variabili", - "VARIABLE_PLACEHOLDER": "Inserisci il valore di {variable}", - "GO_BACK_LABEL": "Torna indietro", - "SEND_MESSAGE_LABEL": "Invia messaggio", - "FORM_ERROR_MESSAGE": "Si prega di compilare tutte le variabili prima di inviare" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Modelli Whatsapp", + "SUBTITLE": "Seleziona il modello whatsapp che vuoi inviare", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Cerca modelli", + "NO_TEMPLATES_FOUND": "Nessun modello trovato per", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categoria", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Lingua", + "TEMPLATE_BODY": "Corpo modello", + "CATEGORY": "Categoria" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variabili", + "LANGUAGE": "Lingua", + "CATEGORY": "Categoria", + "VARIABLE_PLACEHOLDER": "Inserisci il valore di {variable}", + "GO_BACK_LABEL": "Torna indietro", + "SEND_MESSAGE_LABEL": "Invia messaggio", + "FORM_ERROR_MESSAGE": "Si prega di compilare tutte le variabili prima di inviare", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ja/automation.json b/app/javascript/dashboard/i18n/locale/ja/automation.json index e78b88454..7b113c718 100644 --- a/app/javascript/dashboard/i18n/locale/ja/automation.json +++ b/app/javascript/dashboard/i18n/locale/ja/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "会話が作成されました", "CONVERSATION_UPDATED": "会話が更新されました", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ja/integrations.json b/app/javascript/dashboard/i18n/locale/ja/integrations.json index d9b7442c5..65c471f3e 100644 --- a/app/javascript/dashboard/i18n/locale/ja/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ja/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "機能", "ALLOW_CONVERSATION_FAQS": "解決済みの会話からFAQを生成", - "ALLOW_MEMORIES": "顧客とのやり取りから重要な詳細を記憶としてキャプチャ" + "ALLOW_MEMORIES": "顧客とのやり取りから重要な詳細を記憶としてキャプチャ", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json index de389b44c..3f1a39d1b 100644 --- a/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ja/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp テンプレート", - "SUBTITLE": "送信したいWhatsappテンプレートを選択してください", - "TEMPLATE_SELECTED_SUBTITLE": "{templateName} を処理中" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "テンプレートを検索", - "NO_TEMPLATES_FOUND": "該当するテンプレートが見つかりません:", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "言語", - "TEMPLATE_BODY": "テンプレート本文", - "CATEGORY": "カテゴリ" - } - }, - "PARSER": { - "VARIABLES_LABEL": "変数", - "VARIABLE_PLACEHOLDER": "{variable} の値を入力", - "GO_BACK_LABEL": "戻る", - "SEND_MESSAGE_LABEL": "メッセージを送信", - "FORM_ERROR_MESSAGE": "送信前に全ての変数を入力してください" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp テンプレート", + "SUBTITLE": "送信したいWhatsappテンプレートを選択してください", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "テンプレートを検索", + "NO_TEMPLATES_FOUND": "該当するテンプレートが見つかりません:", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "カテゴリ", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "言語", + "TEMPLATE_BODY": "テンプレート本文", + "CATEGORY": "カテゴリ" + } + }, + "PARSER": { + "VARIABLES_LABEL": "変数", + "LANGUAGE": "言語", + "CATEGORY": "カテゴリ", + "VARIABLE_PLACEHOLDER": "{variable} の値を入力", + "GO_BACK_LABEL": "戻る", + "SEND_MESSAGE_LABEL": "メッセージを送信", + "FORM_ERROR_MESSAGE": "送信前に全ての変数を入力してください", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ka/automation.json b/app/javascript/dashboard/i18n/locale/ka/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/ka/automation.json +++ b/app/javascript/dashboard/i18n/locale/ka/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ka/integrations.json b/app/javascript/dashboard/i18n/locale/ka/integrations.json index 68ce25b15..f0c7abbd3 100644 --- a/app/javascript/dashboard/i18n/locale/ka/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ka/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ka/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ko/automation.json b/app/javascript/dashboard/i18n/locale/ko/automation.json index e12df529d..a5e1b079c 100644 --- a/app/javascript/dashboard/i18n/locale/ko/automation.json +++ b/app/javascript/dashboard/i18n/locale/ko/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ko/integrations.json b/app/javascript/dashboard/i18n/locale/ko/integrations.json index 37335c120..e5935505e 100644 --- a/app/javascript/dashboard/i18n/locale/ko/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ko/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "특징", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json index 71fc338da..6f6c098f5 100644 --- a/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ko/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "언어", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "언어", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "언어", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/lt/automation.json b/app/javascript/dashboard/i18n/locale/lt/automation.json index 54bb9075b..3485c2355 100644 --- a/app/javascript/dashboard/i18n/locale/lt/automation.json +++ b/app/javascript/dashboard/i18n/locale/lt/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Pokalbis sukurtas", "CONVERSATION_UPDATED": "Pokalbis atnaujintas", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/lt/integrations.json b/app/javascript/dashboard/i18n/locale/lt/integrations.json index 90bf8d22d..81cba5fee 100644 --- a/app/javascript/dashboard/i18n/locale/lt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lt/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funkcijos", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json index 7c9073480..a46abc2a0 100644 --- a/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/lt/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Šablonai", - "SUBTITLE": "Pasirinkite WhatsApp šabloną, kurį norite siųsti", - "TEMPLATE_SELECTED_SUBTITLE": "Apdoroti {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Ieškoti šablonų", - "NO_TEMPLATES_FOUND": "Šablonų nerasta", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Kalba", - "TEMPLATE_BODY": "Šablono tekstas", - "CATEGORY": "Kategorija" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Kintamieji", - "VARIABLE_PLACEHOLDER": "Įveskite {variable} reikšmę", - "GO_BACK_LABEL": "Grįžti", - "SEND_MESSAGE_LABEL": "Išsiųsti pranešimą", - "FORM_ERROR_MESSAGE": "Prieš siųsdami užpildykite visus kintamuosius" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Šablonai", + "SUBTITLE": "Pasirinkite WhatsApp šabloną, kurį norite siųsti", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Ieškoti šablonų", + "NO_TEMPLATES_FOUND": "Šablonų nerasta", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorija", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Kalba", + "TEMPLATE_BODY": "Šablono tekstas", + "CATEGORY": "Kategorija" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Kintamieji", + "LANGUAGE": "Kalba", + "CATEGORY": "Kategorija", + "VARIABLE_PLACEHOLDER": "Įveskite {variable} reikšmę", + "GO_BACK_LABEL": "Grįžti", + "SEND_MESSAGE_LABEL": "Išsiųsti pranešimą", + "FORM_ERROR_MESSAGE": "Prieš siųsdami užpildykite visus kintamuosius", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/lv/automation.json b/app/javascript/dashboard/i18n/locale/lv/automation.json index 193ef9739..9877bb4e3 100644 --- a/app/javascript/dashboard/i18n/locale/lv/automation.json +++ b/app/javascript/dashboard/i18n/locale/lv/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Saruna izveidota", "CONVERSATION_UPDATED": "Saruna Atjaunināta", "MESSAGE_CREATED": "Ziņojums Izveidots", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Saruna Atvērta" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/lv/integrations.json b/app/javascript/dashboard/i18n/locale/lv/integrations.json index e5a013bd7..b8f109f61 100644 --- a/app/javascript/dashboard/i18n/locale/lv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/lv/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Īpašības", "ALLOW_CONVERSATION_FAQS": "Ģenerēt bieži uzdotos jautājumus no atrisinātajām sarunām", - "ALLOW_MEMORIES": "Pārtvert galvenās nianses kā atmiņas no klientu mijiedarbībām." + "ALLOW_MEMORIES": "Pārtvert galvenās nianses kā atmiņas no klientu mijiedarbībām.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json index 330ab173d..0b51f15f3 100644 --- a/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/lv/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "WhatsApp Veidnes", - "SUBTITLE": "Izvēlieties WhatsApp veidni, kuru vēlaties nosūtīt", - "TEMPLATE_SELECTED_SUBTITLE": "Apstrādāt {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Meklēt Veidnes", - "NO_TEMPLATES_FOUND": "Veidnes nav atrastas", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Valoda", - "TEMPLATE_BODY": "Veidnes Pamatteksts", - "CATEGORY": "Kategorija" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Mainīgie", - "VARIABLE_PLACEHOLDER": "Ievadiet {variable} vērtību", - "GO_BACK_LABEL": "Atgriezties", - "SEND_MESSAGE_LABEL": "Sūtīt Ziņojumu", - "FORM_ERROR_MESSAGE": "Lūdzu, pirms nosūtīšanas aizpildiet visus mainīgos" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "WhatsApp Veidnes", + "SUBTITLE": "Izvēlieties WhatsApp veidni, kuru vēlaties nosūtīt", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Meklēt Veidnes", + "NO_TEMPLATES_FOUND": "Veidnes nav atrastas", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorija", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Valoda", + "TEMPLATE_BODY": "Veidnes Pamatteksts", + "CATEGORY": "Kategorija" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Mainīgie", + "LANGUAGE": "Valoda", + "CATEGORY": "Kategorija", + "VARIABLE_PLACEHOLDER": "Ievadiet {variable} vērtību", + "GO_BACK_LABEL": "Atgriezties", + "SEND_MESSAGE_LABEL": "Sūtīt Ziņojumu", + "FORM_ERROR_MESSAGE": "Lūdzu, pirms nosūtīšanas aizpildiet visus mainīgos", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ml/automation.json b/app/javascript/dashboard/i18n/locale/ml/automation.json index b50618313..6c3cd4517 100644 --- a/app/javascript/dashboard/i18n/locale/ml/automation.json +++ b/app/javascript/dashboard/i18n/locale/ml/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ml/integrations.json b/app/javascript/dashboard/i18n/locale/ml/integrations.json index f64124402..f375f9ff2 100644 --- a/app/javascript/dashboard/i18n/locale/ml/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ml/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ml/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ms/automation.json b/app/javascript/dashboard/i18n/locale/ms/automation.json index 2bdccfc0e..e3990a8ab 100644 --- a/app/javascript/dashboard/i18n/locale/ms/automation.json +++ b/app/javascript/dashboard/i18n/locale/ms/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ms/integrations.json b/app/javascript/dashboard/i18n/locale/ms/integrations.json index 3f5083d30..cb2c4a677 100644 --- a/app/javascript/dashboard/i18n/locale/ms/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ms/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ms/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ne/automation.json b/app/javascript/dashboard/i18n/locale/ne/automation.json index a4c0ce10b..4aba66e26 100644 --- a/app/javascript/dashboard/i18n/locale/ne/automation.json +++ b/app/javascript/dashboard/i18n/locale/ne/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ne/integrations.json b/app/javascript/dashboard/i18n/locale/ne/integrations.json index bc72dd2e3..56a6766fc 100644 --- a/app/javascript/dashboard/i18n/locale/ne/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ne/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ne/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/nl/automation.json b/app/javascript/dashboard/i18n/locale/nl/automation.json index 269bf96ab..dd45ce36d 100644 --- a/app/javascript/dashboard/i18n/locale/nl/automation.json +++ b/app/javascript/dashboard/i18n/locale/nl/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Gesprek aangemaakt", "CONVERSATION_UPDATED": "Gesprek bijgewerkt", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/nl/integrations.json b/app/javascript/dashboard/i18n/locale/nl/integrations.json index 7b971629c..cecc6fac0 100644 --- a/app/javascript/dashboard/i18n/locale/nl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/nl/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json index 4061f4090..7e4317fb8 100644 --- a/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/nl/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Selecteer de whatsapp template die u wilt verzenden", - "TEMPLATE_SELECTED_SUBTITLE": "Verwerk {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Templates zoeken", - "NO_TEMPLATES_FOUND": "Geen templates gevonden voor", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Taal", - "TEMPLATE_BODY": "Template bericht", - "CATEGORY": "Categorie" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variabelen", - "VARIABLE_PLACEHOLDER": "Voer {variable} waarde in", - "GO_BACK_LABEL": "Ga terug", - "SEND_MESSAGE_LABEL": "Verstuur bericht", - "FORM_ERROR_MESSAGE": "Vul alstublieft alle variabelen in voordat u deze verzendt" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Selecteer de whatsapp template die u wilt verzenden", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Templates zoeken", + "NO_TEMPLATES_FOUND": "Geen templates gevonden voor", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categorie", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Taal", + "TEMPLATE_BODY": "Template bericht", + "CATEGORY": "Categorie" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variabelen", + "LANGUAGE": "Taal", + "CATEGORY": "Categorie", + "VARIABLE_PLACEHOLDER": "Voer {variable} waarde in", + "GO_BACK_LABEL": "Ga terug", + "SEND_MESSAGE_LABEL": "Verstuur bericht", + "FORM_ERROR_MESSAGE": "Vul alstublieft alle variabelen in voordat u deze verzendt", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/no/automation.json b/app/javascript/dashboard/i18n/locale/no/automation.json index 4a5b37875..c76e4dc1a 100644 --- a/app/javascript/dashboard/i18n/locale/no/automation.json +++ b/app/javascript/dashboard/i18n/locale/no/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/no/integrations.json b/app/javascript/dashboard/i18n/locale/no/integrations.json index 10b668191..033245b58 100644 --- a/app/javascript/dashboard/i18n/locale/no/integrations.json +++ b/app/javascript/dashboard/i18n/locale/no/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funksjoner", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/no/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/pl/automation.json b/app/javascript/dashboard/i18n/locale/pl/automation.json index 3ebfa9550..f4212f70c 100644 --- a/app/javascript/dashboard/i18n/locale/pl/automation.json +++ b/app/javascript/dashboard/i18n/locale/pl/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Rozpoczęcie rozmowy", "CONVERSATION_UPDATED": "Aktualizacja rozmowy", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pl/integrations.json b/app/javascript/dashboard/i18n/locale/pl/integrations.json index ec149a9e4..7787df954 100644 --- a/app/javascript/dashboard/i18n/locale/pl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pl/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funkcje", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json index fb87e1425..e1946af25 100644 --- a/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pl/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Szablony WhatsApp", - "SUBTITLE": "Wybierz szablon WhatsApp, który chcesz wysłać", - "TEMPLATE_SELECTED_SUBTITLE": "Przetwarzanie {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Wyszukaj szablony", - "NO_TEMPLATES_FOUND": "Nie znaleziono szablonów dla", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Język", - "TEMPLATE_BODY": "Treść szablonu", - "CATEGORY": "Kategoria" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Zmienne", - "VARIABLE_PLACEHOLDER": "Wprowadź wartość {variable}", - "GO_BACK_LABEL": "Powrót", - "SEND_MESSAGE_LABEL": "Wyślij wiadomość", - "FORM_ERROR_MESSAGE": "Proszę wypełnić wszystkie zmienne przed wysłaniem" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Szablony WhatsApp", + "SUBTITLE": "Wybierz szablon WhatsApp, który chcesz wysłać", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Wyszukaj szablony", + "NO_TEMPLATES_FOUND": "Nie znaleziono szablonów dla", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategoria", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Język", + "TEMPLATE_BODY": "Treść szablonu", + "CATEGORY": "Kategoria" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Zmienne", + "LANGUAGE": "Język", + "CATEGORY": "Kategoria", + "VARIABLE_PLACEHOLDER": "Wprowadź wartość {variable}", + "GO_BACK_LABEL": "Powrót", + "SEND_MESSAGE_LABEL": "Wyślij wiadomość", + "FORM_ERROR_MESSAGE": "Proszę wypełnić wszystkie zmienne przed wysłaniem", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/pt/automation.json b/app/javascript/dashboard/i18n/locale/pt/automation.json index a2740c577..0a720f528 100644 --- a/app/javascript/dashboard/i18n/locale/pt/automation.json +++ b/app/javascript/dashboard/i18n/locale/pt/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversa criada", "CONVERSATION_UPDATED": "Conversa atualizada", "MESSAGE_CREATED": "Mensagem criada", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversa aberta" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pt/integrations.json b/app/javascript/dashboard/i18n/locale/pt/integrations.json index 69c3ddb4f..2a86bd97f 100644 --- a/app/javascript/dashboard/i18n/locale/pt/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Características", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json index cba42fd01..45100216d 100644 --- a/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pt/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Template do WhatsApp", - "SUBTITLE": "Selecione o template do whatsapp que você deseja enviar", - "TEMPLATE_SELECTED_SUBTITLE": "Processo {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Buscar templates", - "NO_TEMPLATES_FOUND": "Nenhum template encontrado para", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Idioma", - "TEMPLATE_BODY": "Corpo do Template", - "CATEGORY": "Categoria" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variáveis", - "VARIABLE_PLACEHOLDER": "Digite o valor {variable}", - "GO_BACK_LABEL": "Voltar", - "SEND_MESSAGE_LABEL": "Enviar mensagem", - "FORM_ERROR_MESSAGE": "Preencha todas as variáveis antes de enviar" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Template do WhatsApp", + "SUBTITLE": "Selecione o template do whatsapp que você deseja enviar", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Buscar templates", + "NO_TEMPLATES_FOUND": "Nenhum template encontrado para", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categoria", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Idioma", + "TEMPLATE_BODY": "Corpo do Template", + "CATEGORY": "Categoria" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variáveis", + "LANGUAGE": "Idioma", + "CATEGORY": "Categoria", + "VARIABLE_PLACEHOLDER": "Digite o valor {variable}", + "GO_BACK_LABEL": "Voltar", + "SEND_MESSAGE_LABEL": "Enviar mensagem", + "FORM_ERROR_MESSAGE": "Preencha todas as variáveis antes de enviar", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/automation.json b/app/javascript/dashboard/i18n/locale/pt_BR/automation.json index 22a097713..a3ecb50ac 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/automation.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversa Criada", "CONVERSATION_UPDATED": "Conversa Atualizada", "MESSAGE_CREATED": "Mensagem Criada", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversa Aberta" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json index 1b690cb82..67102dbb5 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funcionalidades", "ALLOW_CONVERSATION_FAQS": "Gerar perguntas frequentes a partir de conversas resolvidas", - "ALLOW_MEMORIES": "Capture os principais detalhes como memórias de interações do cliente." + "ALLOW_MEMORIES": "Capture os principais detalhes como memórias de interações do cliente.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json index 1149bc577..27accbaa8 100644 --- a/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/pt_BR/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Templates do Whatsapp", - "SUBTITLE": "Selecione o template do whatsapp que você deseja enviar", - "TEMPLATE_SELECTED_SUBTITLE": "Processar {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Pesquisar modelos", - "NO_TEMPLATES_FOUND": "Não há templates encontrados para", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Idioma", - "TEMPLATE_BODY": "Conteúdo do Template", - "CATEGORY": "Categoria" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variáveis", - "VARIABLE_PLACEHOLDER": "Insira o valor para {variable}", - "GO_BACK_LABEL": "Voltar", - "SEND_MESSAGE_LABEL": "Enviar Mensagem", - "FORM_ERROR_MESSAGE": "Por favor, preencha todas as variáveis antes de enviar" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Templates do Whatsapp", + "SUBTITLE": "Selecione o template do whatsapp que você deseja enviar", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Pesquisar modelos", + "NO_TEMPLATES_FOUND": "Não há templates encontrados para", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categoria", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Idioma", + "TEMPLATE_BODY": "Conteúdo do Template", + "CATEGORY": "Categoria" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variáveis", + "LANGUAGE": "Idioma", + "CATEGORY": "Categoria", + "VARIABLE_PLACEHOLDER": "Insira o valor para {variable}", + "GO_BACK_LABEL": "Voltar", + "SEND_MESSAGE_LABEL": "Enviar Mensagem", + "FORM_ERROR_MESSAGE": "Por favor, preencha todas as variáveis antes de enviar", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ro/automation.json b/app/javascript/dashboard/i18n/locale/ro/automation.json index 38a4dd0c6..8f18d43fe 100644 --- a/app/javascript/dashboard/i18n/locale/ro/automation.json +++ b/app/javascript/dashboard/i18n/locale/ro/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversație creată", "CONVERSATION_UPDATED": "Conversație actualizată", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ro/integrations.json b/app/javascript/dashboard/i18n/locale/ro/integrations.json index 513b93b64..dae7e2088 100644 --- a/app/javascript/dashboard/i18n/locale/ro/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ro/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Caracteristici", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json index fda8d7b10..e1697e19f 100644 --- a/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ro/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Șabloane WhatsApp", - "SUBTITLE": "Selectați șablonul WhatsApp pe care doriți să trimiteți", - "TEMPLATE_SELECTED_SUBTITLE": "{templateName} de proces" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Caută Șabloane", - "NO_TEMPLATES_FOUND": "Nu s-au găsit șabloane pentru", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Limbă", - "TEMPLATE_BODY": "Corpul șablonului", - "CATEGORY": "Categorie" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variabile", - "VARIABLE_PLACEHOLDER": "Introducerea {variable} valoare", - "GO_BACK_LABEL": "Înapoi", - "SEND_MESSAGE_LABEL": "Trimite mesaj", - "FORM_ERROR_MESSAGE": "Vă rugăm să completați toate variabilele înainte de a trimite" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Șabloane WhatsApp", + "SUBTITLE": "Selectați șablonul WhatsApp pe care doriți să trimiteți", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Caută Șabloane", + "NO_TEMPLATES_FOUND": "Nu s-au găsit șabloane pentru", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Categorie", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Limbă", + "TEMPLATE_BODY": "Corpul șablonului", + "CATEGORY": "Categorie" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variabile", + "LANGUAGE": "Limbă", + "CATEGORY": "Categorie", + "VARIABLE_PLACEHOLDER": "Introducerea {variable} valoare", + "GO_BACK_LABEL": "Înapoi", + "SEND_MESSAGE_LABEL": "Trimite mesaj", + "FORM_ERROR_MESSAGE": "Vă rugăm să completați toate variabilele înainte de a trimite", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ru/automation.json b/app/javascript/dashboard/i18n/locale/ru/automation.json index 49e5699c9..08ead85fe 100644 --- a/app/javascript/dashboard/i18n/locale/ru/automation.json +++ b/app/javascript/dashboard/i18n/locale/ru/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Диалог создан", "CONVERSATION_UPDATED": "Диалог обновлён", "MESSAGE_CREATED": "Сообщение создано", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ru/integrations.json b/app/javascript/dashboard/i18n/locale/ru/integrations.json index 833e9faf5..6de478fb1 100644 --- a/app/javascript/dashboard/i18n/locale/ru/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ru/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Возможности", "ALLOW_CONVERSATION_FAQS": "Создать FAQ из решённых диалогов", - "ALLOW_MEMORIES": "Сохраняйте ключевые детали в виде воспоминаний о взаимодействии с клиентами." + "ALLOW_MEMORIES": "Сохраняйте ключевые детали в виде воспоминаний о взаимодействии с клиентами.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json index 65c55ec5a..a8effa8b8 100644 --- a/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ru/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Шаблоны Whatsapp", - "SUBTITLE": "Выберите шаблон whatsapp, который вы хотите отправить", - "TEMPLATE_SELECTED_SUBTITLE": "Обработка {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Найти шаблоны", - "NO_TEMPLATES_FOUND": "Не найдено шаблонов для", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Язык", - "TEMPLATE_BODY": "Тело шаблона", - "CATEGORY": "Категория" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Переменные", - "VARIABLE_PLACEHOLDER": "Введите значение {variable}", - "GO_BACK_LABEL": "Вернуться", - "SEND_MESSAGE_LABEL": "Отправить сообщение", - "FORM_ERROR_MESSAGE": "Пожалуйста, заполните все переменные перед отправкой" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Шаблоны Whatsapp", + "SUBTITLE": "Выберите шаблон whatsapp, который вы хотите отправить", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Найти шаблоны", + "NO_TEMPLATES_FOUND": "Не найдено шаблонов для", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Категория", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Язык", + "TEMPLATE_BODY": "Тело шаблона", + "CATEGORY": "Категория" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Переменные", + "LANGUAGE": "Язык", + "CATEGORY": "Категория", + "VARIABLE_PLACEHOLDER": "Введите значение {variable}", + "GO_BACK_LABEL": "Вернуться", + "SEND_MESSAGE_LABEL": "Отправить сообщение", + "FORM_ERROR_MESSAGE": "Пожалуйста, заполните все переменные перед отправкой", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sh/automation.json b/app/javascript/dashboard/i18n/locale/sh/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/sh/automation.json +++ b/app/javascript/dashboard/i18n/locale/sh/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sh/integrations.json b/app/javascript/dashboard/i18n/locale/sh/integrations.json index 68ce25b15..f0c7abbd3 100644 --- a/app/javascript/dashboard/i18n/locale/sh/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sh/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sh/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sk/automation.json b/app/javascript/dashboard/i18n/locale/sk/automation.json index 9c2c463bc..2ea93e17a 100644 --- a/app/javascript/dashboard/i18n/locale/sk/automation.json +++ b/app/javascript/dashboard/i18n/locale/sk/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sk/integrations.json b/app/javascript/dashboard/i18n/locale/sk/integrations.json index e0d32c972..55cd79768 100644 --- a/app/javascript/dashboard/i18n/locale/sk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sk/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sk/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sl/automation.json b/app/javascript/dashboard/i18n/locale/sl/automation.json index 694902ab5..2f97d7257 100644 --- a/app/javascript/dashboard/i18n/locale/sl/automation.json +++ b/app/javascript/dashboard/i18n/locale/sl/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sl/integrations.json b/app/javascript/dashboard/i18n/locale/sl/integrations.json index 5880a6b3c..e1f8321c5 100644 --- a/app/javascript/dashboard/i18n/locale/sl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sl/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json index eb4acbea6..aa6011859 100644 --- a/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sl/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Predloge za WhatsApp", - "SUBTITLE": "Izberite predlogo WhatsApp, ki jo želite poslati", - "TEMPLATE_SELECTED_SUBTITLE": "Obdelaj {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Išči predloge", - "NO_TEMPLATES_FOUND": "Ni najdenih predlog za", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Jezik", - "TEMPLATE_BODY": "Telo predloge", - "CATEGORY": "Kategorija" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Spremenljivke", - "VARIABLE_PLACEHOLDER": "Vnesi vrednost {variable}", - "GO_BACK_LABEL": "Pojdi nazaj", - "SEND_MESSAGE_LABEL": "Pošlji sporočilo", - "FORM_ERROR_MESSAGE": "Prosimo, izpolnite vse spremenljivke pred pošiljanjem" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Predloge za WhatsApp", + "SUBTITLE": "Izberite predlogo WhatsApp, ki jo želite poslati", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Išči predloge", + "NO_TEMPLATES_FOUND": "Ni najdenih predlog za", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorija", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Jezik", + "TEMPLATE_BODY": "Telo predloge", + "CATEGORY": "Kategorija" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Spremenljivke", + "LANGUAGE": "Jezik", + "CATEGORY": "Kategorija", + "VARIABLE_PLACEHOLDER": "Vnesi vrednost {variable}", + "GO_BACK_LABEL": "Pojdi nazaj", + "SEND_MESSAGE_LABEL": "Pošlji sporočilo", + "FORM_ERROR_MESSAGE": "Prosimo, izpolnite vse spremenljivke pred pošiljanjem", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sq/automation.json b/app/javascript/dashboard/i18n/locale/sq/automation.json index 643d3b09a..280c6c65d 100644 --- a/app/javascript/dashboard/i18n/locale/sq/automation.json +++ b/app/javascript/dashboard/i18n/locale/sq/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sq/integrations.json b/app/javascript/dashboard/i18n/locale/sq/integrations.json index 24315dec2..3fe43940a 100644 --- a/app/javascript/dashboard/i18n/locale/sq/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sq/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sq/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sr/automation.json b/app/javascript/dashboard/i18n/locale/sr/automation.json index f3bee7561..0f15f8e3d 100644 --- a/app/javascript/dashboard/i18n/locale/sr/automation.json +++ b/app/javascript/dashboard/i18n/locale/sr/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Razgovor je napravljen", "CONVERSATION_UPDATED": "Razgovor je izmenjen", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sr/integrations.json b/app/javascript/dashboard/i18n/locale/sr/integrations.json index 8dada5dc6..77c6d0b7b 100644 --- a/app/javascript/dashboard/i18n/locale/sr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sr/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Mogućnosti", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json index 27fed1503..a3cf57d23 100644 --- a/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sr/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp šabloni", - "SUBTITLE": "Izaberite koji whatsapp šablon želite da pošaljete", - "TEMPLATE_SELECTED_SUBTITLE": "Obrada {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Pretraži šablone", - "NO_TEMPLATES_FOUND": "Nijedan šablon nije pronađen", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Jezik", - "TEMPLATE_BODY": "Telo šablona", - "CATEGORY": "Kategorija" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Promenljive", - "VARIABLE_PLACEHOLDER": "Unesite vrednost za {variable}", - "GO_BACK_LABEL": "Povratak", - "SEND_MESSAGE_LABEL": "Pošalji poruku", - "FORM_ERROR_MESSAGE": "Molim vas popunite sve promenljive pre slanja" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp šabloni", + "SUBTITLE": "Izaberite koji whatsapp šablon želite da pošaljete", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Pretraži šablone", + "NO_TEMPLATES_FOUND": "Nijedan šablon nije pronađen", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategorija", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Jezik", + "TEMPLATE_BODY": "Telo šablona", + "CATEGORY": "Kategorija" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Promenljive", + "LANGUAGE": "Jezik", + "CATEGORY": "Kategorija", + "VARIABLE_PLACEHOLDER": "Unesite vrednost za {variable}", + "GO_BACK_LABEL": "Povratak", + "SEND_MESSAGE_LABEL": "Pošalji poruku", + "FORM_ERROR_MESSAGE": "Molim vas popunite sve promenljive pre slanja", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/sv/automation.json b/app/javascript/dashboard/i18n/locale/sv/automation.json index d50296a86..b21bfe262 100644 --- a/app/javascript/dashboard/i18n/locale/sv/automation.json +++ b/app/javascript/dashboard/i18n/locale/sv/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/sv/integrations.json b/app/javascript/dashboard/i18n/locale/sv/integrations.json index 805d3481f..ce27888e4 100644 --- a/app/javascript/dashboard/i18n/locale/sv/integrations.json +++ b/app/javascript/dashboard/i18n/locale/sv/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Funktioner", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/sv/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ta/automation.json b/app/javascript/dashboard/i18n/locale/ta/automation.json index b3aa9be50..ba7a725cd 100644 --- a/app/javascript/dashboard/i18n/locale/ta/automation.json +++ b/app/javascript/dashboard/i18n/locale/ta/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ta/integrations.json b/app/javascript/dashboard/i18n/locale/ta/integrations.json index 160cb189f..30244bd5a 100644 --- a/app/javascript/dashboard/i18n/locale/ta/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ta/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ta/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/th/automation.json b/app/javascript/dashboard/i18n/locale/th/automation.json index eac475926..8df9e274f 100644 --- a/app/javascript/dashboard/i18n/locale/th/automation.json +++ b/app/javascript/dashboard/i18n/locale/th/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "การสนทนาที่ถูกสร้าง", "CONVERSATION_UPDATED": "อัปเดตการสนทนาแล้ว", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/th/integrations.json b/app/javascript/dashboard/i18n/locale/th/integrations.json index 692daf68e..c9ab15529 100644 --- a/app/javascript/dashboard/i18n/locale/th/integrations.json +++ b/app/javascript/dashboard/i18n/locale/th/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "ฟีเจอร์", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/th/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/tl/automation.json b/app/javascript/dashboard/i18n/locale/tl/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/tl/automation.json +++ b/app/javascript/dashboard/i18n/locale/tl/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/tl/integrations.json b/app/javascript/dashboard/i18n/locale/tl/integrations.json index 1614931a0..be9281284 100644 --- a/app/javascript/dashboard/i18n/locale/tl/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tl/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/tl/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/tr/automation.json b/app/javascript/dashboard/i18n/locale/tr/automation.json index 2a1f9f55a..3bac1c990 100644 --- a/app/javascript/dashboard/i18n/locale/tr/automation.json +++ b/app/javascript/dashboard/i18n/locale/tr/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Görüşme Oluşturuldu", "CONVERSATION_UPDATED": "Görüşme Güncellendi", "MESSAGE_CREATED": "Mesaj Oluşturuldu", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Sohbet Açıldı" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/tr/integrations.json b/app/javascript/dashboard/i18n/locale/tr/integrations.json index 5e774e07a..d414ea777 100644 --- a/app/javascript/dashboard/i18n/locale/tr/integrations.json +++ b/app/javascript/dashboard/i18n/locale/tr/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Özellikleri", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json index da51ff735..47dfd1c55 100644 --- a/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/tr/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "WhatsApp Şablonları", - "SUBTITLE": "Göndermek istediğiniz WhatsApp şablonunu seçin", - "TEMPLATE_SELECTED_SUBTITLE": "{templateName} işleniyor" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Şablon Ara", - "NO_TEMPLATES_FOUND": "İçin hiç şablon bulunamadı", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Dil", - "TEMPLATE_BODY": "Şablon İçeriği", - "CATEGORY": "Kategori" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Değişkenler", - "VARIABLE_PLACEHOLDER": "{variable} değerini girin", - "GO_BACK_LABEL": "Geri Git", - "SEND_MESSAGE_LABEL": "Mesaj Gönder", - "FORM_ERROR_MESSAGE": "Lütfen göndermeden önce tüm değişkenleri doldurun" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "WhatsApp Şablonları", + "SUBTITLE": "Göndermek istediğiniz WhatsApp şablonunu seçin", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Şablon Ara", + "NO_TEMPLATES_FOUND": "İçin hiç şablon bulunamadı", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Kategori", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Dil", + "TEMPLATE_BODY": "Şablon İçeriği", + "CATEGORY": "Kategori" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Değişkenler", + "LANGUAGE": "Dil", + "CATEGORY": "Kategori", + "VARIABLE_PLACEHOLDER": "{variable} değerini girin", + "GO_BACK_LABEL": "Geri Git", + "SEND_MESSAGE_LABEL": "Mesaj Gönder", + "FORM_ERROR_MESSAGE": "Lütfen göndermeden önce tüm değişkenleri doldurun", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/uk/automation.json b/app/javascript/dashboard/i18n/locale/uk/automation.json index 39ad3e474..84617e9f0 100644 --- a/app/javascript/dashboard/i18n/locale/uk/automation.json +++ b/app/javascript/dashboard/i18n/locale/uk/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Розмову створено", "CONVERSATION_UPDATED": "Розмову оновлено", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/uk/integrations.json b/app/javascript/dashboard/i18n/locale/uk/integrations.json index bc7afcfc6..fd1c820fc 100644 --- a/app/javascript/dashboard/i18n/locale/uk/integrations.json +++ b/app/javascript/dashboard/i18n/locale/uk/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Особливості", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json index 1246919f5..d181cd3f1 100644 --- a/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/uk/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Шаблони Whatsapp", - "SUBTITLE": "Виберіть шаблон whatsApp, який Ви хочете надіслати", - "TEMPLATE_SELECTED_SUBTITLE": "Процес {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Знайти шаблони", - "NO_TEMPLATES_FOUND": "Шаблонів не знайдено для", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Мова", - "TEMPLATE_BODY": "Тіло шаблона", - "CATEGORY": "Категорія" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Змінні", - "VARIABLE_PLACEHOLDER": "Введіть значення {variable}", - "GO_BACK_LABEL": "Повернутися", - "SEND_MESSAGE_LABEL": "Надіслати повідомлення", - "FORM_ERROR_MESSAGE": "Будь ласка, заповніть всі змінні перед надсиланням" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Шаблони Whatsapp", + "SUBTITLE": "Виберіть шаблон whatsApp, який Ви хочете надіслати", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Знайти шаблони", + "NO_TEMPLATES_FOUND": "Шаблонів не знайдено для", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Категорія", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Мова", + "TEMPLATE_BODY": "Тіло шаблона", + "CATEGORY": "Категорія" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Змінні", + "LANGUAGE": "Мова", + "CATEGORY": "Категорія", + "VARIABLE_PLACEHOLDER": "Введіть значення {variable}", + "GO_BACK_LABEL": "Повернутися", + "SEND_MESSAGE_LABEL": "Надіслати повідомлення", + "FORM_ERROR_MESSAGE": "Будь ласка, заповніть всі змінні перед надсиланням", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ur/automation.json b/app/javascript/dashboard/i18n/locale/ur/automation.json index a129539f8..3ef2ccc5e 100644 --- a/app/javascript/dashboard/i18n/locale/ur/automation.json +++ b/app/javascript/dashboard/i18n/locale/ur/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ur/integrations.json b/app/javascript/dashboard/i18n/locale/ur/integrations.json index bcf0c1a33..eaab517a2 100644 --- a/app/javascript/dashboard/i18n/locale/ur/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ur/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/automation.json b/app/javascript/dashboard/i18n/locale/ur_IN/automation.json index cf63de81c..80274f488 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/automation.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json index 68ce25b15..f0c7abbd3 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/ur_IN/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/vi/automation.json b/app/javascript/dashboard/i18n/locale/vi/automation.json index cb483e847..1f8d5ea79 100644 --- a/app/javascript/dashboard/i18n/locale/vi/automation.json +++ b/app/javascript/dashboard/i18n/locale/vi/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Cuộc trò chuyện đã được tạo", "CONVERSATION_UPDATED": "Cuộc trò chuyện đã được cập nhật", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/vi/integrations.json b/app/javascript/dashboard/i18n/locale/vi/integrations.json index fdb96d792..10a6df6b9 100644 --- a/app/javascript/dashboard/i18n/locale/vi/integrations.json +++ b/app/javascript/dashboard/i18n/locale/vi/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Các tính năng", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json index a4abce833..fefd680ec 100644 --- a/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/vi/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Mẫu Whatsapp", - "SUBTITLE": "Chọn mẫu whatsapp bạn muốn gửi", - "TEMPLATE_SELECTED_SUBTITLE": "Xử lý {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Tìm kiếm Mẫu", - "NO_TEMPLATES_FOUND": "Không tìm thấy mẫu nào cho", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Ngôn ngữ", - "TEMPLATE_BODY": "Nội dung của Mẫu", - "CATEGORY": "Loại" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Biến", - "VARIABLE_PLACEHOLDER": "Nhập giá trị {variable}", - "GO_BACK_LABEL": "Quay lại", - "SEND_MESSAGE_LABEL": "Gửi tin nhắn", - "FORM_ERROR_MESSAGE": "Vui lòng điền vào tất cả các biến trước khi gửi" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Mẫu Whatsapp", + "SUBTITLE": "Chọn mẫu whatsapp bạn muốn gửi", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Tìm kiếm Mẫu", + "NO_TEMPLATES_FOUND": "Không tìm thấy mẫu nào cho", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Loại", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Ngôn ngữ", + "TEMPLATE_BODY": "Nội dung của Mẫu", + "CATEGORY": "Loại" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Biến", + "LANGUAGE": "Ngôn ngữ", + "CATEGORY": "Loại", + "VARIABLE_PLACEHOLDER": "Nhập giá trị {variable}", + "GO_BACK_LABEL": "Quay lại", + "SEND_MESSAGE_LABEL": "Gửi tin nhắn", + "FORM_ERROR_MESSAGE": "Vui lòng điền vào tất cả các biến trước khi gửi", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/automation.json b/app/javascript/dashboard/i18n/locale/zh_CN/automation.json index 5b6872011..206b50103 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/automation.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "对话创建", "CONVERSATION_UPDATED": "对话已更新", "MESSAGE_CREATED": "消息已创建", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "对话已打开" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json index 0132e71c6..24de2da6d 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "特性", "ALLOW_CONVERSATION_FAQS": "从已解决的对话中生成常见问题", - "ALLOW_MEMORIES": "从客户互动中捕获关键细节作为记忆" + "ALLOW_MEMORIES": "从客户互动中捕获关键细节作为记忆", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json index cade063c0..9ca1ae234 100644 --- a/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/zh_CN/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp 模板列表", - "SUBTITLE": "请选择想要发送的 Whatsapp 消息模板", - "TEMPLATE_SELECTED_SUBTITLE": "{templateName} 处理中" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "查找模板", - "NO_TEMPLATES_FOUND": "没有找到对应的模版", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "语言", - "TEMPLATE_BODY": "模板内容", - "CATEGORY": "类别" - } - }, - "PARSER": { - "VARIABLES_LABEL": "参数", - "VARIABLE_PLACEHOLDER": "请填写 {variable}", - "GO_BACK_LABEL": "返回", - "SEND_MESSAGE_LABEL": "发送消息", - "FORM_ERROR_MESSAGE": "你必须填写所有参数才能发送" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp 模板列表", + "SUBTITLE": "请选择想要发送的 Whatsapp 消息模板", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "查找模板", + "NO_TEMPLATES_FOUND": "没有找到对应的模版", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "类别", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "语言", + "TEMPLATE_BODY": "模板内容", + "CATEGORY": "类别" + } + }, + "PARSER": { + "VARIABLES_LABEL": "参数", + "LANGUAGE": "语言", + "CATEGORY": "类别", + "VARIABLE_PLACEHOLDER": "请填写 {variable}", + "GO_BACK_LABEL": "返回", + "SEND_MESSAGE_LABEL": "发送消息", + "FORM_ERROR_MESSAGE": "你必须填写所有参数才能发送", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/automation.json b/app/javascript/dashboard/i18n/locale/zh_TW/automation.json index d44d241ff..416683ea6 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/automation.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/automation.json @@ -131,6 +131,7 @@ "CONVERSATION_CREATED": "Conversation Created", "CONVERSATION_UPDATED": "Conversation Updated", "MESSAGE_CREATED": "Message Created", + "CONVERSATION_RESOLVED": "Conversation Resolved", "CONVERSATION_OPENED": "Conversation Opened" }, "ACTIONS": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json index df361a65c..598fc185b 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/integrations.json @@ -472,7 +472,8 @@ "FEATURES": { "TITLE": "Features", "ALLOW_CONVERSATION_FAQS": "Generate FAQs from resolved conversations", - "ALLOW_MEMORIES": "Capture key details as memories from customer interactions." + "ALLOW_MEMORIES": "Capture key details as memories from customer interactions.", + "ALLOW_CITATIONS": "Include source citations in responses" } }, "EDIT": { diff --git a/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json b/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json index 4887d07b6..5f53faaa8 100644 --- a/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json +++ b/app/javascript/dashboard/i18n/locale/zh_TW/whatsappTemplates.json @@ -1,29 +1,46 @@ { - "WHATSAPP_TEMPLATES": { - "MODAL": { - "TITLE": "Whatsapp Templates", - "SUBTITLE": "Select the whatsapp template you want to send", - "TEMPLATE_SELECTED_SUBTITLE": "Process {templateName}" - }, - "PICKER": { - "SEARCH_PLACEHOLDER": "Search Templates", - "NO_TEMPLATES_FOUND": "No templates found for", - "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", - "REFRESH_BUTTON": "Refresh templates", - "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", - "REFRESH_ERROR": "Failed to refresh templates. Please try again.", - "LABELS": { - "LANGUAGE": "Language", - "TEMPLATE_BODY": "Template Body", - "CATEGORY": "Category" - } - }, - "PARSER": { - "VARIABLES_LABEL": "Variables", - "VARIABLE_PLACEHOLDER": "Enter {variable} value", - "GO_BACK_LABEL": "Go Back", - "SEND_MESSAGE_LABEL": "Send Message", - "FORM_ERROR_MESSAGE": "Please fill all variables before sending" - } + "WHATSAPP_TEMPLATES": { + "MODAL": { + "TITLE": "Whatsapp Templates", + "SUBTITLE": "Select the whatsapp template you want to send", + "TEMPLATE_SELECTED_SUBTITLE": "Configure template: {templateName}" + }, + "PICKER": { + "SEARCH_PLACEHOLDER": "Search Templates", + "NO_TEMPLATES_FOUND": "No templates found for", + "HEADER": "Header", + "BODY": "Body", + "FOOTER": "Footer", + "BUTTONS": "Buttons", + "CATEGORY": "Category", + "MEDIA_CONTENT": "Media Content", + "MEDIA_CONTENT_FALLBACK": "media content", + "NO_TEMPLATES_AVAILABLE": "No WhatsApp templates available. Click refresh to sync templates from WhatsApp.", + "REFRESH_BUTTON": "Refresh templates", + "REFRESH_SUCCESS": "Templates refresh initiated. It may take a couple of minutes to update.", + "REFRESH_ERROR": "Failed to refresh templates. Please try again.", + "LABELS": { + "LANGUAGE": "Language", + "TEMPLATE_BODY": "Template Body", + "CATEGORY": "Category" + } + }, + "PARSER": { + "VARIABLES_LABEL": "Variables", + "LANGUAGE": "Language", + "CATEGORY": "Category", + "VARIABLE_PLACEHOLDER": "Enter {variable} value", + "GO_BACK_LABEL": "Go Back", + "SEND_MESSAGE_LABEL": "Send Message", + "FORM_ERROR_MESSAGE": "Please fill all variables before sending", + "MEDIA_HEADER_LABEL": "{type} Header", + "OTP_CODE": "Enter 4-8 digit OTP", + "EXPIRY_MINUTES": "Enter expiry minutes", + "BUTTON_PARAMETERS": "Button Parameters", + "BUTTON_LABEL": "Button {index}", + "COUPON_CODE": "Enter coupon code (max 15 chars)", + "MEDIA_URL_LABEL": "Enter {type} URL", + "BUTTON_PARAMETER": "Enter button parameter" } + } } diff --git a/app/javascript/widget/i18n/locale/am.json b/app/javascript/widget/i18n/locale/am.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/am.json +++ b/app/javascript/widget/i18n/locale/am.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/ar.json b/app/javascript/widget/i18n/locale/ar.json index 66f271cdd..21b1c072e 100644 --- a/app/javascript/widget/i18n/locale/ar.json +++ b/app/javascript/widget/i18n/locale/ar.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "تعذر الإرسال! حاول مرة أخرى" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "متواجدون لخدمتك", "OFFLINE": "نحن بعيدون في الوقت الحالي" diff --git a/app/javascript/widget/i18n/locale/az.json b/app/javascript/widget/i18n/locale/az.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/az.json +++ b/app/javascript/widget/i18n/locale/az.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/bg.json b/app/javascript/widget/i18n/locale/bg.json index f289bf5eb..1fd4bc35d 100644 --- a/app/javascript/widget/i18n/locale/bg.json +++ b/app/javascript/widget/i18n/locale/bg.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "На линия сме", "OFFLINE": "В момента не сме на линия" diff --git a/app/javascript/widget/i18n/locale/ca.json b/app/javascript/widget/i18n/locale/ca.json index 4e464a6eb..6ae69fcb6 100644 --- a/app/javascript/widget/i18n/locale/ca.json +++ b/app/javascript/widget/i18n/locale/ca.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "No s'ha pogut enviar, torna-ho a provar" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Estem en línia", "OFFLINE": "Estem fora en aquest moment" diff --git a/app/javascript/widget/i18n/locale/cs.json b/app/javascript/widget/i18n/locale/cs.json index e33d963f1..adefb1eb4 100644 --- a/app/javascript/widget/i18n/locale/cs.json +++ b/app/javascript/widget/i18n/locale/cs.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Odeslání se nezdařilo, zkuste to znovu" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Jsme online", "OFFLINE": "V současné době jsme pryč" diff --git a/app/javascript/widget/i18n/locale/da.json b/app/javascript/widget/i18n/locale/da.json index 0b5cb5722..31303d4d5 100644 --- a/app/javascript/widget/i18n/locale/da.json +++ b/app/javascript/widget/i18n/locale/da.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Kunne ikke sende, prøv igen" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Vi er online", "OFFLINE": "Vi er ikke tilgængelige i øjeblikket" diff --git a/app/javascript/widget/i18n/locale/de.json b/app/javascript/widget/i18n/locale/de.json index 7508c1f77..b7490c368 100644 --- a/app/javascript/widget/i18n/locale/de.json +++ b/app/javascript/widget/i18n/locale/de.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Senden nicht möglich, versuchen Sie es noch einmal" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Wir sind online", "OFFLINE": "Wir sind momentan abwesend" diff --git a/app/javascript/widget/i18n/locale/el.json b/app/javascript/widget/i18n/locale/el.json index 5ca095053..1cb35a76b 100644 --- a/app/javascript/widget/i18n/locale/el.json +++ b/app/javascript/widget/i18n/locale/el.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Αδυναμία αποστολής! Προσπαθήστε ξανά" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Είμαστε online", "OFFLINE": "Προς το παρόν, είμαστε εκτός" diff --git a/app/javascript/widget/i18n/locale/es.json b/app/javascript/widget/i18n/locale/es.json index 62837335b..9c807ed84 100644 --- a/app/javascript/widget/i18n/locale/es.json +++ b/app/javascript/widget/i18n/locale/es.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "¡No se pudo enviar! intente nuevamente" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Estamos en línea", "OFFLINE": "Estamos ausentes en este momento" diff --git a/app/javascript/widget/i18n/locale/fa.json b/app/javascript/widget/i18n/locale/fa.json index bd1854fc5..982df19ac 100644 --- a/app/javascript/widget/i18n/locale/fa.json +++ b/app/javascript/widget/i18n/locale/fa.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "ارسال نشد، دوباره امتحان کنید" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "ما آنلاین هستیم", "OFFLINE": "در حال حاضر دردسترس نیستیم" diff --git a/app/javascript/widget/i18n/locale/fi.json b/app/javascript/widget/i18n/locale/fi.json index 59b827bac..a5d742303 100644 --- a/app/javascript/widget/i18n/locale/fi.json +++ b/app/javascript/widget/i18n/locale/fi.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Ei voitu lähettää, yritä uudestaan" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Olemme online-tilassa", "OFFLINE": "Olemme tällä hetkellä poissa" diff --git a/app/javascript/widget/i18n/locale/fr.json b/app/javascript/widget/i18n/locale/fr.json index 4552a55cc..ff25bbd45 100644 --- a/app/javascript/widget/i18n/locale/fr.json +++ b/app/javascript/widget/i18n/locale/fr.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Échec de l'envoi, veuillez réessayer" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Nous sommes en ligne", "OFFLINE": "Nous sommes absents pour le moment" diff --git a/app/javascript/widget/i18n/locale/he.json b/app/javascript/widget/i18n/locale/he.json index 8b235cffc..1eaa103db 100644 --- a/app/javascript/widget/i18n/locale/he.json +++ b/app/javascript/widget/i18n/locale/he.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "לא ניתן לשלוח, נסה שוב" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "אנחנו אונליין", "OFFLINE": "אנחנו לא זמינים כרגע" diff --git a/app/javascript/widget/i18n/locale/hi.json b/app/javascript/widget/i18n/locale/hi.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/hi.json +++ b/app/javascript/widget/i18n/locale/hi.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/hr.json b/app/javascript/widget/i18n/locale/hr.json index 7d468f407..37cf7b53e 100644 --- a/app/javascript/widget/i18n/locale/hr.json +++ b/app/javascript/widget/i18n/locale/hr.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nismo uspjeli poslati, pokušajte ponovno" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Online smo", "OFFLINE": "Trenutačno nismo online" diff --git a/app/javascript/widget/i18n/locale/hu.json b/app/javascript/widget/i18n/locale/hu.json index 578639c1e..81c4b6886 100644 --- a/app/javascript/widget/i18n/locale/hu.json +++ b/app/javascript/widget/i18n/locale/hu.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nem sikerült az elküldés, kérjük próbáld később" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Online vagyunk", "OFFLINE": "Jelenleg nem vagyunk elérhetőek" diff --git a/app/javascript/widget/i18n/locale/hy.json b/app/javascript/widget/i18n/locale/hy.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/hy.json +++ b/app/javascript/widget/i18n/locale/hy.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/id.json b/app/javascript/widget/i18n/locale/id.json index 363fff802..e7fbec8ad 100644 --- a/app/javascript/widget/i18n/locale/id.json +++ b/app/javascript/widget/i18n/locale/id.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Tidak dapat mengirim, coba lagi" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Kami sedang online", "OFFLINE": "Kami sedang tidak tersedia saat ini" diff --git a/app/javascript/widget/i18n/locale/is.json b/app/javascript/widget/i18n/locale/is.json index f2d295418..b794493f4 100644 --- a/app/javascript/widget/i18n/locale/is.json +++ b/app/javascript/widget/i18n/locale/is.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Tókst ekki að senda skilaboðin, reyndu aftur" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Við erum tengd", "OFFLINE": "Það er enginn við í augnablikinu" diff --git a/app/javascript/widget/i18n/locale/it.json b/app/javascript/widget/i18n/locale/it.json index 0e58af2de..7e0385220 100644 --- a/app/javascript/widget/i18n/locale/it.json +++ b/app/javascript/widget/i18n/locale/it.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Impossibile inviare, riprova" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Siamo online", "OFFLINE": "Siamo offline in questo momento" diff --git a/app/javascript/widget/i18n/locale/ja.json b/app/javascript/widget/i18n/locale/ja.json index fa97a8d63..17c4beae0 100644 --- a/app/javascript/widget/i18n/locale/ja.json +++ b/app/javascript/widget/i18n/locale/ja.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "送信できませんでした。もう一度お試しください" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "オンライン", "OFFLINE": "留守中" diff --git a/app/javascript/widget/i18n/locale/ka.json b/app/javascript/widget/i18n/locale/ka.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/ka.json +++ b/app/javascript/widget/i18n/locale/ka.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/ko.json b/app/javascript/widget/i18n/locale/ko.json index f1c189070..ef8d15a6e 100644 --- a/app/javascript/widget/i18n/locale/ko.json +++ b/app/javascript/widget/i18n/locale/ko.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "전송하지 못했습니다. 다시 시도해보세요." } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "온라인", "OFFLINE": "부재중" diff --git a/app/javascript/widget/i18n/locale/lt.json b/app/javascript/widget/i18n/locale/lt.json index 98b89da99..fb61b586e 100644 --- a/app/javascript/widget/i18n/locale/lt.json +++ b/app/javascript/widget/i18n/locale/lt.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nepavyko išsiųsti! bandykite dar kartą" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Mes prisijungę", "OFFLINE": "Šiuo metu esame atsijungę" diff --git a/app/javascript/widget/i18n/locale/lv.json b/app/javascript/widget/i18n/locale/lv.json index 19ca42914..5262e87f7 100644 --- a/app/javascript/widget/i18n/locale/lv.json +++ b/app/javascript/widget/i18n/locale/lv.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nevarēja nosūtīt. Lūdzu, mēģiniet vēlreiz" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Mēs esam tiešsaistē", "OFFLINE": "Šobrīd mēs neesam uz vietas" diff --git a/app/javascript/widget/i18n/locale/ml.json b/app/javascript/widget/i18n/locale/ml.json index c1071b35a..c4761e99f 100644 --- a/app/javascript/widget/i18n/locale/ml.json +++ b/app/javascript/widget/i18n/locale/ml.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "അയയ്‌ക്കാനായില്ല, വീണ്ടും ശ്രമിക്കുക" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "ഞങ്ങൾ ഓൺലൈനിലാണ്", "OFFLINE": "ഞങ്ങൾ ഇപ്പോൾ അകലെയാണ്" diff --git a/app/javascript/widget/i18n/locale/ms.json b/app/javascript/widget/i18n/locale/ms.json index 78747073d..4dcbc5f57 100644 --- a/app/javascript/widget/i18n/locale/ms.json +++ b/app/javascript/widget/i18n/locale/ms.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/ne.json b/app/javascript/widget/i18n/locale/ne.json index a6041a758..5201951e5 100644 --- a/app/javascript/widget/i18n/locale/ne.json +++ b/app/javascript/widget/i18n/locale/ne.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "हामी अनलाइन छौं", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/nl.json b/app/javascript/widget/i18n/locale/nl.json index 48f62678d..a33be5f90 100644 --- a/app/javascript/widget/i18n/locale/nl.json +++ b/app/javascript/widget/i18n/locale/nl.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Verzenden mislukt, probeer het opnieuw" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We zijn online", "OFFLINE": "We zijn momenteel afwezig" diff --git a/app/javascript/widget/i18n/locale/no.json b/app/javascript/widget/i18n/locale/no.json index f9d46a712..fa2c5a2b2 100644 --- a/app/javascript/widget/i18n/locale/no.json +++ b/app/javascript/widget/i18n/locale/no.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Kunne ikke sende, prøv på nytt" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Vi er pålogget", "OFFLINE": "Vi er for øyeblikket borte" diff --git a/app/javascript/widget/i18n/locale/pl.json b/app/javascript/widget/i18n/locale/pl.json index 704eb0567..c143e3b00 100644 --- a/app/javascript/widget/i18n/locale/pl.json +++ b/app/javascript/widget/i18n/locale/pl.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nie udało się wysłać! Spróbuj ponownie" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Jesteśmy dostępni", "OFFLINE": "W tej chwili jesteśmy niedostępni" diff --git a/app/javascript/widget/i18n/locale/pt.json b/app/javascript/widget/i18n/locale/pt.json index fd320fbf9..c1fffb681 100644 --- a/app/javascript/widget/i18n/locale/pt.json +++ b/app/javascript/widget/i18n/locale/pt.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Não foi possível enviar, tente novamente" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Estamos online", "OFFLINE": "Estamos ausentes" diff --git a/app/javascript/widget/i18n/locale/pt_BR.json b/app/javascript/widget/i18n/locale/pt_BR.json index c3dde21aa..f979fddca 100644 --- a/app/javascript/widget/i18n/locale/pt_BR.json +++ b/app/javascript/widget/i18n/locale/pt_BR.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Não foi possível enviar, tente novamente" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Estamos conectados", "OFFLINE": "Estamos ausentes no momento" diff --git a/app/javascript/widget/i18n/locale/ro.json b/app/javascript/widget/i18n/locale/ro.json index 35150d67a..e030c50b2 100644 --- a/app/javascript/widget/i18n/locale/ro.json +++ b/app/javascript/widget/i18n/locale/ro.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nu s-a putut trimite! Încearcă din nou" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Suntem online", "OFFLINE": "Suntem plecați în acest moment" diff --git a/app/javascript/widget/i18n/locale/ru.json b/app/javascript/widget/i18n/locale/ru.json index de468106d..734a3a035 100644 --- a/app/javascript/widget/i18n/locale/ru.json +++ b/app/javascript/widget/i18n/locale/ru.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Не удалось отправить! Попробуйте еще раз" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Мы в сети", "OFFLINE": "В данный момент мы отсутствуем" diff --git a/app/javascript/widget/i18n/locale/sh.json b/app/javascript/widget/i18n/locale/sh.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/sh.json +++ b/app/javascript/widget/i18n/locale/sh.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/sk.json b/app/javascript/widget/i18n/locale/sk.json index e61b9a498..60dc03162 100644 --- a/app/javascript/widget/i18n/locale/sk.json +++ b/app/javascript/widget/i18n/locale/sk.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Sme online", "OFFLINE": "Momentálne nie sme k dispozícii" diff --git a/app/javascript/widget/i18n/locale/sl.json b/app/javascript/widget/i18n/locale/sl.json index 365132414..8665e1e1b 100644 --- a/app/javascript/widget/i18n/locale/sl.json +++ b/app/javascript/widget/i18n/locale/sl.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Ni bilo mogoče poslati, poskusite znova" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Smo na voljo", "OFFLINE": "Trenutno nismo na voljo" diff --git a/app/javascript/widget/i18n/locale/sq.json b/app/javascript/widget/i18n/locale/sq.json index 994317343..34fe645e9 100644 --- a/app/javascript/widget/i18n/locale/sq.json +++ b/app/javascript/widget/i18n/locale/sq.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Nuk mund të dërgohej, provo sërish" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Ne jemi online", "OFFLINE": "Nuk jemi online për momentin" diff --git a/app/javascript/widget/i18n/locale/sr.json b/app/javascript/widget/i18n/locale/sr.json index 8ac036a95..039982ee6 100644 --- a/app/javascript/widget/i18n/locale/sr.json +++ b/app/javascript/widget/i18n/locale/sr.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Slanje neuspešno, pokušajte ponovo" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Dostupni smo", "OFFLINE": "Trenutno nismo dostupni" diff --git a/app/javascript/widget/i18n/locale/sv.json b/app/javascript/widget/i18n/locale/sv.json index 91e6c682f..d65e39358 100644 --- a/app/javascript/widget/i18n/locale/sv.json +++ b/app/javascript/widget/i18n/locale/sv.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Kunde inte skicka, försök igen" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Vi är online", "OFFLINE": "Vi är borta för tillfället" diff --git a/app/javascript/widget/i18n/locale/ta.json b/app/javascript/widget/i18n/locale/ta.json index 5cb9152f9..27e069ea7 100644 --- a/app/javascript/widget/i18n/locale/ta.json +++ b/app/javascript/widget/i18n/locale/ta.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/th.json b/app/javascript/widget/i18n/locale/th.json index f562571fe..a1e39c2f5 100644 --- a/app/javascript/widget/i18n/locale/th.json +++ b/app/javascript/widget/i18n/locale/th.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "ไม่สามารถส่งได้ ลองอีกครั้ง" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "เรากำลังออนไลน์", "OFFLINE": "เราไม่อยู่" diff --git a/app/javascript/widget/i18n/locale/tl.json b/app/javascript/widget/i18n/locale/tl.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/tl.json +++ b/app/javascript/widget/i18n/locale/tl.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/tr.json b/app/javascript/widget/i18n/locale/tr.json index be37c488b..b346504fe 100644 --- a/app/javascript/widget/i18n/locale/tr.json +++ b/app/javascript/widget/i18n/locale/tr.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Gönderilemedi, tekrar deneyin" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Çevrimiçi", "OFFLINE": "Şu an operatörlerimiz müsait değil" diff --git a/app/javascript/widget/i18n/locale/uk.json b/app/javascript/widget/i18n/locale/uk.json index 679761f6a..aed413394 100644 --- a/app/javascript/widget/i18n/locale/uk.json +++ b/app/javascript/widget/i18n/locale/uk.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Не вдалося надіслати, спробуйте ще раз" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Ми онлайн", "OFFLINE": "Нас наразі немає" diff --git a/app/javascript/widget/i18n/locale/ur.json b/app/javascript/widget/i18n/locale/ur.json index 8e3c7687c..3869ab5d6 100644 --- a/app/javascript/widget/i18n/locale/ur.json +++ b/app/javascript/widget/i18n/locale/ur.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/ur_IN.json b/app/javascript/widget/i18n/locale/ur_IN.json index 279ead47e..4f244c566 100644 --- a/app/javascript/widget/i18n/locale/ur_IN.json +++ b/app/javascript/widget/i18n/locale/ur_IN.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Couldn't send, try again" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "We are online", "OFFLINE": "We are away at the moment" diff --git a/app/javascript/widget/i18n/locale/vi.json b/app/javascript/widget/i18n/locale/vi.json index 952a16f1f..d12dbc8db 100644 --- a/app/javascript/widget/i18n/locale/vi.json +++ b/app/javascript/widget/i18n/locale/vi.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "Không thể gửi, xin thử lại" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "Chúng tôi đang trực tuyến", "OFFLINE": "Hiện tại chúng tôi đang bận chút" diff --git a/app/javascript/widget/i18n/locale/zh_CN.json b/app/javascript/widget/i18n/locale/zh_CN.json index f7d27c267..dd834af87 100644 --- a/app/javascript/widget/i18n/locale/zh_CN.json +++ b/app/javascript/widget/i18n/locale/zh_CN.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "无法发送,请重试" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "在线", "OFFLINE": "当前已离线" diff --git a/app/javascript/widget/i18n/locale/zh_TW.json b/app/javascript/widget/i18n/locale/zh_TW.json index 85f08a135..3f46d258f 100644 --- a/app/javascript/widget/i18n/locale/zh_TW.json +++ b/app/javascript/widget/i18n/locale/zh_TW.json @@ -12,6 +12,11 @@ "ERROR_MESSAGE": "無法傳送!請重新嘗試。" } }, + "THUMBNAIL": { + "AUTHOR": { + "NOT_AVAILABLE": "Not available" + } + }, "TEAM_AVAILABILITY": { "ONLINE": "我們在線上", "OFFLINE": "我們目前不在線上" From b809cd2f15391cac13625471fd4e17f61dc204a1 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Thu, 14 Aug 2025 19:07:20 +0530 Subject: [PATCH 005/132] chore: Optimize contact page for smaller displays (#12183) Co-authored-by: Muhsin Keloth --- .../Contacts/ContactsDetailsLayout.vue | 74 +++++++++++- .../Contacts/ContactsHeader/ContactHeader.vue | 111 +++++++++--------- .../ContactListHeaderWrapper.vue | 25 ++-- .../components/ContactSortMenu.vue | 2 +- .../Contacts/ContactsListLayout.vue | 5 +- .../ConversationCard/CardMessagePreview.vue | 1 + .../CardMessagePreviewWithMeta.vue | 1 + .../components-next/breadcrumb/Breadcrumb.vue | 16 ++- .../components-next/filter/ConditionRow.vue | 1 + .../components-next/filter/ContactsFilter.vue | 6 +- 10 files changed, 162 insertions(+), 80 deletions(-) diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue b/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue index bb4327816..51d306311 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsDetailsLayout.vue @@ -1,7 +1,8 @@ diff --git a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue index 30717c036..b3590b51e 100644 --- a/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue +++ b/app/javascript/dashboard/components-next/Contacts/ContactsHeader/ContactHeader.vue @@ -34,13 +34,13 @@ const emit = defineEmits([