Class: Legion::Gaia::Channels::Teams::ConversationStore

Inherits:
Object
  • Object
show all
Defined in:
lib/legion/gaia/channels/teams/conversation_store.rb

Defined Under Namespace

Classes: Reference

Instance Method Summary collapse

Constructor Details

#initializeConversationStore

Returns a new instance of ConversationStore.



16
17
18
19
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 16

def initialize
  @references = {}
  @mutex = Mutex.new
end

Instance Method Details

#clearObject



60
61
62
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 60

def clear
  @mutex.synchronize { @references.clear }
end

#conversationsObject



52
53
54
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 52

def conversations
  @mutex.synchronize { @references.keys }
end

#lookup(conversation_id) ⇒ Object



44
45
46
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 44

def lookup(conversation_id)
  @mutex.synchronize { @references[conversation_id] }
end

#remove(conversation_id) ⇒ Object



48
49
50
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 48

def remove(conversation_id)
  @mutex.synchronize { @references.delete(conversation_id) }
end

#sizeObject



56
57
58
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 56

def size
  @mutex.synchronize { @references.size }
end

#store(conversation_id:, service_url:, tenant_id: nil, bot_id: nil, activity_id: nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 21

def store(conversation_id:, service_url:, tenant_id: nil, bot_id: nil, activity_id: nil)
  @mutex.synchronize do
    @references[conversation_id] = Reference.new(
      conversation_id: conversation_id,
      service_url: service_url,
      tenant_id: tenant_id,
      bot_id: bot_id,
      last_activity_id: activity_id
    )
  end
end

#store_from_activity(activity) ⇒ Object



33
34
35
36
37
38
39
40
41
42
# File 'lib/legion/gaia/channels/teams/conversation_store.rb', line 33

def store_from_activity(activity)
  conversation = activity['conversation'] || activity[:conversation] || {}
  store(
    conversation_id: conversation['id'] || conversation[:id],
    service_url: activity['serviceUrl'] || activity[:serviceUrl],
    tenant_id: conversation['tenantId'] || conversation[:tenantId],
    bot_id: (activity['recipient'] || activity[:recipient] || {})['id'],
    activity_id: activity['id'] || activity[:id]
  )
end