question

carloscorzo avatar image
carloscorzo asked Byrne Reese commented

How do I route a call to a user before routing to a queue?

I own a property management software system. It basically holds reservations that guests make for vacation rentals. Today, I use Heroku in order to get a notification that a new call has been received and directed to an extension. Most companies just use extensions and then use the forward feature within the extension to forward calls to different agents in sequential order. Now the complicated part :)

When I get this new call that went to the extension posted to my system, I have the ability to check my database to find out if an agent was already working with the guest. In an ideal world, I would want to connect that caller to the agent they were working with.

However, most companies have menus set up such as:

Press 1 for reservations, Press 2 for owner support.

When you press 1, you go into a sequential order for people to answer. So now I have the call, but how do I try to give it to the specific extension I want to connect taking into account they may not answer and therefore I need the call to continue going through the rest of the sequential numbers?

I could create a generic first person in the sequence of forwarding numbers/extensions that wants to do this type of smart transfer.

When that call comes in, I will be able to identify if there was an agent that worked with that guest. What do you recommend doing so that I can ring that agent but if they don't answer, it goes back in the queue? Should I use the API and update the sequence of numbers to ring each time a call comes in?

This seems like a mess because then I would need to put it back to the original setting once the call ends. I need to attempt to transfer the call to that agent. Give them X rings and if there is no answer, then let the call continue to flow through the queue.

Any suggestions?

rest api
1 comment
1 |3000

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

Byrne Reese avatar image Byrne Reese ♦♦ commented ·

@carloscorzo - I took the liberty of updating the title and formatting of your question to make it easier to find. If you disagree with my edits, please let me know and I can revert my changes.

0 Likes 0 ·
Phong Vu avatar image
Phong Vu answered carloscorzo commented

Unfortunately, a call coming to a call queue cannot be forwarded to other destinations using the /forward API. This is an expected limitation and currently being discussed if it can be supported.

To receive an incoming call to a specific extension then forward the call to an agent (if found) would work as you assumed. But it would not work for your use case to forward the call again to a call queue if the agent is not available!

I have a couple of options for you here:

1. When looking up for an agent to forward the call to, you can check the agent availability, like agent's presence (available/busy/DnD etc). Then decide to forward the call to the agent or to a call queue.

2. All the agents who are supposed to take forwarding calls, will need to have their call forwarding setting to redirect to the call queue if they are not available. See the settings screenshot below

1651769946100.png


1651769946100.png (70.4 KiB)
11 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.

carloscorzo avatar image carloscorzo commented ·

I like the redirect to the call queue but if someone is more than one queue, it would not work correct?

0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ carloscorzo commented ·

"if someone is more than one queue" => Do you mean if an agent belong to more than 1 queue?

0 Likes 0 ·
carloscorzo avatar image carloscorzo commented ·

wouldn't that potentially create an endless loop?

If I receive a call and I find that extension 555 had the relationship with that guest.

So I check if they are available and they are. I send the call but they don't answer and then it says to forward it back to the extension that represents the queue.

isn't that an endless loop when it comes back to that extension again since it's part of the queue?

Do you consider an extension with multiple sequential forwarding numbers different than a queue? Is there an advantage from one over the other.

0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ carloscorzo commented ·

Yes, the second option could end up in a loop if the agent who supposes to take the forwarding call is one of the agents in the call queue.

0 Likes 0 ·
carloscorzo avatar image carloscorzo commented ·

Let me give you the scenario to see if there is a solution.

We have John with extension 103

We have Carlos with extension 104

We have Phong with extension 105

We have Listener with extension 106

When you receive a call, you can press 1 for reservations which goes to extension 107.

In extension 107, the forwarded calls are set up sequentially to be 106, 105, 104, 103

I receive a call and someone presses 1.

This goes to extension 107, which first rings extension 106.

Extension 106 let's our software know there is a new call and we look up the number. We find that Carlos (Ext 104) worked with this client before.

