2020-03-05 20:13:12 +00:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: agent_bots
|
|
|
|
#
|
2021-06-01 17:04:25 +00:00
|
|
|
# id :bigint not null, primary key
|
2022-06-23 13:47:46 +00:00
|
|
|
# bot_config :jsonb
|
2022-07-11 18:12:48 +00:00
|
|
|
# bot_type :integer default("webhook")
|
2021-06-01 17:04:25 +00:00
|
|
|
# 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)
|
|
|
|
#
|
2020-03-05 20:13:12 +00:00
|
|
|
|
|
|
|
class AgentBot < ApplicationRecord
|
2020-03-10 18:32:15 +00:00
|
|
|
include AccessTokenable
|
2020-03-05 20:13:12 +00:00
|
|
|
include Avatarable
|
2020-03-10 18:32:15 +00:00
|
|
|
|
2021-11-18 05:02:29 +00:00
|
|
|
has_many :agent_bot_inboxes, dependent: :destroy_async
|
2020-03-05 20:13:12 +00:00
|
|
|
has_many :inboxes, through: :agent_bot_inboxes
|
2020-06-27 16:04:53 +00:00
|
|
|
has_many :messages, as: :sender, dependent: :restrict_with_exception
|
2022-03-03 07:32:02 +00:00
|
|
|
belongs_to :account, optional: true
|
2022-06-23 13:47:46 +00:00
|
|
|
enum bot_type: { webhook: 0, csml: 1 }
|
|
|
|
|
|
|
|
validate :validate_agent_bot_config
|
2020-05-03 06:47:27 +00:00
|
|
|
|
2020-09-16 06:16:07 +00:00
|
|
|
def available_name
|
|
|
|
name
|
|
|
|
end
|
|
|
|
|
2020-06-27 16:04:53 +00:00
|
|
|
def push_event_data(inbox = nil)
|
2020-05-03 06:47:27 +00:00
|
|
|
{
|
2020-05-05 18:40:56 +00:00
|
|
|
id: id,
|
2020-05-03 06:47:27 +00:00
|
|
|
name: name,
|
2020-06-27 16:04:53 +00:00
|
|
|
avatar_url: avatar_url || inbox&.avatar_url,
|
2020-05-03 06:47:27 +00:00
|
|
|
type: 'agent_bot'
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
def webhook_data
|
|
|
|
{
|
|
|
|
id: id,
|
|
|
|
name: name,
|
|
|
|
type: 'agent_bot'
|
|
|
|
}
|
|
|
|
end
|
2022-06-23 13:47:46 +00:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def validate_agent_bot_config
|
|
|
|
errors.add(:bot_config, 'Invalid Bot Configuration') unless AgentBots::ValidateBotService.new(agent_bot: self).perform
|
|
|
|
end
|
2020-03-05 20:13:12 +00:00
|
|
|
end
|