How to use Amazon Chime for Meetings | Ideas2IT

Key Features of Amazon Chime Video Conferencing

Share This

Amazon Chime is a communications service that lets users meet, chat, and place business calls inside and outside the organization using a single application. Developers can use the communications infrastructure and services that power Amazon Chime to add audio calling, video calling, and screen sharing capabilities directly to their applications using the Amazon Chime SDK. It is a low-cost cloud solution for adding secure and scalable video conferencing functionalities to your application. Additionally, as it is Health Insurance Portability and Accountability Act (HIPAA) compliant, it can be used in professional healthcare applications as well.

The Amazon Chime SDK offers a straightforward solution for setting up real-time communication components within the web or mobile application. The recent COVID-19 pandemic has resulted in a rise in the demand of video conferencing solutions. Video conferencing has now become a preferred method of communication for many businesses as well as customers. Setting up a video conferencing functionality from scratch in a short time span is nearly impossible. That is why, solutions like Amazon Chime SDK, which offer plug-and-play solutions for adding real-time communication components, have been gaining more and more prominence.

Key Features of Amazon Chime SDK

  • A HIPAA compliant service
  • Clubbed with low cost cloud services
  • Default capability of maximum of 250 Concurrent meetings (this number can be increased if required)
  • Capacity of upto 250 audio participants and 16 video participants in each meeting
  • Screen sharing and file sharing capabilities
  • Desktop / Mobile version available
  • AES 256 bit encryption
  • More secure compared to other services
  • Admin control over Chime user accounts through AWS identity & IAM
  • Extensive third-party interoperability
  • Easy integration with Slack.

Components of AWS Chime SDK

  • AWS SDK Chime API – Used for building the server side of the application
  • Amazon Chime Media Services – Available in a large number of AWS regions to provide audio, video and signaling services to establish peer-to-peer connections
  • Amazon Chime SDK – Used to build the Client-side of the application

Adding real-time video conferencing functionalities using Amazon Chime SDK

 The process of adding video and audio calling capabilities is extremely simple with Amazon Chime. Integrate the below-mentioned 3 libraries in your web and mobile application and get started.

  • AWS Chime SDK for Javascript
  • AWS Chime SDK for iOS
  • AWS Chime SDK for Android

Architecture of  client application

Architecture of  client application

AWS SDK – Chime API (Server side) : CreateMeeting

Sample Request 

{

    "clientRequestToken": "crt",

    "externalMeetingId": "em1",

    "meetingHostId": "mh1",

    "mediaRegion": "us-east-2",

    "tags": [

        {

            "key": "K1",

            "value": "V1"

        }

    ]

}

Sample Response 

{

    "externalMeetingId": "em1",

    "mediaRegion": "us-east-2",

    "meetingId": "c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

    "mediaPlacement": {

        "audioFallbackUrl": "wss://haxrp.m2.ue2.app.chime.aws:443/calls/c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

        "audioHostUrl": "22cd202955abdc76474d2f113755c6aa.k.m2.ue2.app.chime.aws:3478",

        "screenDataUrl": "wss://bitpw.m2.ue2.app.chime.aws:443/v2/screen/c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

        "screenSharingUrl": "wss://bitpw.m2.ue2.app.chime.aws:443/v2/screen/c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

        "screenViewingUrl": "wss://bitpw.m2.ue2.app.chime.aws:443/ws/connect?passcode=null&viewer_uuid=null&X-BitHub-Call-Id=c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

        "signalingUrl": "wss://signal.m2.ue2.app.chime.aws/control/c5536c4f-6215-4ca7-84dd-bf3ee9f5b04f",

        "turnControlUrl": "https://ccp.cp.ue1.app.chime.aws/v2/turn_sessions"

    }

}

AWS SDK – Chime API(s) (Server side) : CreateAttendee / BatchCreateAttendee

CreateAttendee API and BatchCreateAttendee API are used to create and add attendees to a specific meeting. CreateAttendee API can create 1 attendee per request while BatchCreateAttendee API can create up to 100 attendees per request for a Amazon chime sdk meeting.

 Sample Request

{

   "Attendees": [ 

      { 

         "ExternalUserId": "ExUser1",

         "Tags": [ 

            { 

               "Key": "K1",

               "Value": "V1"

            }

         ]

      }

   ]

}

Sample Response

{

   "Attendees": [ 

      { 

         "AttendeeId": "attendeeId1",

         "ExternalUserId": "externalUserId1",

         "JoinToken": "joinToken1"

      }

   ],

   "Errors": [ 

      { 

         "ErrorCode": "ERRCD1",

         "ErrorMessage": "ErrorMessage1",

         "ExternalUserId": "ExternalUserId1"

      }

   ]

}

Creating Meeting & Messaging Session

const logger = new ConsoleLogger('MyLogger', LogLevel.INFO);

    const deviceController = new DefaultDeviceController(logger);

     // You need responses from server-side Chime API. See below for details.

    const meetingInfo = /* The response from the CreateMeeting API action */;

    const attendeeinfo = /* The response from the CreateAttendee or BatchCreateAttendee API action */;

    const configuration = new MeetingSessionConfiguration(meetingInfo, attendeeinfo);

    // you will use this meetingSession object for media accesses.

    const meetingSession = new DefaultMeetingSession(

      configuration,

      logger,

      deviceController

    );

    const messagingSession = new DefaultMessagingSession(configuration, logger); 

Select I/O Device

Audio Input Device

const audioVideo = this.meetingSession.audioVideo; // audioVideo : AudioVideoFacade 

    const audioInputDeviceInfo = /* An array item from audioVideo.listAudioInputDevices */;

    await audioVideo.chooseAudioInputDevice(audioInputDeviceInfo.deviceId);

     const audioOutputDeviceInfo = /* An array item from audioVideo.listAudioOutputDevices */;

    await audioVideo.chooseAudioOutputDevice(audioOutputDeviceInfo.deviceId);

 Video Input Device

     const videoInputDeviceInfo = /* An array item from audioVideo.listVideoInputDevices */;

    await audioVideo.chooseVideoInputDevice(videoInputDeviceInfo.deviceId);

    // You can pass null to choose none. Video capture will be stopped.

    await audioVideo.chooseVideoInputDevice(null);

Start a meeting session

  const audioElement = /* HTMLAudioElement object e.g. document.getElementById('audio-element-id') */;

    audioVideo.bindAudioElement(audioElement);

     const observer = {

      audioVideoDidStart: () => {

        console.log('Started');

      },

      audioVideoDidStop: sessionStatus => {

        // See the "Stopping a session" section for details.

        console.log('Stopped with a session status code: ', sessionStatus.statusCode());

      }

    };

    audioVideo.addObserver(observer);

    audioVideo.start(); // Audio streaming started

That’s all!

Your application with secure video conferencing capabilities is ready to launch!

Leave a Reply

Your email address will not be published. Required fields are marked *

Get Instant Pricing Straight to Your Inbox

Let us know what your needs are and get a quote sent straight to your inbox.

Thanks for subscribing

Get Pricing Sent Straight to Your Inbox