nexmo-java v6.3.0

Added

  • Adding Inbound SMS message validation for JSON based POST requests

vonage-php-sdk-core v2.9.2

Fixed

  • JWTs with sub should now generate properly under newer PHP versions

nexmo-dotnet v5.8.0

Added

  • Added support for the new Number Insights response format

Number-insight API v1.1.1

Fixed

  • Fixed NI responses for "unknown" roaming

Number-insight API v1.1.0

Changed

  • Converts carrier information and roaming values to Nullable where appropriate

vonage-php-sdk-core v2.9.1

Fixed

  • SMS Throttling response is now handled as milliseconds instead of seconds
  • Fixed regex to not consume API rate limiting error and basically time out PHP scripts

vonage-php-sdk-core v2.9.0

Changed

  • Landline Toll Free numbers can be searched for

vonage-php-sdk-core v2.8.1

Fixed

  • Fixed issue retrieving Conversations and Users clients where the service locator didn't know what to do

Changed

  • Moved auth logic to individual handlers, to better prepare for a fix where Containers do not allow Signature and Token auth

Voice API v1.3.7

New VAPI feature added - the ability to use random from number, selected from one of the phone numbers assigned to the application.

Added

  • Add new random_from_number parameter to POST /v1/calls request;
  • from in POST /v1/calls request is not mandatory now.

Reports API v2.1.17

Changed

  • Updated default value for concatenated

Added

  • Added new product - REPORTS-USAGE

Reports API v2.1.16

Added

  • Show "concatenated" field in response example

Reports API v2.1.15

Added

  • added ASR product where it was missing
  • new product : VOICE-FAILED
  • the parameter show_concatenated (true/false)

NOTE: VOICE-FAILED has retention of only 7 days (all other ones have 13 months)

vonage-ruby v7.4.0

Added

  • Adds a new NCCO builder into the SDK to construct Voice API instructions

nexmo-dotnet v5.7.0

Added

  • Adding EntityId and ContentId fields to SMS Requests to compile with India's DLT
  • Adding Detail field to call status webhooks to provide more granular detail of certain inbound webhooks.

nexmo-dotnet v5.6.5

Fixed

  • Fixing an issue where Channels parameter would serialize to 0 when not initialized in RecordAction - the parameter is now properly ignored.

Whatsapp-provisioning API v0.1.4

Added

  • adding x-error for conflicting deployments.

nexmo-dotnet v5.6.4

Fixed

  • Fixing deadlock issue with synchronous methods in Blazor Server

Number-insight API v1.0.10

Fixed

  • Initial carrier for NI is now described as the carrier a number was initially connected to, versus the number it is currently connected to.

External-accounts API v0.1.5

Added

  • In December we added a new tool to manage the linking of Facebook accounts to your Vonage API account, this update reflects that.

Deprecated

  • messenger.nexmo.com is being deprecated.

Whatsapp-provisioning API v0.1.0

Added

  • Added new WhatsApp provisioning API spec. This API will create a new WhatsApp cluster for the requester and perform WhatsApp OTP verification. Additionally, this API allows you to update your profile information/picture.

nexmo-dotnet v5.6.3

Fixed

  • Fixing issue with the serialization of delivery receipts when using a non-standard JSON serializer.

Verify API v1.1.7

Added

  • Specifies that either request_id or request_ids is required when searching for verify request.

nexmo-dotnet v5.6.2

Added

New, simplified method for sending SMS messages.

To send an SMS simply use the Sms client's SendAnSms function

var smsResponse = smsClient.SendAnSms(FROM_NUMBER, TO_NUMBER, TEXT);

nexmo-dotnet v5.6.1

Added

New, simplified method for sending SMS messages.

To send an SMS simply use the Sms client's SendAnSms function

var smsResponse = smsClient.SendAnSms(FROM_NUMBER, TO_NUMBER, TEXT);

nexmo-node URL Override Fix

Fixed

  • Fix new issue with host override.

vonage-python-sdk v2.5.5

