Version 9.5.1 - January 11, 2024

Fixes

  • Fix bug on making networkRequest data a string

Version 9.5.0 - November 21, 2023

New

  • Support pending events (missed member:invited)

Version 9.4.0 - September 04, 2023

New

  • Support ephemeral event

Version 9.3.1 - August 30, 2023

Fixes

  • Fix NexmoAPI error wrapping for v0.3 Conversation API endpoints

Release Notes

Version 9.3.1 - June 19, 2023

Fixes

  • Fix NexmoAPI error wrapping for v0.3 Conversation API endpoints

Version 9.3.0 - June 01, 2023

New

  • Add state to query param for application.getConversations() for the ConversationsPage object

Fixes

  • Fix type definition for Conversation timestamp to object
  • Default socket.io query session_version to 0.0.1 unless enableInboundOffer flag set to true, then default to 0.0.2

Version 9.2.6 - May 23, 2023

Changes

  • Add WS reconnection metrics

Version 9.2.5 - May 23, 2023

Fixes

  • Fix type definition for enableEventsQueue and enableInboundOffer
  • Add acknowledgeEvents flag in the configuration to allow tracking of websocket event acknowledgement

Version 9.2.4 - April 19, 2023

Fixes

  • Emitting reconnecting socket event on reconnection attempt

Version 9.2.3 - March 30, 2023

Changes

  • Upgrade socket.io-client version to 4.6.1

Version 9.2.2 - March 13, 2023

Fixes

  • Fix ConversationEventsProcessor being initiated multiple times for the same conversation

Version 9.2.0 - December 21, 2022

Changes

  • Add enableInboundOffer flag to config for inbound call setup
  • Remove Ice Servers default from webrtc STUN server setup
  • Replace api.nexmo URLs to api.vonage URLs

Version 9.1.5 - October 24, 2022

Fixes

  • Fix bug on user re invited/joined to a conversation

Version 9.1.4 - September 23, 2022

Changes

  • Use v2 of Nexmo Conversation Websocket

Version 9.1.3 - September 07, 2022

Fix

  • Fix typescript module definition

Version 9.1.1 - August 19, 2022

Fix

  • Fix events ordering for rtc:transfer on named conversations

Version 9.1.0 - August 16, 2022

New

  • Use pre-loaded media on inbound calls (start WebRTC ice gathering process as soon as member is invited to a call)

Fix

  • Remove public-ip library because of a security vulnerability (updated with is-ip)

Version 9.0.0 - June 30, 2022

Breaking changes

  • Rename login() function to createSession()
  • Rename logout() function to deleteSession()

Changes

  • Move websocket connection creation to the createSession() function

Version 8.7.3 - June 14, 2022

Changes

  • Added token authentication to connectivityReport()
  • Added token authentication to checkMediaServers()

Version 8.7.2 - May 27, 2022

Fix

  • Removed unused npm dependencies.

Version 8.7.1 - May 11, 2022

New

  • Added new checkMediaServers() method to return a list with the connection health of the media servers for a specific datacenter.
  • Added new checkMediaConnectivity() method to return the connection health of a single media server.

Changes

  • Update connectivityReport() to return connection time in ms for connection to https, wss, and media servers

Version 8.6.0 - April 21, 2022

New

  • Added an optional object argument to the connectivityReport(), with optional field dcListCallback which accepts a callback function to update data center list

Version 8.5.0 - April 20, 2022

New

  • Expose seen() and delivered() functions for message events
  • Support new message status events
    • message:seen
    • message:delivered
    • message:submitted
    • message:rejected
    • message:undeliverable
  • Added new state objects for message events supporting the new statuses
    • seen_by
    • delivered_to
    • submitted_to
    • rejected_by
    • undeliverable_to

Changes

  • Update connectivityReport() to use proper endpoints per region

Version 8.4.1 - February 14, 2022

Fix

  • Fix events ordering when gap in inbound events

Version 8.4.0 - January 21, 2022

New

  • Added new connectivityReport() function to get a connectivity report for all Vonage data centers and media servers

Version 8.3.1 - December 09, 2021

New

  • Set the default sync level for the login process from lite to none

Version 8.3.0 - November 01, 2021

New

  • Added new uploadImage() function to upload an image to the Vonage Media Service
  • Added new sendMessage() function to send a new message to the conversation (supported types are text, image, audio, video and file)
  • Added new MessageEvent type of event

