Skip to content

Latest commit

 

History

History
773 lines (612 loc) · 52.1 KB

changelog.md

File metadata and controls

773 lines (612 loc) · 52.1 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Changed

  • STREAM-315 - Changed the details emitted by an error to be more aligned with other SDK errors and provide more information to the consuming app

Fixed

  • STREAM-331 - Updated headset library to fix a Plantronics issue and issue with Teams and Yealink

Breaking Changes

  • Lru-cache was upgraded from v6 to v11 in a dependency (genesys-cloud-streaming-client), which uses newer language features. Depending on your language target version, you may need to configure a transpiler accordingly. For example, we added plugin-transform-private-methods to our Babel config for the SDK.

Changed

  • STREAM-314 - On streaming-client disconnected events, emit the value of autoReconnect so that consumers can determine if they should tear down their SDK or wait for streaming-client to reconnect. Updated docs to reflect this.

Added

  • PCM-2081 - Add ability to join a video conference using a meeting id

Breaking Changes

  • The initialize method will now throw SdkErrors related to authentication with an invalid_token type (previously all errors from initialize would have an initialization type).

Changed

  • STREAM-162 - Authentication errors during initialize will now throw an SdkError of type .invalid_token.

Fixed

  • STREAM-287 - Fixed late arriving reinvites from terminating themselves.
  • STREAM-241 - propagate mediaHelperRequired errors for eager persistent connections

Fixed

  • STREAM-259 - updated softphone-vendor-headsets which added in guard for EPOS reject call to only bubble up events in the case of a "Notification" type message to avoid issues with "Acknowledgements"

Added

  • [no-jira] updated softphone-vendor-headsets which included a refactor for the VBeT implementation to better accommodate more devices; moved code out in favor of VBeT SDK

Fixed

  • [no-jira] - deployment schedule change

Fixed

  • STREAM-253 - Allow emission of non-solicited agent-video proposes
  • STREAM-245 - Don't hold other active sessions if we're establishing an eager persistent connection (privAnswerMode === 'Auto').

Fixed

  • STREAM-218 - bump streaming for priv-auto-answer on session object; dont create a conversation object for priv-auto-answer sessions.

Added

  • STREAM-222 - Created new SDK demo app using React/Vite.

Changed

  • [NO_JIRA] - Bump client-logger to pick up fixes

Fixed

  • STREAM-178 - Dont try and hold session with dead peerConnections; bump streaming-client

Fixed

  • STREAM-174 - Add a null check for conversation state lookup for held.
  • STREAM-172 - Update axios to address Snyk vulnerability
  • STREAM-191 - Fix for slow performance of pruneConversationUpdateForLogging

Changed

  • STREAM-146 - Updated logging for new JSON-RPC commands.

Fixed

  • STREAM-168 - resetHeadsetState should not attempt if headset is not connected - softphone vendor headsets version bump.

Changed

  • STREAM-71 - Support priv-answer-mode auto and add eagerPersistentConnectionEstablishment to config
  • STREAM-15 - Move to modern modern Jest timers by telling Jest to not fake nextTick

Fixed

  • STREAM-22 - fix for unhandled exception thrown from RXJS first operator when there are no elements from the Observable
  • STREAM-108 - Update ws to address Snyk vulnerability

Fixed

  • STREAM-97 - fix for pruning conversation events for logging when a session doesn't exist

Fixed

  • STREAM-73 - fix for issue where Sennheiser/EPOS devices maintained a mute state when starting a new call
  • STREAM-74 - fix for issue where the WebHID permission modal popped up constantly for Jabra

Changed

  • [no-jira] Use default of false for useServerSidePings
  • WEBRTCS-1106 - bump streaming client for reinvite functionality
  • STREAM-82 - Updated lots of dependencies. For full list, see attached ticket.

Changed

  • PCM-2360 - removed session object from certain logs to reduce size
  • PCM-2352 - Add option to control whether to use server-side pinging
  • [no-jira] Use default of true for useServerSidePings

Changed

  • [no-jira] Update uuid to v9.0.1

Added

  • PCM-2345 - Added ability to pass in custom headers for telemetry purposes (internal use only). Bumped streaming-client and client-logger.

Added

  • [no-jira] Bump to Softphone Vendor Headsets to support two new vendors: VBeT and CyberAcoustics

