Business Productivity

Using the Amazon Chime SDK for 3rd party devices

Introduction

The Amazon Chime SDK is a set of real-time communications components that developers can use to quickly add audio, video, and screen sharing capabilities to their own applications. Developers can use the same communication infrastructure and services that power Amazon Chime, an online meetings service from AWS, to deliver engaging experiences in their applications. For instance, they can add video to a health application so patients can consult remotely with doctors on health issues. They can also add audio to a company website so customers can quickly connect with sales. By using the Amazon Chime SDK, developers can eliminate the cost, complexity, and friction of creating and maintaining their own real-time communication infrastructure and services.

The Amazon Chime SDK comes in Swift for iOS, Kotlin for Android, and JavaScript for any JavaScript environment supporting WebRTC. This enables developers to make applications that their end users can access on supported operating systems. One other use case that is popular with media applications is the concept of shared devices. These are devices that are generally stationary. They don’t have an assigned user, and typically lack traditional ways of user input such as a mouse and keyboard. These include devices such as store kiosks, embedded systems such as ATMs, and conference room systems. The Amazon Chime SDK allows developers to easily create audio and video applications even for these scenarios.

In this example, we explored building a conference room A/V system using the Amazon Chime SDK. We build a home-built system on a Raspberry Pi that costs less than $150 at the time of making this.

Amazon Chime on Raspberry PI

Getting started

You can get started using the Amazon Chime SDK today with the following simple steps. Afterwards, you have your own in-room setting experiment powered by Amazon Chime.

Prerequisites

To use the device demo application, you should have the following prerequisites:

Note: deploying the serverless device demo may incur extra charges in your AWS account.

Application overview

The device demo showcases a minimal app that can run in various hardware environments. It is composed of two parts:

Controller app – A small application that is responsible for sending actions to the room app. It also listens for data from the room to update its UI.

Room app – The application that handles the business logic. It listens for messages from the controller and runs them. It then sends a response back to the controller to update its state.

Building and deploying demo app

  1. Download a copy of SDK with a demo to your local development environment by running git clone https://github.com/aws-samples/amazon-chime-sdk-js-device-demo.git  in your terminal
  2. Install dependencies by running npm install
  3. Build device demo by running npm run build
  4. Start a client by running npm run start:client
  5. Open new terminal within device directory and run API server npm run start:backend

Now you can navigate to https://localhost:3000/ (room app) application that handles the business logic. It listens for messages from the https://localhost:3000/controller (controller app) and runs them. It may then send a response back to the Controller to update its state.

Deploying the serverless device demo

You can deploy the demo as self-contained serverless application.

  1. Install aws and sam command line tools.
  2. Install the AWS CLI.
  3. Install the AWS SAM CLI.

Run deployment script

The following creates an AWS CloudFormation stack containing an AWS Lambda and API Gateway deployment that runs the device demo.

  1. Open terminal and navigate to /serverless
  2. Run the following command: node ./deploy.js -r us-east-1 -b <my-bucket> -s <my-stack-name>. Replace <my-bucket> with your desired Amazon Simple Storage Service (Amazon S3) bucket name and <my-stack-name> with your desired name for stack setup.

The script creates an Amazon S3 bucket and AWS CloudFormation stack with AWS Lambda and API Gateway resources required to run the demo. After the script finishes, it outputs an URL. The URL can be opened in browser to access room app. In a separate tab or window, open the controller app by appending /controller path to the provided URL from the output.

Running application on Raspberry Pi

The Raspberry Pi 4 brings even more potency to the ultra-versatile tiny desktop computer. It’s the perfect candidate for our demo of a self-built conference device. The latest Raspberry Pi model has support for dual monitors, which we use in our demo to display meeting on one screen and a touchscreen monitor on the second. This will be used as the meeting controller.

If needed, checkout out the get started guide to set up your Raspberry Pi

Now we use the output from the previous deployment step to open two urls within Raspberry Pi using the Chromium browser.

  1. On the first (larger) screen, we open the provided url from the deployed script.
  2. On the second screen, as showed in our demo, we use a 7″ touch monitor as the controller device. Use the same url as before but with appended /controller at the end to let device know to load controller application.

Now you are set!

Description of key components

The concept is fairly similar to the Amazon Chime SDK serverless demo app . The main difference is the UI for our conference room application has no clickable elements. You control the app with a separate application that we refer to as the controller application. The controller application in this example is just a simple UI that provides a set of features. These include join and end meeting, toggle mute of the microphone and camera as well toggling content sharing view. The room application is used to view meeting-related content like attendees video and screen share content. It seamlessly works with the controller application for an in-room meeting experience.

Cleaning up

In order to fully avoid incurring future charges, please delete all resources created by the AWS CloudFormation stack once you are done trying out the demo.

Next steps and resources

To learn more about how to build using the Amazon Chime SDK, here are few more resources you can use.

Conclusion

The Amazon Chime SDK is a set of real-time communications components that developers can use to quickly add audio calling, video calling, and screen sharing capabilities to their own device applications, whether it’s homemade in-room Raspberry Pi or dedicated 3rd party in-room conferencing device. Developers can leverage the same communication infrastructure and services that power Amazon Chime, an online meetings service from AWS, to deliver engaging experiences in their in-room conferencing applications.

Nikolay Kravchuk

Nikolay Kravchuk

Nikolay Kravchuk is a Software Engineer on the Amazon Chime team. Enjoy most things where technology, innovation and culture collide into sometimes brilliant outcomes.