Changes

  • Deprecate sendText() function (use sendMessage() with a type of text instead)
  • Deprecate sendImage() function (use uploadImage() and sendMessage() with a type of image instead)

Version 8.2.5 - October 12, 2021

Fix

  • Fix error handling for audio permissions

Version 8.2.2 - October 08, 2021

Fix

  • Enhance debug logs

Version 8.2.0 - September 28, 2021

New

  • Add new getUserSessions() function to fetch the sessions of the logged in user

Version 8.1.1 - September 08, 2021

New

  • Add new optional mediaParams parameter in reconnectCall function, in order to modify the MediaStream object
  • Update media.enable() docs to include audio constraints

Fixes

  • Assign the correct NXMCall status when reconnecting to a call (STARTED, RINGING or ANSWERED)

Changes

  • Update npm dependencies

Version 8.1.0 - September 02, 2021

New

  • Add reconnectCall function allowing users to reconnect to a call within 20 seconds if browser tab closed
  • Add optional parameter reconnectRtcId to media enable() function to reconnect media to call
  • Add custom_data object in callServer function
  • Add apiKey, applicationId, conversationId and conversationName when available in rtcstats analytics reports

Fixes

  • Fix bug in call transfer where transferred_from was undefined

Version 8.0.5 - July 15, 2021

Fixes

  • Fix the from for member events
  • Update npm dependencies including socket-io

Version 8.0.4 - June 16, 2021

Fixes

  • Fix bug on DTMF dispatch of callback to event_url

Version 8.0.3 - May 18, 2021

Fixes

  • Fix out of order internal events processing in the events queue
  • Fix deprecation warning message for rtcstats:report

Version 8.0.1 - April 29, 2021

Fixes

  • Update Typescript definitions
  • Fix bug on IP-IP call scenario involving Native SDKs (not populating properly the Conversation.members Map)

Version 8.0.0 - April 27, 2021

Breaking changes

  • Deprecate Conversation.members Map (it will be populated only on a call scenario)
  • Conversation events will be emitted with a subset information of the Member

Changes

  • Add paginated getMembers() function to retrieve the members of a conversation
  • Add getMyMember() function to retrieve our own member in a conversation
  • Add getMember() function to fetch a conversation member by member_id

Version 7.1.0 - April 07, 2021

Changes

  • rtcstats:report is deprecated. Please use rtcstats:analyticsinstead
  • Add logs reporter for remote logging
  • Add custom getStats parser
  • Remove callstats library and implementation

Version 7.0.2 - March 30, 2021

Fixes

  • Emit 'call:status:update' event when application offline and call disconnected

Version 7.0.1 - February 04, 2021

Fixes

  • Remove unnecessary warning message for call status transitions

Version 7.0.0 - February 02, 2021

Breaking changes

  • legs endpoint should be included in acl paths on JWT token creation

Changes

  • Improve callServer setup time by pre-warming leg
  • Add the rtcObject and remote stream to the NxmCall object

Fixes

  • Return ClientDisconnected reason when client logouts from SDK

Version 6.2.1 - December 24, 2020

Fixes

  • Revert back to 6.1.1 from 6.2.0-alpha

Version 6.1.2 - December 24, 2020

Fixes

  • Update Typescript definitions

Version 6.1.1 - December 09, 2020

Fixes

  • Update Typescript definitions

Version 6.1.0 - December 01, 2020

Changes

  • Add enableEventsQueue flag to client configuration (default to true)
  • Add internal eventsQueue mechanism to guarantee order of events received during a session

Version 6.0.19 - November 26, 2020

Changes

  • Update reconnectionDelay to 2000 in socket.io
  • Add randomizationFactor to 0.55 in socket.io

Version 6.0.18 - November 19, 2020

Changes

  • Update documentation

Fixes

  • Add reconnectionDelay to 3000 and reconnectionDelayMax to 15000 in socket.io

Version 6.0.17 - November 12, 2020

Fixes

  • Update Session id after reconnection

Version 6.0.16 - October 12, 2020

Fixes

  • Dispatch system:error:expired-token event in application level
  • Handle uncaught exception of conversation:error:invalid-member-state event

Version 6.0.15 - September 21, 2020

Fixes

  • Set SDK default to single preset ICE candidate
  • Remove iceGatherOnlyOneCandidate flag from client configuration

Version 6.0.13 - September 14, 2020

