# == 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