Fixed

  • [no-jira] Removed check for persistent connection to allow orchestration rejection for active calls and idle persistent connection
  • PCM-2319 - move typescript to a dev dependency
  • PCM-1826 - Fixed screen sharing in safari

Changed

Added

  • PCM-2302 Added queue for headset events to prevent issues brought on by race conditions between events

Changed

  • PCM-2297 Update genesys-cloud-client-logger and genesys-cloud-streaming-client to fix Snyk vulnerabilities.

Fixed

  • PCM-2293 - Fixed issue where multiple instances of the sdk caused conflict with poly/plantronics headsets
  • fix snyk vulnerabilities: axios and follow-redirects
  • PCM-2276 - update streaming client for nrproxy changes

BREAKING CHANGES

  • Only one sdk instance will be allowed to have headset controls at any given time. Headset functionality is now orchestrated and negotiated between other instances of the sdk based on various factors. As such, we have changed the DeviceConnectionStatus type in order to union those states with orchestration states.

Added

  • PCM-2224 - Added headset orchestration flow. Opt out with config.disableHeadsetControlsOrchestration, but this will be temporary and will be removed without notice.
  • PCM-2250 - Emit sessionInterrupted event when a session's connectionState becomes interrupted.
  • PCM-2276 - Added nr events for media actions and first alerting conversation update
  • PCM-2238 - Bumped client logger to help with a fix for media helper

Fixed

  • PCM-2232 - Fixed unholding a call and the sdk tries to hold ended session on persistent connection

Fixed

  • PCM-2229 - Fixed an error that happened occasionally during a session-accept which would cause the session to not be accepted. Issue if there was a softphone session which had not yet received a conversation update.
  • PCM-2220 - Automatically accept a pendingSession that comes in after the "fake" pendingSession was answered
  • PCM-2213 - Allow dynamic adding and removing of supported session types
  • PCM-2209 - fixed issue where we incorrectly answer pending sessions which had their sessionIds updated due to a late propose (only affects persistent connection)
  • PCM-2192 - removed session object from certain logs to reduce size

Fixed

  • PCM-2206 - fixed bug preventing users from unholding a session on a multi-call, after ending a call while LA=100 with persistent connection.

Fixed

  • PCM-2203 - fixed issue when trying to place or receive calls after cpu wake when persistent connection was active before sleep
  • PCM-2192 - removed session object from certain logs to reduce size

Added

  • PCM-2190 - add a hack to workaround the windows 11 "first call after reboot" issue
  • PCM-2187 - hold other active sessions if line appearance is > 1.

Changed

  • PCM-2196 - Send screen recording metadatas when session connects instead at session-accept

Fixed

  • PCM-2145 - Able to leave screenshare if unable to spin up previously selected media

Fixed

  • PCM-2184 - bump softphone-vendor-headsets to fix snyk vuln
  • PCM-2108 - fix sdk.acceptSession so it doesn't send the request to the backend more than once.
  • PCM-2162 - fix sessionStarted events so they only get emitted once. (only affected softphone)

Added

  • PCM-2114 - Allow sessions to be reestablished through a reinvite process.

Fixed

  • PCM-2159 - bump headsets dep; fix demo app.

Fixed

  • PCM-2156 - Export headset library types

Fixed

  • PCM-2140 - Fixed issue where the SDK was not finding a pendingSession to update with LA100 and persistent connection on.

Fixed

  • PCM-2116 - Fixed issue where users were not able to answer incoming calls on LA=100 and persistent connection on - caused by not updating sessionId on pendingSession. If we already have a pendingSession for a given conversationId, we will update the session to match the incoming propose's sessionId. Updated to ES2020 from ES6.

Fixed

  • PCM-2118 - Fix format of data channel message types

Fixed

Fixed

Changed

  • PCM-2042 - Updated streaming client to pull in the sdp over xmpp handling. This change should be backward compatible even though a lot of the tests changed to use the id property on the session instead of the sid property.

Fixed

  • PCM-2060 - Fixed issue allowing a user to have multiple video tracks. Fixed some minor issues in demo app.

Fixed

  • PCM-2058 - bump streaming client in order to get fixed stats-gatherer

Added

  • PCM-2053 - added a function to the sdk that allows changing useHeadset on demand.

Fixed

  • SERVOPS-33064 - Fixed issue where Jabra Native overwrites CEF registration, preventing the use of external links to place call

