Here is my suggestion for you using low code option.
For the admin to call his clients directly from the page, you need a "click-to-dial" feature. If the admin wants to make a call from within the admin web page, then you can embed the RingCentral embeddable widget. If the admin wants to make a call from the RC app then you don't really need the RC embeddable. Below are the solution for both use cases
- Using the embeddable:
Embed the RC embeddable to the page. And when creating the page, put the client phone number in an element and add the onclick attribute to call the makeCall() function passing the client phone number to the function.
<html>
<head>
...
<script>
function makeCall(phoneNumber)
document.querySelector("#rc-widget-adapter-frame").contentWindow.postMessage({
type: 'rc-adapter-new-call',
phoneNumber: phoneNumber,
toCall: true,
}, '*');
}
</script>
</head>
<body>
<script>
(function() {
var rcs = document.createElement("script");
rcs.src = "https://ringcentral.github.io/ringcentral-embeddable/adapter.js?defaultCallWith=browser";
var rcs0 = document.getElementsByTagName("script")[0];
rcs0.parentNode.insertBefore(rcs, rcs0);
})();
</script>
...
<div><b>Click to dial from Embeddable</b></div>
<ul>
<li><div onclick="makeCall('+12091234567')">Alice 12091234567</div></li>
<li><div onclick="makeCall('+14081234567')">Anne 14081234567</div></li>
</ul>
...
- Using the RC app:
And when creating the page, put the client phone number in an <a> element and add the href attribute to launch the RC app using the URL schemes below
<a target="_blank" href="rcapp://r/dialer?number=+12091234567">Dial Alice</a></br>
<a target="_blank" href="rcapp://r/call?number=+14081234567">Call Anne</a>
...
Try it and you will see the different between the /dialer? and /call? mode. The user experience with this option is not as great as the one with the the embeddable.
For the clients to call the admin, you can implement the ring-out feature in your backend engine. And on the frontend (the client web page), provide a button called e.g. "Call me" which would take the client phone number (you can set the client number by default and allow them to change their number). When the client click the button, get the client number and send to your backend, where you will use the RingCentral platform API to make a ring-out call. Example in Node JS.
async function call_ringout() {
try {
var resp = await platform.post('/restapi/v1.0/account/~/extension/~/ring-out', {
'from': { 'phoneNumber': CLIENT-PHONE-NUMBER },
'to': { 'phoneNumber': ADMIN-PHONE-NUMBER },
'playPrompt': false
})
var jsonObj = await resp.json()
console.log("Call placed. Call status: " + jsonObj.status.callStatus)
} catch (e) {
console.log(e.message)
}
}
Click here to learn more about /ring-out and see sample code in different programming languages.
Of course, you must construct a different page for client so they don't see the functions the admin can use to make call!
Your clients do not need to be a RingCentral customers. The /ring-out will make a call from their own phone (e.g if it's a mobile number, their cell phone will ring).
For call log, call the extension /call-log API to read call records of the admin.