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.
- STREAM-1351 - Removed
v2.conversations.{id}.medianotification subscription. Removed theactiveVideoParticipantsUpdatesession event andIOnScreenParticipantsUpdateinterface. Speaker and on-screen participant updates are now entirely handled via the data channel.
- STREAM-151 - Send media statistics to the server per conversation. Aggregates stats, calculates a MOS score and pushes at regular intervals.
- Added documentation for live screen monitoring functionality
- STREAM-905 - Fix issue where
sessionStartedwas not emitted for calls that re-use persistent connections after a media recovery has occurred. Now initializing_emittedSessionStartedsfor reinvites but only emitting if not a reinvite. - STREAM-1123 - Only update necessary tracks when changing devices. Prevent virtual background from getting replaced
- STREAM-781 - Fix issue where hold caused
Unhandled promise rejection from setConversationHeldfor inactive conversations.
- STREAM-1211 - Update
axiostov1.13.5. - STREAM-1285 - Refactor
handleProposein SoftphoneSessionHandler for clarity and future changes. Update associated comments to better reflect implementation. - STREAM-1403 - Update
lodashtov4.18.1to address Snyk vulnerability. - STREAM-1423 - Update
axiostov1.15.0.
- STREAM-1099 - Emit
participantsUpdatefor JWT Video Guests
- STREAM-1178 - REVERT STREAM-825, removed ability to send multiple tracks when screensharing.
- STREAM-1130 - Updated TypeScript to v5.9.3 and Webpack to v5.105.0, removed legacy Spigot testing, added
.nvmrc, demo app dependency updates, updated Node versions in testing matrices.
- STREAM-1153 - Add support for monitoring multiple screens during live monitoring sessions
- STREAM-1034 - Added JWT support for live monitoring sessions
- STREAM-1122 - Bump streaming-client to v19.5.0.
- STREAM-1028 - Fix issue preventing monitoring observers from ending
liveScreenMonitoringsessions and add accept session logic for observers. - STREAM-1027 - Fix jid to session type evaluation for live monitor jids
- STREAM-878 - Added in check to properly pass in a boolean to the headset library to determine if we have other active calls
- STREAM-992 - Added pull request template checklist.
- STREAM-825 - Add ability to send multiple tracks when screensharing
- STREAM-777 - Support live screen-monitoring
- STREAM-990 - Demo app: Store a copy of pendingSessions so freezing them doesn't affect the SDK's usage of those objects
- STREAM-1025 - Fix issue causing wrong session handler to be used for
liveScreenMonitoringsessions.
- STREAM-981 - Remove appid from IncomingStreamStatus interface
- STREAM-978 - When the RTCPeerConnection is in a 'failed' state, clean up the session. Filter out voicemail participants from conversation update events. Fix potential TypeError when fetching conversations.
- STREAM-987 - Demo app: Memoize conversations so they don't change every render when nothing has changed
- [#937] - Exposes raw webmessage data from conversation topic
- STREAM-926 - Updated screen recording metadata request to use
requestApiWithRetryto retry failed requests with exponential backoff. - STREAM-912 - Bump streaming-client to
19.4.0to remove SDP answer payload from logging. - [NO-JIRA] - Bump axios to
1.12.2to address Snyk vulnerability. - STREAM-599 - Addressed Snyk vulnerabilities and type insecurities in demo app.
- STREAM-866 - Generate a test report in JUnit.xml format
- STREAM-850 - Suppress
error.ininedgecontrol.session.inactiveerrors to prevent consuming UIs from presenting benign errors
- STREAM-785 - Added GitHub Actions for linting, testing, and building in an effort to make the build process more transparent and reliable.
- STREAM-350 - Accept JWT authentication for video conferencing.
- STREAM-798 - Bump streaming-client to version 19.3.0 to pick up the following fixes/changes:
- STREAM-154 - Track StanzaMediaSessions so events can still be processed if streaming-client is disconnected and reconnected.
- STREAM-155 - Calling
disconnectwill now stop any in-progress connection attempts. - STREAM-85 - Handle connection transfer (
v2.system.socket_closing) message from Hawk signaling a reconnect is necessary - STREAM-653 - Added fields to upgradeMediaPresence stanza definition.
- STREAM-626 - Removed pipeline infra from open-source. Updated CODEOWNERS.
- STREAM-654 - Changed logging for disableAutoAnswer to clarify that if the SDK has disableAutoAnswer, the consuming client should handle auto-answering calls.
- #923 - Update docs for
useServerSidePingsto reflect the correct default value offalse. - STREAM-804 - Bump client-logger to
4.2.17and axios to1.10.0to address Snyk vulnerabilities. Added Github action for auditing dependencies.
- STREAM-582 - Bump streaming-client to fix an issue where
session-initiatewas not ignored when SDP-over-XMPP was turned on for a session.
- STREAM-63 - Adds in logic to use
customHeadersin during the API requests
- STREAM-534 - Bump streaming-client to fix an issue where the sdpOverXmpp flag could be overwritten by simultaneous proposes.
- STREAM-517 - Remove address field from conversation update log because it could potentially contain PII.
- STREAM-523 - Updated
genesys-cloud-streaming-clientdependency to properly proxyconnectionStateevent emit - STREAM-536 - Removed references to WebRTC screenshare from docs and README as it is end of life and no longer supported.
- STREAM-357 - Updated streaming-client to maintain a JID resource across websockets/stanza instances. If a JID resource is not provided, a random UUID will be generated and saved for that streaming-client instance.
- STREAM-380 - Bump streaming-client to include line break for ice candidate SDP to follow the spec
- 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
- STREAM-331 - Updated headset library to fix a Plantronics issue and issue with Teams and Yealink
- 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-methodsto our Babel config for the SDK.
- 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.
- PCM-2081 - Add ability to join a video conference using a meeting id
- The
initializemethod will now throw SdkErrors related to authentication with aninvalid_tokentype (previously all errors frominitializewould have aninitializationtype).
- STREAM-162 - Authentication errors during
initializewill now throw an SdkError of type.invalid_token.
- STREAM-287 - Fixed late arriving reinvites from terminating themselves.
- STREAM-241 - propagate mediaHelperRequired errors for eager persistent connections
- 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"
- [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
- [no-jira] - deployment schedule change
- 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').
- STREAM-218 - bump streaming for priv-auto-answer on session object; dont create a conversation object for priv-auto-answer sessions.
- STREAM-222 - Created new SDK demo app using React/Vite.
- [NO_JIRA] - Bump client-logger to pick up fixes
- STREAM-178 - Dont try and hold session with dead peerConnections; bump streaming-client
- 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
- STREAM-146 - Updated logging for new JSON-RPC commands.
- STREAM-168 - resetHeadsetState should not attempt if headset is not connected - softphone vendor headsets version bump.
- 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
- STREAM-22 - fix for unhandled exception thrown from RXJS
firstoperator when there are no elements from the Observable - STREAM-108 - Update ws to address Snyk vulnerability
- STREAM-97 - fix for pruning conversation events for logging when a session doesn't exist
- 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
- [no-jira] Use default of
falseforuseServerSidePings - WEBRTCS-1106 - bump streaming client for reinvite functionality
- STREAM-82 - Updated lots of dependencies. For full list, see attached ticket.
- 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
trueforuseServerSidePings
- [no-jira] Update uuid to v9.0.1
- PCM-2345 - Added ability to pass in custom headers for telemetry purposes (internal use only). Bumped streaming-client and client-logger.
- [no-jira] Bump to
Softphone Vendor Headsetsto support two new vendors: VBeT and CyberAcoustics
- [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
- PCM-2312 bump logger version
- PCM-2302 Added queue for headset events to prevent issues brought on by race conditions between events
- PCM-2297 Update genesys-cloud-client-logger and genesys-cloud-streaming-client to fix Snyk vulnerabilities.
- 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
- 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.
- 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
sessionInterruptedevent when a session'sconnectionStatebecomesinterrupted. - 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
- PCM-2232 - Fixed unholding a call and the sdk tries to hold ended session on persistent connection
- 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
- PCM-2206 - fixed bug preventing users from unholding a session on a multi-call, after ending a call while LA=100 with persistent connection.
- 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
- 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.
- PCM-2196 - Send screen recording metadatas when session connects instead at session-accept
- PCM-2145 - Able to leave screenshare if unable to spin up previously selected media
- PCM-2184 - bump softphone-vendor-headsets to fix snyk vuln
- PCM-2108 - fix
sdk.acceptSessionso it doesn't send the request to the backend more than once. - PCM-2162 - fix
sessionStartedevents so they only get emitted once. (only affected softphone)
- PCM-2114 - Allow sessions to be reestablished through a reinvite process.
- PCM-2159 - bump headsets dep; fix demo app.
- PCM-2156 - Export headset library types
- PCM-2140 - Fixed issue where the SDK was not finding a pendingSession to update with LA100 and persistent connection on.
- 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.
- PCM-2118 - Fix format of data channel message types
- PCM-2093 - Bump streaming client
- PCM-2089 - Bump streaming client
- 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
idproperty on the session instead of thesidproperty.
- PCM-2060 - Fixed issue allowing a user to have multiple video tracks. Fixed some minor issues in demo app.
- PCM-2058 - bump streaming client in order to get fixed stats-gatherer
- PCM-2053 - added a function to the sdk that allows changing
useHeadseton demand.
- SERVOPS-33064 - Fixed issue where Jabra Native overwrites CEF registration, preventing the use of external links to place call
-
We have set the
useHeadsetsflag 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. Thesdk.reconnect()function made very little sense as it was and was little used. If you are usingsdk.reconnect(), you'll instead need to doawait sdk.disconnect()thenawait sdk.connect().
- 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
- PCM-1972 - Connect WebRTC data channel for video.
- PCM-1789 - Listen and emit
memberStatusMessagewhen receiving a data channel message indicating someone is actively speaking.
- PCM-1983 - Fixed an issue where the SDK throws an error when a new station is associated
- 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
- PCM-1974 - Added in logic to properly handle auto answer scenarios
- PCM-1975 - Added in logic to properly handle auto answer scenarios
- PCM-1965 bump softphone vendor headsets
- 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.
- PCM-1856 added function to the SDK that allows users to update the default video resolution
- 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
- PCM-1819 added jwt support for background assistant which will use separate endpoints for logging and screen recording metadata
- 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
deviceschangeevent from the window, SdkMedia should only validate all sessions if thesessionManagerhas already been initialized. - PCM-1922 - update streaming client to 14
- PCM-1993 – added build, deploy, and publish notifications to the Jenkinsfile
- PCM-1893 – added
useHeadsets: booleanconfig option to allow "opting out" of the headset functionality. See docs on constructing the SDK for more details.
- PCM-1887 – Fixed how we create fake pending sessions for when line appearance == 1. Missed reference during refactor.
- 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 fixto update deps and resolve security vulnerabilities
- 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.
- 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
- PCM-1836 - Remove circular ref issue when logging the session when updating default devices.
- 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.
- 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
effectiveStationand not theassociatedStation.effectiveStationis 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
- PCM-1794 – added
sdk.media.on('gumRequest' evt)to notify consumers when the SDK makes a request to thewidow.navigator.mediaDevices.getUserMedia()API. This helps consumers to react appropriately to handle browsers that will only fulfilgUM()requests if the window is in focus. - PCM-1797 – added
sdk.setDefaultAudioStream(stream)andsdk.media.setDefaultAudioStream(stream)(same function) to allow changing the sdk default audio stream.
- PCM-1790 – switched over to use new pipeline.
- If you are providing a logger:
- the
ILoggerinterface has changed. The last param forlog,debug,info,warn, anderrorfunctions is no longer a simple boolean, it is an object. Please refer to the ILogger type for https://github.com/purecloudlabs/genesys-cloud-client-logger.
- the
- 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.conversationIdis not guaranteed to be present.- PCM-1769 – Removed
addressfrom thependingSessionobject emitted onsdk.on('pendingSession', ...). UseroomJidnow.
- 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
VERSIONproperty - Added top level SDK events of
'station','concurrentSoftphoneSessionsEnabled','conversationUpdate'(see docs for more details on these events). - Loads station on initialization if
SesstionTypes.softphoneis in allowed list. Sets response tosdk.stationand emits onstationevent. - Added
sdk.setConversationHeld(options)that makes an API request to place a softphone conversation on hold. - Added functions
sdk.isPersistentConnectionEnabled()andsdk.isConcurrentSoftphoneSessionsEnabled()
- PCM-1653 – ensure that all HTTP request errors emit on
sdk.on('sdkError', ...) - Updated Demo App to use new events
- PCM-1764 – updated webpack config to skip
amdbuild which was polluting the global namespace with dependencies, namely lodash (window._). - PCM-1773 – add an
esModulesbundle for consumers to choose to use in builds. (Initial bug report)
- 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.jswill remain at this location. But this will no longer update to newer versions.
- Errors are now logged remotely
- Bumped streaming client to 13.3.7
- Removed build examples for gulp and browserify and their dependencies
- A static
VERSIONaccessed atGenesysCloudWebrtcSdk.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
optOutOfWebTelemtryconfig option.
- 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
- 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.
- PCM-1745 – Adding
process-fastto webpack build to ensure the bundled CDN build does not get throttled in Chrome.
- PCM-1729 – Added
sessionTypeto log messages (mainlyproposeandsession-initevents). - PCM-1715/PCM-1726 -
Bumped streaming-client to v13.3.1 which includes
stanzaoverride for ending sessions via the client. Now the client will manually close the peer connection if it is not closed automatically after sendingsession-terminate.
- 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 wasdist/genesys-cloud-webrtc-sdk.jswhich 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 thefetchAPI). dist/genesys-cloud-webrtc-sdk.jsis now the same file asdist/genesys-cloud-webrtc-sdk.bundle.jswhich is built for the CDN (meaning all deps are bundled into the file). This is also true for the.minfiles as well.- Streaming-client bump also fixes a dependency file path issue.
- Renamed package.json
- PCM-1711 - Changed default behavior for softphone
sdk.acceptSessionto create and use uniqueHTMLAudioElements 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 onsessionEnded) ifsdk.acceptSessionis not passed an audioElement and there is not a SDKdefaults.audioElement. - PCM-1587 - Ensure video-sessions pass up the
reasonto stanza for ending a session.
- 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
devicechangeevent listeners inside SdkMedia class. - Update
sdk.startSoftphoneSessionto not require aSessionType.
- Merged dependabot PRs
- PCM-1669 - Added functionality to start softphone calls from SDK.
- PCM-1624 - Added logging for failed HTTP requests to console, consuming formatRequestError from streaming-client to remove potential PII from errors.
- Exposed the
sdk.media.isPermissionsError(error)function for consumers to be able to utilize. See the docs for isPermissionsError(). - Added a
'both'option tosdk.media.requestMediaPermissions(). See the docs for requestMediaPermissions(). - Added
preserveMediaIfOneTypeFails&retryOnFailuretoIMediaRequestOptions. See the docs for IMediaRequestOptions.
- PCM-1679 and Issue #576– Fixed package.json
browserandmodulefields, as well as added acjsfield. Addedcore-util-is(a dep ofstanza) to compiled webpack build used undermainandbrowserfields. - PCM-1693 - Fixed event listeners for media tracks by adding in a check for the amount of
audioTracks; if noaudioTracksare 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
requestedMicPermissionswould betruebefore we knew ifhasMicPermissionswas alsotrue(same forcamerapermissions). This bug was causing it to be impossible for consumers to know for certain by looking at theSdkMediaStateas to whether permissions were actually granted (due to the bad timing of setting the state).
- Deprecting
retryOnFailurefunction param forsdk.media.startMedia(options, retryOnFailure). Moved to be an option inIMediaRequestOptions. See the Added section for this release for more info.
- PCM-1628 – Fixed issue where debounce time was causing
users.{id}.conversationssubscription to fail.
- Added internal option
reasonto theIEndSessionRequestinterface - Added
sdk.mediaclass to handle and emit media related tasks. See media documentation for more detailssdk.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.
- 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 ifautoConnectSessionswasfalse.
- PCM-1602 – fix errors when changing devices and there's no track on the sender
- PCM-1509 – fixed sdk's
defaults.audioStreamto not be destroy when ending a session. Has Firefox limitations. See documentation. - PCM-1512 – fixed softphone and video
acceptSessionto respect media options ofnullas beingsystem defaultrequests. - PCM-1522 – fixed
sdk.updateOutgoingMedia()to respect media options ofnull
-
Updated configuration options for constructing an SDK instance (see docs for new config)
- Removed configuration option
iceServers: IceServerConfiguration[]andiceTransportPolicy - Moved defaults into a nested
config.default = {}object
- Removed configuration option
-
Changed
IAcceptSessionRequest,IEndSessionRequest, andISessionMuteRequestinterfaces to require asessionIdin place of the non-descriptiveidfield. 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)tosdk.media.startMedia(opts) -
Moved
sdk.getDisplayMedia(opts)tosdk.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 asessionId: stringand not anIExtendedMediaSession. Event already emitted thesessionId. This fixes the typing.
- PCM-1547 - bump streaming client to fix jingle retract and jingle reject message handling
- PCM-1588 - fix locating the participant on softphone calls with multiple participants for the same user
- PCM-1584 - dont spin up a camera stream when updating outgoing media for softphone even if videoDeviceId is provided
- 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)
- 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
- PCM-1525 bump streaming client version to fix acd screen share attr.
- PCM-1501 fix streaming client unsubscribe; fixes a bug where rejoining a video in ff fails.
- PCM-1498 bump streaming-client to fix ice transport policy issue
- PCM-1474 bump streaming-client
- PCM-1471 clean up screenShareStream if session ends while sharing screen
- The SDK no longer supports legacy stream-based actions. Minimum required versions can be found here: https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/addTransceiver
SDK.on('error' ...)has been changed toSDK.on('sdkError' ...)
- Remove stats-gatherer so it can be moved up the dependency tree
- Updated to latest streaming-client
- 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
getUserMediaconstraints with a deviceId to beidealrather thanexactto avoidNotFounderrors 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 toexactif the browser is Firefox
- Merged dependabot PRs
- PCM-1442 – added
audioElement.setSinkIdtobase-session-handler.ts#acceptSession()so the sdk default output deviceId is used when accepting a video or softphone session.
- Merged dependabot PRs
- PCM-1408 – moved
getDisplayMediarequest tostartScreenSharefor acd-screenshare. Firefox needs auserGesturein order to request the screen. The Request is now handled onsession-init, but requested at the beginning (before the propose). - WC-801 – added
@babel/plugin-transform-property-mutatorsto 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.
- PCM-1426 – better logging around devices. It will log devices in use we a session starts and when the devices change.
- Merged dependabot PRs
- added client logger to spigot tests for test debugability
- bumped streaming-client to v12.0.2
- 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
- Merged dependabot PRs
- 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#mainto point at compiled src rather than bundling for node. There is still a.bundle.jsversion for the cdn. - Upgraded to typescript v3.9.x which can potentially break projects using older versions of ts (ie. 3.6.x)
- Bumped
webrtc-stats-gathererto v8 - Bumped
purecloud-platform-client-v2to v86 - Bumped
typescriptto v3.9.x
- Merged dependabot PRs
- Removed semistandard and ts-loader
- updateOutgoingMedia now cleans up existing media correctly (async issue)
- #165 where cdn build does not export as default
- Adjusted
create-manifest.jsto dynamically add all files starting withgenesys-cloud-webrtc-sdk
- orignalRoomJid now showing up on IJingleSession
- fromUserId added to session for 1:1 video calls
- Media for screen share is no longer spun up prior to `sessionInit
- Bumped streaming client version
- Added enum for Jingle Reasons
- Fix signature for retract handler
- make sure output device(s) is available when devices change
- added session ids to logging around devices
- Added ideal frameRate constraint to screenShare and video
- Apply track constraints based on the media automatically
- When possible, replace sender tracks directly instead of removing the track, then adding the new one
- Fixed the context for the logging handlers
startVideoConferencenow takes an optionalinviteeJidparam for sending a propose to theinviteeJid- pending sessions can now be rejected with the
rejectPendingSessionfunction
- When
mediaDevicesfires adevicechangeevent, 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.
- Merged PR#138 bumping
minimist
- Merged dependabot PRs
- Updated the logger to a version that doesn't cause an infinite loop
- Replaced sdk logger with genesys-cloud-client-logger
- allow device switching in FireFox by stopping existing media before requesting new media
- Be able to specific a desired video resolution with
createMedia - Default video resolution to highest possible (up to 4k)
- Be able to only handle specified conversation types (allowedSessionTypes in the config)
- 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
- sdk.startVideoConference and sdk.startScreenShare now return Promise<{ conversationId: string }>
- 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
- SDK config option
iceTransportPolicy
- Listeners to the video screen sharing stream to update the session when a user clicks the browser "Stop Sharing Screen" button
- Do not request ice servers if there is no connection
- Set iceTransportPolicy to
relayif only turn servers are received - Update some typings
- Stop video conference screen share stream when the session ends
- Calling
session.accept()manually which was the normal workflow after receiving thesessionStartedevent is no longer supported and may have unpredictable outcomes. Usesdk.acceptSession(options)now.
sdk.acceptSessionto be used in lieu ofsession.accept()in order to do some things beforesession.accept()
- Moved code base to a typescript implementation