Module: ChimeSdk::MeetingCoordinator

Defined in:
lib/chime_sdk/meeting_coordinator.rb

Overview

Meeting coordinator as a wrapper module of AWS SDK for Ruby, which simulates AWS SDK for JavaScript.

Class Method Summary collapse

Class Method Details

.attendee_as_json(attendee) ⇒ Hash

Build attendee JSON object as hash from Aws::Chime::Types::Attendee object

Parameters:

  • attendee (required, Aws::Chime::Types::Attendee)

    Attendee response as Aws::Chime::Types::Attendee object

Returns:

  • (Hash)

    Attendee JSON object as hash

See Also:



173
174
175
176
177
178
179
180
181
182
# File 'lib/chime_sdk/meeting_coordinator.rb', line 173

def self.attendee_as_json(attendee)
  return {} unless attendee.is_a?(Aws::Chime::Types::Attendee)
  {
    "Attendee": {
      "ExternalUserId": attendee.external_user_id,
      "AttendeeId": attendee.attendee_id,
      "JoinToken": attendee.join_token
    }
  }
end

.clientAws::Chime::Client

Return initialized Aws::Chime::Client. You must use "us-east-1" as the region for Chime API and set the endpoint.

Returns:

  • (Aws::Chime::Client)

    Initialized Aws::Chime::Client instance

See Also:



12
13
14
# File 'lib/chime_sdk/meeting_coordinator.rb', line 12

def self.client
  @@client ||= Aws::Chime::Client.new(region: 'us-east-1')
end

.create_attendee(meeting_id, attendee_request_id, tags: []) ⇒ Hash

Wrapper of Aws::Chime::Client#create_attendee method. This method uses 'ChimeSdk.config.prefix + attendee_request_id' for external_user_id.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

  • attendee_request_id (required, String)

    Part of the Amazon Chime SDK external user ID. Links the attendee to an identity managed by a builder application.

Returns:

  • (Hash)

    Created attendee JSON object as hash

See Also:



110
111
112
113
114
115
116
117
# File 'lib/chime_sdk/meeting_coordinator.rb', line 110

def self.create_attendee(meeting_id, attendee_request_id, tags: [])
  resp = client.create_attendee({
    meeting_id: meeting_id,
    external_user_id: ChimeSdk.config.prefix + attendee_request_id,
    tags: tags
  })
  attendee_as_json(resp.attendee)
end

.create_meeting(meeting_request_id, meeting_host_id: nil, media_region: ChimeSdk.config.media_region, tags: [], notifications_configuration: {}) ⇒ Hash

Wrapper of Aws::Chime::Client#create_meeting method. This method uses 'ChimeSdk.config.prefix + meeting_request_id' for client_request_token and external_meeting_id.

Parameters:

  • meeting_request_id (required, String)

    The unique identifier for the client request. Use a different token for different meetings.

  • meeting_host_id (String) (defaults to: nil)

    (nil) Reserved

  • media_region (String) (defaults to: ChimeSdk.config.media_region)

    (ChimeSdk.config.media_region) The Region in which to create the meeting

  • tags (Array<Aws::Chime::Types::Tag>) (defaults to: [])

    (nil) The tag key-value pairs

  • notifications_configuration (Aws::Chime::Types::MeetingNotificationConfiguration) (defaults to: {})

    (nil) The configuration for resource targets to receive notifications when meeting and attendee events occur

Returns:

  • (Hash)

    Created meeting JSON object as hash

See Also:



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/chime_sdk/meeting_coordinator.rb', line 51

def self.create_meeting(meeting_request_id,
  meeting_host_id: nil,
  media_region: ChimeSdk.config.media_region,
  tags: [],
  notifications_configuration: {}
)
  resp = client.create_meeting({
    client_request_token: ChimeSdk.config.prefix + meeting_request_id,
    external_meeting_id: ChimeSdk.config.prefix + meeting_request_id,
    meeting_host_id: meeting_host_id,
    media_region: media_region,
    tags: tags,
    notifications_configuration: notifications_configuration
  })
  meeting_as_json(resp.meeting)
end

.delete_attendee(meeting_id, attendee_id) ⇒ void

This method returns an undefined value.

Wrapper of Aws::Chime::Client#delete_attendee method.

Parameters:

  • attendee_id (required, String)

    The Amazon Chime SDK attendee ID

See Also:



136
137
138
139
140
141
# File 'lib/chime_sdk/meeting_coordinator.rb', line 136

def self.delete_attendee(meeting_id, attendee_id)
  client.delete_attendee({
    meeting_id: meeting_id,
    attendee_id: attendee_id
  })
end

.delete_meeting(meeting_id) ⇒ void

This method returns an undefined value.

Wrapper of Aws::Chime::Client#delete_meeting method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

See Also:



83
84
85
86
87
# File 'lib/chime_sdk/meeting_coordinator.rb', line 83

def self.delete_meeting(meeting_id)
  client.delete_meeting({
    meeting_id: meeting_id
  })