Fixed

  • Patched issues with PyJWT >1.8 (TypeError: can't concat str to bytes)
  • This patch ensures all versions of PyJWT are supported.

nexmo-java v6.1.0

  • Adds new language and style parameters for choosing how voices will sound over TTS
  • Marks old voiceName parameter as deprecated

Sms API v1.0.10

To make sure that our APIs meet new regulations, we're adding two new fields to the send-sms endpoint. These are entity-id and content-id. The first of these regulations is DLT, which is an Indian regulation. For more information on DLT please go to: https://help.nexmo.com/hc/en-us/articles/204017423-India-Features-Restrictions .

Verify API v1.1.6

Fixes

  • Add error message when new users try to access non-permitted destinations with Verify API

vonage-php-sdk-core v2.7.1

Changed

  • #270 - Use the actual Guzzle package version to determine of 6 or 7 is in the project

Reports API v2.1.14

Fixes

  • You can now specify a comma-separated list of UUIDs to synchronously retrieve records for.

Reports API v2.1.13

Fixes

  • Adds error 409 and links to it from Cancel Report.

Account API v1.0.3

Fixes

  • Restructure the Account API to have named request bodies along the same lines as our other APIs

Application API v2.0.9

Fixes

  • Clarifies the descriptions for connection_timeout and socket_timeout.

vonage-php-sdk-core v2.7.0 - PHP 8 Support!

Added

  • #269 - Added PHP 8 Support

nexmo-dotnet v5.5.0

New

  • Voice Talk Command and Talk NCCO now allow you to use the language and style parameters for text-to-speech. E.g.
var talkAction = new TalkAction() { Text = "Hei dette er en tekst-til-tale-samtale fra vonage " + extraText, Language="no-NO" };

Deprecations

  • The VoiceName parameter has been deprecated.

Verify API v1.1.5

Fixes

  • Structure change since moving to POST requests had left nameless objects in the API definition and this trips up some codegen tooling.
  • Add "deprecated" to the ip_address fields that we no longer use.

Application API v2.0.8

  • Add the default timeout information inside each action detail properties section.

Application API v2.0.7

New

Added connection_timeout and socket_timeout to voice capabilities - webhooks.

vonage-php-sdk-core v2.6.0

2.6.0

Don't be scared off by this large release! Most of it is under-the-hood syntax cleanup. Thank you to everyone during Hacktoberfest for the cleanup and help with the SDK!

The big addition was we added support for VAPI Language and Style (https://developer.nexmo.com/voice/voice-api/guides/text-to-speech), and fixed a bug when manually setting the Verify code length.

Added

  • #265 - Added support for Language and Style for NCCO Talk action

Changed

  • #257 Dropped support for PHPUnit 7
  • #257 Added missing PHPDoc blocks
  • #257 Added missing return type hints
  • #257 Replaced qualifiers with imports
  • #257 Updated and optimized examples
  • #257 Applied multiple code optimizations (especially for PHP 7.2+) and simplified some logic
  • #257 Updated code styling to match PSR standards
  • #257 Re-ordered imports where necessary
  • #257 Updated tests to get rid of deprecation messages
  • #257 Fixed namespace declarations in tests
  • #257 Updated code style to PSR-12
  • #257 Updated phpunit.xml.dist
  • #257 Added Roave Security Advisories as dev-requirement to prevent usage of packages with known security vulnerabilities
  • #257 Replaced estahn/phpunit-json-assertions with martin-helmich/phpunit-json-assert due do compatibility issues with PHPUnit
  • #257 Removed test build for PHP 7.1 in .travis.yml
  • #257 Added missing punctuation in CONTRIBUTING.md
  • #257 Updated contact email address in CODE_OF_CONDUCT.md

Deprecated

  • #265 - Deprecated use of VoiceName for NCCO Talk action

Fixed

  • #257 Fixed namespaces (Zend => Laminas, Nexmo => Vonage)
  • #257 Fixed condition in Verify\Request::setCodeLength
  • #257 Fixed typos and some wording in README.md

Removed

  • Removed examples/ directory as the code snippets repo is much more up-to-date

Messages-olympus API v0.3.12

Fixes

  • Change Nexmo references to Vonage.

Dispatch API v0.3.3

Fixes

  • Change Nexmo references to Vonage.

nexmo-java 6.0.0

[6.0.0]

Added

  • ASR (Automatic Speech Recognition)

Changed

  • Refactored Application v2 requests to remove duplicated code
  • Deprecated Product.MESSAGE from RedactRequest. Use Product.MESSAGES instead
  • Deprecated InsightClient#getStandardNumberInsight(number, country, cnam). Use InsightClient#getStandardNumberInsight(StandardInsightRequest) instead
  • Deprecated InsightClient.getAdvancedNumberInsight(number, country, ipAddress, cnam). Use InsightClient#getAdvancedNumberInsight(AdvancedInsightRequest) instead
  • Deprecated InsightClient.getAdvancedNumberInsight(number, country, ipAddress). Use InsightClient#getAdvancedNumberInsight(AdvancedInsightRequest) instead
  • Deprecated public constructors and setters in VerifyRequest use VerifyRequest.Builder instead
  • Deprecated MD5Util use HashUtil instead
  • Removed setters from BaseRequest. Set fields in the builders of Psd2Request or VerifyRequest instead.

Subaccounts API v1.0.7

New

  • Added new name parameter to ModifySubaccountRequest

Developer/messages API v1.0.6

Fixes

  • Change Nexmo references to Vonage.

Redact API v1.0.6

Fixes

  • Improves overview by referencing main doc overview and auto-redact.

nexmo-dotnet v5.4.0

New

  • Adds the Async Pattern to the Vonage SDK. All methods that were synchronous have both a sync and async flavor. To use the async method simply add Async to the end of the old method name - e.g. SendAnSmsAsync
  • Adds new APIs for making Phone calls with the Voice API, specifically CreateCall has two new overloads which support either two phone numbers (to and from) and an NCCO, or a to endpoint and from number and NCCO

Fixes

  • Fix enumeration issue for Verify workflows
  • Some minor null checking.

Sms API v1.0.9

Changed Nexmo references to Vonage.

nexmo-java 5.6.0

Added

  • NotifyEvent structure for Notify Actions
  • SHA256 hashing option

Changed

  • Create application request use basic auth for authentication

Fixed

  • Fixed error throw when trying to log No Content responses

Number-insight API v1.0.9

Fixes

  • Change Nexmo references to Vonage.

Conversation API v1.0.1

Fixes

  • Branding changes - Nexmo to Vonage.

Audit API v1.0.4

Fixes

  • Branding updates - Nexmo to Vonage.

Conversation API v2.0.1

Fixes

  • Branding changes - Nexmo to Vonage.

External-accounts API v0.1.4

Fixes

  • Branding changes - Nexmo to Vonage.

Redact API v1.0.5

Fixes

  • Change Nexmo references to Vonage.

Numbers API v1.0.20

Fixes

  • Change Nexmo references to Vonage.

Verify API v1.1.4

Fixes

  • Change Nexmo references to Vonage.

Voice API v1.3.6

Fixes

  • Change Nexmo references to Vonage.

Voice API v2.2.2

Fixes

  • Change Nexmo references to Vonage.

nexmo-node v2.10.4

Fixed

  • #400 - Fix issue with host override

Account API v1.0.2

Fixes

  • Update branding to Vonage

Voice API v1.3.5

When the recommended TTS fields changed from voice_name to language and style, we completely removed the voice_name from the API description but it's still supported in the API itself. A more accurate way to describe the API would be to include the field but clearly mark it as deprecated.

(see also: an open issue to have our docs mark this more clearly. Other platforms should do it though https://github.com/Nexmo/nexmo-oas-renderer/issues/87)

Fixes

  • Keep the old voice name field docs for reference

nexmo-node v2.10.3

A special thanks to all of the Hacktoberfest contributions. Your work is appreciated!

Added

  • #400 - Added Yarn example in README.md
  • #380 - Added Number typings
  • #379 - Added Voice typings
  • #376 - Added Media typings
  • #373 - Added Number Insight typings

Updated

  • #389 - Discriminating unions support for different message responses
  • #387 - Bump @babel/register from 7.11.5 to 7.12.0
  • #385 - Bump @babel/core from 7.11.6 to 7.12.0
  • #384 - Bump @babel/preset-env from 7.11.5 to 7.12.0
  • #378 - Allow for Full URL Overrides in Constructor
  • #375 - Updated uuid-dependency for performance improvement

nexmo-php v2.5.0

Changed

  • #260 - Swapped out ocramius/package-versions for composer/package-versions-deprecated to work with Composer 2

Conversation API v2.0.0

Changes

  • Transitioned the Conversation API endpoints from beta and beta2 paths to v0.1 and v0.2 respectively.

Conversation API v1.0.0

Changes

  • Transitioned the Conversation API endpoints from beta and beta2 paths to v0.1 and v0.2 respectively.

Application API v2.0.6

Fixes

  • Improved examples and data types, renamed the common errors component.

vonage-ruby v7.2.1 Release

  • Bump version of nexmo-jwt gem dependency to v0.1.2. Fixes the ACL path parameter formation in JWT creation.

Reports API v2.1.12

New report type and corresponding product value supported: WEBSOCKET-CALL.

Reports API v2.1.11

Fixes

  • For get records, every response example showed the product as SMS. Fixed to show correct product for each tab.
  • For get records, fixed direction for example responses so that they were correctly inbound/outbound as appropriate.
  • For get records, fixed tabbing between Response panel and tabs in corresponding example panel.

nexmo-node v2.10.2

Updated

  • #350 - Bump eslint-config-prettier from 6.11.0 to 6.12.0

Fixed

  • #370 - Fixed typos
  • #369 - Fixed typos
  • #358 - Fixed typos
  • #357 - Fixed typos
  • #355 - Fixed types module name
  • #352 - Fixed typos

nexmo-php v2.4.1

2.4.1

Changed

  • #256 - Added support for PHPUnit 8

Fixed

  • #253, #254 - Fixed some typos in the README
  • #255 - \Vonage\Numbers\Client::searchAvailable() now correctly handles filters using FilterInterface

Messages-olympus API v0.3.11

  • Accidentally added SMS MO to previous spec refresh - removing as it's not supported by the Messages API yet.
  • Also needed to swap the id/number for viber inbound messages.

Messages-olympus API v0.3.10

Refreshing the Olympus OAS spec so that it can be a bit more usable then it is now. Making all channel/messageType permutations tabbable. Also made whatsapp node a required part of a WhatsApp message for MTM messages.

Example:

New

  • Tab interface for NewMessage operation
  • Made whatsapp node a required field for MTM
  • Cleaned up descriptions so they only refer to the channel for the tab

Fixes

  • Minor fixes to descriptions.

Number-insight API v1.0.8

While working with the Number Insights API I found a couple of really minor things so I fixed them.

Fixes

  • Adds the missing error_text field to the async response of Number Insight API
  • Corrects the remaining_balance data type to be a string everywhere on Number Insight API

Messages-olympus API v0.3.9

New

  • Adding unsupported type to inbound messages webhook for messages-Olympus. This will occur if a channel receives a type that's not supported (previous behavior was just to drop the message).

vonage-python-sdk v2.5.3

  • Minor patches to reflect Vonage namespace changes

nexmo-php v2.4.0

This release includes a minimum version bump to PHP 7.2, as 7.1 is nearing full EOL. This also better allows us to support Guzzle 7 out of the box.

Changed

  • #250 - Bumped minimum PHP version to 7.0
  • #250 - Now supports Guzzle 7 automatically, and swaps to Guzzle 7 as a dev dependency

nexmo-node v2.10.0

This version serves as the change from the Nexmo namespace to the Vonage namespace. The module now resides on NPM as @vonage/server-sdk. Prior versions under the Nexmo namespace will remain in maintenance mode for the next 12 months and recieve bug and security fixes. All new functionality will only be added to the @vonage namespace.

Updated

  • #321 - Bump jsonwebtoken from 8.4.0 to 8.5.1
  • #322 - Bump body-parser from 1.18.3 to 1.19.0
  • #324 - Bump cross-env from 5.2.0 to 7.0.2
  • #325 - Migrated SDK module from nexmo to @vonage/server-sdk
  • #326 - Bump bluebird from 3.5.3 to 3.7.2
  • #327 - Bump @babel/plugin-proposal-object-rest-spread from 7.10.4 to 7.11.0
  • #328 - Bump @babel/register from 7.10.5 to 7.11.5
  • #329 - Bump @babel/core from 7.11.5 to 7.11.6
  • #330 - Bump @babel/preset-env from 7.10.4 to 7.11.5
  • #333 - Bump nyc from 14.1.1 to 15.1.0
  • #334 - Bump eslint-config-prettier from 6.2.0 to 6.11.0
  • #336 - Bump @babel/cli from 7.10.5 to 7.11.6
  • #339 - Bump dotenv from 2.0.0 to 8.2.0
  • #340 - Bump babel-plugin-istanbul from 4.1.6 to 6.0.0
  • #343 - Bump babel-plugin-add-module-exports from 1.0.2 to 1.0.4
  • #344 - Bump request from 2.88.0 to 2.88.2

nexmo-php v2.3.3

Fixed

  • #252 - Connect action's eventUrl was being set as a string, changed to single element array of strings

nexmo-php v2.3.2

Added

  • #248 - Added \Vonage\Client\MapFactory::make() to always instantiate new objects

Fixed

  • #248 - Fixed type in URL for Account Client Factory

nexmo-java 5.5.0

Added

  • Added support for PSD2 verification

Reports API v2.1.10

Fixes

  • Removed JWT Authentication, as it is not supported.

nexmo-dotnet v5.3.0

5.3.0 switches all naming in the SDK from Nexmo -> Vonage. And marks the first release of the new Vonage nuget package.

The Nexmo namespace is preserved but all classes within it are marked as deprecated as they will be removed in the next major release (6.0).

nexmo-php v2.3.1

Added

  • #247 - Fixed missing fields on Standard/Advanced number insight getters

Fixed

  • #246 - Fixed badge URLs in README

nexmo-php v2.3.0

This release contains a major milestone where all the code is now under the \Vonage namespace! Do not worry though, any existing code using the \Nexmo namespace will still continue to work thanks to a new vonage/nexmo-bridge package which will translate between the two namespaces. The next time you update your Nexmo client to this or any subsequent 2.x releases, your code will continue to work with no changes.

It is recommended to start using the \Vonage namespace in any new code you create, but even new features added (like our PSD2 feature in this release) will work under either namespace. Developers will be able to update at their own pace.

Added

  • Support for the PSD2 Verify endpoints for EU customers
  • vonage/nexmo-bridge as a dependency so \Nexmo namespaced code works with the new \Vonage namespace
  • Calls using \Vonage\Client\APIResource can now specify headers for individual requests

Changed

  • Namespace changed from \Nexmo to \Vonage for all classes, interfaces, and traits

Fixed

  • Base URL overrides were not being pushed up properly
  • JSON payload for transferring via NCCO or URL was malformed

nexmo-python v2.5.2

  • Support for Independent SMS, Voice and Verify APIs with tests as well as current client methods
  • Getters/Setters to extract/rewrite custom attributes
  • PSD2 Verification support
  • Dropping support for Python 2.7
  • Roadmap to better error handling
  • Supporting Python 3.8

nexmo-php v2.2.3

Added

  • Added country as a search option for Nexmo\Numbers\Client::searchOwned()

nexmo-java v5.4.0

  • Added AppEndpoint support for ConnectAction.
  • Added the ability to log the API response in when logger is set to debug mode.
  • Added ability to override base url for:
    • Modify Call
    • Send DTMF
    • Stop Talk

nexmo-node 2.9.1

  • FIXED: #317 - TypeError: Nexmo is not a constructor

nexmo-node v2.9.0

  • FIXED: #295 - Nexmo constructor changes of given options object
  • ADDED: Optional target_api_key parameter for the number.buy() and number.cancel() methods.
  • ADDED: Typings for Messages API
  • UPDATED: Private Key strings now replaces \n with newlines for easier usage in environment variables.

nexmo-php v2.2.2

Fixed

  • #235 - Adds a fix for calling the calls() API client

Voice API v2.2.1

Fixes

  • Adds app as possible endpoint types for a create call request

Voice API v1.3.3

New talk operation parameters added: language and style

nexmo-dotnet v5.2.0

Adds new utility methods for parsing inbound webhooks from Vonage Fixes bug with parsing multi-input event webhooks.

nexmo-php v2.2.1

Minor bugfix release based on feedback:

Added

  • Allow Conversations NCCO to set event URL information
  • Added missing Notify webhook and new ASR code

Changed

  • NCCOs now set let default options

Removed

  • Redundant comments in client for sms() and verify() clients

nexmo-php v2.2.0

2.2.0

This release focuses on deprecation of dead and old code, and preps many internal changes in regards to v3.0.0. Where possible upcoming v3.0.0 changes were backported where backward-compatibility could be maintained.

Added

  • New Voice and SMS interfaces, accessible through $client->voice() and $client->sms(), respectively
  • Added user deprecation warnings, which can be turned on and off via the Nexmo\Client "show_deprecations" config option. This can help devs update in preparation in v3.0.0, and will be utilized in the future as things are deprecated.
  • Many objects now have a toArray() serialization method, to discourage direct use of jsonSerialize()
  • Many objects now support a fromArray() hydration method
  • Better incoming webhook support for SMS and Voice events
  • NCCO builder for Voice

Changed

  • API handling code has been conglomerated in Nexmo\Client\APIResource and Nexmo\Entity\IterableAPICollection
  • All APIs ported over to the new API handling layer
  • Internal Service Locator Nexmo\Client\Factory\MapFactory is now PSR-11 compliant, and can use factories
  • Most Verify methods in the client now prefer string Request IDs
  • Verify now prefers Nexmo\Verify\Request for starting new Verification requests

Deprecated

For a detailed list of things that may impact an application, enable the show_deprecations Nexmo\Client option to see deprecation notices for specific code flows.

  • Most forms of array access are now deprecated
  • Using service layers like $client->messages($filter) to search has been deprecated in favor of bespoke search methods
  • Requests/Responses on exceptions and entities are deprecated, and now exist in the service layer or collection
  • Most methods that took raw arrays now prefer objects
  • Nexmo\Verify\Verification objects full functionality has been deprecated, and will be used only as a value object for search requests in the future
  • Nexmo\Conversations and Nexmo\User have been deprecated and will be removed in the future as the feature is in Beta status and has diverged from this implementation
  • Nexmo\Voice\Call and Nexmo\Voice\Message have been deprecated and will be removed in the future as the TTS API is deprecated
  • SMS searching has been deprecated and will be removed in a future update

Removed

  • No features or classes have been removed in this update, it is functionally compatible with v2.1.0 other than deprecation notices and new features.

Fixed

  • No direct bugs have been fixed as this release was designed to be as compatible with v2.1.0 as possible, however:
    • #177 should be better handled by a centralized Nexmo\Client\Exception\ThrottleException and has been implemented in SMS and the Numbers API
    • #219 is implicitly fixed in Nexmo\SMS\Client::send() as it now returns a fully hydrated collection object as a response, however this needs to be updated in Laravel itself via an update to nexmo/laravel and laravel/nexmo-notification-channel
    • #221 is implicitly fixed in Nexmo\SMS\Client::send() as it now returns a fully hydrated collection object that is much more up-front it is not a single object
    • #227 is implicitly fixed in Nexmo\SMS\Webhook\InboundSMS

Security

  • There were no known security vulnerabilities reported

nexmo-java v5.3.0

  • Added support for new voice names added to the Voice API for Text to Speech
  • Improved error handling when there are apparent networking issues

Verify API v1.1.3

New

  • Support for Thai (th-th) and Yue Chinese (yue-cn) languages

nexmo-ruby v7.2.0 Release

  • Replaced JWT generation with the nexmo-jwt gem.
  • Bug fix: Restored ability to update app_id in the Numbers API with the SDK.

Voice API v1.3.2

Fixes

  • Correct the request example for a transfer action

Voice API v1.3.1

Fixes:

  • Correct length_timer description to match an actual VAPI call state, which is answered.

Reports API v2.1.8

New

  • ASR (Speech Recognition) records are now supported in Reports API

Subaccounts API v1.0.6

New

  • Added possible error messages when managing subaccounts

nexmo-dotnet v5.1.0

New

This new version of the .NET Nexmo SDK Introduces the new PSD2 feature for the Vonage Verify API.

For more details about using this feature see its code snippets. And its API Reference

Voice API v1.3.0

Fixes

  • Split POST /calls in to a oneOf for answer_url and ncco options
  • Split PUT /calls/:id in to a oneOf for transfer with answer_url and ncco options, plus hangup, mute, unmute, earmuff, unearmuff
  • Remove dtmfAnswer from the from option when placing a call
  • Fix examples for ncco, event_url and answer_url

Voice API v2.2.0

Fixes

  • Split POST /calls in to a oneOf for answer_url and ncco options
  • Split PUT /calls/:id in to a oneOf for transfer with answer_url and ncco options, plus hangup, mute, unmute, earmuff, unearmuff
  • Remove dtmfAnswer from the from option when placing a call
  • Fix examples for ncco, event_url and answer_url

Account API v1.0.1

New

  • Add error responses to /account/get-balance
  • Add success and error responses to /account/top-up

Conversation API v1.7.8

Fixes

  • Remove unused numbers key from Create Conversation
  • Fix event_url example

Reports API v2.1.6

Fixes

  • Updated description for the CSV Responses success response

Voice API v1.2.10

Fixes

  • The GET /v1/calls endpoint returns a different data structure than we describe in the spec. Spec says: array of objects with "from" and "number" properties. In reality we get just get one of those objects, no array.

nexmo-dotnet v5.0.0

New Features

We've added a few new features to the .NET SDK, here's an enumeration of them.

Rebuilt SDK Around .NET Conventions

Older iterations of the SDK didn't feel very ".NET", this release fixes that.

  • We've abstracted all API Calls behind interfaces allowing easy substitution via dependency injection for your testing. For example, the Legacy SDKs SMS class is replaced by the ISmsClient interface, which you can speak through or replace on your own.

  • All of the new structures and APIs are now compliant with .NET naming conventions. Additionally, we've introduced many new enums to remove some open string fields. We preserved the legacy structures but marked them as obsolete as a gentle reminder to update the latest version as this will make upgrading easier.

New Logging Methodology

A new means of logging has been added to the SDK built around Microsoft.Extensions.Logging. Thus you can configure the logging of the SDK to use whatever logging format you want; you can make it as compliant to your own logs as you'd like, and there's no need to log our SDKs outputs to your log files. See my explainer about how this is structured and how you can get up and logging with your own logs!

Added Summary Documentation File

The SDK now comes with a summary docs file to make it easier for you to determine how to go about building your applications.

New Error Handling Methodology

All API calls will throw an exception containing a best-effort description of what went wrong if they encounter an error. This includes all 4xx, 5xx responses, and errors from the SMS, Numbers, Number Insight, and Verify APIs that might respond with a 200 OK response and an error code. All of these exceptions will be of the type NexmoException (SubTypes NexmoSmsResponseException, NexmoNumberInsightResponseException, NexmoNumberResponseException, NexmoVerifyResponseException) or NexmoHttpRequestException.

There are similar errors that will be thrown for the legacy APIs as well.

Under the Hood

We've also made some significant enhancements under the hood that will be less relevant to interacting with the API but might still be interesting.

Refactored Internal Request Methods

We've refactored all of the internal ApiRequest methods to make them more user friendly and generic. You can have a look here.

Note: These methods are not considered part of the public API of the SDK and are subject to change without notice.

Unit Tests

We've added a whole new suite of unit tests to prevent things from breaking on their way out the door. Unit test coverage went from 33% in 4.4.0 to 87% in 5.0. Virtually everything that is not tested is either legacy or a third party file previously incorporated into the SDK.

Breaking Changes

We've done our best to ensure that the upgrade path to 5.0 will be as seamless as possible. The new structures should not affect current users of the SDK though I would encourage everyone to heed the obsolescence warnings. That said, there are a couple of breaking changes between 4.x and 5.x that you should be aware of.

  • We've removed LibLog, thus without action on the developer's part logs will cease to be intermingled with developer's logs.

  • New exceptions will be thrown in the case of any error being encountered on an API call, this includes 200 responses with error codes.

If anyone encounters any issues please open an issue in the Github repo

Verify API v1.1.2

Fixes

  • Update Verify status response codes - only /search returns the status 101 response

Developer/messages API v1.0.5

Deprecations

  • The message search API is now deprecated

nexmo-dotnet v4.4.1

Fixes

  • Changes the encoding of JSON payloads from ASCII to UTF8

nexmo-node v2.7.0

  • ADDED: Made apiKey and apiSecret optional when applicationId and privateKey are present in Nexmo constructor.

nexmo-dotnet v4.4.0

Adding new Automatic Speech Recognition (ASR) action to NCCO Action set. To start an asr input you will construct a MultiInputAction and return it from your answer webhook:

[HttpGet("/webhooks/answer")]
public string Answer([FromQuery]Answer request)
{
        var host = Request.Host.ToString();
        //Uncomment the next line if using ngrok with --host-header option
        //host = Request.Headers["X-Original-Host"];

        var eventUrl = $"{Request.Scheme}://{host}/webhooks/asr";
        var speechSettings = new SpeechSettings {Language="en-US", EndOnSilence=1, Uuid = new[] { request.Uuid } };
        var inputAction = new MultiInputAction { Speech = speechSettings, EventUrl = new[] { eventUrl } };

        var talkAction = new TalkAction { Text = "Please speak now" };

        var ncco = new Ncco(talkAction, inputAction);
        return ncco.ToString();
}

This will allow a user to perform inputs with speech. After the end conditions are met for the voice input you will then get a webhook returned to you containing an ordered list of guesses for what speech your user said on the EventUrl that you passed through the MultiInputAction. That can be handled like so:

[HttpPost("/webhooks/asr")]
public string OnInput()
{
        MultiInput input;
        using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
        {
            var result = reader.ReadToEndAsync().Result;
            input = JsonConvert.DeserializeObject<MultiInput>(result);
        }
        var talkAction = new TalkAction();
        talkAction.Text = input.Speech.SpeechResults[0].Text;
        var ncco = new Ncco(talkAction);
        return ncco.ToString();
}

Numbers API v1.0.19

New

  • Describe error responses in Numbers API

Voice API v1.2.8

Fixes

  • Clarify that event_url parameter is only required for creating a call request when it is not previously set at the application level.

Voice API v1.2.7

New

  • Newly supported Text to Speech voices added to the list of possible values for voice_name parameter of PUT /v1/calls/{uuid}/talk operation.

Reports API v2.1.5

New

  • Allowed time window for the Sync endpoint increased from 1 hour to 24 hours.

Verify API v1.1.1

New

  • Added new Verify API PSD2 feature for confirming payments

Reports API v2.1.3

Fixes

  • The correct parameter name for synchronous reports is id not message_id
  • Fixed example value for id.
  • Formatting fixes for date formats.

Messages-olympus API v0.3.8

Fixes

  • Remove fallback policy from whatsapp locale configuration
  • Add new validation error that is returned if fallback is sent

Voice API v1.2.6

New

  • Voice API describe the number attribute of the EndpointPhone object as required.

Fixes

  • If the field is not specified, the user gets this response:
{"type":400,"title":"Bad Request","invalid_parameters":[{"reason":"part of phone type and cannot be empty or NULL","name":"number"}]}                                                                                                          

Pricing API v0.0.3

Fixes

  • Removes reference to basicAuth as Pricing API seems to use query string auth.

Numbers API v1.0.18

New

  • Add mms number type

Sms API v1.0.8

New

  • Describe error response to Send an SMS

Fixes

  • Add missing (optional) client-ref field to API response and DLR payloads

Developer/messages API v1.0.4

Fixes

  • to number is a string but was displaying as number in response examples.

Verify API v1.1.0

Fixed

  • Switch Verify API endpoints to use POST requests

Voice API v2.1.0

New

  • Add client_ref request parameter to the event callback data

nexmo-dotnet v4.3.2

Fixed

  • Fixed bug where streamUrl in where the StreamAction was set to a string rather than an array of strings
  • Changed websocket endpoints headers type from a string to an object - the string type was injecting escape charecters into the headers object payload.

Reports API v2.1.1

Fixes

  • Rename messages_id parameter to id

Numbers API v1.0.17

New

  • Add app_id parameter

Deprecated

  • messagesCallbackType and messagesCallbackValue
  • voiceCallbackValue with type app

Reports API v2.1.0

New

  • Added /v2/reports/records endpoint for fetching data records synchronously

Messages-olympus API v0.3.7

Fixes

  • Updated Image, Audio, Video, and File properties in Inbound messages with note that media files are available for 48 hours after they are created.

Sms API v1.0.7

New

  • Added API key and message signature fields to delivery receipts callback

Fixes

  • Data types, field length information and a very small typo

Sms API v1.0.6

Fixes

  • Adds api-key field to Inbound SMS request body.

Conversation API v1.7.6

Fixes

  • Fixed the response fields for Create User.
  • Fixed the example user href.

nexmo-dotnet V4.3.1

Fixes

  • Fixed bug where loop parameter would be truncated if set to 0
  • Fixed bug that would cause certain User Agent's to throw errors on certain Operating Systems

Voice API v1.2.5

Fixes

  • Update response field description for start_time to include detail that it is only provided for completed calls

nexmo-dotnet v4.3.0

New

  • Adding ListOwnNumbers API
  • Making basic JWT generation public

Verify API v1.0.10

Fixes

  • Clarify that the ip_address field isn't expected/used

External-accounts API v0.1.3

Fixes

  • Fix links to point to https://developer.nexmo.com/api/application.v2

nexmo-node v2.6.0

New

  • Change host via the config object, using apiHost & restHost

Numbers API v1.0.15

Fixes

  • Make the country field on listOwnedNumbers optional
  • Fix the response format for searchAvailableNumbers

Verify API v1.0.9

Fixes

  • Give more information about the intended behaviour of Verify API when cancelling a request.

nexmo-java v5.2.1

Adding workflows 6, SMS, and 7, TTS to the SDK's enumerated values.

nexmo-iOS v.1.2.3

Fixed

  • conversation.getEvents returned some NXMEvents containing a nil fromMember
  • Added descriptive userInfo for NXMErrors.

Dispatch API v0.3.1

New

  • Deprecate Messaging API fallback policy from Jan 2020.

Messages-olympus API v0.3.5

New

  • Update messages API to include Viber MO (inbound messages)

nexmo-android v1.2.0

Added

  • Add filter by EventType in NexmoConversation.getEvents
    NexmoConversation myConversation
    //Get all text event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "text", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }
        
        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> textEvents =  result.getData()
        }
    });
    //Get all member event for a specifc conversation
    myConversation.getEvents(10, NexmoPageOrderDesc, "member:*", new NexmoRequestListener<NexmoEventsPage> {
        void onError(@NonNull NexmoApiError error){
        }
        
        void onSuccess(@Nullable NexmoEventsPage result){
            Collection<NexmoEvent> memberEvents =  result.getData()
        }
    });