Fixes

  • Update websocket reconnection logic for token expiry

Version 6.0.12 - September 01, 2020

Fixes

  • Update resolved stream on media enabling

Version 6.0.11 - September 01, 2020

Changes

  • Update websocket reconnection logic
  • Fix delay in establishing media connection with one ice candidate sent

Version 6.0.10 - May 04, 2020

Fixes

  • Filter IPv6 Candidates from iceGatherOnlyOneCandidate SDP offer

Version 6.0.9 - March 24, 2020

Fixes

  • Fix handler of rtc:transfer event to refresh conversation

Version 6.0.8 - February 28, 2020

Fixes

  • Fix duplicated webrtc offer sent during IP calling
  • Fix Safari WebRTC dependency

Version 6.0.7 - January 16, 2020

Fixes

  • Fix ANSWERED call status in IP - IP calling
  • Fix docs issues

Changes

  • Improve TypeScript definitions

Version 6.0.6 - November 19, 2019

Fixes

  • Add iceGatherOnlyOneCandidate configuration option and use to define path in ICE gathering process

Version 6.0.5 - November 19, 2019

Fixes

  • Update styling of JSDocs to Docstrap template
  • Change RTCPeerConnection ICE candidates gathering process to send the Session Description Protocol (SDP) offer on first ICE candidate gathered

Version 6.0.4 - November 14, 2019

Fixes

  • Remove remaining audio elements after transferring a call to a new conversation
  • Update conversation.invite() to not include empty user_id or user_name fields within the requests

Version 6.0.3 - October 22, 2019

New

  • Added TypeScript definition files

Changes

  • Added options for customized logging levels in the console of debug, info, warn, or error.
  • Moved storage of JWT token from localStorage to NexmoClient configuration object
  • Removed unnecessary files from the NPM release package

Fixes

  • Fixed call statuses order in case of a transfer

Version 6.0.1 - September 27, 2019

Changes

  • Removed media.record() function
  • Removed cache option from SDK, used for storing conversations and events
  • Removed automatic syncing of all individual conversations in login, when sync is lite or full

Version 6.0.0 - September 13, 2019

Breaking Changes

  • Change return value of application.getConversations() to new ConversationsPage object
  • Change return value of conversation.getEvents() to new EventsPage object
  • Rename method application.callPhone to application.callServer
  • Rename method application.call to application.inAppCall
  • Rename method call.createPhoneCall to call.createServerCall
  • Rename class Call to NXMCall
  • Rename class ConversationClient to NexmoClient
  • Rename class ConversationClientError to NexmoClientError
  • Rename files conversationClient.js and conversationClient.min.js to nexmoClient.js and nexmoClient.min.js
  • Deprecate member:call:state event (use instead member:call:status)
  • Remove automatic login in case of a websocket reconnection and emit the event

New

  • Send and listen for custom event types in a conversation.
  • Add new PageConfig class for configuring settings for paginated requests
  • Add new Page class to wrap results of paginated requests
  • Add setup of default pagination configuration for conversations and events in ConversationClient initialization
  • Add wild card supported for filtering by event types using :* (for example event_type: member:*)
  • Add new ConversationsPage and EventsPage which extend Page class to wrap results of paginated requests for conversations and events
  • Add getNext() and getPrev() methods to ConversationsPage and EventsPage objects to fetch previous and next pages of conversations and events
  • Add conversations_page_last parameter to application object and events_page_last parameter to conversation object for reference to last page retrieved
  • Add the ability to make an IP-IP call through callServer function

Changes

  • Update reason object to receive reason.reason_text and reason.reason_code fields

Internal changes

  • Rename Event class to NXMEvent
  • Update CAPI requests to REST calls for these events
    • event:delivered
    • text:delivered
    • image:delivered
    • event:seen
    • text:seen
    • image:seen
    • conversation:events
    • audio:play
    • conversation:delete
    • conversation:invite
    • text
    • text:typing:on
    • text:typing:off
    • new:conversation
    • conversation:get
    • user:conversations
    • user:get
    • conversation:join
    • audio:say
    • audio:earmuff:on
    • audio:earmuff:off
    • audio:dtmf
    • audio:record
    • audio:play
    • conversation:member:delete
    • event:delete
    • audio:ringing:start
    • audio:ringing:stop
    • audio:mute:on
    • audio:mute:off
    • image
    • rtc:new
    • rtc:answer
    • rtc:terminate
    • knocking:new
    • knocking:delete

