Skip to content

osisdie/ringcentral-csharp

 
 

Repository files navigation

RingCentral SDK for C#

NuGet NuGet Build Status Coverage Status License

Table of contents

  1. Installation
  2. Additional Instructions for PubNub
  3. Basic Usage
  4. API Developer Guide
  5. Initialization 1. Set User Agent Header
  6. OAuth 2.0 Authorization 1. Authorize 1. Refresh 1. Logout
  7. Quick Recipes 1. Send SMS 1. Send Fax 1. Get Account Information 1. Get Address Book 1. Using x-http-method-override Header
  8. Message Store 1. Get Message Store 1. Get Message Store First ID 1. Update Message Status
    1. Update Message Status using x-http-override-header 1. Delete Message
  9. Subscription 1. Create Subscription
    1. Using Default Callbacks
    2. Using Explicit Callbacks 1. Casting on PubNub Notification
    3. Casting on Connect
    4. Casting on Disconnect
    5. Casting on Error 1. Example PubNub Notification Message 1. Delete Subscription 1. Unsubscribe from Subscription 1. Access PubNub Message from Subscription
  10. Support
  11. Contributions
  12. License

Installation

Via NuGet

PM> Install-Package RingCentralSDK 

This will download the Ring Central Portable Class Library into your project as well as the PubNub dependencies

Additional Instructions for PubNub

PubNub will need to manually be installed in your project. Find the platform you are targeting at PubNub and follow the instructions to include the library in your project.

Basic Usage

API Developer Guide

This SDK wraps the RingCentral Connect Platform API which is documented in the RingCentral Connect Platform Developer Guide. For additional information, please refer to the Developer Guide.

Initialization

//import RingCentral SDK
using RingCentral;
//Initialize Ring Central Client
var ringCentral = new SDK("your appKey", "your appSecret", "Ring Central apiEndPoint", "Application Name","Application Version").GetPlatform();

Set User Agent Header

ringCentral.SetUserAgentHeader("Application Name", "Application Version");

OAuth 2.0 Authorization

Authorize

Response response = ringCentral.Authorize(userName, extension, password, true);

Refresh

Response response = ringCentral.Refresh();

Logout

ringCentral.Logout();

Quick Recipes

Send SMS

Request request = new Request("/restapi/v1.0/account/~/extension/~/sms", jsonSmsString);
Response response = ringCentral.Post(request);

Send Fax

const string text = "Hello world!";

var byteArrayText = System.Text.Encoding.UTF8.GetBytes(text);
var attachment = new Attachment("test.txt", "application/octet-stream", byteArrayText);
var attachment2 = new Attachment("test2.txt", "text/plain", byteArrayText);
var pdfFile = File.ReadAllBytes("<PATH TO YOUR PDF>");
var attachment3 = new Attachment("<NAME OF YOUR PDF.pdf", "application/pdf", pdfFile);
var attachments = new List<Attachment> { attachment,attachment2, attachment3 };
var json = "{\"to\":[{\"phoneNumber\":\"<YOUR TARGET NUMBER>\"}],\"faxResolution\":\"High\"}";

Request request = new Request("/restapi/v1.0/account/~/extension/~/fax", json, attachments);
Response response = ringCentral.Post(request);

Get Account Information

Request request = new Request("/restapi/v1.0/account/~");
Response response = ringCentral.Get(request);

Get Address Book

Request request = new Request("/restapi/v1.0/account/~/extension/~/address-book/contact");
Response response = ringCentral.Get(request);

Using x-http-method-override Header

Request overRideRequest = new Request("/restapi/v1.0/account/~");
overRideRequest.SetXhttpOverRideHeader("GET");
Response overRideResponse = ringCentral.Post(overRideRequest);

Message Store

Get Message Store

Request request = new Request("/restapi/v1.0/account/~/extension/~/message-store");
Response response = ringCentral.Get(request);

Get Message Store First ID

var messageId = response.GetJson().SelectToken("records")[0].SelectToken("id");

Update Message Status

var messageStatusJson = "{\"readStatus\": \"Read\"}";
Request request = new Request("/restapi/v1.0/account/~/extension/~/message-store/" + messageId, messageStatusJson);
Response response = ringCentral.Put(request);
Update Message Status using x-http-ovverride-header
Request request = new Request("/restapi/v1.0/account/~/extension/~/message-store/" + messageId, messageStatusJson);
request.SetXhttpOverRideHeader("PUT"); 
Response response = ringCentral.Post(request);