BREAKING CHANGES

  • We have set the useHeadsets flag to default to false rather than true. This way if a consumer of the SDK omits the headsets flag, it will default to using the original implementation rather than the new. This has the user to opt in rather than opt out

  • We have removed the sdk.reconnect() function. We updated the streaming client which includes a better approach to connection management. The sdk.reconnect() function made very little sense as it was and was little used. If you are using sdk.reconnect(), you'll instead need to do await sdk.disconnect() then await sdk.connect().

Fixed

  • PCM-2024 - bump streaming client (major) to pull in all the connect/reconnect changes
  • PCM-2020 - Bump streaming-client and removed data-channel logs.
  • PCM-2004 - handle webrtc line appearance migration
  • PCM-1998 - added in line to properly remove inactive calls from the list of current calls for consuming apps
  • PCM-2007 - fixed issue with switching device during active call putting Jabra devices in bad state
  • PCM-1968 - Bump streaming client for more verbose logging around interrupted connection states

Added

  • PCM-1972 - Connect WebRTC data channel for video.
  • PCM-1789 - Listen and emit memberStatusMessage when receiving a data channel message indicating someone is actively speaking.

Fixed

  • PCM-1983 - Fixed an issue where the SDK throws an error when a new station is associated

Added

  • PCM-1977 - Add a trace on beforeclose stating the window was closed and list the active conversations
  • PCM-1992 - Update client logger so unsent logs get saved and sent in the future

Fixed

  • PCM-1974 - Added in logic to properly handle auto answer scenarios
  • PCM-1975 - Added in logic to properly handle auto answer scenarios

Changed

  • PCM-1965 bump softphone vendor headsets

Fixed

  • PCM-1944 pulled in the new streaming-client so requestApiWithRetry will actually retry
  • PCM-1966 fix a race condition when joining video and unmuting audio at the same time. We will now wait for the session to be stable before swapping the track on the sender.
  • PCM-1856 touched up and improved function for handling resolution changes
  • PCM-1948 moved rxjs to be a full dependency rather than a dev dep.

Added

  • PCM-1856 added function to the SDK that allows users to update the default video resolution

Fixed

  • PCM-1912 fixed rejecting non-acd softphone calls. They now go to voicemail.
  • PCM-1945 fixed the logging url to use the backgroundassistant suffix for jwt auth
  • PCM-1938 made small change so softphone session handling checks start with the most recent participant rather than the first

Added

  • PCM-1819 added jwt support for background assistant which will use separate endpoints for logging and screen recording metadata

Fixed

  • PCM-1911 Added in logic to help with the ACD flow that checks for terminated/disconnected users if the user shows up twice in the participant update
  • PCM-1909 – force terminate sessions so sdk.destroy doesn't hang in the case of persistent connection or LA==1
  • PCM-1913 – Fixed the screen recording metadata request to use mids in place of trackIds.
  • PCM-1885 – on deviceschange event from the window, SdkMedia should only validate all sessions if the sessionManager has already been initialized.
  • PCM-1922 - update streaming client to 14

Added

  • PCM-1993 – added build, deploy, and publish notifications to the Jenkinsfile

Fixed

Fixed

  • PCM-1887 – Fixed how we create fake pending sessions for when line appearance == 1. Missed reference during refactor.

Fixed

  • Worked on issue found in Volt when there wasn't a proper device found after changing default devices
  • PCM-1878 – cleaned up logging for sdk.acceptSession() which was logging the HTML elements and media stream causing an infinite loop with the client-logger.
  • Ran npm audit fix to update deps and resolve security vulnerabilities

Fixed

  • PCM-1668 - Installed newer version of headset library that will help with some issues that were found as well as offer a better approach to rejecting calls.

Added

  • PCM-1668 - Integrate the new headset library into the SDK to allow device call controls for three headset vendors at the moment: Plantronics/Poly, Sennheiser/EPOS, Jabra

Fixed

  • PCM-1836 - Remove circular ref issue when logging the session when updating default devices.

Changed

  • PCM-1387 - Made screenRecordingMetadata a required param for acceptSession for screen recording sessions; Those metadatas get sent to the server automatically.
  • PCM-1279 – calling sdk.setAccessToken() will now also pass that token down to the streaming-client and the client-logger.

