{"id":13406900,"url":"https://github.com/ringcentral/ringcentral-web-phone","last_synced_at":"2025-05-16T05:06:06.428Z","repository":{"id":3573920,"uuid":"50194284","full_name":"ringcentral/ringcentral-web-phone","owner":"ringcentral","description":"RingCentral WebPhone Library for JavaScript WebRTC","archived":false,"fork":false,"pushed_at":"2025-05-08T18:29:10.000Z","size":14784,"stargazers_count":115,"open_issues_count":3,"forks_count":78,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-08T19:25:02.519Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ringcentral.github.io/web-phone-demo/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vyshakhbabji/web-phone-1","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ringcentral.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-01-22T16:47:45.000Z","updated_at":"2025-05-08T18:28:46.000Z","dependencies_parsed_at":"2024-01-25T18:45:44.106Z","dependency_job_id":"85c2e3c4-9e65-4a2f-8fb1-eeb2fa98b61c","html_url":"https://github.com/ringcentral/ringcentral-web-phone","commit_stats":{"total_commits":251,"total_committers":27,"mean_commits":9.296296296296296,"dds":0.7171314741035857,"last_synced_commit":"bb0e1a2156ce015f2848df9adec487887f19dded"},"previous_names":[],"tags_count":54,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringcentral%2Fringcentral-web-phone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringcentral%2Fringcentral-web-phone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringcentral%2Fringcentral-web-phone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ringcentral%2Fringcentral-web-phone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ringcentral","download_url":"https://codeload.github.com/ringcentral/ringcentral-web-phone/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254471061,"owners_count":22076585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T19:02:42.493Z","updated_at":"2025-05-16T05:06:01.419Z","avatar_url":"https://github.com/ringcentral.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"[![Build Status](https://github.com/ringcentral/ringcentral-web-phone/actions/workflows/tests.yml/badge.svg?branch=master)](https://github.com/ringcentral/ringcentral-web-phone/actions/workflows/tests.yml)\n[![Coverage Status](https://coveralls.io/repos/github/ringcentral/ringcentral-web-phone/badge.svg?branch=master)](https://coveralls.io/github/ringcentral/ringcentral-web-phone?branch=master)\n\n# RingCentral WebPhone Library\n\nThe RingCentral WebPhone Library includes a JavaScript WebRTC library and a\nWebRTC phone demo app.\n\n## 2.0.0 version\n\n2.0.0 version is currently in beta. We encourange new users to start with 2.0.0\nversion instead.\n\n2.0.0 version is a complete rewrite and it has tons of improvements. It's hosted\non main branch:\n\nhttps://github.com/ringcentral/ringcentral-web-phone/tree/main\n\n## Version 1.0.0 release notes\n\nhttps://gist.github.com/tylerlong/72b51a72cc16206850c4cdfa36c6793a\n\n## Prerequisites\n\n- You will need an active RingCentral account. Don't have an account?\n  [Get your Free RingCentral Developer Account Now!](https://developers.ringcentral.com)\n- App type should be either :\n  - Browser-Based\n  - Server/Web\n\n## Browser Compatibility\n\nCurrently, we officially support Google Chrome browser. Official support for\nFirefox and Safari browsers are coming soon.\n\n## Network Requirements\n\nPlease visit Network Requirement links below\n\n1. Network Requirements and Recommendations | RingCentral Office :\n   [https://support.ringcentral.com/s/article/9233?language=en_US](https://support.ringcentral.com/s/article/9233?language=en_US)\n2. Network Requirements and Recommendations - Resources :\n   [https://support.ringcentral.com/s/article/Network-Requirements-and-Recommendations-Resources?language=en_US](https://support.ringcentral.com/s/article/Network-Requirements-and-Recommendations-Resources?language=en_US)\n\n## Demo application for React.js\n\nHere is a demo application based on React.js:\nhttps://chuntaoliu.com/rc-web-phone-demo/\n\nSource code is here: https://github.com/tylerlong/rc-web-phone-demo\n\n## Table of Contents\n\n1. [Installation](#installation)\n2. [Usage](#usage)\n3. [Configuring your RingCentral app](#configuring-your-ringcentral-app)\n4. [Include Library And HTML Elements](#include-library-and-html-elements)\n5. [Application](#application)\n6. [Demo](#demo)\n7. [API](#api)\n8. [Initiating The Call](#initiating-the-call)\n9. [Accepting Incoming Call](#accepting-incoming-call)\n10. [DTMF](#dtmf)\n11. [Hold Unhold](#hold-unhold)\n12. [Mute Unmute](#mute-unmute)\n13. [Park](#park)\n14. [Flip](#flip)\n15. [Transfer](#transfer)\n16. [Warm Transfer](#warm-transfer)\n17. [Forward](#forward)\n18. [Start/Stop Recording](#startstop-recording)\n19. [Barge/Whisper](#bargewhisper)\n\n---\n\n## Installation\n\n```ssh\nyarn add ringcentral-web-phone\n```\n\nOr you may referece it in html directly:\n\n```html\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/ringcentral-web-phone@1.0.7/lib/index.umd.js\"\u003e\u003c/script\u003e\n```\n\nPlease note that, sip.js has been bundled into `index.umd.js` so you don't need to reference it separately.\n\n### If you are not using NPM:\n\n1. Download SIP.JS:\n   [https://github.com/onsip/SIP.js/releases/tag/0.20.0](https://github.com/onsip/SIP.js/releases/tag/0.20.0)\n2. Download WebPhone SDK:\n   [https://github.com/ringcentral/ringcentral-web-phone/releases/latest](https://github.com/ringcentral/ringcentral-web-phone/releases/latest)\n3. Download audio files:\n   1. [https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/incoming.ogg](https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/incoming.ogg)\n   2. [https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/outgoing.ogg](https://cdn.rawgit.com/ringcentral/ringcentral-web-phone/master/demo/audio/outgoing.ogg)\n\n---\n\n## Usage\n\n### Configuring your RingCentral app\n\nEnsure your app has the following properties set. If these are not set, the\nerror specified will be returned.\n\n| App Property  | Value           | Error if not set                                      |\n| ------------- | --------------- | ----------------------------------------------------- |\n| Permissions   | `VoIP Calling`  | `Specific application permission required`            |\n| Platform type | `Browser-based` | `Client edition is not compatible with current Brand` |\n\nSince WebRTC enables dialing out, you need to have a `DIGITAL LINE` attached to\nan extension to use this capability. You can configure this in Online Web Portal\nfor [Production](https://service.ringcentral.com/) accounts. More information on\nDigital Lines and their configuration is available in the following RingCentral\nKnowledge Base article topics:\n\n1. [Digital Line Overview (KB 5862)](http://success.ringcentral.com/articles/en_US/RC_Knowledge_Article/5862)\n2. [Adding a Digital Line (KB 3136)](http://success.ringcentral.com/articles/RC_Knowledge_Article/5-10-Adding-Phones-to-other-extensions-via-Web).\n   A limited number of Digital Lines are free with each sandbox account which\n   can be configured with the free RingCentral for Desktop softphone.\n3. [Reassigning an Existing Digital Line (KB 3748)](http://success.ringcentral.com/articles/en_US/RC_Knowledge_Article/How-to-Assign-an-Existing-Digital-Line-to-a-different-extension)\n\nThese permissions be configured for your app in the\n[RingCentral Developer Portal](https://developers.ringcentral.com/). Fill this\n[Registration Form](https://docs.google.com/forms/d/15kK_zJ5FhyXiH8gwOqiaG7_BuTWGCeeVr4MAv4OBpUM/viewform)\nto get access to WebRTC permissions. Please contact devsupport@ringcentral.com\nto request these permissions.\n\n### Include Library And HTML Elements\n\n```html\n\u003cvideo id=\"remoteVideo\" hidden=\"hidden\"\u003e\u003c/video\u003e \u003cvideo id=\"localVideo\" hidden=\"hidden\" muted=\"muted\"\u003e\u003c/video\u003e\n```\n\n### Application\n\nFor this example you will also need to have\n[RingCentral JS SDK installed](https://github.com/ringcentral/ringcentral-js#installation).\n\nConfigure the web-phone\n\n```js\nvar clientId = '...';\nvar clientSecret = '...';\nvar appName = '...';\nvar appVersion = '...';\n\nvar sdk = new RingCentral.SDK({\n  clientId: clientId,\n  clientSecret: clientSecret,\n  appName: appName,\n  appVersion: appVersion,\n  server: RingCentral.SDK.server.production, // or .sandbox\n});\n\nvar remoteVideoElement = document.getElementById('remoteVideo');\nvar localVideoElement = document.getElementById('localVideo');\n\nvar platform = sdk.platform();\n\nplatform\n  .login({\n    jwt: '...',\n  })\n  .then(function (loginResponse) {\n    return platform\n      .post('/client-info/sip-provision', {\n        sipInfo: [{ transport: 'WSS' }],\n      })\n      .then(function (res) {\n        // Doing nested then because we need loginResponse in a simple way\n\n        return new RingCentral.WebPhone(res.json(), {\n          // optional\n          clientId: clientId,\n          appName: appName,\n          appVersion: appVersion,\n          uuid: loginResponse.json().endpoint_id,\n          logLevel: 1, // error 0, warn 1, log: 2, debug: 3\n          audioHelper: {\n            enabled: true, // enables audio feedback when web phone is ringing or making a call\n            incoming: 'path-to-audio/incoming.ogg', // path to audio file for incoming call\n            outgoing: 'path-to-audio/outgoing.ogg', // path to aduotfile for outgoing call\n          },\n          media: {\n            remote: remoteVideoElement,\n            local: localVideoElement,\n          },\n          //to enable QoS Analytics Feature\n          enableQos: true,\n        });\n      });\n  })\n  .then(function (webPhone) {\n    // YOUR CODE HERE\n  })\n  .catch(function (e) {\n    console.error(e.stack);\n  });\n```\n\n---\n\n## Demo\n\n```sh\n$ git clone https://github.com/ringcentral/ringcentral-web-phone.git\n$ cd ringcentral-web-phone\n$ yarn install\n$ yarn serve\n```\n\n1. Open `http://localhost:8080` in the browser (port may change if `8080` will\n   be already used by other app)\n2. If your Application is of the Scope `Server/Web` `Browser-Based` Then you\n   would need to add `http://localhost:8080/callback.html` as the OAuth Redirect\n   URI for the application in\n   [Developer Portal](https://developer.ringcentral.com)\n3. Add your RC credentials and click on `Register`\n4. For making outbound calls, enter phone number and click on `Call`\n5. For receiving incoming calls, Click on `Accept` button when window pops up\n   (will be visible when there is an incoming call)\n\nIf there's any connection problems to Sandbox environment, you may need to\nswitch to the Production environment.\n\nWebRTC works with issues when served from file system directly to browser (e.g.\n`file://` protocol), so you will need a local HTTP server (comes with this\npackage).\n\nOnline demo is hosted at\n[https://ringcentral.github.io/ringcentral-web-phone](https://ringcentral.github.io/ringcentral-web-phone)\n\n\\*\\* NOTE : If you are using the online demo, please add\n`https://ringcentral.github.io/ringcentral-web-phone/callback.html` to the app's\nOAuth Redirect URI\n\n---\n\n## API\n\nExcept for some RingCentral-specific features the API is 100% the same as\nSIP.JS: https://github.com/onsip/SIP.js/releases/tag/0.20.0: most of the time\nyou will be working with RC-flavored\n[UserAgent](https://github.com/onsip/SIP.js/blob/master/docs/api/sip.js.useragent.md)\nand\n[Session](https://github.com/onsip/SIP.js/blob/master/docs/api/sip.js.session.md)\nobjects of SIP.JS.\n\nWe encourage you to take a look at [Guides](https://sipjs.com/guides/) section,\nespecially [Make A Call](https://sipjs.com/guides/make-call/) and\n[Receive A Call](https://sipjs.com/guides/receive-call/) articles.\n\n### Constructor\n\n```js\nvar webPhone = new RingCentral.WebPhone(provisionData, options);\n```\n\n- Provision Data \u0026mdash; the JSON returned from `/client-info/sip-provision` API\n  endpoint\n- Options \u0026mdash; object with various configuration options that adjust WebPhone\n  behavior\n  - `clientId` \u0026mdash; your application key\n  - `appName` \u0026mdash; your application short code name\n  - `appVersion` \u0026mdash; your application version\n  - `uuid` \u0026mdash; manually provide the unique identifier of WebPhone instance\n    (should persist between page reloads)\n  - `logLevel` \u0026mdash; controls verboseness in browser console\n    - `0` \u0026mdash; Errors only (good for production)\n    - `1` \u0026mdash; Errors \u0026 warnings\n    - `2` \u0026mdash; Errors, warnings, logs\n    - `3` \u0026mdash; Everything including debug information (good for development)\n  - `audioHelper` \u0026mdash; audio feedback when web phone is ringing or making a\n    call\n    - `enabled` \u0026mdash; turns feedback on and off\n    - `incoming` \u0026mdash; path to `incoming.ogg`, audio file for incoming call\n    - `outgoing` \u0026mdash; path to `outgoing.ogg`, audio file for outgoing call\n  - `onSession` \u0026mdash; this callback will be fired each time User Agent starts\n    working with session (incoming or outgoing)\n  - `enableQos:true` \u0026mdash; will enable quality of service for webRTC calls ,\n    you can view the voice quality of calls in analytics portal\n\n### Attaching Media Streams\n\nFor futher information, refer SIP.js guide to\n[attach media](https://sipjs.com/guides/attach-media/)\n\n### Initiating The Call\n\n```javascript\nvar session = webPhone.userAgent.invite('PHONE_NUMBER', {\n  fromNumber: 'PHONE_NUMBER', // Optional, Company Number will be used as default\n  homeCountryId: '1', // Optional, the value of\n});\n```\n\n### Accepting Incoming Call\n\n```javascript\nwebPhone.userAgent.on('invite', function(session){\n    session.accept().then(...);\n});\n```\n\n### DTMF\n\nCallee will be put on hold and the another person can join into the call by\ndialing the extension number announced within the call.\n\n```js\nsession.dtmf('DTMF_DIGITS').then(...);\n```\n\n### Hold Unhold\n\nCallee will be put on hold and the another person can join into the call by\ndialing the extension number announced within the call.\n\n```js\nsession.hold().then(...);\nsession.unhold().then(...);\n```\n\n### Mute Unmute\n\nCallee will be put on mute or unmute\n\n```js\nsession.mute();\nsession.unmute();\n```\n\n### Park\n\nCallee will be put on hold and the another person can join into the call by\ndialing the extension number announced within the call.\n\n```js\nsession.park().then(...);\n```\n\n### Flip\n\nCaller can filp calls to different devices logged in through the same\ncredentials.\n\n```js\nsession.flip('TARGET_NUMBER').then(...);\n```\n\n### Transfer\n\n```js\nsession.transfer('TARGET_NUMBER').then(...);\n```\n\n### Warm Transfer\n\nIf an agent has an active call with a customer and needs to transfer this call\nto a supervisor, then agent puts existing call on hold, makes a call to a\nsupervisor and when ready performs a warm transfer. Customer will be connected\nto supervisor and the call between customer and agent will be disconnected.\n\nWarm transfer puts current line on hold (if not done yet) then takes an existing\nline from arguments and makes transfer.\n\n#### Handle Warm Transfer scenario (Attended Transfer usecase) :\n\nSteps:\n\n1. Put the current session on `Hold` as shown in the demo code\n2. Initiate a new session (Start new call)\n3. a. Once new call is answered , `Complete` the transfer , or terminate new\n   session. b. If you want to switch to original call, switch the session\n   context and `Unhold` the session\n\n```javascript\n$modal.find('.transfer-form button.warm').on('click', function (e) {\n  session.hold().then(function () {\n    console.log('Placing the call on hold, initiating attended transfer');\n    var newSession = session.userAgent.invite($transfer.val().trim());\n    newSession.once('established', function () {\n      console.log('New call initated. Click Complete to complete the transfer');\n      $modal.find('.transfer-form button.complete').on('click', function (e) {\n        session\n          .warmTransfer(newSession)\n          .then(function () {\n            console.log('Warm transfer completed');\n          })\n          .catch(function (e) {\n            console.error('Transfer failed', e.stack || e);\n          });\n      });\n    });\n  });\n});\n```\n\n### Forward\n\n```js\nsession.forward('TARGET_NUMBER').then(...);\n```\n\n### Reject vs Decline\n\n`sesstion.reject()` method has been available since long ago. It will send a SIP\n\"480 Temporarily Unavailable\" message to SIP server. I believe this method is\nfrom SIP.js since I don't see any relavent code in this repo. There is a\npotential issue with this methods, sometimes server side will re-send the invite\nmessage to you. No always reproducible but quite annoying. The call will appear\nagain right after you \"reject\".\n\n`session.decline()` method was added in 1.0.5. It sends a special XML message to\nSIP server to ignore the call. And RingCentral SIP servers understand this\nmessage and will not bother you again about this call session.\n\n### Start/Stop Recording\n\n```js\nsession.startRecord().then(...);\nsession.stopRecord().then(...);\n```\n\n### Barge/Whisper\n\nNot yet implemented. Could be done by dialing \\*83. The account should be\nenabled for barge/whisper access through system admin.\n\n## Upgrade Procedure from 0.8.x to 0.9.0\n\n- [Migration Doc](MIGRATION.md)\n\n## Upgrade Procedure from v0.4.X to 0.8.9\n\n- SDK now only supports only Unified SDP plan. You can find more information\n  about this here:\n  [https://chromestatus.com/feature/5723303167655936](https://chromestatus.com/feature/5723303167655936)\n\n- SDK now only supports \"require\" as rtcp-mux policy. We no more support\n  \"negotiate\". You can find more information about this here:\n  [https://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc/](https://www.juandebravo.com/2017/02/15/rtcp-mux-in-webrtc/)\n\n- SDK now handles SIP Re-Invites, which helps in handling one-way audio issues /\n  reconnecting media due to network reconnections.\n\n- SDK constructor now allows to add custom UA Configuration parameters like\n  `sessionDescriptionHandlerFactory` , `sessionDescriptionHandlerFactoryOptions`\n\n- SDK now handles rendering HTML Media Elements. Pass remoteVideo and localVideo\n  elements via SDK constructor\n\n- SDK also offers to addTrack() to handle remoteVideo and localVideo elements\n  outside the constructor too\n\n- For FireFox browser support\n\n  - Client application needs to detect if the browser is firefox.\n  - Client application needs to set custom UA configuration option\n    'options.enableMidLinesInSDP' to `true` for browser \u003e= FF v63 for hold\n    functionality to work\n  - QoS feature is not supported on FireFox due to browser related bugs. Please\n    set the custom UA configuration option `options.enableQos` to `false`\n\n- SDK can now detect AudioInputLevel if the microphone device is not present or\n  the input volume is set to 0. Added event listner `no-input-volume` for the\n  same\n\n- SDK can now detect AudioOutputLevel if the headset/speaker device is not\n  configured correctly or the output volume is set to 0. Added event listner\n  `no-output-volume` for the same\n\n- You can now enable logging for AudioInputLevel, AudioOutputLevel and Media\n  Reports by setting the custom UA configuration option\n  `options.enableMediaReportLogging` to true. This will help in providing more\n  information on one-way audio issues if there are any\n\n### Initialization\n\nBefore:\n\n```javascript\nwebPhone = new RingCentral.WebPhone(data, {\n  clientId: localStorage.getItem('webPhoneClientId'),\n  audioHelper: {\n    enabled: true,\n  },\n  logLevel: parseInt(logLevel, 10),\n  appName: 'WebPhoneDemo',\n  appVersion: '1.0.0',\n});\n```\n\nAfter:\n\n```javascript\nvar remoteVideoElement = document.getElementById('remoteVideo');\nvar localVideoElement = document.getElementById('localVideo');\nwebPhone = new RingCentral.WebPhone(data, {\n  clientId: localStorage.getItem('webPhoneClientId'),\n  audioHelper: {\n    enabled: true,\n  },\n  logLevel: parseInt(logLevel, 10),\n  appName: 'WebPhoneDemo',\n  appVersion: '1.0.0',\n  media: {\n    remote: remoteVideoElement,\n    local: localVideoElement,\n  },\n  //to enable QoS Analytics Feature\n  enableQos: true,\n  //to enable media stats logging\n  enableMediaReportLogging: true,\n});\n```\n\n### Accept Invites:\n\nBefore:\n\n```javascript\nvar acceptOptions = {\n            media: {\n                render: {\n                    remote: document.getElementById('remoteVideo'),\n                    local: document.getElementById('localVideo')\n                }\n            }\n      };\n...\n...\nsession.accept(acceptOptions).then(function() {\n...\n});;\n```\n\nAfter:\n\n```javascript\nsession.accept().then(function() {\n...\n})\n```\n\n### Send Invite:\n\nBefore:\n\n```javascript\nvar session = webPhone.userAgent.invite(number, {\n  media: {\n    render: {\n      remote: document.getElementById('remoteVideo'),\n      local: document.getElementById('localVideo'),\n    },\n  },\n  fromNumber: username,\n  homeCountryId: homeCountryId,\n});\n```\n\nAfter:\n\n```javascript\nvar session = webPhone.userAgent.invite(number, {\n  fromNumber: username,\n  homeCountryId: homeCountryId,\n});\n```\n\n### Auto Answer incoming calls if Invites containing `Alert-Info: Auto Answer` header field:\n\n```javascript\nFor incoming calls\nfunction onInvite(session) {\n    if (session.request.headers['Alert-Info'][0].raw === 'Auto Answer') {\n            session\n                .accept()\n                .then(function() {\n                    onAccepted(session);\n                })\n                .catch(function(e) {\n                    console.error('Accept failed', e.stack || e);\n                });\n    }\n...\n...\n}\n```\n\n## Compatibility Matrix\n\n| Date     | SDK       | SIPJS  | Chrome                                        | Firefox                                                      |\n| -------- | --------- | ------ | --------------------------------------------- | ------------------------------------------------------------ |\n| Feb 2016 | 0.2.0     | 0.6.4  | not known may be v50-70                       | :warning: NA                                                 |\n| Apr 2016 | 0.3.0     | 0.7.3  | not known may be v50-70                       | :warning: NA                                                 |\n| Jun 2016 | 0.3.1     | 0.7.4  | not known may be v50-70                       | :warning: NA                                                 |\n| Aug 2016 | 0.3.2     | 0.7.5  | 54 to 56                                      | :warning: NA                                                 |\n| Sep 2016 | 0.4.0-RC1 | 0.7.5  | 54 to 56                                      | :warning: NA                                                 |\n| Jan 2017 | 0.4.0     | 0.7.5  | 54 to 56                                      | :warning: NA                                                 |\n| Mar 2017 | **0.4.1** | 0.7.7  | 54 to 70, rtcp mux support, media API changes | :warning: Issues with Audio, SBC                             |\n| Aug 2017 | 0.4.2     | 0.7.7  | 61 to 70                                      | :warning: Issues with Audio, SBC                             |\n| Aug 2017 | 0.4.3     | 0.7.8  | 61 to 70                                      | :warning: Not Tested                                         |\n| Sep 2017 | 0.4.4     | 0.7.8  | 62 to 70                                      | :warning: Issues with DTMF                                   |\n| Nov 2017 | 0.4.5     | 0.7.8  | 64 to 70                                      | :warning: Issues with DTMF                                   |\n| Jul 2018 | 0.5.0     | 0.10.0 | 68 to 70                                      | :warning: Issues with DTMF                                   |\n| Nov 2018 | 0.6.0     | 0.11.3 | 68 to 70                                      | Regression tested for 62, 63 supported with custom modifiers |\n| Nov 2018 | **0.6.1** | 0.11.6 | 71+, explicit `plan b` SDP support            | 62 to 64                                                     |\n| Dec 2018 | 0.6.2     | 0.11.6 | 71+                                           | 62 to 65                                                     |\n| Feb 2019 | 0.6.3     | 0.11.6 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Apr 2019 | 0.7.0     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| May 2019 | 0.7.1     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Jun 2019 | 0.7.2     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Nov 2019 | 0.7.3     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Nov 2019 | 0.7.5     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Jan 2020 | 0.7.6     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Jan 2020 | 0.7.7     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Feb 2020 | 0.7.8     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Mar 2020 | 0.8.0     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| May 2020 | 0.8.1     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Jul 2020 | 0.8.2     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Oct 2020 | 0.8.3     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Dec 2020 | 0.8.4     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n| Feb 2021 | 0.8.5     | 0.13.5 | 71+                                           | 62 to 65 , :warning: QoS feature not supported               |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringcentral%2Fringcentral-web-phone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fringcentral%2Fringcentral-web-phone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fringcentral%2Fringcentral-web-phone/lists"}