0.11.2 • Published 7 days ago

ringcentral-softphone v0.11.2

Weekly downloads
5
License
MIT
Repository
-
Last release
7 days ago

RingCentral Softphone SDK for TypeScript

This is a TypeScript SDK for RingCentral Softphone. It is a complete rewrite of the RingCentral Softphone SDK for JavaScript

Users are recommended to use this SDK instead of the JavaScript SDK.

Installation

yarn install ringcentral-softphone

Where to get SIP_INFO_USERNAME, SIP_INFO_PASSWORD and SIP_INFO_AUTHORIZATION_ID?

  1. Login to https://service.ringcentral.com
  2. Find the user/extension you want to use
  3. Check the user's "Devices & Numbers"
  4. Find a phone/device that you want to use
  5. if there is none, you need to create one. Check steps below for more details
  6. Click the "Set Up and Provision" button
  7. Click the link "Set up manually using SIP"
  8. At the bottom part of the page, you will find "User Name", "Password" and "Authorization ID"

Usage

import fs from 'fs';
import Softphone from 'ringcentral-softphone';

const softphone = new Softphone({
  username: process.env.SIP_INFO_USERNAME,
  password: process.env.SIP_INFO_PASSWORD,
  authorizationId: process.env.SIP_INFO_AUTHORIZATION_ID,
});

For complete examples, see demos/

Supported features

  • inbound call
  • outbound call
  • inbound DTMF
  • outbound DTMF
  • reject inbound call
  • cancel outbound call
  • hang up ongoing call
  • receive audio stream from peer
  • stream local audio to remote peer
  • outbound call caller ID
  • call transfer

Notes

Audio formats

The codec is "PCMU/8000". Bit rate is 8, which means 8 bits per sample. Sample rate is 8000, which means 8000 samples per second.

You may play saved audio by the following commands:

ffplay -autoexit -f mulaw -ar 8000 test.raw

Or

play -b 8 -r 8000 -e mu-law test.raw

Todo

  • Try other payload types, such as OPUS
    • tried OPUS/16000, but the received packets are quite small and cannot be played
  • do not hard code domain and outboundProxy
    • I tried sip10.ringcentral.com:5096 as outboundProxy, it requires TLS instead of TCP
    • I made TLS work, however for inbound call there is no INVITE message coming in, for outbound call "488 Not Acceptable Here"
  • check the code of PJSIP and refactor the code.
  • Let developer check the call info, such as who is calling, who is being called, etc.

Dev Notes

  • We don't need to explicitly tell remote server our local RTP port via SIP SDP message. We send a RTP message to the remote server first, so the remote server knows our IP and port. So, the port number in SDP message could be fake.
  • Ref: https://www.ietf.org/rfc/rfc3261.txt
0.11.2

7 days ago

0.11.1

9 days ago

0.11.0

12 days ago

0.10.0

27 days ago

0.9.0

2 months ago

0.8.5

3 months ago

0.8.4

3 months ago

0.8.3

4 months ago

0.8.2

4 months ago

0.8.1

5 months ago

0.8.0

5 months ago

0.7.0

5 months ago

0.6.2

5 months ago

0.6.1

5 months ago

0.6.0

5 months ago

0.5.1

2 years ago

0.5.0

4 years ago

0.4.9

4 years ago

0.4.8

4 years ago

0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.3.6

5 years ago

0.3.5

5 years ago

0.3.4

5 years ago

0.3.3

5 years ago

0.3.2

5 years ago

0.3.1

5 years ago

0.3.0

5 years ago

0.2.0

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.0

5 years ago