Fixed

  • PCM-1802 - Fix screen recording sessions being characterized as collaborate video sessions.
  • PCM-1795 – Do not request media when sdk.updateDefaultDevices({ updateActiveSessions: true, ... }) is called and the session is already using the requested deviceId.
  • PCM-1798 – Added logic to video session to check to make sure we received an initial conversation event from hawk. This fixes the issue where sometimes joining a video session happens before we subscribe and receive the initial conversation event from hawk – which leaves an empty list of participants in the session.
  • PCM-1812 – Switched station lookup to use the effectiveStation and not the associatedStation. effectiveStation is the station in use for the user. It is computed based on some of the other fields. * Tuned up some logging around accepting softphone sessions with LA == 1.
  • PCM-1821 – Fixed the way we add screen recording tracks so the tranceivers are not recvonly

Added

  • PCM-1794 – added sdk.media.on('gumRequest' evt) to notify consumers when the SDK makes a request to the widow.navigator.mediaDevices.getUserMedia() API. This helps consumers to react appropriately to handle browsers that will only fulfil gUM() requests if the window is in focus.
  • PCM-1797 – added sdk.setDefaultAudioStream(stream) and sdk.media.setDefaultAudioStream(stream) (same function) to allow changing the sdk default audio stream.

Maintenance

  • PCM-1790 – switched over to use new pipeline.

BREAKING CHANGE

  • If you are providing a logger:
  • PCM-1742 - Throws error and prevents session from starting if Streaming Client is not connected
  • PCM-1708 – CDN now exports all SDK exports and not just the client.
  • Must use conversationIds when interacting with a conversation and/or webrtc-session. Most notable functions include (but are not limited to):
    • sdk.acceptPendingSession({ conversationId: string })
    • sdk.rejectPendingSession({ conversationId: string })
    • sdk.acceptSession({ conversationId: string, ...otherOptions })
    • sdk.endSession({ conversationId: string, ...otherOptions })
    • sdk.setVideoMute({ conversationId: string, ...otherOptions })
    • sdk.setAudioMute({ conversationId: string, ...otherOptions })
  • sdk.on('cancelPendingSession') & sdk.on('handledPendingSession') will be called with: ({ sessionId: string, conversationId: string }) => void. conversationId is not guaranteed to be present.
  • PCM-1769 – Removed address from the pendingSession object emitted on sdk.on('pendingSession', ...). Use roomJid now.

Added

  • PCM-1387 - Add the ability to do screen recordings
  • PCM-1784 – Add a function to be able to forcibly terminate sessions by sessionId
  • PCM-1753 – Add an option for log formatters
  • PCM-1755 – Added call error handling for softphone which will be emitted as a sdkError event with a type of call
  • Added a static VERSION property
  • Added top level SDK events of 'station', 'concurrentSoftphoneSessionsEnabled', 'conversationUpdate' (see docs for more details on these events).
  • Loads station on initialization if SesstionTypes.softphone is in allowed list. Sets response to sdk.station and emits on station event.
  • Added sdk.setConversationHeld(options) that makes an API request to place a softphone conversation on hold.
  • Added functions sdk.isPersistentConnectionEnabled() and sdk.isConcurrentSoftphoneSessionsEnabled()

Updated

  • PCM-1653 – ensure that all HTTP request errors emit on sdk.on('sdkError', ...)
  • Updated Demo App to use new events

Fixed

  • PCM-1764 – updated webpack config to skip amd build which was polluting the global namespace with dependencies, namely lodash (window._).
  • PCM-1773 – add an esModules bundle for consumers to choose to use in builds. (Initial bug report)

Changed

  • PCM-1787 – CDN exports to MAJOR and EXACT versions. There will be no more "latest" version to use. Examples:
    • {rootUrl}/webrtc-sdk/v6/genesys-cloud-webrtc-sdk.js <- this URL will always load the latest for that major version.
    • {rootUrl}/webrtc-sdk/v6.1.7/genesys-cloud-webrtc-sdk.js <- this will only ever load the specified version.

Note: the current version (v6.1.6) deployed at {rootUrl}/webrtc-sdk/genesys-cloud-webrtc-sdk.js will remain at this location. But this will no longer update to newer versions.

Changed

  • Errors are now logged remotely
  • Bumped streaming client to 13.3.7

Removed

  • Removed build examples for gulp and browserify and their dependencies

