Boosting Chatbot ROI: Human Agent Request Deflection
Published on May 2, 2024

In today's digital age, customers expect quick and efficient support, and Conversational AI agents can provide just that while also reducing the need for human customer support agents. Conversational AI agents can not only improve the customer experience by working much quicker but also can save your business big bucks!

In February 2024, Klarna reported that in just 1 month its new AI assistant was handling two-thirds of customer service chats. That's the equivalent of 700 human agents. The company estimates this outsourcing will drive an additional $40 million in profit this year.

With Vonage’s no-code/low-code platform called AI Studio, even the smallest companies can act like the big boys and leverage virtual assistants to yield big savings. But even in the best-designed agents, some users will try to game the system and speak directly with a human agent.

Thankfully for you, the team at Vonage has implemented a highly effective strategy for deflecting immediate requests for human agents. In real-world agents, this strategy has helped to lower agent requests by up to 30%! Additionally, immediate agent requests were less than 2%, meaning that callers were able to get some questions answered first by the virtual agent and then went on to follow up with a human agent.

This tutorial will show you our strategy for building agents that deflect these human agent requests and instead nudge your users to interact with the virtual assistants.

TLDR; You can find the fully built-out agent on Github and and import it to AI Studio following these instructions.

Big shoutout to Kayla S who was the genius behind this strategy!

How to Create an Inbound Telephony Chatbot

To create your agent, follow the instructions found in the AI Studio documentation here. There are three important options for our agent, to select:

  • Type: Telephony

  • Template: Start From Scratch

  • Event: Outbound

In this example, we’ll create an agent for a pizza shop. Users can do a few things:

  • Place an order

  • Find shop locations

  • Learn about current coupon deals

  • Check their rewards balance

  • Ask for a human agent

A normal agent, without human agent deflection, would look like this:

Simple Inbound Virtual Agent with SubflowsSimple Inbound Virtual Agent with Subflows

In this flow, we collect and store the user’s inquiry in a parameter with the Collect Input node. Then we use a Classification node to sort the inquiry among our defined Intents. For each intent, we direct the user to the corresponding sub-flow where the logic of each flow is handled accordingly. E.g. Place an Order Flow, Find Locations Flow, Human Agent Flow, etc.

In this tutorial, we don't care what happens inside these business specific subflows. Instead we're focusing on the Agent Deflection archticture surrounding them.

This is a great first step. However, how can we push our users to actually interact with the voice agent instead of immediately requesting “I want to speak with a human”?

How to Deflect Human Agent Requests

To nudge users to interact with the virtual assistant instead of immediately being connected with human agents, our strategy will suggest to them twice that our virtual assistants can help and give them a chance to re-enter their inquiry. If the user asks 3 times in a row for an agent, then we will let them go directly to a human.

First, we’ll need to create a new Parameter called virtual_agent_interactions of entity @sys.number and set the default to 0.

Create a New Custom Parameter to Track Virtual InteractionsCreate a New Custom Parameter to Track Virtual Interactions

Then we’ll update our flow by creating a Conditional node directly after our classification. This node will be called Virtual_agent_interaction? and will have just a single condition that checks our virtual_agent_interactions to be less than 2.

Create a Conditional to Check User InteractionsCreate a Conditional to Check User Interactions

Now we connect our Human Agent Intent in the Classification node to our Virtual_agent_interaction? conditional. But what about the new conditional flow? Where should it connect to? For this, we’re going to create a new sub-flow called Agent Deflection Flow.

In this sub-flow, the first thing we’ll do is update our virtual_agent_interactions and increase its value by one. We can do this using the Custom Code Node:

Use Custom Code to Increment User InteractionsUse Custom Code to Increment User Interactions

Then we’ll ask our users again, with another Collect Input node, what they would like to do and reuse the same inquiry parameter from before. However, now we’ll nudge them with the following prompt:

Use Nudging Language to Collect InquiriesUse Nudging Language to Collect Inquiries

We can now exit the Agent Deflection sub-flow and connect it back to the classification node. This way the first two times that a user reaches our Human Agent Intent, it will send them to the Agent Deflection Subflow. But once they’ve reached it twice, the conditional will now send them to the Human Agent Subflow.

But we have a small problem. What about when users enter the other flows? They may want to ask more than one question right? We shouldn’t make them redial our virtual assistant for each inquiry.

We can update the agent with a sub-flow called “Another Inquiry”. This sub-flow asks the user if they would like to ask another question, uses a conditional to either collect another inquiry or exit the agent, and finally sends the new inquiry to the classification node all over again.

Additional Request FlowAdditional Request Flow

But what’s the problem? When a user asks a second inquiry virtual_agent_interactions will still be set to 0. We don’t want to penalize our users who have maybe ordered a pizza but then make them ask 3 times for a human agent.

We can simply add a Set Parameter node after they’ve exited the Ask Another? Flow. Here we set our virtual_agent_interactions to 2 and then return our user back to the classification node.

Agent Deflection with Repeat Inquiry FlowAgent Deflection with Repeat Inquiry Flow

How to Handle for Broad Queries

Another source of many human agent requests comes from users asking, very broad questions which might match many of your intents and confuse the agent. Normally an agent would then respond with something like, “I’m sorry I didn’t understand that.” This lowers caller confidence in the virtual agent at which point they would then ask to be transferred to a human.

Instead, we can create a “Broad Queries” intent. It will give a much gentler message and ask again for the users’ inquiry. However, the user will gain confidence as they believe the agent is actually understanding them.

In our pizza agent example, broad queries would be inputs like “pizza”, “help”, “question”, “pizza question”, etc.

Again, we’ll create a sub-flow called Broad Queries. One more time, we’ll use a Collect Input node to collect our inquiry parameter. However, here we’ll say something like, “That’s a great question! Can you be more specific?” or, “I’m happy to help. What’s your question?”.

Deflecting Broad Queries with a NudgeDeflecting Broad Queries with a Nudge

But before we leave our sub-flow and connect back to our Classification node, we’ll want to use a set parameter and update our virtual_agent_interactions parameter to equal 1. This gives the user credit for trying to use the virtual agent. If they immediately ask for a human agent, we will only push back on them once instead of twice. This is fair since it will be the third time they’ve been asked to answer the agent.

Full Agent Deflection FlowFull Agent Deflection Flow


We’ve now seen how to implement a few very powerful customer experience interactions via virtual agents. Our chatbots help increase business efficiency by pushing users to resolve requests without including expensive human employees. Doing so with AI Studio’s low-code platform empowers businesses of all sizes to tap into these lucrative cost-cutting measures.

If you enjoyed this article let us know on Vonage Developer Community Slack. This post was inspired by real-world agents being used at scale, share your strategies and experiences using AI Studio so we can all improve! You can also follow us on X, formerly known as Twitter, for the latest Vonage API news.

Additional Resources

Benjamin AronovDeveloper Advocate

Benjamin Aronov is a developer advocate at Vonage. He is a proven community builder with a background in Ruby on Rails. Benjamin enjoys the beaches of Tel Aviv which he calls home. His Tel Aviv base allows him to meet and learn from some of the world's best startup founders. Outside of tech, Benjamin loves traveling the world in search of the perfect pain au chocolat.

Ready to start building?

Experience seamless connectivity, real-time messaging, and crystal-clear voice and video calls-all at your fingertips.

Subscribe to Our Developer Newsletter

Subscribe to our monthly newsletter to receive our latest updates on tutorials, releases, and events. No spam.