• Stars
    star
    106
  • Rank 323,930 (Top 7 %)
  • Language
    TypeScript
  • Created over 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

RingCentral WebPhone Library for JavaScript WebRTC

Build Status Coverage Status

RingCentral WebPhone Library

The RingCentral WebPhone Library includes a JavaScript WebRTC library and a WebRTC phone demo app.

Prerequisites

Browser Compatibility

Currently, we officially support Google Chrome browser. Official support for Firefox and Safari browsers are coming soon.

Network Requirements

Please visit Network Requirement links below

  1. Network Requirements and Recommendations | RingCentral Office : https://support.ringcentral.com/s/article/9233?language=en_US
  2. Network Requirements and Recommendations - Resources : https://support.ringcentral.com/s/article/Network-Requirements-and-Recommendations-Resources?language=en_US

Demo application

Here is a demo application based on React. It is a work-in-progress project: https://github.com/tylerlong/ringcentral-web-phone-demo

Table of Contents

  1. Installation
  2. Usage
  3. Configuring your RingCentral app
  4. Include Library And HTML Elements
  5. Application
  6. Demo
  7. API
  8. Initiating The Call
  9. Accepting Incoming Call
  10. DTMF
  11. Hold Unhold
  12. Mute Unmute
  13. Park
  14. Flip
  15. Transfer
  16. Warm Transfer
  17. Forward
  18. Start/Stop Recording
  19. Barge/Whisper

Installation

yarn add ringcentral-web-phone

If you are not using NPM:

  1. Download SIP.JS: https://github.com/onsip/SIP.js/releases/tag/0.20.0
  2. Download WebPhone SDK: https://github.com/ringcentral/ringcentral-web-phone/releases/latest
  3. Download audio files:
    1. https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/incoming.ogg
    2. https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/outgoing.ogg

Usage

Configuring your RingCentral app

Ensure your app has the following properties set. If these are not set, the error specified will be returned.

App Property Value Error if not set
Permissions VoIP Calling Specific application permission required
Platform type Browser-based Client edition is not compatible with current Brand

Since WebRTC enables dialing out, you need to have a DIGITAL LINE attached to an extension to use this capability. You can configure this in Online Web Portal for Production and Sandbox accounts. More information on Digital Lines and their configuration is available in the following RingCentral Knowledge Base article topics:

  1. Digital Line Overview (KB 5862)
  2. Adding a Digital Line (KB 3136). A limited number of Digital Lines are free with each sandbox account which can be configured with the free RingCentral for Desktop softphone.
  3. Reassigning an Existing Digital Line (KB 3748)

These permissions be configured for your app in the RingCentral Developer Portal. Fill this Registration Form to get access to WebRTC permissions. Please contact [email protected] to request these permissions.

Include Library And HTML Elements

<video id="remoteVideo" hidden="hidden"></video>
<video id="localVideo" hidden="hidden" muted="muted"></video>

<script src=".../sip.js" type="text/javascript"></script>
<script src=".../ringcentral-web-phone.js" type="text/javascript"></script>

Application

For this example you will also need to have RingCentral JS SDK installed.

Configure the web-phone

var clientId = '...';
var clientSecret = '...';
var appName = '...';
var appVersion = '...';

var sdk = new RingCentral.SDK({
  clientId: clientId,
  clientSecret: clientSecret,
  appName: appName,
  appVersion: appVersion,
  server: RingCentral.SDK.server.production, // or .sandbox
});

var remoteVideoElement = document.getElementById('remoteVideo');
var localVideoElement = document.getElementById('localVideo');

var platform = sdk.platform();

platform
  .login({
    username: '...',
    password: '...',
  })
  .then(function (loginResponse) {
    return platform
      .post('/client-info/sip-provision', {
        sipInfo: [{ transport: 'WSS' }],
      })
      .then(function (res) {
        // Doing nested then because we need loginResponse in a simple way

        return new RingCentral.WebPhone(res.json(), {
          // optional
          clientId: clientId,
          appName: appName,
          appVersion: appVersion,
          uuid: loginResponse.json().endpoint_id,
          logLevel: 1, // error 0, warn 1, log: 2, debug: 3
          audioHelper: {
            enabled: true, // enables audio feedback when web phone is ringing or making a call
            incoming: 'path-to-audio/incoming.ogg', // path to audio file for incoming call
            outgoing: 'path-to-audio/outgoing.ogg', // path to aduotfile for outgoing call
          },
          media: {
            remote: remoteVideoElement,
            local: localVideoElement,
          },
          //to enable QoS Analytics Feature
          enableQos: true,
        });
      });
  })
  .then(function (webPhone) {
    // YOUR CODE HERE
  })
  .catch(function (e) {
    console.error(e.stack);
  });