Added

  • A static VERSION accessed at GenesysCloudWebrtcSdk.VERSION
  • PCM-1738 – Pulled in GenesysCloudClientLogger v3.0.0 which changes how the SDK logs:
    • The logger will now send logs to the server if a logger is passed into the SDK on construction. The way to turn this off is to use the optOutOfWebTelemtry config option.
  • PCM-1754 – Removed several webrtc related logs as they will be logged by streaming-client ^13.3.4. Bumped to streaming-client v13.3.4
  • PCM-1738 – Pulled in streaming-client v13.3.3 (which also using gc-client-logger v3) and is now passing app name/version/id to the streaming-client's logger.

Fixed

  • PCM-1745 – Adding process-fast to webpack build to ensure the bundled CDN build does not get throttled in Chrome.

Added

  • PCM-1729 – Added sessionType to log messages (mainly propose and session-init events).
  • PCM-1715/PCM-1726 - Bumped streaming-client to v13.3.1 which includes stanza override for ending sessions via the client. Now the client will manually close the peer connection if it is not closed automatically after sending session-terminate.

Fixed

  • PCM-1726/PCM-1722 – Changed:
    • Renamed package.json "browser" -> "web" to prevent build tools from bundling the already web-bundled/built version of the SDK.
    • Pointed "main": "dist/cjs/index.js" (it was dist/genesys-cloud-webrtc-sdk.js which was a hodge-podge webpack build with minimal deps bundled but target was still web). Most build tools should still be able to pick the commonJS built files when building. Note: the commonJS build does not bundle deps. The sdk is not intended to run in a node environment. If using the sdk cjs build in a node env, you must provide your own polyfills for certain browser specific APIs (suchas the fetch API).
    • dist/genesys-cloud-webrtc-sdk.js is now the same file as dist/genesys-cloud-webrtc-sdk.bundle.js which is built for the CDN (meaning all deps are bundled into the file). This is also true for the .min files as well.
    • Streaming-client bump also fixes a dependency file path issue.

Fixed

  • PCM-1711 - Changed default behavior for softphone sdk.acceptSession to create and use unique HTMLAudioElements for each session. It will then remove the audio element from the DOM once the session ends. Note: it will only create the unique audio element (and remove it from the DOM on sessionEnded) if sdk.acceptSession is not passed an audioElement and there is not a SDK defaults.audioElement.
  • PCM-1587 - Ensure video-sessions pass up the reason to stanza for ending a session.

Fixed

  • PCM-1706 - Allow certain actions that affect the default to work before the sdk has been formally initialized.
  • PCM-1696 & Issue #618 - Ensure all modules are exported from barrel file.
  • Correctly clean up mediaDevices devicechange event listeners inside SdkMedia class.
  • Update sdk.startSoftphoneSession to not require a SessionType.

Maintenance

  • Merged dependabot PRs

Added

Fixed

  • PCM-1679 and Issue #576– Fixed package.json browser and module fields, as well as added a cjs field. Added core-util-is (a dep of stanza) to compiled webpack build used under mainand browser fields.
  • PCM-1693 - Fixed event listeners for media tracks by adding in a check for the amount of audioTracks; if no audioTracks are present, the default media stream is cleaned up. Also passed in value that represents the tracks to be removed which were not present previously.
  • PCM-1647 – Fixed issue where requestedMicPermissions would be true before we knew if hasMicPermissions was also true (same for camera permissions). This bug was causing it to be impossible for consumers to know for certain by looking at the SdkMediaState as to whether permissions were actually granted (due to the bad timing of setting the state).

Deprecated

  • Deprecting retryOnFailure function param for sdk.media.startMedia(options, retryOnFailure). Moved to be an option in IMediaRequestOptions. See the Added section for this release for more info.

Fixed

  • PCM-1628 – Fixed issue where debounce time was causing users.{id}.conversations subscription to fail.

Added

  • Added internal option reason to the IEndSessionRequest interface
  • Added sdk.media class to handle and emit media related tasks. See media documentation for more details
    • sdk.media.on(...) event emitter.
    • permissions and device management housed in sdk.media
  • PCM-1510 – Be able to specify jidResource for clients (streaming client)
  • PCM-1538 – add sdk.setAccessToken(token) function to allow for updating the auth token on an already initialized sdk instance.
  • PCM-1576 - Be able to control audio volume on video and audio elements. see sdk.updateAudioVolume.

Changed

  • Updated documentation.
  • extra audio constraints which were google only, now apply to all browsers
  • A few audio constraints are configurable as sdk defaults
  • PCM-1514 – Guest acd screen share no longer cares about config.autoConnectSessions. Sessions were already auto accepted. That check was only throwing an error if autoConnectSessions was false.

