@twilio/rtc-diagnostics v1.0.0-beta1
Voice Diagnostics SDK
The Voice Diagnostics SDK provides functions to test input and output audio devices, and the functionality to test network bandwidth requirements towards Twilio’s servers.
This SDK requires the use of Twilio NTS to perform the network tests. Using NTS will incur charges as per NTS pricing.
Features
- Input audio device tests include volume calculation
- Output audio device tests are done by playing a sound file to the selected device
- Bandwidth requirements tests
Prerequisites
- A Twilio account. Sign up for free here
- Node.js v10+
- NPM v6+ (comes installed with newer Node versions)
Installation
Building the project locally
# Clone repository
git clone git@github.com:twilio/rtc-diagnostics.git
cd rtc-diagnostics
# Install dependencies
npm install
# Build the artifacts under dist folder
npm run buildNPM
You can install directly from npm.
npm install @twilio/rtc-diagnostics --saveOr install from a local directory.
npm install /local-path-to-repo/rtc-diagnosticsUsing this method, you can import rtc-diagnostics like so:
import { testBitrate } from '@twilio/rtc-diagnostics';Script tag
You can also include rtc-diagnostics.js directly in your web app using a <script> tag.
<script src="https://my-server-path/rtc-diagnostics.js"></script> Using this method, rtc-diagnostics.js will set a browser global:
const { testBitrate } = Twilio.Diagnostics;Usage
The following are examples for running tests. For more information, please refer to the API Docs
BitrateTest Example
import { testBitrate } from '@twilio/rtc-diagnostics';
const bitrateTest = testBitrate({
iceServers: [{
credential: 'bar',
username: 'foo',
urls: 'turn:global.turn.twilio.com:3478?transport=udp',
}],
});
bitrateTest.on('bitrate', (bitrate) => {
console.log(bitrate);
});
bitrateTest.on('error', (error) => {
console.log(error);
});
bitrateTest.on('end', (report) => {
console.log(report);
});
setTimeout(() => {
bitrateTest.stop();
}, 10000);See BitrateTest.Options for more information for how to obtain the urls values
InputTest Example
import { testInputDevice, InputTest } from '@twilio/rtc-diagnostics';
const outputDeviceTest = testInputDevice({
deviceId: ...,
});
inputDeviceTest.on(InputTest.Events.Volume, (volume) => {
console.log(volume);
});
inputDeviceTest.on(InputTest.Events.Error, (error) => {
console.error(error);
});
inputDeviceTest.on(InputTest.Events.End, (report) => {
console.log(report);
});
setTimeout(() => {
inputDeviceTest.stop();
}, 10000);OutputTest Example
import { testOutputDevice, OutputTest } from '@twilio/rtc-diagnostics';
const outputDeviceTest = testOutputDevice({
deviceId: ...,
});
outputDeviceTest.on(InputTest.Events.Volume, (volume) => {
console.log(volume);
});
outputDeviceTest.on(InputTest.Events.Error, (error) => {
console.error(error);
});
outputDeviceTest.on(InputTest.Events.End, (report) => {
console.log(report);
});
setTimeout(() => {
outputDeviceTest.stop();
}, 10000);Related
License
See LICENSE.md
3 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago