12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- class Sessions::Event::ChatStatusCustomer < Sessions::Event::ChatBase
- def run
- return super if super
- return if !check_chat_exists
- return if blocked_ip?
- return if blocked_country?
- return if blocked_origin?
-
- session_id = nil
- if @payload['data']['session_id']
- session_id = @payload['data']['session_id']
-
- chat_session = Chat::Session.find_by(session_id: session_id)
- if chat_session
- chat_session.add_recipient(@client_id, true)
-
- if @payload['data']['url']
- message = {
- event: 'chat_session_notice',
- data: {
- session_id: chat_session.session_id,
- message: @payload['data']['url'],
- },
- }
- chat_session.send_to_recipients(message, @client_id)
- end
- end
- end
- {
- event: 'chat_status_customer',
- data: current_chat.customer_state(session_id),
- }
- end
- def blocked_ip?
- return false if !current_chat.blocked_ip?(remote_ip)
- send_unavailable
- true
- end
- def blocked_country?
- return false if !current_chat.blocked_country?(remote_ip)
- send_unavailable
- true
- end
- def blocked_origin?
- return false if current_chat.website_whitelisted?(origin)
- send_unavailable
- true
- end
- def send_unavailable
- error = {
- event: 'chat_error',
- data: {
- state: 'chat_unavailable',
- },
- }
- Sessions.send(@client_id, error)
- end
- end
|