Class: ConversationContext

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
lib/generators/active_matrix/install/templates/conversation_context.rb

Constant Summary collapse

MAX_HISTORY_SIZE =

Configuration

20

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cleanup_stale!Object



69
70
71
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 69

def self.cleanup_stale!
  stale.destroy_all
end

Instance Method Details

#add_message(message_data) ⇒ Object

Add a message to the history



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 19

def add_message(message_data)
  messages = message_history['messages'] || []

  # Add new message
  messages << {
    'event_id' => message_data[:event_id],
    'sender' => message_data[:sender],
    'content' => message_data[:content],
    'timestamp' => message_data[:timestamp] || Time.current.to_i
  }

  # Keep only recent messages
  messages = messages.last(MAX_HISTORY_SIZE)

  # Update record
  self.message_history = { 'messages' => messages }
  self.last_message_at = Time.current
  self.message_count = messages.size
  save!

  # Update cache
  write_to_cache
end

#cache_keyObject

Cache integration



57
58
59
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 57

def cache_key
  "conversation/#{matrix_agent_id}/#{user_id}/#{room_id}"
end

#prune_history!Object

Clear old messages but keep context



50
51
52
53
54
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 50

def prune_history!
  messages = message_history['messages'] || []
  self.message_history = { 'messages' => messages.last(5) }
  save!
end

#recent_messages(limit = 10) ⇒ Object

Get recent messages



44
45
46
47
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 44

def recent_messages(limit = 10)
  messages = message_history['messages'] || []
  messages.last(limit)
end

#write_to_cacheObject



61
62
63
64
65
66
67
# File 'lib/generators/active_matrix/install/templates/conversation_context.rb', line 61

def write_to_cache
  Rails.cache.write(cache_key, {
                      context: context,
                      recent_messages: recent_messages,
                      last_message_at: last_message_at
                    }, expires_in: 1.hour)
end