Changelogs

    We document all notable release changes to the Browser SDK on this page. We base the format on Keep a Changelog and this project adheres to Semantic Versioning.

    Release Process

    We release all changes to Beta first before updating to a stable release at least two weeks later, and we update all changes on this page. All past releases are URI accessible from below and immutable, unless explicitly stated.

    You can subscribe here to get notified of all changelog updates via email or RSS Feeds.

    Browser SDK V2.1

    Version v2.1.36-beta.1Beta Nov 25, 2020

    Bug Fixes:

    • Fixed: Issue where incoming calls were not ringing in desktop browsers as well when the tab with the call was in the background. This is the expected behavior in mobile browsers but not desktop ones.

    Version v2.1.36-beta.0Beta Nov 20, 2020

    Bug Fixes:

    • Fixed: Issue where an ongoing browser call would face a one-way audio issue (remote user won’t be able to hear the browser app user) if the Bluetooth audio device being used by the browser app user got disconnected and switched to another audio input device.

    Version v2.1.35 Nov 19, 2020

    Bug Fixes:

    • Fixed: Issue where client name was being sent as ‘Chrome’ as part of Call, Answered, and Call Summary events even for calls made from Microsoft Edge browser. Now the value sent will be ‘Edge’.
    • Fixed: Issue where setting the configuration parameter ‘dscp’ as true was not behaving as intended and all UDP packets were still being set with DSCP Class CS0 (default class) instead of DSCP class EF (Expedited Forwarding) which is the expected behavior. Being set with EF ensures packets being tagged as high priority by network routers leading to lower chances of said packets being dropped and minimum per-hop delays.
    • Fixed: Issue where on receiving an incoming mobile browser call with the browser in the background, the phone would start ringing despite a visual notification not possible (due to limitations imposed from browsers) and the customer having no way to find out which app is making the phone ring. Now the phone won’t ring either.
    • Fixed: Issue where a “TypeError” was being emitted if audio devices were toggled during an ongoing call. While this error did not affect any functionality, it was unnecessary and hence will not be emitted anymore.

    Version v2.1.35-beta.0Beta Nov 06, 2020

    Bug Fixes:

    • Fixed: Issue where client name was being sent as ‘Chrome’ as part of Call, Answered, and Call Summary events even for calls made from Microsoft Edge browser. Now the value sent will be ‘Edge’.
    • Fixed: Issue where setting the configuration parameter ‘dscp’ as true was not behaving as intended and all UDP packets were still being set with DSCP Class CS0 (default class) instead of DSCP class EF (Expedited Forwarding) which is the expected behavior. Being set with EF ensures packets being tagged as high priority by network routers leading to lower chances of said packets being dropped and minimum per-hop delays.
    • Fixed: Issue where on receiving an incoming mobile browser call with the browser in the background, the phone would start ringing despite a visual notification not possible (due to limitations imposed from browsers) and the customer having no way to find out which app is making the phone ring. Now the phone won’t ring either.
    • Fixed: Issue where a “TypeError” was being emitted if audio devices were toggled during an ongoing call. While this error did not affect any functionality, it was unnecessary and hence will not be emitted anymore.

    Version v2.1.34 Oct 19, 2020

    Bug Fixes:

    • Fixed: Issue where onConnectionChange event was not getting triggered in the following scenarios:
      • normal endpoint logout
      • abrupt socket disconnection due to changed network conditions

    Features:

    • Added: New flag to selectively enable local or remote call quality tracking for Browser SDK. The old flag, which could only toggle both of these together, is to be deprecated in the next major release.

    Version v2.1.34-beta.1Beta Oct 07, 2020

    Bug Fixes:

    • Fixed: Issue where onConnectionChange event was not getting triggered in the following scenarios:
      • normal endpoint logout
      • abrupt socket disconnection due to changed network conditions

    Version v2.1.34-beta.0Beta Sep 23, 2020

    Features:

    • Added: New flag to selectively enable local or remote call quality tracking for Browser SDK. The old flag, which could only toggle both of these together, is to be deprecated in the next major release.

    Version v2.1.33 Sep 17, 2020

    Bug Fixes:

    1. Fixed: Issue where the incorrect audio level was getting printed if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
    2. Fixed: Issue where one-way audio was being observed on calls made from the Safari browser if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
    3. Fixed: Issue where playback tone (incoming call ringtone) was getting played on device speakers if the keyboard/headphones ‘play’ button is pressed with the device in idle state.

    Features:

    1. Added: Buffer mechanism for temporarily storing Call Insights stats in the Browser before being sent to the Plivo server in case of unstable network conditions.

    Version v2.1.33-beta.0Beta Sep 04, 2020

    Bug Fixes:

    • Fixed: Issue where the incorrect audio level was getting printed if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
    • Fixed: Issue where one-way audio was being observed on calls made from the Safari browser if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
    • Fixed: Issue where playback tone (incoming call ringtone) was getting played on device speakers if the keyboard/headphones ‘play’ button is pressed with the device in idle state.

    Features:

    • Added: Buffer mechanism for temporarily storing Call Insights stats in the Browser before being sent to the Plivo server in case of unstable network conditions.

    Version 2.1.32 Aug 27, 2020

    Bug Fixes:

    • Fixed: Issue where Call Summary and Call Answered events were not getting sent if the user adds “sip:” in their username.
    • Fixed: Issue related to device “set()” API not working as expected when called during idle state (no active calls).

    Features:

    • Added: Basic Call-insights RTP stats support for Safari.
    • Added: Active Input Device Info as part of Call Answered and Call Summary events for Safari.

    Version 2.1.32-beta.0Beta Aug 13, 2020

    Bug Fixes:

    • Fixed: Issue where Call Summary and Call Answered events were not sent if the user adds “sip:” in their username
    • Fixed: Device-related issue “set()” API not working as expected when called during idle state(no active calls).

    Features:

    • Added: Basic Call-insights RTP stats support for Safari
    • Added: Active Input Device Info as part of Call Answered and Call Summary events for Safari

    Version 2.1.31 Jul 24, 2020

    Bug Fixes:

    • Fixed: Issue where the event “onMediaConnected” was not emitted

    Version 2.1.30 Jul 21, 2020

    Bug Fixes:

    • Fixed: Unwanted warnings that were printed while loading the Browser SDK.
    • Fixed: ‘Mute’ state was retained from a call to the next call.
    • Fixed: Error that was generated while trying to play a ringtone in Safari.

    Features:

    • Added: Improvements in the calculation of the audio level for Call-Insights.

    Version 2.1.29 May 21, 2020

    Bug Fixes:

    • Fix for fractional loss calculation stats for CallInsights.
    • Handling call cleanup and call summary for CallInsights, for an ongoing active call, in the event of abrupt closure of the browser.

    Version 2.1.28 May 14, 2020

    Bug Fixes:

    • Fix for handling only anonymize local IPs(mDNS) during media negotiation.

    Version 2.1.27 Apr 28, 2020

    Bug Fixes:

    • RTPStats fix for Firefox. The response structure of RTP Stream Stats has changed in the latest version of Firefox(v75). This change was breaking RTPStats parsing and propagation to Plivo Call Insights back-end. We applied this fix to adapt to the changed response from the Firefox browser.

    Version 2.1.26 Apr 23, 2020

    Bug Fixes:

    • Stopped propagation of call insights to deprecated stats service back-end.

    Version 2.1.25 Mar 31, 2020

    Bug Fixes:

    • Fixed mute/unmute behavior during audio device toggling for the ongoing calls.
    • Fixed bug with MediaStream management in the post-call idle state.
    • onVolume sampling data fixed for external audio devices that get connected during the call.

    Version 2.1.24 Mar 04, 2020

    Features:

    Version 2.1.23 Feb 18, 2020

    Bug Fixes:

    • Fixed bug to ensure Call Summary event is always generated and pushed to Plivo Call Insights backend at the end of the call.

    Version 2.1.22 Feb 10, 2020

    Features:

    • Added Close protection flag for Browser.
    • Active device info to CallInsights.
    • Added Volume Indicator for Local and Remote audio.

    Version 2.1.21 Jan 30, 2020

    Bug Fixes:

    • Ability to change input devices while on call.
    • Updated extra header handling.
    • Added SDK version in feedback stats.

    Features:

    • Automatic input device (mic) fallback to a working input device while on call.

    Note: This is not supported in Firefox(as recent as 72) due to its lack of support for multiple input devices.

    Version 2.1.21-beta.0 Jan 21, 2020

    Bug Fixes:

    • Ability to change input devices while on call.
    • Updated extra header handling.
    • Added SDK version in feedback stats.

    Features:

    • Automatic input device (mic) fallback to a working input device while on call.

    Version 2.1.20 Oct 10, 2019

    • Support for Chrome’s Unified Plan.
    • Improvements in MOS value calculations.
    • Added stream key in mediaMetrics to differentiate between local or remote stream stats.
    • Fixed hangup issues in firefox and safari.

    Version 2.1.19 Aug 29, 2019

    • Calculate fraction loss for 0-5 seconds.
    • Send setup options in call answered and summary stats.
    • Reconnect media when there is a network change.

    Version 2.1.18 Aug 07, 2019

    • Disable RTP connection timeout fix.

    Version 2.1.17 Jul 16, 2019

    • Chromium os is identified and sent to call insights.
    • Showing an appropriate error message for https only support.

    Version 2.1.16 May 13, 2019

    • Added audio device info and media connection info to call insights.

    Version 2.1.15 Mar 29, 2019

    • Changed the error message from “PlivoSDK:: Did not get token from callstats” to an information message “Call insights is not enabled”.

    Version 2.1.14 Mar 07, 2019

    • Implemented onMediaConnected event when media connection established

    Version 2.1.13 Feb 28, 2019

    • Handled get stats in latest Firefox version

    Version 2.1.12 Feb 19, 2019

    • Handled null values in stats calculation
    • Added logs for callstats.io

    Version 2.1.8 Jan 16, 2019

    • Made sendConsoleLogs parameter as optional in submitCallQualityFeedback API

    Version 2.1.7 Jan 16, 2019

    • Added callinsights support for Firefox version 60 and above and Chrome version 64 and above.
    • New Feedback API for customers to report an issue and choose to allow us to collect call-related logs.
    • Fixed fraction loss calculation for local stream
    • Updated mos score by taking the minimum value of local and remote mos.

    Version 2.1.7-beta.0 Jan 07, 2019

    • Updated mos score by taking the minimum value of local and remote mos.

    Version 2.1.6 Jan 02, 2019

    Bug Fix:

    • Chrome 72 WebRTC changes will break our SDK so fixed that by making plan-b default.

    Version 2.1.6-beta.1 Dec 19, 2018

    • New Feedback API for customers to report an issue and allow us to collect call-related SDK logs.

    Version 2.1.6-beta.0 Dec 18, 2018

    • Call insights data will be collected in Firefox version 60 and above and Chrome version 64 and above.

    Version 2.1.5 Dec 05, 2018

    Bug Fix:

    • Fixed key names camel case for call insights

    Version 2.1.4 Dec 04, 2018

    Features:

    • Extra metadata like the browser’s version and network information is sent to the backend for call insights.

    Version 2.1.3 Nov 29, 2018

    Bug Fix:

    • Fixed a scenario where ongoing call audio getting paused when the incoming call is rejected in multiple incoming call scenarios.
    • Added validation for reject and ignore functions in multiple incoming calls.

    Version 2.1.2 Jan 14, 2018

    Bug Fix:

    • Fixed a scenario where the calls were disconnecting in chrome 54(2 years old version) due to the use of a new WebRTC API

    Version 2.1.1 Nov 14, 2018

    Features:

    • An extra option “actionOnOtherIncomingCalls” is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if “letring” is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will ring silently. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

    Version 2.1.1-beta.0 Nov 13, 2018

    Features:

    • An extra option “actionOnOtherIncomingCalls” is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if “letring” is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ringing silently. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

    Version 2.1.0 Nov 12, 2018

    Bug Fix:

    • set was setting deviceIds without removing the old deviceId, which is fixed.
    • Added extra header to the call info object which is sent to some event callbacks
    • Log in with the endpoint which is currently logged in will not be allowed.
    • Login with a different endpoint during an ongoing call will throw an error saying “Cannot log in when there is an ongoing call”. [CSDK-87]
    • Workaround for Chrome bug where incoming call ringtone file was not loading properly sometimes which leads to incoming calls without ringtone [SUP-272].
    • Removed media metrics’ dependency on callstats.io and used our call insights data [CSDK-109].
    • If the call UUID passed in the answer function does not match any of the incoming calls, an error message will be logged and false will be returned.
    • Workaround for Firefox bug where 180’s SDP during the outbound call should have a=mid line.

    Features:

    • New option to allow multiple incoming calls.
    • The new method ignore() to take action on the incoming call.
    • Call insights data are collected for the insights enabled accounts.
    • Made project publishable to npmjs -> npm install plivo-browser-SDK –save
    • getPeerConnection() will return the RTCPeerConnection object even when the outbound call is in the ringing state.
    • Added support for ‘-‘ in extra headers’ keys.
    • An extra option “actionOnOtherIncomingCalls” is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if “ignore” is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ignored. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

    Version 2.1.0-beta.12 Nov 09, 2018

    • Workaround for firefox bug where 180’s SDP during the outbound call should have a=mid line.

    Version 2.1.0-beta.11 Nov 02, 2018

    • If the call UUID passed in the answer function does not match any of the incoming calls, an error message will be logged and false will be returned.

    Version 2.1.0-beta.10 Oct 26, 2018

    • An extra option “actionOnOtherIncomingCalls” is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if “ignore” is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ignored. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

    Version 2.1.0-beta.9 Oct 23, 2018

    Bug Fix:

    • set was setting deviceIds without removing the old deviceId, which is fixed.

    Version 2.1.0-beta.8 Oct 17, 2018

    Bug Fix:

    • Added extra header to the call info object which is sent to some event callbacks

    Version 2.1.0-beta.6 Sep 24, 09-2018

    • Made project publishable to npmjs -> npm install plivo-browser-SDK –save
    • getPeerConnection() will return the RTCPeerConnection object even when the outbound call is in the ringing state.
    • Added support for ‘-‘ in extra headers’ keys.

    Version 2.1.0-beta.2 Sep 24, 2018

    Bug Fix:

    • Log in with the endpoint which is currently logged in will not be allowed.
    • Login with a different endpoint during an ongoing call will throw an error saying “Cannot log in when there is an ongoing call”. [CSDK-87]
    • Workaround for Chrome bug where incoming call ringtone file was not loading properly sometimes which leads to incoming call without ringtone [SUP-272].
    • Removed media metrics’ dependency on callstats.io and used our call insights data [CSDK-109].

    Version 2.1.0-beta.1 Sep 06, 2018

    Features:

    • New option to allow multiple incoming calls.
    • The new method ignore() to take action on the incoming call.

    Version 2.1.0-beta.0 Aug 27, 2018

    Features:

    • Call insights data are collected for the insights enabled accounts.

    Browser SDK V2.0

    You can check the documentation for Browser SDK v2.0 here

    Version 2.0.21 Aug 23, 2018

    • JsSIP v3.2.11 Upgrade Bug Fixes
      1. reduced ice gathering timeout to 2 secs
      2. removed dependency with ‘_is_confirmed’ variable
    • io version upgraded to v3.53.1
    • Switched off pre-call-test of callstats.io
    • endpoint registration status fix

    Version 2.0.21-beta.0

    Bug Fix:

    • is_confirmed is changed to _is_confirmed in JsSIP so using isEstablished function which is documented instead of using the _is_confirmed private variable (Bug introduced when JsSIP version is upgraded )
    • ice gathering timeout patch was not ported to when JsSIP version is upgraded, added the patch functionality back using the JsSIP’s icecandidate version instead of patching JsSIP itself.

    Version 2.0.20 Jul 07, 2018 [YANKED]

    Bug Fix:

    Fixed: Early Media playback on Firefox

    Added:

    • Features: WebSocket Connection change event listener . Detects abrupt websocket disconnection / connection / reconnection and notifies once per change.
    • Upgrade Better logging for exception and unexpected behavior
    • Optimize and upgrade npm dependencies such as Gulp and associated modules
    • Upgrade underlying JSSIP library for ES6, NOTIFY, REFER, INFO, RTCSessionDescription, Registrar
    • Don’t use pre-answer for early media. Instead, create an answer and do a workaround when the 200 arrives.
    • Fix UA’s disconnect event by properly providing an object with all the document fields
    • Add registrationExpiring event
    • Don’t send a Register request if another is on progress.
    • RTCSession: process INFO in the early state.
    • Dialog: ACK to initial INVITE could have lower CSeq than current remote_cseq.
    • WebSocketInterface: Add ‘via_transport’ setter.
    • Use promise chaining to prevent PeerConnection state race conditions.
    • New UA configuration parameter ‘session_timers_refresh_method’.
    • DigestAuthentication: fix ‘auth-int’ qop authentication
    • RTCSession: emit ‘SDP’ event before creating offer/answer etc
    • Unit test cases with linphonec

    Version 2.0.19

    Bug Fix:

    Optimize local storage values

    Added:

    Features: WebSocket Connection change event listener. Detects abrupt WebSocket disconnection and notifies one time per 30 seconds.

    • GDPR upgrade in Callstats

    Version 2.0.18

    Bug Fix:

    • Extra header length increased to 120, earlier it was 48

    Added:

    • Add extra custom header

    Version 2.0.9 Oct 05, 2017

    Bug Fix:

    • Fixed: Twilio webRTC API gets overridden by Plivo SDK, Don’t alter URL.createObjectURL native code.

    Added:

    Features: a config param preDetectOwa with true/false, Detect one-way audio before answering/sending the call. Default value false

    • Features: audioDeviceChange event to listen for USB audio device changes. This event will emit an object with two properties change and device. change - “added” or “removed” device - device-specific properties
    • Collect Application logs in the callstats dashboard under the “logs” menu. A call summary log will get added to each callUUID.
    • Callstats lib updated to 3.19.12, which gives callback-based getStats once again in chrome 58

    Version 2.0.8 Apr 13, 2017

    deprecated

    • Removed: predetect OWA is taking 15sec in case of double Natted system Refer: 894bcac0-1fc4-11e7-8451-8dbf96fbabce

    Version 2.0.7 Apr 12, 2017

    Bug Fix:

    • Packet loss was not emitted properly. values will be in decimals. Multiply by 100 to convert to %, Eg: packet loss of 2% will be emitted in value as 0.02

    Added:

    • Feature added: clientRegion property in initialization options to set and route calls to specific MediaServer POPs. Allowed regions are [“usa_west”,”usa_east”,”australia”,”europe”,”asia”,”south_america”].
    • Feature added: Pre-detect One-way audio. Before accepting Inbound call and before making an Outbound call. Make local peerConnection in the loop and check for mic issues. This happens every first call on browser reload and then in 1 hr interval.
    • Feature added: Call Terminated by caller, Callee details. nCallTerminated event will have an object {‘originator’:’local’} if caller ends or {‘originator’:’remote’} if receiver ends
    • Feature added: sendQualityFeedback() will now allow custom comments with a cap of 200 characters max.
    • Feature added: debug:”ALL-PLAIN” in Options to turn off colour mode debug: “DEBUG” will show all logs except SIP trace debug: “ALL” will show all logs including SIP trace , Colour mode ON debug: “ALL-PLAIN” will show all logs including SIP trace, Colour mode OFF

    Version 2.0.6 Apr 04, 2017

    Bug Fix:

    • n logout() - use stop() instead of unregister(‘all’);
    • createObjectURL(stream) is deprecated! Use elem.srcObject = stream instead!
    • reject () - only if call is not answered.

    Patch in JsSIP

    • @line:1538 patch included, The moment we get one Public IP from ICE just send out INVITE. File path sipLib/RTCSession.js

    Added:

    • Feature added: Even if users don’t set enableTracking in options, we should set enableTracking=true
    • Feature added: mediaMetrics Alert if ICE gathering takes more than 2 sec either for outgoing call invite or incoming call answer. Event name ice_timeout
    • Feature added: setConnectTone(true), Dial beep will play till we get an 18X response from the server. setting false will not play a beep tone.

    Version 2.0.5 Feb 27, 2017

    Bug Fix:

    • Terminate ICE gathering in 2 sec. After upgrading to JsSIP 3.0.0 this gatheringTimeout was removed.

    Patch in JsSIP

    Added:

    • Included JsSIP lib as sipLib inside plivo-websdk-2.0 to handle customization in Jssip library

    Version 2.0.4

    Bug Fix:

    • Initialize JsSIP only after checking for DEBUG in log level to show proper SIP trace

    Added:

    • Play remoteStream if Incoming 183 has SDP
    • Added callUUID to both incoming and outgoing calls in logs. It makes it easy to get callUUID directly from logs.
    • Better clarity logs to both Incoming and Outgoing calls at each level
    • Added log to show if Plivo SDK is initialized twice.
    • Moved onIncomingCall event to emit on Incoming call progress. Previously its was emitted immediately after newRtcSession
    • Now CallStats dashboard should Plivo web SDK version in context, Under ‘General’ menu
    • Microseconds are added to logger date

    Version 2.0.3

    Bug Fix:

    • Emit webrtcNotSupported only on document ready.
    • handle when callstats lib is not loaded

    Added:

    • moved all s3 links like audio and callstats lib to CDN links. CloudFront as Primary and CDN77 as secondary
    • Don’t initialize plivowebSDK when callstats lib is not loaded

    Version 2.0.2

    Bug Fix:

    Added:

    • Audio API to control Input and Output devices
    • availableDevices to show all available audio devices
    • revealAudioDevices to force allow permission and list available devices
    • microphoneDevices to set and use a particular microphone device as input
    • speakerDevices to set and use a particular speaker device for DTMF, remote audio
    • ringtoneDevices to set and use a particular speaker device for incoming ringtone

    Version 2.0.1

    Bug Fix:

    Added:

    • we used webRTC adapter, a shim to insulate apps from spec changes and prefix differences which can work across most browsers
    • supports Firefox, but mediaMetrics is not available since firefox doesn’t support it
    • supports Opera ( not fully tested)
    • added 2 new methods getLastCallUUID, webRTC and a variable version
    • dscp param in options to support QoS
    • WebSocket min try to 2 and max retry to 20 in case client disconnects from socket server
    • reduced stun servers to 2 to reduce the size of SDP and to reduce stun gathering time
    • mediaMetrics supported in chrome and opera a major feature to trigger warning events during bad network and audio conditions
    • upgraded Plivo web SDK to latest jsSIP 3.0.0