Class: Legion::Extensions::MicrosoftTeams::Absorbers::Meeting

Inherits:
Absorbers::Base
  • Object
show all
Defined in:
lib/legion/extensions/microsoft_teams/absorbers/meeting.rb

Instance Method Summary collapse

Instance Method Details

#absorb(url: nil, content: nil, metadata: {}, context: {}) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/legion/extensions/microsoft_teams/absorbers/meeting.rb', line 13

def absorb(url: nil, content: nil, metadata: {}, context: {}) # rubocop:disable Lint/UnusedMethodArgument
  report_progress(message: 'resolving meeting from link')
  meeting = resolve_meeting(url)
  return { success: false, error: 'could not resolve meeting' } unless meeting

  subject    = meeting['subject'] || meeting[:subject] || 'untitled meeting'
  meeting_id = meeting['id'] || meeting[:id]
  return { success: false, error: 'meeting has no id' } if meeting_id.nil? || meeting_id.to_s.empty?

  results = { meeting_id: meeting_id, subject: subject, chunks: 0 }

  ingest_transcript(meeting_id, subject, results)
  ingest_ai_insights(meeting_id, subject, results)
  ingest_participants(meeting, subject, results)

  report_progress(message: 'done', percent: 100)
  results.merge(success: true)
rescue StandardError => e
  log.error("Meeting absorber failed: #{e.message}")
  { success: false, error: e.message }
end