question

tim-falkins15666 avatar image
tim-falkins15666 asked tim-falkins15666 commented

What is the best method to forward calls to other internal numbers?

My scenario: I need to forward calls coming in from certain 800#s to other internal numbers (ring groups) using custom routing logic.


What is the best method to use in my case? The Forward or Transfer method?


Additionally, both of those methods are marked under the Light usage plan. These 800#s will be called frequently and it's possible the Light usage plan might not allow enough calls to go through at peak times. What method should I use to route calls for this scenario?

call forwarding
1 |3000

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

tim-falkins15666 avatar image
tim-falkins15666 answered
BTW, when I try the Forward method I get an error (although the forward does actually take place):

RingCentral.RestException: 'Response:
StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Connection: keep-alive
  X-Rate-Limit-Group: light
  X-Rate-Limit-Limit: 50
  X-Rate-Limit-Remaining: 49
  X-Rate-Limit-Window: 60
  Date: Fri, 19 Apr 2019 19:37:38 GMT
  Server: nginx
  Content-Length: 123
  Content-Type: application/json
}
Content: {
   "errors" : [
      {
         "errorCode" : "TAS-106",
         "message" : "Operation is not allowed"
      }
   ]
}
1 |3000

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 Tim,


My understanding is that:


Forward = Is used in the case of a call is directly redirected to another number before the call was answered. Think about those forwarding rules.


Transfer:

1. Warm transfer is when a call was picked up and the agent calls another number then connects the call.

2. Blind transfer is when the case a call was picked up by an agent and the agent just transfers the call to another number w/o knowing if that number is available.


Regarding the rate limit, just test your app and graduate it then submit a support ticket for increasing the rate limit with your business justification. Our support engineers will evaluate your case and grant a higher rate accordingly.

1 |3000

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

tim-falkins15666 avatar image
tim-falkins15666 answered tim-falkins15666 commented
Thanks. What about the error I provided in my second reply? The forward does seem to actually work, but the exception is thrown regardless.
14 comments
1 |3000

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 ♦♦ commented ·
Not sure why you got the error while the call was successfully forwarded. The error indicates that some permission was missing but that should not be the case here because you said that it worked.

Can you open your app and add the "Active Call Control" permission back. (I took it off while granting you the "Telephony Session" because basically you will just need the later one.

Try it again and let me know if the error does not go away. Also which number did you forward to? Try several different number to see if any difference.
0 Likes 0 ·
tim-falkins15666 avatar image tim-falkins15666 commented ·
I must have added it back, because Active Call Control was already in there when I just went and checked. I tried it again and got the same exception. I'm trying to forward to an external number (outside of RingCentral) - is that not allowed? Again, it works, the call goes through, but it still throws the error in the code.

If you're not allowed to forward externally, am I able to add a number to my RC test account without cost?
0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ commented ·
It should be ok to forward the call to any number including normal mobile/landline numbers. 

I just test it myself, it works well and I got the correct response  

status: 200,

statusText: 'OK',

What language do you use and do you mind to share a few line of code how you forward the call?

0 Likes 0 ·
tim-falkins15666 avatar image tim-falkins15666 commented ·
C#. I'm using the test code/project I pulled from your Github site and modified somewhat for testing. I've highlighted the part below that throws the message when a call comes in. I've tried to forward to different numbers but same result.


0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ commented ·
Hi Tim,

Hold on to the "telephony/sessions" for a while. It looks like we need to add more info to the notification body. Right now it does not have the telephony status and because of that, your code will eventually call the forward function several times as the app receives notification for different stages ringing, forwarding, connected, disconnected etc.

While this may not be the cause of the error you received but it's surely, not the logic you want to build for your app.

For now, I recommend to use the  "/restapi/v1.0/account/~/presence?detailedTelephonyState=true" event instead. With that event filter, you will get the same necessary information such as the telephonySessionId, partyId etc. plus the telephonyStatus, and most probably you want to forward the call to another number after a few "Ringings" or some logic you built behind.

The other issue is that it looks like the forward function in the C# SDK does not return a value. I don't know how you could print out the "callerParty" but it seems never return in my test, event the call is forwarded successfully.

My other test written in Node JS and that was how I got the OK 200 response.

I will check these issues and let you know soon.
0 Likes 0 ·
Show more comments

Developer sandbox tools

Using the RingCentral Phone for Desktop, you can dial or receive test calls, send and receive test SMS or Fax messages in your sandbox environment.

Download RingCentral Phone for Desktop:

Tip: switch to the "sandbox mode" before logging in the app:

  • On MacOS: press "fn + command + f2" keys
  • On Windows: press "Ctrl + F2" keys