Fixed

  • Support for DTLS in WebRTC

Reports API v2.0.8

Fixed

  • Modified description of Reports API date fields to match production date format

nexmo-iOS v1.2.2

Fixed

  • Added support for DTLS in WebRTC.
  • didReceiveCall and didReceiveConversation being called only once for the same call or conversation.
  • Added option to enable push notification with only one pushKit or userNotification token.
  • Fix for NXMClientConfig region URLs.
  • On login with invalid user, return NXMConnectionStatusReasonUserNotFound.
  • Added build architectures: armv7 and armv7s.

nexmo-iOS v1.2.1

NXMClientConfig *config = [[NXMClientConfig alloc] initWithApiUrl:restUrl
                                                     websocketUrl:wsUrl
                                                           ipsUrl:ipsUrl
                                                    iceServerUrls:iceUrls];
[NXMClient setConfiguration:config]

This configuration is optional and a default will be set if not specified.

Note: setConfiguration should be used before accessing NXMClient.shared.

Fixed

Corrected nil values for fromMember for NXMConversation events.

nexmo-node v2.5.2

New

  • Pricing API support

Fixes

  • TypeScript typings don't require applicationId anymore.

Numbers API v1.0.14

New

  • Add new target_api_key field when buying or cancelling a number using Numbers API

