mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	- Add agent bots management UI in settings with avatar upload - Enable agent bot configuration for all inbox types - Implement proper CRUD operations with webhook URL support - Fix agent bots menu item visibility in settings sidebar - Remove all CSML-related code and features - Add migration to convert existing CSML bots to webhook bots - Simplify agent bot model and services to focus on webhook bots - Improve UI to differentiate between system bots and account bots ## Video https://github.com/user-attachments/assets/3f4edbb7-b758-468c-8dd6-a9537b983f7d --------- Co-authored-by: iamsivin <iamsivin@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Pranav <pranav@chatwoot.com>
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# == Schema Information
 | 
						|
#
 | 
						|
# Table name: agent_bots
 | 
						|
#
 | 
						|
#  id           :bigint           not null, primary key
 | 
						|
#  bot_config   :jsonb
 | 
						|
#  bot_type     :integer          default("webhook")
 | 
						|
#  description  :string
 | 
						|
#  name         :string
 | 
						|
#  outgoing_url :string
 | 
						|
#  created_at   :datetime         not null
 | 
						|
#  updated_at   :datetime         not null
 | 
						|
#  account_id   :bigint
 | 
						|
#
 | 
						|
# Indexes
 | 
						|
#
 | 
						|
#  index_agent_bots_on_account_id  (account_id)
 | 
						|
#
 | 
						|
 | 
						|
class AgentBot < ApplicationRecord
 | 
						|
  include AccessTokenable
 | 
						|
  include Avatarable
 | 
						|
 | 
						|
  has_many :agent_bot_inboxes, dependent: :destroy_async
 | 
						|
  has_many :inboxes, through: :agent_bot_inboxes
 | 
						|
  has_many :messages, as: :sender, dependent: :nullify
 | 
						|
  belongs_to :account, optional: true
 | 
						|
  enum bot_type: { webhook: 0 }
 | 
						|
 | 
						|
  validates :outgoing_url, length: { maximum: Limits::URL_LENGTH_LIMIT }
 | 
						|
 | 
						|
  def available_name
 | 
						|
    name
 | 
						|
  end
 | 
						|
 | 
						|
  def push_event_data(inbox = nil)
 | 
						|
    {
 | 
						|
      id: id,
 | 
						|
      name: name,
 | 
						|
      avatar_url: avatar_url || inbox&.avatar_url,
 | 
						|
      type: 'agent_bot'
 | 
						|
    }
 | 
						|
  end
 | 
						|
 | 
						|
  def webhook_data
 | 
						|
    {
 | 
						|
      id: id,
 | 
						|
      name: name,
 | 
						|
      type: 'agent_bot'
 | 
						|
    }
 | 
						|
  end
 | 
						|
 | 
						|
  def system_bot?
 | 
						|
    account.nil?
 | 
						|
  end
 | 
						|
end
 |