feat: Add phone_number & custom_attributes in create conversation end point (#4421)
This commit is contained in:
@@ -39,7 +39,8 @@ class Api::V1::Widget::BaseController < ApplicationController
|
|||||||
browser: browser_params,
|
browser: browser_params,
|
||||||
referer: permitted_params[:message][:referer_url],
|
referer: permitted_params[:message][:referer_url],
|
||||||
initiated_at: timestamp_params
|
initiated_at: timestamp_params
|
||||||
}
|
},
|
||||||
|
custom_attributes: permitted_params[:custom_attributes].presence || {}
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -52,16 +53,33 @@ class Api::V1::Widget::BaseController < ApplicationController
|
|||||||
mergee_contact: @contact
|
mergee_contact: @contact
|
||||||
).perform
|
).perform
|
||||||
else
|
else
|
||||||
@contact.update!(email: email, name: contact_name)
|
@contact.update!(email: email)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_contact_phone_number(phone_number)
|
||||||
|
contact_with_phone_number = @current_account.contacts.find_by(phone_number: phone_number)
|
||||||
|
if contact_with_phone_number
|
||||||
|
@contact = ::ContactMergeAction.new(
|
||||||
|
account: @current_account,
|
||||||
|
base_contact: contact_with_phone_number,
|
||||||
|
mergee_contact: @contact
|
||||||
|
).perform
|
||||||
|
else
|
||||||
|
@contact.update!(phone_number: phone_number)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def contact_email
|
def contact_email
|
||||||
permitted_params[:contact][:email].downcase
|
permitted_params[:contact][:email].downcase if permitted_params[:contact].present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def contact_name
|
def contact_name
|
||||||
params[:contact][:name] || contact_email.split('@')[0]
|
params[:contact][:name] || contact_email.split('@')[0] if contact_email.present?
|
||||||
|
end
|
||||||
|
|
||||||
|
def contact_phone_number
|
||||||
|
params[:contact][:phone_number]
|
||||||
end
|
end
|
||||||
|
|
||||||
def browser_params
|
def browser_params
|
||||||
|
|||||||
@@ -7,12 +7,18 @@ class Api::V1::Widget::ConversationsController < Api::V1::Widget::BaseController
|
|||||||
|
|
||||||
def create
|
def create
|
||||||
ActiveRecord::Base.transaction do
|
ActiveRecord::Base.transaction do
|
||||||
update_contact(contact_email) if @contact.email.blank? && contact_email.present?
|
process_update_contact
|
||||||
@conversation = create_conversation
|
@conversation = create_conversation
|
||||||
conversation.messages.create(message_params)
|
conversation.messages.create(message_params)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def process_update_contact
|
||||||
|
update_contact(contact_email) if @contact.email.blank? && contact_email.present?
|
||||||
|
update_contact_phone_number(contact_phone_number) if @contact.phone_number.blank? && contact_phone_number.present?
|
||||||
|
@contact.update!(name: contact_name) if contact_name.present?
|
||||||
|
end
|
||||||
|
|
||||||
def update_last_seen
|
def update_last_seen
|
||||||
head :ok && return if conversation.nil?
|
head :ok && return if conversation.nil?
|
||||||
|
|
||||||
@@ -63,6 +69,7 @@ class Api::V1::Widget::ConversationsController < Api::V1::Widget::BaseController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def permitted_params
|
def permitted_params
|
||||||
params.permit(:id, :typing_status, :website_token, :email, contact: [:name, :email], message: [:content, :referer_url, :timestamp, :echo_id])
|
params.permit(:id, :typing_status, :website_token, :email, contact: [:name, :email], message: [:content, :referer_url, :timestamp, :echo_id],
|
||||||
|
custom_attributes: {})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,12 +10,14 @@ const createConversation = params => {
|
|||||||
contact: {
|
contact: {
|
||||||
name: params.fullName,
|
name: params.fullName,
|
||||||
email: params.emailAddress,
|
email: params.emailAddress,
|
||||||
|
phone_number: params.phoneNumber,
|
||||||
},
|
},
|
||||||
message: {
|
message: {
|
||||||
content: params.message,
|
content: params.message,
|
||||||
timestamp: new Date().toString(),
|
timestamp: new Date().toString(),
|
||||||
referer_url: referrerURL,
|
referer_url: referrerURL,
|
||||||
},
|
},
|
||||||
|
custom_attributes: params.customAttributes,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user