Fixed

  • PCM-1602 – fix errors when changing devices and there's no track on the sender
  • PCM-1509 – fixed sdk's defaults.audioStream to not be destroy when ending a session. Has Firefox limitations. See documentation.
  • PCM-1512 – fixed softphone and video acceptSession to respect media options of null as being system default requests.
  • PCM-1522 – fixed sdk.updateOutgoingMedia() to respect media options of null

Breaking Change

  • Updated configuration options for constructing an SDK instance (see docs for new config)

    • Removed configuration option iceServers: IceServerConfiguration[] and iceTransportPolicy
    • Moved defaults into a nested config.default = {} object
  • Changed IAcceptSessionRequest, IEndSessionRequest, and ISessionMuteRequest interfaces to require a sessionId in place of the non-descriptive id field. This contract change will impact calls to:

    • sdk.acceptSession({sessionId: string;})
    • sdk.endSession({sessionId: string;})
    • sdk.setVideoMute({sessionId: string;})
    • sdk.setAudioMute({sessionId: string;})
    • See docs for method parameters
  • Removed sdk._refreshIceServers() function which was not an advertised function. Refreshing ice servers is now handled in streaming-client directly

  • Moved & renamed sdk.createMedia(opts) to sdk.media.startMedia(opts)

  • Moved sdk.getDisplayMedia(opts) to sdk.media.startDisplayMedia(opts)

  • sdk.updateOutputDevice() will now log a warning and do nothing if called in an unsupported browser. Old behavior was to throw an error.

  • Updated sdk.on('handledIncomingRtcSession', evt => {}) typing to be a sessionId: string and not an IExtendedMediaSession. Event already emitted the sessionId. This fixes the typing.

Fixed

  • PCM-1547 - bump streaming client to fix jingle retract and jingle reject message handling

Fixed

  • PCM-1588 - fix locating the participant on softphone calls with multiple participants for the same user

Fixed

  • PCM-1584 - dont spin up a camera stream when updating outgoing media for softphone even if videoDeviceId is provided

Fixed

  • PCM-1572 – bump streaming-client to v13.2.3 not retry subscription requests
  • PCM-1505 – fix changing camera while muted breaks device selector.
  • PCM-1552 – bump streaming-client to v13.2.2 to fix timer throttling in chrome v88
  • PCM-1559 – remove PII from logging (streaming-client v13.2.2 bump removes PII from its logs too)

Added

  • PCM-1540 – bump streaming-client (v13.2.1) and use its http-client to make http requests. This adds better error logging and retry logic

Fixed

  • PCM-1525 bump streaming client version to fix acd screen share attr.

Fixed

  • PCM-1501 fix streaming client unsubscribe; fixes a bug where rejoining a video in ff fails.

Fixed

  • PCM-1498 bump streaming-client to fix ice transport policy issue

Fixed

Fixed

  • PCM-1471 clean up screenShareStream if session ends while sharing screen

Breaking Changes

Changed

  • Remove stats-gatherer so it can be moved up the dependency tree
  • Updated to latest streaming-client

Fixed

  • PCM-1454 – fix talker change events in Firefox. Root cause, the trackIds on FF RTCReceivers did not match the conversation tracks[].sinks for participants. Solution is to parse the remote SDP offer to attain the trackId from the msid.
  • PCM-1440 – changed getUserMedia constraints with a deviceId to be ideal rather than exact to avoid NotFound errors if called with a bad deviceId. Example:
constraints = {
  video: {
    deviceId: { ideal: 'device-id-hash' }
  }
};
  • PCM-1462 – Firefox does not switch camera when deviceId uses ideal. Switched to exact if the browser is Firefox

Maintenance

  • Merged dependabot PRs

Fixed

  • PCM-1442 – added audioElement.setSinkId to base-session-handler.ts#acceptSession() so the sdk default output deviceId is used when accepting a video or softphone session.

Maintenance

  • Merged dependabot PRs

Fixed

  • PCM-1408 – moved getDisplayMedia request to startScreenShare for acd-screenshare. Firefox needs a userGesture in order to request the screen. The Request is now handled on session-init, but requested at the beginning (before the propose).
  • WC-801 – added @babel/plugin-transform-property-mutators to webpack/babel plugins to properly polyfill cdn bundle for IE11.
  • PCM-1428 – in chrome, if you were using the system default audio device and then changed the default on the system level, the sdk would not start a audio with the new system default.

