Amazon Chime SDK Call Analytics Consumer

This code will deploy a small application that can be used with Amazon Chime SDK call analytics to view the results in real-time.

flowchart LR
    User((User))
    SIP((SIP))
    S3[(S3)]
    
    ChimeSDK[Amazon Chime SDK<br/>Voice Connector]
    EventBridge1[EventBridge]
    Lambda1[EventBridge<br/>Lambda]
    KDS[Kinesis Data<br/>Stream]
    Lambda2[KDS Lambda]
    WebSocket[WebSocket API]
    CloudFront[CloudFront Hosted<br/>React App]
    ChimeAnalytics[Amazon Chime<br/>SDK Call Analytics]
    Transcribe[Transcribe]

    SIP -->|1| ChimeSDK
    ChimeSDK -->|2| EventBridge1
    EventBridge1 -->|3| Lambda1
    Lambda1 -->|4| ChimeAnalytics
    ChimeSDK -->|5| ChimeAnalytics
    Lambda1 -->|6| KDS
    ChimeAnalytics -->|7| Transcribe
    ChimeAnalytics -->|8| KDS
    KDS -->|9| Lambda2
    Lambda2 -->|10| WebSocket
    CloudFront -->|11| WebSocket
    S3 --> CloudFront
    User --> CloudFront

    style ChimeSDK fill:#C7131F,color:#fff
    style EventBridge1 fill:#FF9900,color:#fff
    style Lambda1 fill:#FF9900,color:#fff
    style KDS fill:#8C4FFF,color:#fff
    style Lambda2 fill:#FF9900,color:#fff
    style WebSocket fill:#C7131F,color:#fff
    style CloudFront fill:#8C4FFF,color:#fff
    style ChimeAnalytics fill:#C7131F,color:#fff
    style Transcribe fill:#FF9900,color:#fff
    style S3 fill:#569A31,color:#fff

Process

  1. A SIP or SIPREC INVITE is sent to the Amazon Chime SDK Voice Connector
  2. This triggers EventBridge
  3. An EventBridge event is sent to the associated Lambda function
  4. The Lambda starts the Amazon Chime SDK media insights pipeline
  5. RTP is delivered from the Amazon Chime SDK Voice Connector to the Amazon Chime SDK call analytics processor
  6. Amazon Chime SDK events from EventBridge are sent to a Kinesis Data Stream
  7. RTP from the Amazon Chime SDK Voice Connector is processed with Transcribe
  8. Results from Transcribe are sent from the Amazon Chime SDK call analytics processor to the Kinesis Data Stream
  9. Kinesis Data Stream records are consumed on a Lambda function
  10. These records are delivered to a WebSocket API
  11. And viewable on an S3/CloudFront hosted React App

Deployed Components

  • Amazon Chime SDK call analytics configuration
  • S3 bucket for recordings
  • EventBridge rule
  • EventBridge Lambda function
  • Kinesis Data Stream
  • Kinesis Data Stream consuming Lambda function
  • WebSocket API
  • DynamoDB to track connections
  • S3 bucket for React app
  • CloudFront Distribution associated with S3 bucket

Messages

All of the messages related to Amazon Chime SDK call analytics will be delivered to the client through the WebSocket API from the Kinesis Data Stream. These messages can be filtered within the app to more easily see the various message types.

AmazonChimeSDKCallAnalyticsMessages

Using

To use this app, you will need to deploy this app and configure an Amazon Chime SDK Voice Connector. This app will start Amazon Chime SDK call analytics for any Amazon Chime Voice Connector in the Region. Any time a call uses an Amazon Chime SDK Voice Connector, the EventBridge Lambda will start an Amazon Chime SDK call analytics media insights pipeline associated with the deployed Amazon Chime SDK call analytics configuration.

Deploying

To deploy this demo, use:

yarn launch

To remove this demo, use:

yarn cdk destroy

GitHub Repo

All code available here: https://github.com/schuettc/amazon-chime-sdk-call-analytics-reader