12345678910111213141516171819202122232425262728293031323334353637383940 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class Sessions::Event::ChatStatusAgent < Sessions::Event::ChatBase
- =begin
- a agent requests a the current state of all chat sessions
- payload
- {
- event: 'chat_status_agent',
- data: {},
- }
- return is sent as message back to peer
- =end
- def run
- return super if super
- # check if user has permissions
- return if !permission_check('chat.agent', 'chat')
- # renew timestamps
- state = Chat::Agent.state(@session['id'])
- Chat::Agent.state(@session['id'], state)
- # update recipients of existing sessions
- Chat::Session.where(state: 'running', user_id: @session['id']).reorder(created_at: :asc).each do |chat_session|
- chat_session.add_recipient(@client_id, true)
- end
- {
- event: 'chat_status_agent',
- data: Chat.agent_state_with_sessions(@session['id']),
- }
- end
- end
|