cmc-voice-sip

CMC Telecom JavaScript library for building WebRTC apps with SIP.js

Usage no npm install needed!

<script type="module">
  import cmcVoiceSip from 'https://cdn.skypack.dev/cmc-voice-sip';
</script>

README

CMC WebRTC SIP JavaScript library

The CMC SIP-based WebRTC JS library powers up your web application with the ability to make and receive phone calls directly in the browser.

Looking for more WebRTC features, JSON-RPC support or need to quickly get spun up with a React app? cmc also has a robust WebRTC SDK available as a separate npm module.

Installation

Install this package with npm:

$ npm install --save cmc-voice-js

or using yarn:

$ yarn add cmc-voice-js

Usage

Import CMCVoiceDevice in the module where you need it.

import { CMCVoiceDevice } from 'cmc-voice-js';

Import package from CDN

<script src="https://cdn.api-connect.io/cmc-voice-js/cmc-voice-js.js"></script>

or

<script src="https://cdn.api-connect.io/cmc-voice-js/cmc-voice-js.min.js"></script>

Add audio

 <audio className="cmc-sipjs-remote-audio" autoPlay></audio>

Example config and initiation

let config = {
  host: 'sip.cmc.com',
  port: '7443',
  wsServers: 'wss://sip.cmc.com:7443',
  displayName: 'Phone User',
  username: 'testuser',
  password: 'testuserPassword',
  stunServers: 'stun:stun.cmc.com:3478',
  turnServers: {
    urls: ['turn:turn.cmc.com:3478?transport=tcp'],
    username: 'turnuser',
    password: 'turnpassword',
  },
  registrarServer: 'sip:sip.cmc.com:7443',
};

let device = new CMCVoiceDevice(config);

device.on('connecting', () => {
  console.log("connecting!");
});
device.on('accepted', () => {
  console.log("We're on a phone call!");
});
device.on('invite', (data) => {
  console.log("Incoming", data)
});
device.on('accept', (accept) => {
  console.log("accept", accept)
})
device.on('cancel', (cancel) => {
  console.log("cancel", cancel)
})
device.on('rejected', (rejected) => {
  console.log("rejected", rejected)
})
device.on('failed', (failed) => {
  console.log("failed", failed)
})
device.on('bye', (bye) => {
  console.log("bye", bye)
})
device.on('replaced', (replaced) => {
  console.log("replaced", replaced)
})
device.on('rejected', (rejected) => {
  console.log("rejected", rejected)
})
device.on('trackAdded', (trackAdded) => {
  console.log("trackAdded", trackAdded)
})

Example phone call

device.initiateCall('1235556789');

Example answer

device.on('invite', (data) => {
  console.log("Incoming", data)
});
device.accept();

Example hold & unhold

device.hold(/* hold: true; unhold: false */);

Example mute & unmute

device.mute(/* mute: true; unmute: false */);

Example hangup

device.reject();

See the CMCVoiceDevice and CMCCall for more details.

Development

Building the package

When working on the package directly, please use yarn instead of npm.

$ yarn build
# Or to watch for changes to files:
$ yarn start

Running tests

$ yarn test

Generating Docs

We use jsdoc-to-markdown to generate GitHub friendly docs.

$ yarn docs