end

.get_attendee(meeting_id, attendee_id) ⇒ Hash

Wrapper of Aws::Chime::Client#get_attendee method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

  • attendee_id (required, String)

    The Amazon Chime SDK attendee ID

Returns:

  • (Hash)

    Attendee JSON object as hash

See Also:



124
125
126
127
128
129
130
# File 'lib/chime_sdk/meeting_coordinator.rb', line 124

def self.get_attendee(meeting_id, attendee_id)
  resp = client.get_attendee({
    meeting_id: meeting_id,
    attendee_id: attendee_id
  })
  attendee_as_json(resp.attendee)
end

.get_meeting(meeting_id) ⇒ Hash

Wrapper of Aws::Chime::Client#get_meeting method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

Returns:

  • (Hash)

    Meeting JSON object as hash

See Also:



72
73
74
75
76
77
# File 'lib/chime_sdk/meeting_coordinator.rb', line 72

def self.get_meeting(meeting_id)
  resp = client.get_meeting({
    meeting_id: meeting_id
  })
  meeting_as_json(resp.meeting)
end

.list_attendees(meeting_id, max_results: ChimeSdk.config.max_attendee_results) ⇒ Array<Hash>

Wrapper of Aws::Chime::Client#list_attendees method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

  • max_results (Integer) (defaults to: ChimeSdk.config.max_attendee_results)

    (ChimeSdk.config.max_attendee_results) The maximum number of results to return in a single call

Returns:

  • (Array<Hash>)

    Array of attendee JSON object as hash

See Also:



94
95
96
97
98
99
100
101
102
# File 'lib/chime_sdk/meeting_coordinator.rb', line 94

def self.list_attendees(meeting_id,
  max_results: ChimeSdk.config.max_attendee_results
)
  resp = client.list_attendees({
    meeting_id: meeting_id,
    max_results: max_results
  })
  resp.attendees.map { |attendee| attendee_as_json(attendee) }
end

.list_meetings(max_results: ChimeSdk.config.max_meeting_results, prefix_filter: nil) ⇒ Array<Hash>

Wrapper of Aws::Chime::Client#list_meetings method. This function also provides prefix match filter of external_meeting_id. This method filters the result with ChimeSdk.config.prefix to return only meetings in your application.

Parameters:

  • max_results (Integer) (defaults to: ChimeSdk.config.max_meeting_results)

    (ChimeSdk.config.max_meeting_results) The maximum number of results to return in a single call

  • prefix_filter (String) (defaults to: nil)

    (nil) Additional string for prefix match filter of external_meeting_id

Returns:

  • (Array<Hash>)

    Array of filtered meeting JSON object as hash

See Also:



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/chime_sdk/meeting_coordinator.rb', line 30

def self.list_meetings(
  max_results: ChimeSdk.config.max_meeting_results,
  prefix_filter: nil
)
  resp = client.list_meetings({
    max_results: max_results
  })
  meetings = resp.meetings
  meetings = meetings.select { |meeting| meeting.external_meeting_id.start_with?(ChimeSdk.config.prefix + prefix_filter) } if prefix_filter
  meetings.map { |meeting| meeting_as_json(meeting) }
end

.meeting_as_json(meeting) ⇒ Hash

Build meeting JSON object as hash from Aws::Chime::Types::Meeting object

Parameters:

  • meeting (required, Aws::Chime::Types::Meeting)

    Meeting response as Aws::Chime::Types::Meeting object

Returns:

  • (Hash)

    Meeting JSON object as hash

See Also:



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
# File 'lib/chime_sdk/meeting_coordinator.rb', line 148

def self.meeting_as_json(meeting)
  return {} unless meeting.is_a?(Aws::Chime::Types::Meeting)
  {
    "Meeting": {
      "MeetingId": meeting.meeting_id,
      "ExternalMeetingId": meeting.external_meeting_id,
      "MediaPlacement": {
        "AudioHostUrl": meeting.media_placement.audio_host_url,
        "AudioFallbackUrl": meeting.media_placement.audio_fallback_url,
        "ScreenDataUrl": meeting.media_placement.screen_data_url,
        "ScreenSharingUrl": meeting.media_placement.screen_sharing_url,
        "ScreenViewingUrl": meeting.media_placement.screen_viewing_url,
        "SignalingUrl": meeting.media_placement.signaling_url,
        "TurnControlUrl": meeting.media_placement.turn_control_url
      },
      "MediaRegion": meeting.media_region
    }
  }
end

.reset_client(client) ⇒ Aws::Chime::Client

Reset client with initialized Aws::Chime::Client instance.

Parameters:

  • client (Aws::Chime::Client)

    Initialized Aws::Chime::Client instance

Returns:

  • (Aws::Chime::Client)

    Initialized Aws::Chime::Client instance



19
20
21
# File 'lib/chime_sdk/meeting_coordinator.rb', line 19

def self.reset_client(client)
  @@client = client
end