Added

  • PCM-1426 – better logging around devices. It will log devices in use we a session starts and when the devices change.

Maintenance

  • Merged dependabot PRs

Added

  • added client logger to spigot tests for test debugability
  • bumped streaming-client to v12.0.2

Fixed

  • README to show the correct cdn url
  • Issue #235 which threw Uncaught TypeError: Cannot assign to read only property 'exports' of object '#<Object>'
  • Bumped to streaming-client v12.0.1

Maintenance

  • Merged dependabot PRs

Breaking Changes

  • Renamed app / repo to GenesysCloudWebrtcSdk / genesys-cloud-webrtc-sdk
  • cdn url also changed to: https://sdk-cdn.mypurecloud.com/webrtc-sdk/genesys-cloud-webrtc-sdk.bundle.min.js
  • Changed the build output and package.json#main to point at compiled src rather than bundling for node. There is still a .bundle.js version for the cdn.
  • Upgraded to typescript v3.9.x which can potentially break projects using older versions of ts (ie. 3.6.x)

Added

  • Bumped webrtc-stats-gatherer to v8
  • Bumped purecloud-platform-client-v2 to v86
  • Bumped typescript to v3.9.x

Maintenance

  • Merged dependabot PRs
  • Removed semistandard and ts-loader

Fixed

  • updateOutgoingMedia now cleans up existing media correctly (async issue)
  • #165 where cdn build does not export as default
  • Adjusted create-manifest.js to dynamically add all files starting with genesys-cloud-webrtc-sdk

Fixed

  • orignalRoomJid now showing up on IJingleSession

Added

  • fromUserId added to session for 1:1 video calls

Changed

  • Media for screen share is no longer spun up prior to `sessionInit

Changed

  • Bumped streaming client version

Added

  • Added enum for Jingle Reasons

Fixed

  • Fix signature for retract handler

Fixed

  • make sure output device(s) is available when devices change

Changed

  • added session ids to logging around devices

Added

  • Added ideal frameRate constraint to screenShare and video
  • Apply track constraints based on the media automatically

Changed

  • When possible, replace sender tracks directly instead of removing the track, then adding the new one

Fixed

  • Fixed the context for the logging handlers

Added

  • startVideoConference now takes an optional inviteeJid param for sending a propose to the inviteeJid
  • pending sessions can now be rejected with the rejectPendingSession function

Fixed

  • When mediaDevices fires a devicechange event, the sdk will check to make sure all sessions have media from devices that are still available. It will attempt to update if the media is no longer available or it will set the session mute if there are no devices available to switch to.

Security

  • Merged PR#138 bumping minimist

Maintenance

  • Merged dependabot PRs

Fixed

  • Updated the logger to a version that doesn't cause an infinite loop

Changed

  • Replaced sdk logger with genesys-cloud-client-logger

Fixed

  • allow device switching in FireFox by stopping existing media before requesting new media

Added

  • Be able to specific a desired video resolution with createMedia
  • Default video resolution to highest possible (up to 4k)

Added

  • Be able to only handle specified conversation types (allowedSessionTypes in the config)

Added

  • Support for input and output devices
  • Screen pinning for video
  • Better handling of the log buffer size to mitigate 413's received from the logging endpoint

Changed

  • sdk.startVideoConference and sdk.startScreenShare now return Promise<{ conversationId: string }>

Fixed

  • sdk.initialize will no longer resolve before ice servers are fetched
  • Only log the parts of conversation updates we care about instead of the whole event

Deprecated

  • SDK config option iceTransportPolicy

Added

  • Listeners to the video screen sharing stream to update the session when a user clicks the browser "Stop Sharing Screen" button

Changed

  • Do not request ice servers if there is no connection
  • Set iceTransportPolicy to relay if only turn servers are received
  • Update some typings

Changed

  • Stop video conference screen share stream when the session ends

Breaking Changes

  • Calling session.accept() manually which was the normal workflow after receiving the sessionStarted event is no longer supported and may have unpredictable outcomes. Use sdk.acceptSession(options) now.

Added

  • sdk.acceptSession to be used in lieu of session.accept() in order to do some things before session.accept()

Changed

  • Moved code base to a typescript implementation