Version 5.3.4 - July 18, 2019

Fixes

  • Custom SDK config object does a deep merge with default config object

Version 5.3.3 - June 29, 2019

Fixes

  • Change digits to digit in the sendDTMF() request method payload.
  • Stream is not being terminated on a call transfer.
  • member:call is not being emitted if media.audio_settings.enabled is false or doesn't exist.

New

  • Set member.callStatus to started when initializing an IP - IP call.
  • Set member.callStatus to ringing when enabling the ringing with media.startRinging().

Internal changes

  • Move stream cleanup from member:left to rtc:hangup in Media module.

Version 5.2.1 - June 12, 2019

New

  • Add the new nexmoGetRequest utility method to make a GET network request directly to CS:
  • Support reason for member:delete, conversation.leave, member.kick, call.hangup and call.reject.
  • Listen for the member:left event with reason:
  • Add callStatus field in the Member object, defining the status of a call.
  • Emit member:call:status event each time the member.callStatus changes:

Version 5.2.0 - May 30, 2019

New

  • Add the call instance in application.calls map in createCall() function (IP -IP call)

  • Update caller parameter in call object in a PSTN - IP call from unknown to channel.from.number or channel.from.uri if exists

  • Emit the new leg:status:update event each time a member leg status change

  • Add the channel.legs field in member events offered by CS

Version 5.1.0 - May 29, 2019

New

  • Send DTMF event to a conversation
  • Emit new event audio:dtmf
  • Set customized audio constraints for IP calls when enabling audio
  • Update audio constraints for existing audio tracks

Fixes

  • Remove 'this' passed to cache worker event handler

Internal breaking changes

  • Change the media audio parameter from media.audio to media.audio_settings in inviteWithAudio function

Version 5.0.3 - May 23, 2019

Changes

  • Change default behavior of autoPlayAudio in media.enable() from false to true
  • Pass an autoPlayAudio parameter to call.createCall() and call.answer() functions (default is true)

Version 5.0.2 - May 30, 2019

New

  • Delete the image files before sending the image:delete request
  • Attach of audio stream can now be chosen if it will be automatically on or off through media.enable()

Changes (internally)

  • Combine the network GET, POST and DELETE requests in one generic function

Version 5.0.1 - April 30, 2019

Fixes

  • Clean up user's media before leaving from an ongoing conversation

Breaking changes

  • Change application.conversations type from Object to Map

Version 4.1.0 - April 26, 2019

Fixes

  • Fixed the bug where the audio stream resolved in media.enable() is causing echo and was not the remote stream
  • Resolve the remote stream pc.ontrack() and not the localStream from getUserMedia

Changes

  • Rename localStream to stream in media.rtcObjects object.

Version 4.0.2 - April 17, 2019

Changes

  • Removed media.rtcNewPromises

New

  • Internal lib dependencies update
  • Added support for Bugsnag error monitoring and reporting tool
  • Updated vscode settings to add empty line (if none) at end of every file upon save
  • Disable the ice candidates trickling in ice connection
  • Wait until most of the candidates to be gathered both for the local and remote side
  • Added new private function editSDPOrder(offer, answer) in rtc_helper.js to reorder the answer SDP when it's needed
  • For rtc connection fail state
    • Disable leg
    • emit new event media:connection:fail
  • Add new LICENCE file

Breaking changes (internally)

  • Deprecating ice trickling logic with onicecandidate event handler
  • Change the format of member:media event to the new one offered by CS
  • Change the format of member:invited event to the new offered by CS

Version 4.0.1 - March 4, 2019

New

  • Select the sync level for the login process

    • full: trigger full sync to include conversations and events
    • lite: trigger partial sync, only conversation objects (empty of events)
    • none: don't sync anything

    if the Cache module is enabled the manual fetch of a conversation will store them in internal storage

    usage:

Fixes

  • rtcstats:report was duplicating instances in each call
  • remove screenshare https restriction

Breaking changes (internally)

  • Deprecating application.activeStream, now it's part of application.activeStreams
  • Removed the restriction to allow calling media.enable() while a stream is active

Version 4.0.0 - February 1, 2019

Breaking Changes

  • rename SDK stitch to client
  • listening for media:stream:* now gives streamIndex instead of index for consistency with the internal rtcObjects

New

  • Screen Share Source ID can now be specified when invoking media.enable()