Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

RingCentral SDK for Ruby

RubyReferenceTwitter

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.

Additional resources

  • RingCentral API Reference - an interactive reference for the RingCentral API that allows developers to make API calls with no code.
  • Document - an interactive reference for the SDK code documentation.

Getting help and support

If you are having difficulty using this SDK, or working with the RingCentral API, please visit our developer community forums for help and to get quick answers to your questions. If you wish to contact the RingCentral Developer Support team directly, please submit a help ticket from our developer website.

Installation

gem install ringcentral-sdk

If for some reason eventmachine failed to install, please check this.

Name collision with ringcentral gem

The ringcentral gem is using RingCentral's legacy API which was End-of-Lifed in 2018. 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.

The 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.authorize(jwt: 'jwt-token')# getr=rc.get('/restapi/v1.0/account/~/extension/~')expect(r).not_tobe_nilexpect('101').toeq(r.body['extensionNumber'])

How to specify query parameters

for get & delete

rc.get('/restapi/v1.0/account/~/extension',{hello: 'world'})

for post, put & patch

rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: body,params: {hello: 'world'})

multi-value query parameter

rc.get('/restapi/v1.0/account/~/extension',{hello: ['world1','world2']})

Above will be translated to /restapi/v1.0/account/~/extension?hello=world1&hello=world2.

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 pre-existing token

Let's say you already have a token. Then you can load it like this: rc.token = your_token_object. The benefit of loading a preexisting token is you don't need to go through any authorization flow.

If what you have is a JSON string instead of a Ruby object, you need to convert it first: JSON.parse(your_token_string).

If you only have a string for the access token instead of for the whole object, you can set it like this:

rc.token={access_token: 'the token string'}

Send SMS

r=rc.post('/restapi/v1.0/account/~/extension/~/sms',payload: {to: [{phoneNumber: ENV['RINGCENTRAL_RECEIVER']}],from: {phoneNumber: ENV['RINGCENTRAL_SENDER']},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_SENDER']},text: 'hello world'},files: [['spec/test.png','image/png']])

Subscriptions

WebSocket Subscriptions

events=['/restapi/v1.0/account/~/extension/~/message-store',]subscription=WS.new(rc,events,lambda{ |message|
putsmessage})subscription.subscribe()

How to keep a subscription running 24 * 7?

There are two main cases that a subscription will be terminated:

  • Absolute time out. The maximum time for a subscription to run is 24 hours. After that, the websocket connection will be closed by the server.
  • Network issue. It could be your local network issue or the server's network issue. In either case, your websocket connection will be closed

In order to keep a subscription running 24 * 7, you need to re-subscribe when the connection is closed.

subscription.on_ws_closed=lambda{ |event|
# make sure that there is no network issue and re-subscribesubscription.subscribe()}

How to test

bundle install

Rename .env.sample to .env.

Edit .env file to specify credentials.

RINGCENTRAL_RECEIVER is a phone number to receive SMS, Fax..etc.

Run bundle exec rspec

License

MIT

About

Ruby SDK for RingCentral

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages