12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- class Sessions::Event::ChatSessionInit < Sessions::Event::ChatBase
- def run
- return super if super
- return if !check_chat_exists
-
- geo_ip = nil
- if remote_ip
- geo_ip = Service::GeoIp.location(remote_ip)
- end
-
- dns_name = nil
- if remote_ip
- begin
- dns = Resolv::DNS.new
- dns.timeouts = 3
- result = dns.getname remote_ip
- if result
- dns_name = result.to_s
- end
- rescue => e
- Rails.logger.error e
- end
- end
-
- chat_session = Chat::Session.create(
- chat_id: @payload['data']['chat_id'],
- name: '',
- state: 'waiting',
- preferences: {
- url: @payload['data']['url'],
- participants: [@client_id],
- remote_ip: remote_ip,
- geo_ip: geo_ip,
- dns_name: dns_name,
- },
- )
-
- Chat.broadcast_agent_state_update([chat_session.chat_id])
-
- {
- event: 'chat_session_queue',
- data: {
- state: 'queue',
- position: Chat.waiting_chat_count([chat_session.chat_id]),
- session_id: chat_session.session_id,
- },
- }
- end
- end
|