Skip to main content
Solved

How do I change user presence status in RingCentral programatically using c#? Question 1

  • May 31, 2019
  • 2 replies
  • 1680 views

I have created as program in C# that is designed to display the users status and availability from Ring Central. This works brilliantly and I can sort the users by availability, name, etc.

I need to add the functionality to change the status of the user to "Offline". When the users shift ends they would be set to receive calls when they have gone home, we need to stop that.

The problem I have is that the RingCentral SDK I am using is saying it needs a parameter which should be of type PresenceInfoResource. here is the path I am using:

rc.Restapi().Account().Extension().Presence().Put();

I have tried various different types but I cannot seem to get, create or cast to a type of PresenceInfoResource.

Does anyone know what it is looking for, how to change the status in c# or where I am going wrong?

I have looked in the RingCentral documentation on line, but can't find anything, only a link to the update presence page which has nothing about PresenceInfoResource: https://developers.ringcentral.com/api-reference/Presence/updateUserPresenceStatus

Best answer by PhongVu

Hi Marc,

Here you go:

var parameters = new PresenceInfoResource();
parameters.userStatus = "Busy";
parameters.dndStatus = "TakeAllCalls";
var resp = await rc.Restapi().Account().Extension().Presence().Put(parameters);   
Console.WriteLine("User presence status: " + resp.userStatus);
Console.WriteLine("User DND status: " + resp.dndStatus);

2 replies

PhongVu
Community Manager
Forum|alt.badge.img
  • Community Manager
  • Answer
  • May 31, 2019

Hi Marc,

Here you go:

var parameters = new PresenceInfoResource();
parameters.userStatus = "Busy";
parameters.dndStatus = "TakeAllCalls";
var resp = await rc.Restapi().Account().Extension().Presence().Put(parameters);   
Console.WriteLine("User presence status: " + resp.userStatus);
Console.WriteLine("User DND status: " + resp.dndStatus);

  • Author
  • New Participant
  • June 3, 2019

I have been using the code given below by Phong , but no matter what happens, I always get an error:

Error Message: Cannot access a disposed object.

Object name: 'System.Net.Http.StringContent'.

Here is the code i am using, any help would be greatfully appreciated:

RestClient rc = new RestClient(clientid, clientsecret, false);

await rc.Authorize("username", "extension", "password"); //Sandbox

var parameters = new PresenceInfoResource();

parameters.userStatus = "Available";

parameters.dndStatus = "TakeAllCalls";

parameters.message = "Changed by Program";

parameters.allowSeeMyPresence = true;

parameters.ringOnMonitoredCall = false;

parameters.pickUpCallsOnHold = false;

var resp = await rc.Restapi().Account().Extension(12345678).Presence().Put(parameters);

If I change line this to a Get without parameters instead of a Put it retrieves the information as expected.