amazon chime sdk
doc
https://docs.aws.amazon.com/chime/latest/dg/mtgs-sdk-mtgs.html
Entity
会議(ミーティング)
MeetingId
uniq
ミーティングID
1つのリージョンでミーティングを作成
会議作成後、APIはメディアURLのリストを返却
https://docs.aws.amazon.com/chime/latest/APIReference/API_Meeting.html
参加者
AttendeeId
Amazon Chime SDK 参加者ID
uniq
JoinToken
参加トークン
https://docs.aws.amazon.com/chime/latest/APIReference/API_Attendee.html
MeetingSession
https://aws.github.io/amazon-chime-sdk-js/interfaces/meetingsession.html
各ユーザーのセッションを表すJavaScript用Amazon ChimeSDKのルートオブジェクト
Webアプリは、MeetingSessionをインスタンス化、会議、出席者情報を使用して構成する
MeetingSessionConfiguration
https://aws.github.io/amazon-chime-sdk-js/classes/meetingsessionconfiguration.html
会議セッションに参加するために必要な会議と出席者のデータを保存
MeetingSessionをインスタンス化するために使用される
DeviceController
https://aws.github.io/amazon-chime-sdk-js/interfaces/devicecontroller.html
オーディオ入力(マイクなど)、ビデオ入力(カメラなど)、オーディオ出力(スピーカーなど)に使用されているデバイスを追跡
ユーザーのシステムで使用可能なオーディオおよびビデオデバイスのリストを列挙
会議中にデバイスコントローラーを使用して、アクティブに使用されているデバイスを切り替える
AudioVideoFacade
https://aws.github.io/amazon-chime-sdk-js/interfaces/audiovideofacade.html
会議を強化する主要なインターフェイス
会議を開始、制御、および終了するためのAPI
参加または退会するユーザー、ミュートまたはミュート解除、アクティブな発言、接続性の低下を追跡
参加者の名簿など、ユーザーエクスペリエンスの変化を促進する主要なイベントをリッスンするAPI
オーディオコントロールのHTML要素を会議のオーディオ出力にバインドし、選択したオーディオ出力デバイスで再生
ActiveSpeakerDetectorFacade
https://aws.github.io/amazon-chime-sdk-js/interfaces/activespeakerdetectorfacade.html
アクティブなスピーカーイベントをサブスクライブするAPI
一定期間にわたってマイクの音量でランク付けされた参加者のリストを定期的に返します
アクティブスピーカーポリシーを上書き
ContentShareController
https://aws.github.io/amazon-chime-sdk-js/interfaces/contentsharecontroller.html
コンテンツ共有エクスペリエンスを開始-停止および一時停止-一時停止解除するためのAPI
コンテンツ共有ステータスを追跡するライフサイクルイベントをリッスン
ログ
https://aws.github.io/amazon-chime-sdk-js/interfaces/logger.html
コンソールロギングを活用するため、またはロガーオブジェクトを渡してロギングの実装をオーバーライドするために使用されるインターフェイス
会議作成手順
会議作成
CreateMeetingAPI
https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateMeeting.html
会議に参加者を追加
CreateAttendeeAPI
https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateAttendee.html
BatchCreateAttendeeAPI
https://docs.aws.amazon.com/chime/latest/APIReference/API_BatchCreateAttendee.html
会議を終了させる
DeleteMettingAPI
https://docs.aws.amazon.com/chime/latest/APIReference/API_DeleteMeeting.html
以下の条件で自動終了
5分を超えて会議に音声接続がない
30分を超えて会議に参加している音声接続が2つ未満
画面共有ビューアの接続が30分以上非アクティブ
集合時間が24時間を超えた
手順
MeetingSessionConfiguration
会議、参加者の情報を仕様して構築
MeetingSessionリアルタイムメディアを制御
AudioVideoFacadeを使用
AudioVideoObserver
会議の状態が変化した時にイベントを受信
オーディオ入出力、ビデオ入力の初期デバイスを選択
視聴覚セッションを開始
ユーザーがビデオを共有したいときは、ローカルビデオキャプチャを開始
ビデオタイルを表示する
ビデオタイルイベントを管理
クライアントからタイルをビデオサーフェスにバインドする
ミュート、ミュート解除、ローカルビデオキャプチャの開始と停止、他のユーザー操作を管理
会議を終了
視聴覚セッションを停止
MeetingSession画面キャプチャなどのメディア・コンテンツを他のクライアントと共有
画面共有セッションを開始
Component
Amazon Chime SDK for JavaScript
https://www.npmjs.com/package/amazon-chime-sdk-js
コード
会議を作成
code:js
meeting = await chime.createMeeting({
// 指定されたトークンに対して1つの会議のみが存在する
ClientRequestToken: clientRequestToken,
// 会議用に選択するメディアサービスデータプレーン領域
MediaRegion: mediaRegion,
// 会議ホストを表す不透明な識別子を渡すために使用
MeetingHostId: meetingHostId,
// 会議ライフサイクルイベントを受信
NotificationConfiguration: {
// デフォルトでは、AmazonEventBridgeがイベントを配信
SqsQueueArn, sqsQueueArn,
SnsTopicArn: snsTopicArn,
},
}).promise();
出席者の作成
code:js
attendee = await chime.createAttendee({
// ユーザーを追加する会議
MeetingId: meeting.MeetingId,
// IDシステムからの不透明なユーザーID
// たとえば、Active Directory(AD)を使用する場合、これはAD内のユーザーのオブジェクトIDにすることができます
// クライアントSDKから参加者イベントを受信したときにクライアントアプリケーションに返される
ExternalUserId: externalUserId,
}).promise();
const {
// サービスによって生成された一意
attendeeId,
// 渡されたExternalUserId
ExternalUserId
// 出席者がその期間中、またはDeleteAttendeeAPIが出席者を削除するまで会議にアクセスできるようにする署名済みToken
JoinToken
} = attendee;
会議セッションの初期化
code:js
async initializeMeetingSession(configuration: MeetingSessionConfiguration): Promise<void> {
const logger = new ConsoleLogger('SDK', LogLevel.DEBUG);
const deviceController = new DefaultDeviceController(logger);
configuration.enableWebAudio = this.enableWebAudio;
this.meetingSession = new DefaultMeetingSession(configurationk, logger, deviceController);
this.audioVideo = this.meetingtSession.audioVideo;
...
}
出席者が参加するとき
以下のコールバックを受け取る
code:ts
attendeePresenceHandler(attendeeId: string, present: boolean): void => {
this.audioVideo.realtimeSubscribeToVolumeIndicator(
attendeeId,
async(
attendeeId: string,
volume: number | null,
muted: boolean | null,
signalStrength: number | null,
) => {
// 名簿の各参加者のマイクアクティビティインジケーターを駆動できる
// ユーザーはいつでも誰が話しているかを知ることができます
});
//...
};