From 88ac20efb5b8f1ae0f255e95112a4ef339270600 Mon Sep 17 00:00:00 2001 From: Pranav Raj S Date: Sat, 16 Nov 2019 14:48:38 +0530 Subject: [PATCH] [Feature] Detect browser on conversation initiation (#208) --- Gemfile | 1 + Gemfile.lock | 2 ++ .../api/v1/widget/messages_controller.rb | 15 ++++++++++++++- ...4_add_additional_attributes_to_conversation.rb | 5 +++++ db/schema.rb | 4 +++- 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20191116073924_add_additional_attributes_to_conversation.rb diff --git a/Gemfile b/Gemfile index 9dc837f09..71fec6950 100644 --- a/Gemfile +++ b/Gemfile @@ -12,6 +12,7 @@ gem 'therubyracer', platforms: :ruby ##-- rails helper gems --## gem 'acts-as-taggable-on', git: 'https://github.com/mbleigh/acts-as-taggable-on' gem 'attr_extras' +gem 'browser' gem 'hashie' gem 'jbuilder', '~> 2.5' gem 'kaminari' diff --git a/Gemfile.lock b/Gemfile.lock index 4cde40cd5..b7ee0b3e4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -158,6 +158,7 @@ GEM bootsnap (1.4.5) msgpack (~> 1.0) brakeman (4.7.0) + browser (2.7.0) buftok (0.2.0) builder (3.2.3) byebug (11.0.1) @@ -454,6 +455,7 @@ DEPENDENCIES attr_extras bootsnap brakeman + browser byebug carrierwave-aws chargebee (~> 2) diff --git a/app/controllers/api/v1/widget/messages_controller.rb b/app/controllers/api/v1/widget/messages_controller.rb index 388ad3672..e8fe9e813 100644 --- a/app/controllers/api/v1/widget/messages_controller.rb +++ b/app/controllers/api/v1/widget/messages_controller.rb @@ -36,7 +36,20 @@ class Api::V1::Widget::MessagesController < ActionController::Base { account_id: inbox.account_id, inbox_id: inbox.id, - contact_id: cookie_params[:contact_id] + contact_id: cookie_params[:contact_id], + additional_attributes: { + browser: browser_params + } + } + end + + def browser_params + { + browser_name: browser.name, + browser_version: browser.full_version, + device_name: browser.device.name, + platform_name: browser.platform.name, + platform_version: browser.platform.version } end diff --git a/db/migrate/20191116073924_add_additional_attributes_to_conversation.rb b/db/migrate/20191116073924_add_additional_attributes_to_conversation.rb new file mode 100644 index 000000000..acec43e67 --- /dev/null +++ b/db/migrate/20191116073924_add_additional_attributes_to_conversation.rb @@ -0,0 +1,5 @@ +class AddAdditionalAttributesToConversation < ActiveRecord::Migration[6.1] + def change + add_column :conversations, :additional_attributes, :jsonb + end +end diff --git a/db/schema.rb b/db/schema.rb index 58ae4ba04..e1c6bad99 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,8 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2019_10_27_054756) do +ActiveRecord::Schema.define(version: 2019_11_16_073924) do + # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -101,6 +102,7 @@ ActiveRecord::Schema.define(version: 2019_10_27_054756) do t.datetime "user_last_seen_at" t.datetime "agent_last_seen_at" t.boolean "locked", default: false + t.jsonb "additional_attributes" t.index ["account_id", "display_id"], name: "index_conversations_on_account_id_and_display_id", unique: true t.index ["account_id"], name: "index_conversations_on_account_id" end