I use presence to the status of extension 104. If Available, I use the call forwarding feature to forward the call.

What if his status is available but Carlos is away from his desk? I would still want to ring Phong and John in case they could answer......

:). Any ideas?

0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ carloscorzo commented ·

This does not work as I mentioned earlier. Because the extension 107 is a call queue (as you expected it would route the call sequentially to 106, 105, 104, 103).

0 Likes 0 ·
carloscorzo avatar image carloscorzo commented ·

107 just listens to calls.

So I guess the call can just go directly to 107.

Then I can check the status of the person, if not available, i send to a sequential queue 200 with 106, 105, 104, 103 or whatever they do.

If available, I send to their extension where the next ring goes to for example

103. There it rings that person and forwards to 300

300 is the rest of the agents 104, 105, 106

104 first. Then forwards to 400

400 is the rest of the agents 105,106, 105

105 first. Then forwards to 500

500 is 106,104,103

106 first. Then forwards to 600

600 rings 103,104,105

I think this would work. It is annoying, but it would work. Unless an extension used different people and there were mixes of people. But then, they could follow the same flow. Can you assign an extension multiple times as the forwarding extensions?


0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ carloscorzo commented ·

You wrote this "In extension 107, the forwarded calls are set up sequentially to be 106, 105, 104, 103".

It means that 107 is a call queue preset to route incoming calls sequentially to other extensions (agents). So it is not the listener you are talking about.

0 Likes 0 ·
carloscorzo avatar image carloscorzo commented ·

What if I let them define the call flow in Streamline and if there's a match, I check the extension to see if it's available.

Can I get that call back if they don't answer? If so, I can then do the same through their extensions based on the order they set in Streamline. I could even let them put weights on it. It would help me sell this thing to hundreds of companies.

0 Likes 0 ·
Phong Vu avatar image Phong Vu ♦♦ carloscorzo commented ·

Carlos, the biggest problem here is that you want to return the forwarded call to the forwarder if the agent does not pickup the forwarded call. Forwarding back the call to the original forwarder is not possible except if you preset the forwarder. But then you have to implement a feature for each agent to forward the call back to a designated extension (the original forwarder). But the original forwarder will potentially not know if that the call is forwarded back.

0 Likes 0 ·
Show more comments
Phong Vu avatar image
Phong Vu answered carloscorzo commented

There is one more option that may help is that the "assistant" extension (the listener, NOT the call queue) will detect and find an agent, and if found, it will make a call to the agent. As soon as the agent picks up the call, the "assistant" will accept the incoming call and perform a warm transfer to transfer the call to the agent. If the agent does not pick up the call from the assistant for a period of time, the assistant will forward the call to a call queue to handle incoming call as set in the call queue.

1 comment
1 |3000

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

carloscorzo avatar image carloscorzo commented ·

So just to clarify

me and you have extensions.

105 Carlos,106 Phong

I also create 1051 Carlos, 1060 Phong

I have extension 107 as my assistant

I receive a call in extension 107, I look up if there is an assigned agent that has an extension and I do a warm transfer. Why a warm transfer?

In this case, do I even need to check if that extension is available? I guess it would speed things up? Or is it so fast if the extension is not available that I don't really need to check if available?

EXAMPLE:

I get a call i 107. Match to Carlos. It sounds like the moment I do a warm transfer to an extension where I matched an agent, it would skip that number if it was not available. Then forward to 108. Then check 1050 which is my other extension without a forward. Assume I had done a warm transfer to 1050. It will ring 1050 again, it's busy, it will ring 1060. Then go to voicemail.

I would create extension 1050 and 1060 for us. So that the rotation now does not return to 107 for those extensions and can just go to voicemail,

Only thing here is I can't do weights for who they prefer to get calls but if this is the only solution, I will do this one. Actually, I could do weights when there is no match. I just could not do weighing if I find an agent match because the queue is just sequential or simultaneous.



0 Likes 0 ·

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