aws / connect-rtc-js

Provide softphone support to AmazonConnect customers when they choose to directly integrate with our API and not using our web app.
Apache License 2.0
80 stars 63 forks source link

Build Status

Amazon Connect connect-rtc-js

connect-rtc.js provides softphone support to AmazonConnect customers when they choose to directly integrate with AmazonConnect API and not using AmazonConnect web application. It implements Amazon Connect WebRTC signaling protocol and integrates with browser WebRTC APIs to provide a simple contact session interface which can be integrated with Amazon Connect StreamJS seemlessly.

Usage

Prebuilt releases

In the gh-pages branch prebuilt ready to use files can be downloaded/linked directly.

Build your own

  1. Install latest LTS version of NodeJS
  2. Install Grunt
  3. git clone https://github.com/aws/connect-rtc-js.git
  4. cd connect-rtc-js
  5. npm install
  6. To build:
    1. grunt
    2. Find build artifacts in out directory
  7. To run unit tests:
    1. npm test
  8. To run demo page:
    1. grunt demo
    2. Open the URL printed out by connect task, it looks like "Started connect web server on https://localhost:9943"
    3. Click demo folder

Amazon Connect StreamJS integration

In a typical amazon-connect-streams integration, connect-rtc-js is not required on parent page. Softphone call handling is done by embedded CCP.

However the following steps could further customize softphone experience.

  1. Load connect-rtc-js along with amazon-connect-streams on parent page
  2. Following amazon-connect-streams instructions to initialize CCP
  3. Replace the softphone parameter (within the second parameter of connect.core.initCCP()) with allowFramedSoftphone: false This would stop embedded CCP from handling softphone call
  4. Add this line after initCCP connect.core.initSoftphoneManager({allowFramedSoftphone: true}); This would allow your page to handle softphone call with the connect-rtc-js loaded by your page. allowFramedSoftphone is necessary if your page also lives in a frame, otherwise you can remove that parameter.
  5. Add this HTML element to your web page <audio id="remote-audio" autoplay></audio> amazon-connect-streams library will look for this element and inject it into connect-rtc-js so that connect-rtc-js can play downstream audio through this element.
  6. Customize it (some ideas below)
    • Customize audio device for remote-audio element
    • Look at all the documented APIs in RtcSession class, modify softphone.js as you need
    • Revert step 4, add your own glue layer between amazon-connect-streams and connect-rtc-js (use softphone.js as a template)