chat_status_customer.rb 916 B

1234567891011121314151617181920212223242526272829303132333435
  1. class Sessions::Event::ChatStatusCustomer < Sessions::Event::ChatBase
  2. def run
  3. return super if super
  4. return if !check_chat_exists
  5. # check if it's a chat sessin reconnect
  6. session_id = nil
  7. if @payload['data']['session_id']
  8. session_id = @payload['data']['session_id']
  9. # update recipients of existing sessions
  10. chat_session = Chat::Session.find_by(session_id: session_id)
  11. chat_session.add_recipient(@client_id, true)
  12. # sent url update to agent
  13. if @payload['data']['url']
  14. message = {
  15. event: 'chat_session_notice',
  16. data: {
  17. session_id: chat_session.session_id,
  18. message: @payload['data']['url'],
  19. },
  20. }
  21. chat_session.send_to_recipients(message, @client_id)
  22. end
  23. end
  24. {
  25. event: 'chat_status_customer',
  26. data: current_chat.customer_state(session_id),
  27. }
  28. end
  29. end