cmc-voice-sipjs
Version:
CMC Telecom JavaScript library for building WebRTC apps with SIP.js
162 lines (123 loc) • 3.51 kB
Markdown
<!--  -->
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](https://github.com/team-cmc/webrtc) available as a separate npm module._
Install this package with [npm](https://www.npmjs.com/):
```shell
$ npm install --save cmc-voice-js
```
or using [yarn](https://yarnpkg.com/lang/en/):
```shell
$ yarn add cmc-voice-js
```
Import [CMCVoiceDevice](https://github.com/team-cmc/cmc-voice-js/docs/CMCVoiceDevice.md) in the module where you need it.
```javascript
import { CMCVoiceDevice } from 'cmc-voice-js';
```
Import package from CDN
```javascript
<script src="https://cdn.api-connect.io/cmc-voice-js/cmc-voice-js.js"></script>
```
or
```javascript
<script src="https://cdn.api-connect.io/cmc-voice-js/cmc-voice-js.min.js"></script>
```
Add audio
```javascript
<audio className="cmc-sipjs-remote-audio" autoPlay></audio>
```
```javascript
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)
})
```
```javascript
device.initiateCall('1235556789');
```
```javascript
device.on('invite', (data) => {
console.log("Incoming", data)
});
device.accept();
```
```javascript
device.hold(/* hold: true; unhold: false */);
```
```javascript
device.mute(/* mute: true; unmute: false */);
```
```javascript
device.reject();
```
See the [CMCVoiceDevice](https://github.com/team-cmc/cmc-voice-js/docs/CMCVoiceDevice.md) and [CMCCall](https://github.com/team-cmc/cmc-voice-js/docs/cmcCall.md) for more details.
When working on the package directly, please use [yarn](https://github.com/yarnpkg/yarn) instead of npm.
```shell
$ yarn build
$ yarn start
```
```shell
$ yarn test
```
We use [jsdoc-to-markdown](https://github.com/jsdoc2md/jsdoc-to-markdown) to generate GitHub friendly docs.
```shell
$ yarn docs
```