2019-11-30 13:39:55 +00:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: channel_web_widgets
|
|
|
|
#
|
2021-02-15 18:44:13 +00:00
|
|
|
# id :integer not null, primary key
|
|
|
|
# feature_flags :integer default(3), not null
|
2021-06-15 14:39:17 +00:00
|
|
|
# hmac_mandatory :boolean default(FALSE)
|
2021-02-15 18:44:13 +00:00
|
|
|
# hmac_token :string
|
|
|
|
# pre_chat_form_enabled :boolean default(FALSE)
|
|
|
|
# pre_chat_form_options :jsonb
|
|
|
|
# reply_time :integer default("in_a_few_minutes")
|
|
|
|
# website_token :string
|
|
|
|
# website_url :string
|
|
|
|
# welcome_tagline :string
|
|
|
|
# welcome_title :string
|
|
|
|
# widget_color :string default("#1f93ff")
|
|
|
|
# created_at :datetime not null
|
|
|
|
# updated_at :datetime not null
|
|
|
|
# account_id :integer
|
2019-11-30 13:39:55 +00:00
|
|
|
#
|
|
|
|
# Indexes
|
|
|
|
#
|
2021-01-17 17:14:03 +00:00
|
|
|
# index_channel_web_widgets_on_hmac_token (hmac_token) UNIQUE
|
2019-11-30 13:39:55 +00:00
|
|
|
# index_channel_web_widgets_on_website_token (website_token) UNIQUE
|
|
|
|
#
|
|
|
|
|
2020-01-09 07:36:40 +00:00
|
|
|
class Channel::WebWidget < ApplicationRecord
|
2021-09-10 20:01:17 +00:00
|
|
|
include Channelable
|
2020-08-05 12:16:17 +00:00
|
|
|
include FlagShihTzu
|
2021-09-10 20:01:17 +00:00
|
|
|
|
2020-01-09 07:36:40 +00:00
|
|
|
self.table_name = 'channel_web_widgets'
|
2021-10-08 07:23:24 +00:00
|
|
|
EDITABLE_ATTRS = [:website_url, :widget_color, :welcome_title, :welcome_tagline, :reply_time, :pre_chat_form_enabled, :hmac_mandatory,
|
2021-09-09 18:30:52 +00:00
|
|
|
{ pre_chat_form_options: [:pre_chat_message, :require_email] },
|
|
|
|
{ selected_feature_flags: [] }].freeze
|
2019-10-20 10:49:12 +00:00
|
|
|
|
2020-01-09 07:36:40 +00:00
|
|
|
validates :website_url, presence: true
|
|
|
|
validates :widget_color, presence: true
|
2019-10-29 07:20:54 +00:00
|
|
|
|
2020-01-09 07:36:40 +00:00
|
|
|
has_secure_token :website_token
|
2021-01-17 17:14:03 +00:00
|
|
|
has_secure_token :hmac_token
|
|
|
|
|
2020-08-05 12:16:17 +00:00
|
|
|
has_flags 1 => :attachments,
|
|
|
|
2 => :emoji_picker,
|
2021-07-28 14:06:51 +00:00
|
|
|
:column => 'feature_flags',
|
|
|
|
:check_for_column => false
|
|
|
|
|
2020-10-18 18:02:22 +00:00
|
|
|
enum reply_time: { in_a_few_minutes: 0, in_a_few_hours: 1, in_a_day: 2 }
|
2019-10-29 07:20:54 +00:00
|
|
|
|
2020-09-04 13:43:47 +00:00
|
|
|
def name
|
|
|
|
'Website'
|
|
|
|
end
|
|
|
|
|
2020-03-16 07:02:34 +00:00
|
|
|
def web_widget_script
|
2020-12-04 19:52:16 +00:00
|
|
|
"
|
|
|
|
<script>
|
2020-03-16 07:02:34 +00:00
|
|
|
(function(d,t) {
|
2020-12-04 19:52:16 +00:00
|
|
|
var BASE_URL=\"#{ENV.fetch('FRONTEND_URL', '')}\";
|
2020-03-16 07:02:34 +00:00
|
|
|
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
2020-12-04 19:52:16 +00:00
|
|
|
g.src=BASE_URL+\"/packs/js/sdk.js\";
|
2021-08-26 14:21:10 +00:00
|
|
|
g.defer = true;
|
|
|
|
g.async = true;
|
2020-03-16 07:02:34 +00:00
|
|
|
s.parentNode.insertBefore(g,s);
|
|
|
|
g.onload=function(){
|
|
|
|
window.chatwootSDK.run({
|
|
|
|
websiteToken: '#{website_token}',
|
|
|
|
baseUrl: BASE_URL
|
|
|
|
})
|
|
|
|
}
|
|
|
|
})(document,\"script\");
|
2020-12-04 19:52:16 +00:00
|
|
|
</script>
|
|
|
|
"
|
2020-03-16 07:02:34 +00:00
|
|
|
end
|
|
|
|
|
2020-12-13 16:53:56 +00:00
|
|
|
def create_contact_inbox(additional_attributes = {})
|
2020-01-09 07:36:40 +00:00
|
|
|
ActiveRecord::Base.transaction do
|
2020-12-13 16:53:56 +00:00
|
|
|
contact = inbox.account.contacts.create!(
|
|
|
|
name: ::Haikunator.haikunate(1000),
|
|
|
|
additional_attributes: additional_attributes
|
|
|
|
)
|
2020-04-10 11:12:37 +00:00
|
|
|
contact_inbox = ::ContactInbox.create!(
|
2020-01-09 07:36:40 +00:00
|
|
|
contact_id: contact.id,
|
|
|
|
inbox_id: inbox.id,
|
|
|
|
source_id: SecureRandom.uuid
|
|
|
|
)
|
2020-04-10 11:12:37 +00:00
|
|
|
contact_inbox
|
2020-01-09 07:36:40 +00:00
|
|
|
rescue StandardError => e
|
2020-05-14 17:21:07 +00:00
|
|
|
Rails.logger.info e
|
2019-10-29 07:20:54 +00:00
|
|
|
end
|
2019-10-20 10:49:12 +00:00
|
|
|
end
|
|
|
|
end
|