question

Thomas Carlson avatar image
Thomas Carlson asked ·

Custom Salesforce status field to update RC embeddable status

Howdy,

I have a custom Salesforce object 'User Setting' and I would like to add a custom field 'User Status'.

Ideally, updating the User Status would update the RC embeddable widget's status field as well as the desktop soft-phone status. We would like our system to look through the RC HUD and automatically route calls to a user based on their presence status.

Is it possible to accomplish this, to have the RC embeddable listening for changes on a custom Salesforce field ? Maybe by using RC event data subscriptions to Salesforce's streaming API, or webhooks that are listening for updates/changes to the custom User Status Salesforce field?

subscriptionswebhookssalesforce integration
1 |1000 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Phong Vu avatar image
Phong Vu answered ·

Hi Thomas,

You can implement a server-side app to listen for user presence status changes at the account level then update user settings in Salesforce accordingly.

Please refer to these documentations for more info:

1. Webhook notifications quick start (change the event type with presence)

2. Presence information explained

Hope this helps!

Share
1 |1000 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Thomas Carlson avatar image
Thomas Carlson answered ·

Hey @Phong Vu

Thank you for the time, energy, and response! When you say a 'server-side' app, are you referring to the kind of application that I create in RingCentral Dev Portal? The Server/no ui option?

Would it be possible to change user presence status in the embeddable widget and have a custom 'User HUD Status' Salesforce field update accordingly? I'm new to Salesforce but I think that using the Streaming API to listen for user presence change events and then updating the custom SF field would be plausible. But where would I put the code telling Salesforce to listen for User Status Presence Changes? Where do I put the code that tells the RingCentral embeddble widget to emit User Status change events? Is the embeddable widget extensible to that degree? How does it get authorization to change a Users Salesforce Data?


Maybe you could point me in the right direction in regards to redirect url's; and why I'm unable to get a response when using cURL to submit requests.

I have thus far been unable to get a request to respond with anything other than an error. I've been trying to test my requests using cURL but I can't get an authorization token. The request I'm using (but with the account/password/clientid/clientsecret filled in appropriately) is from this medium article on using cURL to access the RC platform API.

Windows 10 Command Prompt uses the ^ for multiple lines so I use those instead of what is listed in the article "/".

curl -i -X POST "https://platform.devtest.ringcentral.com/restapi/oauth/token" ^
-H "Accept: application/json" ^
-H "Content-Type: application/x-www-form-urlencoded" ^
-u "<clientId>:<clientSecret>" ^
-d "username=<Account>&password=<password>&extension=&grant_type=password"


In Salesforce I have set up a Connected Application with two allowed callback URL's

https://ringcentral.github.io/ringcentral-embeddable/redirect.html

https://apps.ringcentral.com/restapi/oauth/authorize?response_type=code&client_id=myClientID&redirect_uri=https://platform.ringcentral.com/restapi/v1.0/account/~/extension/~/presence&prompt=login_consent

But in response I get,

Date: Tue, 18 Jun 2019 15:21:44 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 199
Connection: keep-alive
X-Application-Context: application:8080
Content-Language: en
WWW-Authenticate: Bearer realm="RingCentral REST API", error="invalid_grant", error_description="Invalid resource owner credentials"
RCRequestId: c7c80804-91dc-11e9-943c-005056bb3a93
Pragma: no-cache
Cache-Control: no-store
AceRoutingKey: sjc11-c01-ace11.d4949dec-85f2-11e9-9962-005056bb6e9b
X-HLB-Server: sjc11-c01-hlb11
X-HLB-Connection: 320459994
X-HLB-RequestId: 507ff7b53a64258d5bbebf4b6364827a
X-HLB-Upstream-Server: 10.28.23.0:8080
X-HLB-Upstream-Status: 400

{
  "error" : "invalid_grant",
  "errors" : [ {
    "errorCode" : "OAU-140",
    "message" : "Invalid resource owner credentials"
  } ],
  "error_description" : "Invalid resource owner credentials"
}

Maybe I have an error in my connected application callback URL? Maybe I'm sending my request to the wrong place? I am using my live RC credentials in the sandbox RC Server/no Ui application, could this be the issue? I am using my live credentials because the password field in the Sandbox is 'inactive'; can I set the password for my sandbox account?

Thank you!

Share
1 |1000 characters needed characters left characters exceeded

Up to 8 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MiB each and 10.0 MiB total.