Demo

$ git clone https://github.com/ringcentral/ringcentral-web-phone.git
$ cd ringcentral-web-phone
$ yarn install
$ yarn serve
  1. Open http://localhost:8080 in the browser (port may change if 8080 will be already used by other app)
  2. If your Application is of the Scope Server/Web Browser-Based Then you would need to add http://localhost:8080/callback.html as the OAuth Redirect URI for the application in Developer Portal
  3. Add your RC credentials and click on Register
  4. For making outbound calls, enter phone number and click on Call
  5. For receiving incoming calls, Click on Accept button when window pops up (will be visible when there is an incoming call)

If there's any connection problems to Sandbox environment, you may need to switch to the Production environment.

WebRTC works with issues when served from file system directly to browser (e.g. file:// protocol), so you will need a local HTTP server (comes with this package).

Online demo is hosted at https://ringcentral.github.io/ringcentral-web-phone

** NOTE : If you are using the online demo, please add https://ringcentral.github.io/ringcentral-web-phone/callback.html to the app's OAuth Redirect URI


API

Except for some RingCentral-specific features the API is 100% the same as SIP.JS: https://github.com/onsip/SIP.js/releases/tag/0.20.0: most of the time you will be working with RC-flavored UserAgent and Session objects of SIP.JS.

We encourage you to take a look at Guides section, especially Make A Call and Receive A Call articles.

Constructor

var webPhone = new RingCentral.WebPhone(provisionData, options);
  • Provision Data β€” the JSON returned from /client-info/sip-provision API endpoint
  • Options β€” object with various configuration options that adjust WebPhone behavior
    • clientId β€” your application key
    • appName β€” your application short code name
    • appVersion β€” your application version
    • uuid β€” manually provide the unique identifier of WebPhone instance (should persist between page reloads)
    • logLevel β€” controls verboseness in browser console
      • 0 β€” Errors only (good for production)
      • 1 β€” Errors & warnings
      • 2 β€” Errors, warnings, logs
      • 3 β€” Everything including debug information (good for development)
    • audioHelper β€” audio feedback when web phone is ringing or making a call
      • enabled β€” turns feedback on and off
      • incoming β€” path to incoming.ogg, audio file for incoming call
      • outgoing β€” path to outgoing.ogg, audio file for outgoing call
    • onSession β€” this callback will be fired each time User Agent starts working with session (incoming or outgoing)
    • enableQos:true β€” will enable quality of service for webRTC calls , you can view the voice quality of calls in analytics portal

Attaching Media Streams

For futher information, refer SIP.js guide to attach media

Initiating The Call

var session = webPhone.userAgent.invite('PHONE_NUMBER', {
  fromNumber: 'PHONE_NUMBER', // Optional, Company Number will be used as default
  homeCountryId: '1', // Optional, the value of
});

Accepting Incoming Call

webPhone.userAgent.on('invite', function(session){
    session.accept().then(...);
});

DTMF

Callee will be put on hold and the another person can join into the call by dialing the extension number announced within the call.

session.dtmf('DTMF_DIGITS').then(...);

Hold Unhold

Callee will be put on hold and the another person can join into the call by dialing the extension number announced within the call.

session.hold().then(...);
session.unhold().then(...);

Mute Unmute

Callee will be put on mute or unmute

session.mute();
session.unmute();

Park

Callee will be put on hold and the another person can join into the call by dialing the extension number announced within the call.

session.park().then(...);

Flip

Caller can filp calls to different devices logged in through the same credentials.

session.flip('TARGET_NUMBER').then(...);

Transfer

session.transfer('TARGET_NUMBER').then(...);

Warm Transfer

If an agent has an active call with a customer and needs to transfer this call to a supervisor, then agent puts existing call on hold, makes a call to a supervisor and when ready performs a warm transfer. Customer will be connected to supervisor and the call between customer and agent will be disconnected.

Warm transfer puts current line on hold (if not done yet) then takes an existing line from arguments and makes transfer.

Handle Warm Transfer scenario (Attended Transfer usecase) :

Steps:

  1. Put the current session on Hold as shown in the demo code
  2. Initiate a new session (Start new call)
  3. a. Once new call is answered , Complete the transfer , or terminate new session. b. If you want to switch to original call, switch the session context and Unhold the session
$modal.find('.transfer-form button.warm').on('click', function (e) {
  session.hold().then(function () {
    console.log('Placing the call on hold, initiating attended transfer');
    var newSession = session.userAgent.invite($transfer.val().trim());
    newSession.once('established', function () {
      console.log('New call initated. Click Complete to complete the transfer');
      $modal.find('.transfer-form button.complete').on('click', function (e) {
        session
          .warmTransfer(newSession)
          .then(function () {
            console.log('Warm transfer completed');
          })
          .catch(function (e) {
            console.error('Transfer failed', e.stack || e);
          });
      });
    });
  });
});

Forward

session.forward('TARGET_NUMBER').then(...);

Start/Stop Recording

session.startRecord().then(...);
session.stopRecord().then(...);

Barge/Whisper

Not yet implemented. Could be done by dialing *83. The account should be enabled for barge/whisper access through system admin.

Upgrade Procedure from 0.8.x to 0.9.0

Upgrade Procedure from v0.4.X to 0.8.9

  • SDK now only supports only Unified SDP plan. You can find more information about this here: https://chromestatus.com/feature/5723303167655936

  • SDK now only supports "require" as rtcp-mux policy. We no more support "negotiate". You can find more information about this here: https://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc/

  • SDK now handles SIP Re-Invites, which helps in handling one-way audio issues / reconnecting media due to network reconnections.

  • SDK constructor now allows to add custom UA Configuration parameters like sessionDescriptionHandlerFactory , sessionDescriptionHandlerFactoryOptions

  • SDK now handles rendering HTML Media Elements. Pass remoteVideo and localVideo elements via SDK constructor

  • SDK also offers to addTrack() to handle remoteVideo and localVideo elements outside the constructor too

  • For FireFox browser support

    • Client application needs to detect if the browser is firefox.
    • Client application needs to set custom UA configuration option 'options.enableMidLinesInSDP' to true for browser >= FF v63 for hold functionality to work
    • QoS feature is not supported on FireFox due to browser related bugs. Please set the custom UA configuration option options.enableQos to false
  • SDK can now detect AudioInputLevel if the microphone device is not present or the input volume is set to 0. Added event listner no-input-volume for the same

  • SDK can now detect AudioOutputLevel if the headset/speaker device is not configured correctly or the output volume is set to 0. Added event listner no-output-volume for the same

  • You can now enable logging for AudioInputLevel, AudioOutputLevel and Media Reports by setting the custom UA configuration option options.enableMediaReportLogging to true. This will help in providing more information on one-way audio issues if there are any

Initialization

Before:

webPhone = new RingCentral.WebPhone(data, {
  clientId: localStorage.getItem('webPhoneClientId'),
  audioHelper: {
    enabled: true,
  },
  logLevel: parseInt(logLevel, 10),
  appName: 'WebPhoneDemo',
  appVersion: '1.0.0',
});

After:

var remoteVideoElement = document.getElementById('remoteVideo');
var localVideoElement = document.getElementById('localVideo');
webPhone = new RingCentral.WebPhone(data, {
  clientId: localStorage.getItem('webPhoneClientId'),
  audioHelper: {
    enabled: true,
  },
  logLevel: parseInt(logLevel, 10),
  appName: 'WebPhoneDemo',
  appVersion: '1.0.0',
  media: {
    remote: remoteVideoElement,
    local: localVideoElement,
  },
  //to enable QoS Analytics Feature
  enableQos: true,
  //to enable media stats logging
  enableMediaReportLogging: true,
});

Accept Invites:

Before:

var acceptOptions = {
            media: {
                render: {
                    remote: document.getElementById('remoteVideo'),
                    local: document.getElementById('localVideo')
                }
            }
      };
...
...
session.accept(acceptOptions).then(function() {
...
});;

After:

session.accept().then(function() {
...
})

Send Invite:

Before:

var session = webPhone.userAgent.invite(number, {
  media: {
    render: {
      remote: document.getElementById('remoteVideo'),
      local: document.getElementById('localVideo'),
    },
  },
  fromNumber: username,
  homeCountryId: homeCountryId,
});

After:

var session = webPhone.userAgent.invite(number, {
  fromNumber: username,
  homeCountryId: homeCountryId,
});

Auto Answer incoming calls if Invites containing Alert-Info: Auto Answer header field:

For incoming calls
function onInvite(session) {
    if (session.request.headers['Alert-Info'][0].raw === 'Auto Answer') {
            session
                .accept()
                .then(function() {
                    onAccepted(session);
                })
                .catch(function(e) {
                    console.error('Accept failed', e.stack || e);
                });
    }
...
...
}

Compatibility Matrix

Date SDK SIPJS Chrome Firefox
Feb 2016 0.2.0 0.6.4 not known may be v50-70 ⚠️ NA
Apr 2016 0.3.0 0.7.3 not known may be v50-70 ⚠️ NA
Jun 2016 0.3.1 0.7.4 not known may be v50-70 ⚠️ NA
Aug 2016 0.3.2 0.7.5 54 to 56 ⚠️ NA
Sep 2016 0.4.0-RC1 0.7.5 54 to 56 ⚠️ NA
Jan 2017 0.4.0 0.7.5 54 to 56 ⚠️ NA
Mar 2017 0.4.1 0.7.7 54 to 70, rtcp mux support, media API changes ⚠️ Issues with Audio, SBC
Aug 2017 0.4.2 0.7.7 61 to 70 ⚠️ Issues with Audio, SBC
Aug 2017 0.4.3 0.7.8 61 to 70 ⚠️ Not Tested
Sep 2017 0.4.4 0.7.8 62 to 70 ⚠️ Issues with DTMF
Nov 2017 0.4.5 0.7.8 64 to 70 ⚠️ Issues with DTMF
Jul 2018 0.5.0 0.10.0 68 to 70 ⚠️ Issues with DTMF
Nov 2018 0.6.0 0.11.3 68 to 70 Regression tested for 62, 63 supported with custom modifiers
Nov 2018 0.6.1 0.11.6 71+, explicit plan b SDP support 62 to 64
Dec 2018 0.6.2 0.11.6 71+ 62 to 65
Feb 2019 0.6.3 0.11.6 71+ 62 to 65 , ⚠️ QoS feature not supported
Apr 2019 0.7.0 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
May 2019 0.7.1 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Jun 2019 0.7.2 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Nov 2019 0.7.3 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Nov 2019 0.7.5 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Jan 2020 0.7.6 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Jan 2020 0.7.7 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Feb 2020 0.7.8 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Mar 2020 0.8.0 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
May 2020 0.8.1 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Jul 2020 0.8.2 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Oct 2020 0.8.3 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Dec 2020 0.8.4 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported
Feb 2021 0.8.5 0.13.5 71+ 62 to 65 , ⚠️ QoS feature not supported

More Repositories

1

ringcentral-embeddable

RingCentral Embeddable widget
TypeScript
74
star
2

web-apps

RingCentral Web Apps Framework
TypeScript
69
star
3

ringcentral-js

RingCentral Connect Platform JS SDK
TypeScript
63
star
4

ringcentral-php

RingCentral Connect Platform PHP SDK
PHP
53
star
5

cassandra4io

Asynchronous lightweight fs2 and cats.effect.IO wrapper under datastax cassandra 4.x driver with doobie-like syntax
Scala
52
star
6

ringcentral-js-widgets

RingCentral Integration Widget Library
TypeScript
39
star
7

ringcentral-python

RingCentral Connect Platform Python SDK
Python
37
star
8

ringcentral-api-docs

Official RingCentral Connect Platform Developer Guide
Python
37
star
9

ringcentral-embeddable-electron-app

RingCentral Embeddable with Electron. Support Linux/Unix (Community)
JavaScript
36
star
10

juno

RingCentral React Component library, make your app have the same user experience as RingCentral Apps.
JavaScript
28
star
11

nestjs-json-api

Tools to implement JSON API, such as endpoint, query params, body params, validation, and transformation response.
TypeScript
28
star
12

ringcentral-javascript

JavaScript Style Guide
JavaScript
24
star
13

metrics-facade

RingCentral Metrics Facade is a Java library for working with metrics, allowing extremely flexible configuration of metrics and their export, designed to be generic and not tied to a specific implementation.
Java
23
star
14

ringcentral-softphone-go

RingCentral Softphone SDK for GoLang
Go
20
star
15

ringcentral-swift

RingCentral Swift Client
Swift
20
star
16

ringcentral-csharp-client

RingCentral C# Client
C#
19
star
17

ringcentral-softphone-js

RingCentral Softphone SDK for JavaScript
TypeScript
19
star
18

ringcentral-java

RingCentral Java SDK
Java
18
star
19

ringcentral-videosdk-ios-samples

RCV Client iOS SDK samples
17
star
20

RingCentral.Net

RingCentral SDK for .NET
C#
16
star
21

ringcentral-community-app

A RingCentral community client, build for linux user
JavaScript
13
star
22

testring

RingCentral TestRing
TypeScript
13
star
23

ringcentral-js-client

RingCentral Connect Platform JS Client
TypeScript
12
star
24

engage-digital-messaging-ios

Engage Digital Messaging IOS SDK
Objective-C
10
star
25

hubspot-embeddable-ringcentral-phone

Embeddable ringcentral phone for hubspot(Google Chrome extension)
JavaScript
10
star
26

ringcentral-extensible

RingCentral Extensible SDK
TypeScript
10
star
27

ringcentral-call-js

RingCentral Call aims to help developers to make and control call easily with RingCentral Web Phone and Call Control APIs. In this SDK, we use Web Phone for voice transmission, use Call Control API for call control.
TypeScript
10
star
28

ringcentral.github.io

RingCentral GitHub pages repo
JavaScript
9
star
29

ringcentral-csharp

RingCentral Connect Platform C# SDK
C#
9
star
30

ringcentral-add-in-framework-js

JavaScript framework for building RingCentral Message Add-ins.
JavaScript
9
star
31

ringcentral-chatbot-python

RingCentral Chatbot Framework for Python
Python
8
star
32

ringcentral-chatbot-js

RingCentral Chatbot Framework for JavaScript
TypeScript
8
star
33

pipedrive-embeddable-ringcentral-phone-spa

Add RingCentral Embeddable Voice widgets to pipedrive
JavaScript
7
star
34

vscode-openapi-linter

OpenAPI Linter as a Visual Code extension
TypeScript
7
star
35

ringcentral-demos-oauth

Quick demos on how to use 3-legged OAuth with RingCentral REST API.
HTML
7
star
36

integration-blog

Blog site of RingCentral Integration team
CSS
7
star
37

ringcentral-integration-for-hubspot

Add RingCentral to HubSpot, so HubSpot user can call with RingCentral by Click HubSpot call button.
7
star
38

ringcentral-call-control-js

RingCentral Call Control SDK in JavaScript to control RingCentral calls on any endpoint. Demo URL:
TypeScript
7
star
39

ringcentral-mfe

A micro frontends framework based on Module Federation
TypeScript
7
star
40

notification-app-js

js framework to create notification app for RingCentral
JavaScript
6
star
41

engage-digital-messaging-android

Engage Digital Messaging Android SDK
HTML
6
star
42

ringcentral-faq

RingCentral Developer FAQ. Ask questions here or on our Community: https://devcommunity.ringcentral.com
HTML
6
star
43

ringcentral-embeddable-extension-factory

CLI tool to create a RingCentral Embeddable Chrome and Firefox extension for CRMs
JavaScript
6
star
44

redtail-embeddable-ringcentral-phone

RingCentral Embeddable Voice with Chrome extension for redtail
JavaScript
5
star
45

ringcentral-go

RingCentral GoLang SDK
Go
5
star
46

ringcentral-ruby

Ruby SDK for RingCentral
Ruby
5
star
47

engage-digital-source-sdk

RingCentral Engage Digital Source SDK documentation
PHP
5
star
48

Glipped

Invite Users to a Public Glip Group. Express app using Swig to invite users to Glip Group
JavaScript
5
star
49

ringcentral-pjsip

Use PJSIP to create RingCentral device simulators
C++
5
star
50

ringcentral-c2d

RingCentral Click To Dial library
TypeScript
5
star
51

engage-voice-embeddable

(Beta)RingCentral RingCX Embeddable widget
TypeScript
5
star
52

ringcentral-videosdk-android-samples

RCV Client Android SDK samples
5
star
53

glip-botman

Create a ChatBot in Glip using Botman PHP
PHP
5
star
54

engage-voice-api-docs

Engage Voice API Docs. Currently in draft state. Rendered here: http://ringcentral.github.io/engage-voice-api-docs , https://engage-voice-api-docs.readthedocs.io/
JavaScript
5
star
55

ringcentral-glip-errbot

Errbot Backend for RingCentral Glip
Python
4
star
56

github-add-in

Github add-in for RingCentral app
JavaScript
4
star
57

engage-digital-api-docs

API Documentation for RingCX
HTML
4
star
58

engage-digital-chatbot-js

RingCentral Engage Chatbot framework js
JavaScript
4
star
59

ringcentral-js-cti-demo

CTI demo application
HTML
4
star
60

ringcentral-videosdk-android

RCV Client Android SDK API documents
HTML
4
star
61

ringcentral-slides

RingCentral developer presentations - https://ringcentral.github.io/ringcentral-slides/
HTML
4
star
62

rc-assistant

RC Assistant Bot
JavaScript
4
star
63

ringcentral-embeddable-extension-common

RingCentral Embeddable Voice chrome extension common files
JavaScript
4
star
64

ringcentral-notification-app-developer-tool

A tool to help developer to test notification app
JavaScript
4
star
65

ringcentral-media-reader

A web app to get RingCentral media resource
HTML
3
star
66

ringcentral-videosdk-js

RCV Client Web SDK API documents
HTML
3
star
67

ringcentral-videosdk-ios

RCV Client iOS SDK API documents
HTML
3
star
68

ringcentral-chatbot-core

This is a fork of https://github.com/ringcentral/ringcentral-chatbot-js, the goal is put bot logic into one standalone module so add-in framework or other project can use it.
TypeScript
3
star
69

ringcentral-pubnub-java

RingCentral PubNub SDK for Java
Java
3
star
70

ringcentral-engage-voice-embeddable-mobile

[Experimental] Android/IOS apps based on ringcentral-engage-voice-embeddable and cordova
JavaScript
3
star
71

lottery-bot

Randomly pick some team members as lottery winner!
JavaScript
3
star
72

hubspot-embeddable-engage-phone

Beta Engage Voice browser extension for Hubspot
JavaScript
3
star
73

engage-voice-python

RingCentral Engage Voice API wrapper for Python
Python
3
star
74

engage-digital-sdk-source-reddit

An app connect Reddit account to RingCentral Engage Digital SDK source
JavaScript
3
star
75

ringcentral-js-helpers

JavaScript Helper Functions for SDK
TypeScript
3
star
76

trello-notification-app

Trello notification and bot add-in for RingCentral
JavaScript
3
star
77

engage-digital-communities-ruby

Ruby Client for Engage Communities API
Ruby
3
star
78

engage-voice-js

RingCentral Engage Voice API js wrapper
TypeScript
3
star
79

ringcentral-personal-chatbot-js

RingCentral chatbot framework for personal RingCentral account
JavaScript
3
star
80

ringcentral-for-practicesuite

RingCentral for PracticeSuite (Community)
JavaScript
3
star
81

join-ringcentral

Invite user by email to join RingCentral chat.
TypeScript
2
star
82

rc-qna-bot

RingCentral Q & A bot for developers
JavaScript
2
star
83

ringcentral-dart

Dart SDK for RingCentral
Dart
2
star
84

engage-voice-java

Engage Voice Java SDK
Java
2
star
85

hystrix-addons

Some useful stuff for Netflix's Hystrix https://github.com/Netflix/Hystrix
Java
2
star
86

eslint-plugin-ringcentral

JavaScript
2
star
87

poll-bot

Poll bot for RingCentral App
2
star
88

engage-digital-js

Simple JS API wrapper for RingCentral Engage API
TypeScript
2
star
89

release-notes

Release Notes Links
HTML
2
star
90

engage-digital-sdk-source-glip

RingCentral Engage Digital Dimelo SDK source: glip
JavaScript
2
star
91

ringcentral-api-code-samples

C#
2
star
92

ringcentral-notification-app-helper

A module used for communicate with RingCentral app in RingCentral notification integration
JavaScript
2
star
93

ringcentral-embeddable-rcv-demo

A demo shows how to use RCV in ringcentral-embeddable
JavaScript
2
star
94

bugsnag-notification-app

Bugsnag notification and bot add-in for RingCentral app
JavaScript
2
star
95

ringcentral-api-specifications

RingCentral API Specification in various formats
2
star
96

ringcentral-videosdk-js-samples

RCV Client Web SDK samples
TypeScript
2
star
97

RingCentral.Softphone.Net

RingCentral Softphone SDK for .Net
C#
2
star
98

ringcentral-chatbot-server-python

RingCentral chatbot server for chatbot framework python
Python
2
star
99

awesome-glip-bots

A list of resources about Glip bots
2
star
100

engage-digital-bot-template-js

Template for RingCentral Engage digital chatbot js.
JavaScript
2
star