RingCentral SDK for Ruby
RingCentral Developers is a cloud communications platform which can be accessed via more than 70 APIs. The platform's main capabilities include technologies that enable: Voice, SMS/MMS, Fax, Glip Team Messaging, Data and Configurations.
API Reference and APIs Explorer.
Installation
gem install ringcentral-sdk
Name collision with ringcentral gem
The ringcentral gem is using RingCentral's legacy API, everyone is recommended to move to the REST API.
If you have both the ringcentral and ringcentral-sdk gems installed, you will run into a collision error when attempting to initialize the ringcentral-sdk RingCentral SDK.
Solution is gem uninstall ringcentral
Documentation
https://developer.ringcentral.com/api-docs/latest/index.html
Usage
require 'ringcentral'
rc = RingCentral.new('clientID', 'clientSecret', 'serverURL')
rc.(username: 'username', extension: 'extension', password: 'password')
# get
r = rc.get('/restapi/v1.0/account/~/extension/~')
expect(r).not_to be_nil
expect('101').to eq(r.body['extensionNumber'])
Token Refresh
Access token expires. You need to call rc.refresh() before it expires.
If you want the SDK to do auto refresh please rc.auto_refresh = true before authorization.
Load preexisting token
Let's say you already have a token. Then you can load it like this: rc.token = your_token_object.
The benifits of loading a preexisting token is you don't need to go through any authorization flow.
If what you have is a string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).
Send SMS
r = rc.post('/restapi/v1.0/account/~/extension/~/sms', payload: {
to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],
from: {phoneNumber: ENV['RINGCENTRAL_USERNAME']},
text: 'Hello world'
})
Send fax
rc.post('/restapi/v1.0/account/~/extension/~/fax',
payload: { to: [{ phoneNumber: ENV['RINGCENTRAL_RECEIVER'] }] },
files: [
['spec/test.txt', 'text/plain'],
['spec/test.png', 'image/png']
]
)
Send MMS
r = rc.post('/restapi/v1.0/account/~/extension/~/sms',
payload: {
to: [{ phoneNumber: ENV['RINGCENTRAL_RECEIVER'] }],
from: { phoneNumber: ENV['RINGCENTRAL_USERNAME'] },
text: 'hello world'
},
files: [
['spec/test.png', 'image/png']
]
)
PubNub subscription
def createSubscription(callback)
events = [
'/restapi/v1.0/account/~/extension/~/message-store',
]
subscription = PubNub.new(rc, events, lambda { ||
callback.call()
})
subscription.subscribe()
return subscription
end
createSubscription(lambda { ||
puts
})
For more sample code, please refer to the test cases.
How to test
bundle install --path vendor/bundle
Create .env file with the following content:
RINGCENTRAL_SERVER_URL=https://platform.devtest.ringcentral.com
RINGCENTRAL_CLIENT_ID=
RINGCENTRAL_CLIENT_SECRET=
RINGCENTRAL_USERNAME=
RINGCENTRAL_EXTENSION=
RINGCENTRAL_PASSWORD=
RINGCENTRAL_RECEIVER=
RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.
Run bundle exec rspec
License
MIT
Todo
- Batch requests