nexmo-android v1.1.0

Added

  • Add iceServerUrls parameters to NexmoClient.Builder

Fixes

  • Fix Push Notification incoming call issue

nexmo-iOS v1.2.0

Added

NXMClient's getConversationsPageWithSize:order:completionHandler: method to get conversations with paging.

NXMConversationsPage, which represents the retrieved page, provides the following instance methods

  • hasNextPage / hasPreviousPage to check if forward/backward page retrieval is possible and
  • nextPage: / previousPage: to asynchronously retrieve the next/previous page.

Changed

NXMClient's getConversationWithUUid:completionHandler: method's name typo (now called getConversationWithUuid:completionHandler:).

Verify API v1.0.8

Fixes

  • Change error example req_id to empty string in /verify endpoint.

Subaccounts API v1.0.4

Fixes

  • Adds default entry. The default for use_primary_account_balance is true.

nexmo-iOS v1.1.1

Added

NXMClientConfig object in order to change data center configuration. How to use:

[NXMClient setConfiguration:NXMClientConfig.DC]

NXMClient setConfiguration is optional, configuration will set to a default value. Note: you most call setConfiguration method before using NXMClient.shared.

nexmo-javascript v6.0.6

Fixes

  • Add iceGatherOnlyOneCandidate config option and use to define path in icegathering process

