Nexmo Client Library for Ruby
❗ This SDK and Ruby gem have moved! It is now |
|---|
This is the Ruby client library for Nexmo's API. To use it you'll need a Nexmo account. Sign up for free at nexmo.com.
- Requirements
- Installation
- Usage
- Logging
- Overriding the default hosts
- JWT authentication
- Webhook signatures
- Documentation
- Frequently Asked Questions
- Supported APIs
- License
Requirements
Nexmo Ruby supports MRI/CRuby (2.5 or newer), JRuby (9.2.x), and Truffleruby.
Installation
To install the Ruby client library using Rubygems:
gem install nexmo
Alternatively you can clone the repository:
git clone git@github.com:Nexmo/nexmo-ruby.git
Usage
Begin by requiring the nexmo library:
require 'nexmo'Then construct a client object with your key and secret:
client = Nexmo::Client.new(api_key: 'YOUR-API-KEY', api_secret: 'YOUR-API-SECRET')You can now use the client object to call Nexmo APIs. For example, to send an SMS:
client.sms.send(from: 'Ruby', to: '447700900000', text: 'Hello world')For production you can specify the NEXMO_API_KEY and NEXMO_API_SECRET
environment variables instead of specifying the key and secret explicitly,
keeping your credentials out of source control.
Logging
Use the logger option to specify a logger. For example:
require 'logger'
logger = Logger.new(STDOUT)
client = Nexmo::Client.new(logger: logger)By default the library sets the logger to Rails.logger if it is defined.
To disable logging set the logger to nil.
Overriding the default hosts
To override the default hosts that the SDK uses for HTTP requests, you need to
specify the api_host, rest_host or both in the client configuration. For example:
client = Nexmo::Client.new(
api_host: 'api-sg-1.nexmo.com',
rest_host: 'rest-sg-1.nexmo.com'
)By default the hosts are set to api.nexmo.com and rest.nexmo.com, respectively.
JWT authentication
To call newer endpoints that support JWT authentication such as the Voice API you'll
also need to specify the application_id and private_key options. For example:
client = Nexmo::Client.new(application_id: application_id, private_key: private_key)Both arguments should have string values corresponding to the id and private_key
values returned in a "create an application"
response. These credentials can be stored in a datastore, in environment variables,
on disk outside of source control, or in some kind of key management infrastructure.
By default the library generates a short lived JWT per request. To generate a long lived
JWT for multiple requests or to specify JWT claims directly use Nexmo::JWT.generate and
the token option. For example:
claims = {
application_id: application_id,
private_key: 'path/to/private.key',
nbf: 1483315200,
ttl: 800
}
token = Nexmo::JWT.generate(claims)
client = Nexmo::Client.new(token: token)Documentation for the Nexmo Ruby JWT generator gem can be found at https://www.rubydoc.info/github/nexmo/nexmo-jwt-ruby. The documentation outlines all the possible parameters you can use to customize and build a token with.
Webhook signatures
To check webhook signatures you'll also need to specify the signature_secret option. For example:
client = Nexmo::Client.new
client.config.signature_secret = 'secret'
client.config.signature_method = 'sha512'
if client.signature.check(request.GET)
# valid signature
else
# invalid signature
endAlternatively you can set the NEXMO_SIGNATURE_SECRET environment variable.
Note: you'll need to contact support@nexmo.com to enable message signing on your account.
Documentation
Nexmo Ruby documentation: https://www.rubydoc.info/github/nexmo/nexmo-ruby
Nexmo Ruby code examples: https://github.com/Nexmo/nexmo-ruby-code-snippets
Nexmo API reference: https://developer.nexmo.com/api
Frequently Asked Questions
Supported APIs
The following is a list of Vonage APIs and whether the Ruby SDK provides support for them:
| API | API Release Status | Supported? |
|---|---|---|
| Account API | General Availability | ✅ |
| Alerts API | General Availability | ✅ |
| Application API | General Availability | ✅ |
| Audit API | Beta | ❌ |
| Conversation API | Beta | ❌ |
| Dispatch API | Beta | ❌ |
| External Accounts API | Beta | ❌ |
| Media API | Beta | ❌ |
| Messages API | Beta | ❌ |
| Number Insight API | General Availability | ✅ |
| Number Management API | General Availability | ✅ |
| Pricing API | General Availability | ✅ |
| Redact API | Developer Preview | ✅ |
| Reports API | Beta | ❌ |
| SMS API | General Availability | ✅ |
| Verify API | General Availability | ✅ |
| Voice API | General Availability | ✅ |
License
This library is released under the MIT License