Delete Message

Request request = new Request("/restapi/v1.0/account/~/extension/~/message-store/" + messageId);
Response response = ringCentral.Delete(request);

Subscription

RingCentral provides the ability to subscribe for event data using PubNub.

Create Subscription

Create Subscription using Default Callbacks
var subscription = new SubscriptionServiceImplementation(){ _platform = ringCentral};
subscription.AddEvent("/restapi/v1.0/account/~/extension/~/presence");
var response = subscription.Subscribe(null,null,null);

Alternatively you can set Event Filters by:

subscription.SetEvent(listOfEvents);

Where listOfEvents is a List containing each event to subscribe to.

Create Subscription using Explicit Callbacks
var subscription = new SubscriptionServiceImplementation(){ _platform = ringCentral};
subscription.AddEvent("/restapi/v1.0/account/~/extension/~/presence");
var response = subscription.Subscribe(ActionOnNotification,ActionOnConnect,ActionOnError);

Note: You can assign the callback action for disconnect on initialization. Disconnect Action fired upon PubNub disconnect

var subscription = new SubscriptionServiceImplementation(){ _platform = ringCentral, disconnectAction = ActionOnDisconnect};

Or after initialization

subscription.disconnectAction =  ActionOnDisconnect;

All callbacks must take only one parameter of type object. See below for proper casting on actions.

Casting PubNub Notifications

This will return an object that can easily be cast to a string or a JArray (Json.Net) Messages will be decrypted, if required, before being passed to Actions. See below for an example of JSON returned.

Use a JArray to grab a token

public void ActionOnMessage(object message) {
	var ReceivedMessage = ((JArray)message).SelectToken("[0].body.changes[0].type");  
}

Or string for other JSON parsing

public void ActionOnMessage(object message) {
	var ReceivedMessage = message.ToString();  
}
Casting on Connect

Use a JArray to grab a token.

public void ActionOnConnect(object message){
	var receivedMessage = ((JArray)receivedMessage).SelectToken("[1]");
}

Or string for other JSON parsing

public void ActionOnConnect(object message) {
	var ReceivedMessage = message.ToString();  
}
Casting on Disconnect

Note: Disconnect messages are not deserializable JSON.

public void ActionOnDisconnect(object message) {
	var receivedMessage = message.ToString();
}
Casting on Error

Note: PubNub error messages are not deserializable JSON.

public void ActionOnError(object error) {
	var receivedMessage = message.ToString();
}

Example PubNub Notification Message

This example provides some possible tokens for JSON parsing of PubNub Notification message

[
	{
	  "event": "/restapi/v1.0/account/~/extension/111/message-store",
	  "body": {
	    "lastUpdated": "2015-10-10T21:28:43.094-07:00",
	    "changes": [
	      {
	        "newCount": 0,
	        "updatedCount": 1,
	        "type": "Fax"
	      },
	      {
	        "newCount": 2,
	        "updatedCount": 0,
	        "type": "SMS"
	      }
	    ],
	    "extensionId": 1111
	  },
	  "uuid": "111-222-333-444",
	  "timestamp": "2015-10-11T04:28:51.821Z"
	}
]

Delete Subscription

var response = subscription.Remove();

Unsubscribe from Subscription

Note: If you provided a callback action for PubNub disconnect it will fire once during unsubscribe.

subscription.Unsubscribe();

Access PubNub Message from Subscription

var notificationMessage = subscription.ReturnMessage("notification");
var connectMessage = subscription.ReturnMessage("connectMessage");
var disconnectMessage = subscriptionS.ReturnMessage("disconnectMessage");
var errorMessage = subscription.ReturnMessage("errorMessage");

Links

Project Repo

RingCentral Developer Site

RingCentral API Docs

RingCentral API Explorer

RingCentral GitHub Organization

Support

For support using this SDK, please use the following resources:

  1. RingCentral Developer Community
  2. RingCentral C# SDK GitHub repo
  3. Stack Overflow

Contributions

Any reports of problems, comments or suggestions are most welcome.

Please report these on Github

License

RingCentral SDK is available under an MIT-style license. See LICENSE for details.

RingCentral SDK © 2015 by RingCentral.

About

RingCentral Connect Platform C# SDK

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%