nexmo-javascript v6.0.5

Fixes

  • Change ice gathering process to send sdp on first ice candidate gathered

Reports API v2.0.7

Fixes

  • Updated ISO 8601 format description.

Reports API v2.0.5

Fixes

  • Explain the difference between api_key (authentication) and account_id (target of the report)

Conversation API v1.7.4

Fixes

  • Recording event URL is array of URLs.

Voice API v1.2.3

Fixes

  • Corrected NCCO to be an "array of objects" not an "array of strings"

nexmo-android v1.0.3

Changes

  • change signature of NexmoClient.login(), remove NexmoRequestListener<NexmoUser> parameter
nexmoClient = new NexmoClient.Builder().build(context);
nexmoClient.setConnectionListener(new NexmoConnectionListener() {
      @Override
      public void onConnectionStatusChange(ConnectionStatus connectionStatus, ConnectionStatusReason connectionStatusReason) {
          switch (connectionStatus){
            case CONNECTED:
                //the client is connected to the server - the login successed 
            case DISCONNECTED:
            case CONNECTING:
            case UNKNOWN:
                //the client is not connected to the server - the login failed/not yet successed 
        } 
      });
NexmoClient.login("MY_AUTH_TOKEN")

Fixed

  • fix NexmoConversation.sendAttachment bug
  • fix NexmoAttachmentEvent received from backend
  • fix race condition bug cause drop calls
  • fix bug in push notification

nexmo-javascript v6.0.4

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

Number-insight API v1.0.5

Deprecated

  • Deprecate ip_match parameter for Advanced NI, and remove the ip object from the response. IP matching is no longer supported due to this information being unreliable globally.

nexmo-iOS v1.1.0

Fixed

  • iOS 13 push notifications support
  • Start server call stability
  • Receiving a DTMF event in call and conversation

Added

NXMConversationDelegate did receive DTMF event method:

- (void)conversation:(nonnull NXMConversation *)conversation didReceiveDTMFEvent:(nullable NXMDTMFEvent *)event;

Changed

NXMClient - client enable push notifications method changed. param pushKitToken - only for VoIP push (incoming calls). param userNotificationToken - all push types:

- (void)enablePushNotificationsWithPushKitToken:(nullable NSData *)pushKitToken
                          userNotificationToken:(nullable NSData *)userNotificationToken
                                      isSandbox:(BOOL)isSandbox
                              completionHandler:(void(^_Nullable)(NSError * _Nullable error))completionHandler;

Redact API v1.0.3

Fixes

  • /v1/redact/transaction endpoint uses basic auth, not key and secret in the query string

nexmo-dotnet v4.2.1

  • Fixing NCCO serialization bug
  • Setting Microsoft.Extensions.Configuration.* to version 1.1.2

Pricing API v0.0.1

New

  • Added first version of Pricing OAS3 specification.

Numbers API v1.0.13

Fixes

  • You can filter the numbers that you own by providing a country code parameter

Reports API v2.0.4

Fixes

  • Renamed termination_status to status

Numbers API v1.0.12

Fixes

  • Clarify purpose of the voiceCallbackType parameter

Numbers API v1.0.11

New

  • Soft-deprecate the use of messagesCallbackType to enable messaging capabilityThe . Specify app in voiceCallbackType instead. messagesCallbackType and messagesCallbackValue parameters are still supported, but we discourage their use.

Conversation API v1.7.3

New

  • Added Conversation beta2 API reference

Deprecations

  • Deprecated the following endpoints in favour of beta2:
    • GET /beta/conversations
    • GET /beta/conversations/{id}/members
    • GET /beta/conversations/{id}/events
    • GET /beta/users

nexmo-javascript v6.0.3

New

  • Added TypeScript definition files

Changes

  • Added options for customized logging levels in the console of debug, info,

nexmo-dotnet V4.2.0

  • The NCCO component within the CallCommand object can now be a strongly typed Ncco rather than a JArray, for the sake of backwards compatibility Ncco is left as a JArray but there is now an option to set a strongly typed Ncco object NccoObj instead see https://developer.nexmo.com/voice/voice-api/code-snippets/make-an-outbound-call-with-ncco for a sample
  • Adding type safety for NCCOs and webhook events
  • Adding application_id and has_application to Numbers API

nexmo-php 2.1.0

This release contains a few quality of life changes for the SDK. We have added support for sending a Workflow ID to our Verify API, as well as the ability to search your existing numbers for ones that are attached to an application or not, or for all the numbers attached to a specific application.

Added

  • Added support for Workflow ID for Verify
  • Added support for searching for numbers via has_application and application_id

nexmo-java 5.2.0

Added support for verification workflow id add transfer to NCCO support Remove unnecessary declarations of throwing of IOExceptions.

Reports API v2.0.3

New

  • Renamed download url from url to download_report and put it under _links field.
  • Removed trace_id from ip_voice.
  • Renamed ip_voice to conversations and made ip_voice it's subtype.
  • Decoupled response bodies for creating new report and getting report status.
  • Renamed msisdn to number for hlr reports.

Verify API v1.0.7

Fixes

  • Updates the list of available language codes now that Verify is using the new TTS feature.

Conversation API v1.7.2

Fixes

  • Override the base URL for the Conversation service /record endpoint to be the correct endpoint for this service.

nexmo-dotnet 4.12

Release 4.1.2 Fixes hash / HMAC signing and validation of signed messages for an example of how to manage signing / validation of signed messages visit https://developer.nexmo.com/concepts/guides/signing-messages/dotnet

Conversation API v1.7.1

Fixes

  • Mark action as required body field for recordConversation

Voice API v1.2.1

Fixes

  • Adjust description of Path Parameters to require uuid of the leg, not of the call

Reports API v2.0.2

Fixes

  • Add information explaining if date_start and date_end are inclusive/exclusive
  • Added date_finalized to the outbound SMS CSV report
  • Updated date_end example

nexmo-node v2.5.1

  • ADDED: typings for Verify API
  • ADDED: Applications API V2 support

nexmo-dotnet 4.1.1

Fixes

  • Fixed some dependencies in the nuget package

Numbers API v1.0.10

Numbers API has new filters to make it easier to find numbers that are (or are not!) associated with applications

New

Added new has_application and application_id filters to the Numbers API

nexmo-javascript v6.0.1

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

nexmo-php 2.0.0

This release contains a few under-the-hood changes. The largest is the bump to PHP 7.1, which may affect some customers. If you are on an older version of PHP, you will be limited to SDK v1.8.1 or lower.

We have also renamed this package into nexmo/client-core and added a new wrapper package to replace nexmo/client. For most customers this process should be seamless, and composer should automatically handle the change. This change is made to remove a collision between our package and others that may supply Guzzle themselves.

If you use the SDK to search for numbers, please be advised that we did change the response for when no numbers are found. It will now return an empty array instead of throwing an exception. Other searches are not affected and will continue to throw their original exceptions.

Exceptions will now support an additional getEntity() method that returns additional information about what happened. In many cases this is the response from the server, to make it easier to understand the API error message. Exceptions continue to return error codes and messages like before, but the getEntity() method can be used for better context during error handling.

Please check the rest of the changelog for a full list of changes.

Added

  • Now grab the version of the SDK from composer.json for the User Agent
  • Exceptions now support a getEntity() method to get more information during errors

Changed

  • Changed minimum version to PHP 7.1
  • Renamed package to nexmo/client-core
  • Bumped to PHPUnit 7.4
  • Now return an empty array when searching for numbers and none are found. This no longer throws an exception.

Deprecated

  • No new deprecations were added

Fixed

  • Improved error handling for Number Insights

Removed

  • Removed direct Guzzle dependency, and moved it to nexmo/client

Security

  • No new security fixes were added

nexmo-dotnet 4.1.0

v4.1 Fixes the structure of the application update API. This changed structure may require some code changes as the previous implementation created an erroneous structure for performing the update and start request. Use something along the lines of the following to create the request for the update / create:

var request = new AppRequest()
            {                
                Name = name,
                Capabilities = new Capabilities()
                {
                    Messages = new MessagesWebhook(
                        new Webhook() { Address = "https://example.com/webhooks/inbound", HttpMethod = "POST" },
                        new Webhook() { Address = "https://example.com/webhooks/status", HttpMethod = "POST" }),
                    Rtc = new RtcWebhook(
                        new Webhook() { Address = "https://example.com/webhooks/event", HttpMethod = "POST" }),
                    Voice = new VoiceWebhook(
                        new Webhook() { Address = "https://example.com/webhooks/answer", HttpMethod = "GET" },
                        new Webhook() { Address = "https://example.com/webhooks/event", HttpMethod = "POST" }),
                    Vbc = new VbcWebhook()
                }
            };

v4.1 Fixes the Redact API, this can be invoked like so:

var result = client.Redact.RedactTransaction(redactRequest: new Redact.RedactRequest(NEXMO_REDACT_ID, NEXMO_REDACT_PRODUCT));

v4.1 Adds support for retrieving voice recordings using the GetRecording API invoke like so:

var response = client.Call.GetRecording(recordingUrl);

nexmo-javascript v6.0.0

Breaking Changes

  • Change return value of application.getConversations() to new ConversationsPage object
// iterate through conversations before
application
  .getConversations()
  .then((conversations) => {
    conversations.forEach(conversation => {
      render(conversation);
    })
  });
// iterate through conversations after
application
  .getConversations({ page_size: 20 })
  .then((conversations_page) => {
    conversations_page.items.forEach(conversation => {
      render(conversation);
    })
  });
  • Change return value of conversation.getEvents() to new EventsPage object
// iterate through events before
conversation
  .getEvents()
  .then((events) => {
    events.forEach(conversation => {
      render(conversation);
    })
  });
// iterate through events after
conversation
  .getEvents({ event_type: 'member:*' })
  .then((events_page) => {
    events_page.items.forEach(event => {
      render(event);
    })
  });
  • 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.
//sending a custom event type to a conversation
conversation
  .sendCustomEvent({type: 'my_custom_event', body: { enabled: true }})
  .then((custom_event) => {
    console.log(event.body);
  });
//listening for a custom event type
conversation.on('my_custom_event', (from, event) => {
  console.log(event.body);
});
  • 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 :* (eg. event_type: member:*)
new NexmoClient({
  conversations_page_config: {
    page_size: 25,
    order: 'asc'
    cursor: 'abc'
  },
  events_page_config: {
    page_size: 50,
    event_type: 'member:*'
  }
})
  • Add new ConversationsPage & EventsPage which extend Page class to wrap results of paginated requests for conversations and events
  • Add getNext() and getPrev() methods to ConversationsPage & EventsPage objects to fetch previous and next pages of conversations & events
  • Add 'conversations_page_last' param to application & 'events_page_last' param to conversation for reference to last page retrieved
application.conversations_page_last
  .getNext((conversations_page) => {
    conversations_page.items.forEach(conversation => {
      render(conversation)
    })
  })
conversation.events_page_last
  .getPrev((events_page) => {
    events_page.items.forEach(event => {
      render(event)
    })
  })
  • Add the ability to make an IP-IP call through callServer function
// IP-IP call scenario
application
  .callServer('username', 'app')
  .then((nxmCall) => {
    // console.log(nxmCall);
  });

// IP-PSTN call scenario
application
  .callServer('07400000000')
  .then((nxmCall) => {
    // console.log(nxmCall);
  });

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

nexmo-dotnet 4.0.1

Added workflow_id to verify_request

nexmo-php 2.0.0

[2.0.0] - 2019-09-10

This release contains a few under-the-hood changes. The largest is the bump to PHP 7.1, which may affect some customers. If you are on an older version of PHP, you will be limited to SDK v1.8.1 or lower.

We have also renamed this package into nexmo/client-core and added a new wrapper package to replace nexmo/client. For most customers this process should be seamless, and composer should automatically handle the change. This change is made to remove a collision between our package and others that may supply Guzzle themselves.

If you use the SDK to search for numbers, please be advised that we did change the response for when no numbers are found. It will now return an empty array instead of throwing an exception. Other searches are not affected and will continue to throw their original exceptions.

Exceptions will now support an additional getEntity() method that returns additional information about what happened. In many cases this is the response from the server, to make it easier to understand the API error message. Exceptions continue to return error codes and messages like before, but the getEntity() method can be used for better context during error handling.

Please check the rest of the changelog for a full list of changes.

Added

  • Now grab the version of the SDK from composer.json for the User Agent
  • Exceptions now support a getEntity() method to get more information during errors

Changed

  • Changed minimum version to PHP 7.1
  • Renamed package to nexmo/client-core
  • Bumped to PHPUnit 7.4
  • Now return an empty array when searching for numbers and none are found. This no longer throws an exception.

Deprecated

  • No new deprecations were added

Fixed

  • Improved error handling for Number Insights

Removed

  • Removed direct Guzzle dependency, and moved it to nexmo/client

Security

  • No new security fixes were added

nexmo-node v2.4.2

Added

  • Added message signing for for sending SMS
  • Added Nexmo.generateSignature to verify signed messages

nexmo-iOS v1.0.0

Fixed

  • NexmoClient when disconnected returns error callback for all function.
  • CallMember status calculated by the current leg status.
  • CallMember supports failed, busy, timeout and canceled statuses.
  • Supports member invited.
  • Conversation has media methods.
  • NexmoClient is now singleton.
  • Call method changed to string instead of array.
  • NexmoClient delegate methods renamed.

Added

  • Added conversation media:
NXMConversation myConversation;
[myConversation enableMedia];   // my media will be enabled
[myConversation disableMedia];  // my media will be disabled

​ Added invite member:

NXMConversation myConversation;
[myConversation inviteMemberWithUsername:@"someUsername"
                      completion:myCompletionBlock];

  • Added the member state initiator:
NXMMember *member = someMember;
NSDictionary<NSValue *, NXMInitiator *> *initiators = member.initiators; 
​
NXMInitiator leftStateInitiator = initiators[NXMMemberStateLeft];
leftStateInitiator.isSystem;
leftStateInitiator.userId;
leftStateInitiator.memberId;
leftStateInitiator.time;

Added NXMConversationUpdateDelegate to notify on member updates like media,leg, and state. Added updatesDelegate property to NXMConversation:

@property (nonatomic, weak, nullable) id <NXMConversationUpdateDelegate> updatesDelegate;

Example:

@interface MyClass() <NXMConversationUpdateDelegate>
@implementation MyClass
​
- (void)setConversation:(NXMConversation *conversation) {
	conversation.updatesDelegate(self); // register to conversation updatesDelegate
}
​
- (void)conversation:(nonnull NXMConversation *)conversation didUpdateMember:(nonnull NXMMember *)member withType:(NXMMemberUpdateType)type {
	if (type == NXMMemberUpdateTypeState) {
		// the member state changed
	}
​
	if (type == NXMMemberUpdateTypeMedia) {
		// the member media changed
	}
}
@end

Changed

  • NXMClient is now a singleton:
NXMClient.shared // the shared instance of NXMClient

Renamed:

@property (nonatomic, readonly, nullable, getter=getToken) NSString *authToken; // was token
​
// was - (void)login;
- (void)loginWithAuthToken:(NSString *)authToken;
​
// was - (void)refreshAuthToken:(nonnull NSString *)authToken;
- (void)updateAuthToken:(nonnull NSString *)authToken;
​
// was callees array
- (void)call:(nonnull NSString *)callee
    callHandler:(NXMCallHandler)callHandler
    delegate:(nullable id<NXMCallDelegate>)delegate
  completion:(void(^_Nullable)(NSError * _Nullable error, NXMCall * _Nullable call))completion;
completionHandler:(void(^_Nullable)(NSError * _Nullable error, NXMCall * _Nullable call))completionHandler;

  • NXMClientDelegate renamed:
@protocol NXMClientDelegate <NSObject>
​
// was - (void)connectionStatusChanged:(NXMConnectionStatus)status reason:(NXMConnectionStatusReason)reason;
- (void)client:(nonnull NXMClient *)client didChangeConnectionStatus:(NXMConnectionStatus)status reason:(NXMConnectionStatusReason)reason;
​
// was - (void)incomingCall:(nonnull NXMCall *)call;
- (void)client:(nonnull NXMClient *)client didReceiveCall:(nonnull NXMCall *)call;
​
// was - (void)incomingConversation:(nonnull NXMConversation *)conversation;
- (void)client:(nonnull NXMClient *)client didReceiveConversation:(nonnull NXMConversation *)conversation;
@end

  • NXMConversation otherMembers property renamed to allMembers:
NXMConversation myConversation = someConversation;
NSArray<NXMMember *> * allMembers = myConversation.allMembers // return the all conversation members
​
- (void)joinMemberWithUsername:(nonnull NSString *)username // username instead of userId

  • NXMConversationDelegate renamed methods:
// was - (void)customEvent:(nonnull NXMCustomEvent *)customEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveCustomEvent:(nonnull NXMCustomEvent *)event;
​
// was - (void)textEvent:(nonnull NXMMessageEvent *)textEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveTextEvent:(nonnull NXMTextEvent *)event;
​
// was - (void)attachmentEvent:(nonnull NXMMessageEvent *)attachmentEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveImageEvent:(nonnull NXMImageEvent *)event;
​
// - (void)messageStatusEvent:(nonnull NXMMessageStatusEvent *)messageStatusEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveMessageStatusEvent:(nonnull NXMMessageStatusEvent *)event;
​
// was - (void)typingEvent:(nonnull NXMTextTypingEvent *)typingEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveTypingEvent:(nonnull NXMTextTypingEvent *)event;
​
// was - (void)memberEvent:(nonnull NXMMemberEvent *)memberEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveMemberEvent:(nonnull NXMMemberEvent *)event;
​
// was - (void)legStatusEvent:(nonnull NXMLegStatusEvent *)legStatusEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveLegStatusEvent:(nonnull NXMLegStatusEvent *)event;
​
// was - (void)mediaEvent:(nonnull NXMEvent *)mediaEvent;
- (void)conversation:(nonnull NXMConversation *)conversation didReceiveMediaEvent:(nonnull NXMMediaEvent *)event;

​ Use username instead of userId.

NXMCallDelegate renamed:

// was - (void)statusChanged:(nonnull NXMCallMember *)callMember;
- (void)didUpdate:(nonnull NXMCallMember *)callMember status:(NXMCallMemberStatus)status; 
- (void)didUpdate:(nonnull NXMCallMember *)callMember muted:(BOOL)muted;
​
// was - (void)DTMFReceived:(nonnull NSString *)dtmf callMember:(nonnull NXMCallMember *)callMember;
- (void)didReceive:(nonnull NSString *)dtmf fromCallMember:(nonnull NXMCallMember *)callMember;

NXMEvent and NXMMemberEvent add member object instead of memberId:

@property (nonatomic, readonly, nonnull) NXMMember *member;

NXMImageInfo renamed properties:

@property NSInteger sizeInBytes; // was size
@property NXMImageSize size; // was type

NXMMessageStatusEvent renamed property:

@property NSInteger referenceEventId; // was refEventId

NexmoClient logger exposed - NXMLogger object:

[NXMLogger setLogLevel:NXMLoggerLevelDebug];
NSArray *logNames = [NXMLogger getLogFileNames];
  • Removed NXMLoggerDelegate:
NXMClient myClient
[myClient setLoggerDelegate:LoggerDelegate];

Conversation API v1.7.0

New

  • Added new /conversations/{conversation_id}/record endpoint for REST start/stop Conversation recording

Application API v1.0.2

Version 1 of the application API has been deprecated. It will continue to work for the foreseeable future, and any shutdown will be communicated to all customers before it happens.

Please use version 2 of the Applications API to manage your applications going forwards. Applications created with version 1 of the API can also be managed with version 2

Application API v2.0.4

Version 2 of the Application API is no longer in beta! Production tests of this new major version have been successful and we recommend that all consumers update to using version 2 at their earliest convenience

nexmo-java v5.1.0

Added

  • Added support for setting an application id as a messages callback value in updating a number.
  • Added support for specifying a number type when searching for a number to purchase.

nexmo-java v5.0.0

Added

  • Added support for updating account settings (delivery receipt URL and inbound SMS URL)
  • Added support for Async Number Insights by setting the property async and callback on the AdvancedInsightRequest object.
  • Add ringback support to the onAnswer part of the PhoneEndpoint.

Changed

  • Changed from Auth0 to the Nexmo JWT Library.
  • Renamed the com.nexmo.client.applications package to com.nexmo.client.application
  • ApplicationClient now supports the Applications v2 API. This change has resulted in some backwards incompatibility.
  • NexmoClientException is now a RuntimeException. The various sub client methods will still declare that it is being thrown, but it is no longer a requirement to catch the exception. Additionally, the IOException that was being thrown in each method has been converted to a NexmoResponseParseException to more accurately reflect when it is thrown. This is also an unchecked exception and catching is no longer required.
  • The NexmoUnacceptableAuthException will now add which parameters are missing instead of which internal auth methods.

Verify API v1.0.6

New

Add the new estimated_price_messages_sent field to the search endpoint.

This field was already returned by the check/ endpoint but has now been added to the search as well.

Application API v1.0.1

Fixes

  • Add messages application type and examples

Voice API v1.2.0

This adds the 401 and 404 HTTP responses for a PUT request to /calls/:call_id.