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::ChimeSDKMeetings::Types::Attendee object

Parameters:

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

    Attendee response as Aws::ChimeSDKMeetings::Types::Attendee object

Returns:

  • (Hash)

    Attendee JSON object as hash

See Also:



199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
# File 'lib/chime_sdk/meeting_coordinator.rb', line 199

def self.attendee_as_json(attendee)
  return {} unless attendee.is_a?(Aws::ChimeSDKMeetings::Types::Attendee)
  attendee_json = {
    "Attendee": {
      "ExternalUserId": attendee.external_user_id,
      "AttendeeId": attendee.attendee_id,
      "JoinToken": attendee.join_token
    }
  }
  unless attendee.capabilities.nil?
    attendee_json[:Attendee]["Capabilities"] = {
      "Audio": attendee.capabilities.audio,
      "Video": attendee.capabilities.video,
      "Content": attendee.capabilities.content
    }
  end
  attendee_json
end

.clientAws::ChimeSDKMeetings::Client

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

Returns:

  • (Aws::ChimeSDKMeetings::Client)

    Initialized Aws::ChimeSDKMeetings::Client instance

See Also:



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

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

.create_attendee(meeting_id, attendee_request_id, capabilities: nil) ⇒ Hash

Wrapper of Aws::ChimeSDKMeetings::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.

  • capabilities (Aws::ChimeSDKMeetings::Types::AttendeeCapabilities) (defaults to: nil)

    The capabilities (audio, video, or content) that you want to grant an attendee

Returns:

  • (Hash)

    Created attendee JSON object as hash

See Also:



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

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

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

Wrapper of Aws::ChimeSDKMeetings::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.

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

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

  • meeting_host_id (String) (defaults to: nil)

    (nil) Reserved

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

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

  • meeting_features (Aws::ChimeSDKMeetings::Types::MeetingFeaturesConfiguration) (defaults to: {})

    (nil) Lists the audio and video features enabled for a meeting, such as echo reduction

  • primary_meeting_id (String) (defaults to: nil)

    (nil) When specified, replicates the media from the primary meeting to the new meeting

  • tenant_ids (Array<String>) (defaults to: nil)

    (nil) A consistent and opaque identifier, created and maintained by the builder to represent a segment of their users

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

    (nil) Applies one or more tags to an Amazon Chime SDK meeting

Returns:

  • (Hash)

    Created meeting JSON object as hash

See Also:



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/chime_sdk/meeting_coordinator.rb', line 35

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

.delete_attendee(meeting_id, attendee_id) ⇒ void

This method returns an undefined value.

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

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

  • 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::ChimeSDKMeetings::Client#delete_meeting method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

See Also:



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

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

.get_attendee(meeting_id, attendee_id) ⇒ Hash

Wrapper of Aws::ChimeSDKMeetings::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:



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

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::ChimeSDKMeetings::Client#get_meeting method.

Parameters:

  • meeting_id (required, String)

    The Amazon Chime SDK meeting ID

Returns:

  • (Hash)

    Meeting JSON object as hash

See Also:



62
63
64
65
66
67
# File 'lib/chime_sdk/meeting_coordinator.rb', line 62

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::ChimeSDKMeetings::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:



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/chime_sdk/meeting_coordinator.rb', line 84

def self.list_attendees(meeting_id,
  max_results: ChimeSdk.config.max_attendee_results
)
  # attendees = [], next_token = nil
  # loop do
    resp = client.list_attendees({
      meeting_id: meeting_id,
      # next_token: next_token,
      max_results: max_results
    })
  #   next_token = resp.next_token
  #   attendees += resp.attendees
  #   break if next_token.nil?
  # end
  # attendees.map { |attendee| attendee_as_json(attendee) }
  resp.attendees.map { |attendee| attendee_as_json(attendee) }
end

.meeting_as_json(meeting) ⇒ Hash

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

Parameters:

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

    Meeting response as Aws::ChimeSDKMeetings::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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/chime_sdk/meeting_coordinator.rb', line 148

def self.meeting_as_json(meeting)
  return {} unless meeting.is_a?(Aws::ChimeSDKMeetings::Types::Meeting)
  meeting_json = {
    "Meeting": {
      "MeetingId": meeting.meeting_id,
      "MeetingHostId": meeting.meeting_host_id,
      "ExternalMeetingId": meeting.external_meeting_id,
      "MediaRegion": meeting.media_region,
      "MediaPlacement": {
        "AudioHostUrl": meeting.media_placement.audio_host_url,
        "AudioFallbackUrl": meeting.media_placement.audio_fallback_url,
        "SignalingUrl": meeting.media_placement.signaling_url,
        "TurnControlUrl": meeting.media_placement.turn_control_url,
        # This parameter is deprecated and no longer used by the Amazon Chime SDK
        "ScreenDataUrl": meeting.media_placement.screen_data_url,
        # This parameter is deprecated and no longer used by the Amazon Chime SDK
        "ScreenViewingUrl": meeting.media_placement.screen_viewing_url,
        # This parameter is deprecated and no longer used by the Amazon Chime SDK
        "ScreenSharingUrl": meeting.media_placement.screen_sharing_url,
        # This parameter is deprecated and no longer used by the Amazon Chime SDK
        "EventIngestionUrl": meeting.media_placement.event_ingestion_url
      },
      "PrimaryMeetingId": meeting.primary_meeting_id,
      "TenantIds": meeting.tenant_ids,
      "MeetingArn": meeting.meeting_arn
    }
  }
  unless meeting.meeting_features.nil?
    meeting_json[:Meeting]["MeetingFeatures"] = {
      "Audio": {
        "EchoReduction": meeting.meeting_features.audio.echo_reduction
      },
      "Video": {
        "MaxResolution": meeting.meeting_features.video.max_resolution
      },
      "Content": {
        "MaxResolution": meeting.meeting_features.content.max_resolution
      },
      "Attendee": {
        "MaxCount": meeting.meeting_features.attendee.max_count
      }
    }
  end
  meeting_json
end

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

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

Parameters:

  • client (Aws::ChimeSDKMeetings::Client)

    Initialized Aws::ChimeSDKMeetings::Client instance

Returns:

  • (Aws::ChimeSDKMeetings::Client)

    Initialized Aws::ChimeSDKMeetings::Client instance



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

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