Module: Legion::Extensions::MicrosoftTeams::Runners::Meetings
- Includes:
- Helpers::Lex, Helpers::Client
- Included in:
- Client
- Defined in:
- lib/legion/extensions/microsoft_teams/runners/meetings.rb
Class Method Summary
collapse
Instance Method Summary
collapse
-
#create_meeting(subject:, start_time:, end_time:, user_id: 'me') ⇒ Object
-
#delete_meeting(meeting_id:, user_id: 'me') ⇒ Object
-
#get_attendance_report(meeting_id:, report_id:, user_id: 'me') ⇒ Object
-
#get_meeting(meeting_id:, user_id: 'me') ⇒ Object
-
#get_meeting_by_join_url(join_url:, user_id: 'me') ⇒ Object
-
#list_attendance_reports(meeting_id:, user_id: 'me') ⇒ Object
-
#list_meetings(user_id: 'me') ⇒ Object
-
#resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me') ⇒ Object
-
#update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil) ⇒ Object
#bot_connection, #graph_connection, #oauth_connection, #user_path
Class Method Details
.trigger_words ⇒ Object
12
13
14
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 12
def self.trigger_words
%w[meeting meetings calendar schedule scheduled attendance attendee]
end
|
Instance Method Details
#create_meeting(subject:, start_time:, end_time:, user_id: 'me') ⇒ Object
57
58
59
60
61
62
63
64
65
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 57
def create_meeting(subject:, start_time:, end_time:, user_id: 'me', **)
payload = {
subject: subject,
startDateTime: start_time,
endDateTime: end_time
}
response = graph_connection(**).post("#{user_path(user_id)}/onlineMeetings", payload)
{ result: response.body }
end
|
#delete_meeting(meeting_id:, user_id: 'me') ⇒ Object
94
95
96
97
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 94
def delete_meeting(meeting_id:, user_id: 'me', **)
response = graph_connection(**).delete("#{user_path(user_id)}/onlineMeetings/#{meeting_id}")
{ result: response.body }
end
|
#get_attendance_report(meeting_id:, report_id:, user_id: 'me') ⇒ Object
141
142
143
144
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 141
def get_attendance_report(meeting_id:, report_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}/attendanceReports/#{report_id}")
{ result: response.body }
end
|
#get_meeting(meeting_id:, user_id: 'me') ⇒ Object
38
39
40
41
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 38
def get_meeting(meeting_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}")
{ result: response.body }
end
|
#get_meeting_by_join_url(join_url:, user_id: 'me') ⇒ Object
110
111
112
113
114
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 110
def get_meeting_by_join_url(join_url:, user_id: 'me', **)
params = { '$filter' => "joinWebUrl eq '#{join_url.gsub("'", "''")}'" }
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings", params)
{ result: response.body }
end
|
#list_attendance_reports(meeting_id:, user_id: 'me') ⇒ Object
125
126
127
128
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 125
def list_attendance_reports(meeting_id:, user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings/#{meeting_id}/attendanceReports")
{ result: response.body }
end
|
#list_meetings(user_id: 'me') ⇒ Object
24
25
26
27
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 24
def list_meetings(user_id: 'me', **)
response = graph_connection(**).get("#{user_path(user_id)}/onlineMeetings")
{ result: response.body }
end
|
#resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me') ⇒ Object
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 154
def resolve_meeting(chat_thread_id: nil, join_url: nil, user_id: 'me', **)
return { error: 'provide chat_thread_id or join_url' } unless chat_thread_id || join_url
unless join_url
chat_response = graph_connection(**).get("chats/#{chat_thread_id}")
chat_body = chat_response.body
return { error: 'chat not found', result: chat_body } unless chat_body.is_a?(Hash) && !chat_body.key?('error')
join_url = chat_body.dig('onlineMeetingInfo', 'joinWebUrl')
return { error: 'chat has no onlineMeetingInfo', result: chat_body } unless join_url
end
meeting_response = get_meeting_by_join_url(join_url: join_url, user_id: user_id, **)
meeting_body = meeting_response[:result]
items = meeting_body.is_a?(Hash) ? meeting_body['value'] : nil
return { error: 'could not resolve meeting from join URL', result: meeting_body } unless items.is_a?(Array) && !items.empty?
{ result: items.first }
end
|
#update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil) ⇒ Object
76
77
78
79
80
81
82
83
|
# File 'lib/legion/extensions/microsoft_teams/runners/meetings.rb', line 76
def update_meeting(meeting_id:, user_id: 'me', subject: nil, start_time: nil, end_time: nil, **)
payload = {}
payload[:subject] = subject if subject
payload[:startDateTime] = start_time if start_time
payload[:endDateTime] = end_time if end_time
response = graph_connection(**).patch("#{user_path(user_id)}/onlineMeetings/#{meeting_id}", payload)
{ result: response.body }
end
|