Create and Manage Tools and Call Transfers on Invorto

1. Feature Overview

On the Invorto Voice Bot, without tools, a bot can only talk. It follows its system prompt, answers from its knowledge base, and records what it learned. Anything that has to happen as a result of the call, such as booking a slot or sending a link, happens afterward in your CRM.

Tools change that. A tool is a saved API call that the bot can make in the middle of a conversation. The bot reads the live response and keeps talking with that information in hand.

Invorto supports three kinds of tools.

Tool type What it is Where you configure it
System tools Built-in actions every bot can use, such as ending a call or transferring it. The Tools tab of the bot.
Custom tools API calls you define yourself, such as checking availability or looking up an order. The Tools page in the left navigation, then add it to a bot.

Typical uses include the following –

  • Check open appointment slots on a calendar and confirm a booking while the caller is still on the line.
  • Look up the status of an order or an application and read it back to the caller.
  • Send a payment link or a document during the call, then check whether it was received.
  • Hand the call to a human agent when the caller asks for one, or to a second bot that specializes in a different topic.
Note: A tool runs during the call. If the action can wait until the call ends, you do not need a tool. Use Call Insights to capture what happened, then act on it from LeadSquared. See Creating a Voice Bot for how to configure Call Insights.

 

2. Prerequisites

  • An Invorto account with an Admin role to create bots and tools.
  • The API you want to call must be reachable over the public internet and must accept requests from Invorto.
  • The endpoint URL, the HTTP method, and any keys, headers, or query parameters the API expects.
  • A published voice bot to attach the tool to. See Creating a Voice Bot.

 

3. How Tools Work

When you attach a tool to a bot, Invorto appends the tool name, its description, and the conditions you wrote to the bot’s system prompt. The bot uses that text to decide when the tool applies.

The sequence on a live call is as follows.

  1. The caller says something that matches the conditions you described.
  2. The bot fills in the parameters you marked as AI input, based on the conversation.
  3. Invorto calls your endpoint and plays your waiting message while it waits.
  4. Your API returns a response.
  5. The bot reads the response, uses your response mapping and your success message, and continues the conversation.
Note: The bot decides whether to call a tool. It is not a fixed step in a script. Write the description and the trigger conditions carefully, because those two fields are the only instructions the bot has about when the tool is appropriate.

 

4. Build a Tool

This section builds an example tool from start to finish, so you can see how every field fits together before you configure one against your own API. Follow it as written and you will end up with a tool that sends a request and receives a response. You do not need a bot or a phone call.

The example is called Get Order Status, and it looks up an order by its ID. So that you can run it without setting anything up first, it points at a public test endpoint that returns your request back to you. That lets you confirm the request left Invorto and arrived intact.

Note: Every value in this example is a fixed string. Nothing depends on a live conversation, so if something fails, the cause is the request itself rather than the wording of a prompt.

4.1 Open the Custom Tool Form

  1. Click Tools in the left navigation.
  2. Click + Create Tool.
  3. Select Custom Tool under the Custom

The New Custom Tool form opens in the right panel.

create a tool step 1

4.2 Add Basic Information

  1. In Tool Name, enter Get Order Status.
  2. In Description, enter Fetches order details using order ID.
Note: The description is not internal documentation. Invorto passes it to the bot as part of the prompt, so write it for the bot to read.

tools basic info

4.3 Configure the API

Method sets the HTTP method Invorto uses. Select the one your endpoint expects.Endpoint URL is the full address Invorto calls.

In the example, the endpoint returns your own request back to you as JSON. A real API would return order data instead.

  1. Leave the Method on GET.
  2. In Endpoint URL, enter the following: https://echo.free.beeceptor.com/orders/status

tools api config

4.4 Add a Parameter

The Parameters section is where you tell Invorto what to send with the request. Use the toggle to switch between Query Params and Headers, and configure each one separately. Click + Add Field to add a row, then set the key, the value, and the value type.

The value type controls where the value comes from.

Value type How Invorto fills the value
AI Input The bot generates the value from the conversation, following the instruction you write next to it.
Fixed The value you type is sent unchanged on every call.
Variable The value comes from a variable available on the call.
Secret The value comes from a stored credential. Use this for API keys rather than typing them as fixed text.

Query parameters and headers cover everything a GET request sends. When the method sends a body, the Body tab appears alongside them. The body is not a list of key and value rows. It is a JSON editor, where you write the JSON your API expects and mark the parts Invorto should fill in.

Mark those parts with placeholders. Anything you do not mark is sent exactly as you typed it.

What you want Write this What happens
A value the AI fills {{ai: instruction}} The bot fills the field from the conversation, following your instruction.
A named AI value {{ai: name: instruction}} The same, with the middle word naming the exact parameter the bot fills.
A call variable {{var: name}} Replaced with a live call variable at runtime.
A stored secret {{secret: NAME}} Replaced with a stored secret. An input for the secret value appears below the editor.
A fixed value The value itself Sent as is on every call.

A body that mixes all four might look like this.

{
  "order_id": "{{ai: the order ID the caller gives you}}",
  "caller": "{{var: caller_number}}",
  "token": "{{secret: API_KEY}}",
  "channel": "voice"
}

Each {{ai: ...}} placeholder becomes a parameter the bot fills, and by default that parameter takes its name from the JSON key above it. In the body above, the key is order_id, so the parameter is called order_id.

Some APIs do not use meaningful keys. Instead of a field per value, they take a list of attribute and value pairs, where every entry uses the same two keys.

[
  {
    "Attribute": "FirstName",
    "Value": "..."
  },
  {
    "Attribute": "LastName",
    "Value": "..."
  }
]

Here the keys cannot name anything. Both AI placeholders would be called Value, and the bot would have no way to tell them apart. Add a name in the middle of the placeholder to fix it. The syntax has three parts: ai, the name, and the instruction.

[
  {
    "Attribute": "FirstName",
    "Value": "{{ai: first_name: the caller's first name}}"
  },
  {
    "Attribute": "LastName",
    "Value": "{{ai: last_name: the caller's last name}}"
  },
  {
    "Attribute": "Phone",
    "Value": "{{var: caller_number}}"
  }
]

The JSON key stays Value, because that is what the API expects. The parameters are called first_name and last_name, because that is what the bot needs to keep them apart.

The example sends one query parameter with a fixed value, so that the same value goes out every time and you know exactly what should arrive at the other end.

  1. Under Parameters, stay on the Query Params
  2. Click + Add Field.
  3. In the key field, enter order_id.
  4. In the value type list, select Fixed.
  5. In the value field, enter SO-48213.

Note:

  • On a live call, an order ID would be AI Input, because the caller supplies it. An instruction such as “the order ID the caller gives you, which starts with SO- followed by five digits, for example SO-48213” would tell the bot how to build it.
  • Put API keys and tokens on the Headers tab with the value type set to Secret. Entering a key as Fixed leaves it readable to anyone who opens the tool.

tools parameters

4.5 Tell the Bot When to Use the Tool

When should the bot use this tool?” is the second field Invorto passes to the bot. The bot compares what the caller says against this text to decide whether the tool applies, so describe both when to use it and when not to. This field is required, even when no bot is attached yet.

In the example, we enter the following –

Use this tool when the caller asks about the status of their order,where it is, or when it will arrive. Only use it after the caller hasgiven you an order ID.

tools when to use

4.6 Test the Tool

The test does two jobs. It confirms your endpoint, parameters, and credentials work, and it loads the fields from the response so you can map them in the next step.

  1. Click Test Tool to expand the test panel.
  2. Click Run Test.
  3. Read the response that appears.
{
  "method": "GET",
  "protocol": "https",
  "host": "echo.free.beeceptor.com",
  "path": "/orders/status?order_id=SO-48213",
  "ip": "13.232.778.30",
  "headers": {
    "Host": "echo.free.beeceptor.com",
    "User-Agent": "python-httpx/0.28.1",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Traceparent": "00-b49ffba839fd74eb39a4-c8656fe7cf2bd251-03"
  },
  "parsedQueryParams": {
    "order_id": "SO-48213"
  }
}

run the test tool

4.7 Map the Response

Response mapping takes values out of the API response and puts them into variables the bot can use in its replies.

  1. Under Response Mapping, click + Add Mapping.
  2. In the first field, enter the key from the API response. For this example, enter parsedQueryParams.order_id.
  3. In Variable Name, enter the name the bot should use. For this example, enter order_id.

The name you enter on the right is what you reference in your messages. order_id becomes {{order_id}} in the next step.

Note:

  • The key on the left must match the response exactly. In this example the order ID sits inside parsedQueryParams, so the key includes a dot to reach it. Keys at the top level of the response, such as path, need no dot.
  • If you have not run a test yet, the mapping area reads “Run a test to load available fields, then click one to map it.”
  • If the tool has no response mapping and no success message, Invorto shows a warning that the tool will not return any data to the AI. The tool will still fire, but the bot will not learn anything from it. Add a mapping, a success message, or both.

4.8 Set the Success, Error, and Waiting Messages

These three fields control what the caller hears around the tool call.

Field What it does
Success Response What the bot says when the call succeeds. Reference mapped values with the double-brace pattern, such as {{order_id}}.
Error Response What the bot says when the call fails. Say plainly that the lookup did not work and offer a next step.
Waiting Message What the bot says while it waits for your endpoint. Choose Static for one fixed line, or Prompt Based to describe what the bot should say and let it phrase the line in context.

In the example:

  1. In Success Response, enter I found order {{order_id}} in the system.
  2. In Error Response, enter I‘m unable to fetch your order details right now. Please try again later.
  3. Under Waiting Message, select Static.
  4. Enter Let me check that for you.

Click Save, to save this Tool.

Note:

  • Variables in the success and waiting messages come from your response mappings and your AI input fields. The form reminds you of this with the hint “Add AI Input fields above to use variables here.”
  •  An API call takes time. Without a waiting message, the caller hears silence while the bot waits for your endpoint, and silence on a phone call reads as a dropped connection.

tools success and error

Save the bot by clicking the Save button.

 

5. Add a Tool to a Bot

Creating a tool does not give any bot access to it. Attach it to each bot that should be able to use it.

  1. Click Voice Bots in the left navigation and open the bot.
  2. Open the Tools
  3. Under the Tools section, click + Add Tool.
  4. Select Get Order Status.

You can now click Save, then click Publish or Re-Publish.

Note: adding a tool changes the bot, so the change follows the normal bot lifecycle. Save keeps it as a draft, and the live bot keeps behaving the way it did until you re-publish.

add tool to a bot

 

6. Understand System Tools

Every bot has a System Tools section on its Tools tab. These are built in, so there is nothing to create first.

System tool What it does Default
End Call Terminates the call when triggered. Included in all bots. On
Call Transfer Transfers the call to a human agent or another voice bot, based on caller intent. Off

To turn a system tool on or off, use the toggle on its row. Call Transfer also has an edit icon that opens its configuration.

system tools

 

7. Set Up Call Transfer

Call transfer moves a live call off the bot. Use it when the caller asks for a person, or when the conversation moves to a topic this bot was not built for.

Note: You can transfer to another voice bot as well as to a person. That lets you run a set of focused bots, each handling the topic it was written for, rather than one bot that tries to cover everything.

7.1 Turn On Call Transfer

  1. Open the bot and go to the Tools
  2. On the Call Transfer row, turn the toggle on.
  3. Click the edit icon to open the Call Transfer Configuration

The panel opens on the right and shows the Transfer Rules section.

open call transfer tool

7.2 Add a Transfer Rule

In the Call Transfer Configuration panel, click + Create First Rule. The Add Transfer Rule pop-up opens.

Field What to enter
Rule Name A short label for the rule, such as Billing Support.
Transfer To Human Agent, or Voice Bot for a handoff to another bot.
Transfer Type Warm Transfer or Cold Transfer.

  • Warm Transfer – The bot summarizes the conversation before connecting. The person who picks up hears what was discussed and why the call was escalated.
  • Cold Transfer – The call is transferred directly, without context.
Destination Number The number to dial, in E.164 format with the country code, such as +14155550123. Shown only for Human Agent.
Destination Voice Bot The bot that takes over the call. Shown only for Voice Bot.
When to Transfer The conditions that should trigger the transfer, in your own words.
Message Before Transfer What the caller hears before the transfer begins, such as “Please hold while I connect you.”
On Failure Message What the caller hears if the transfer cannot connect, such as “I couldn’t connect you to an agent. Let me continue helping you.”

Note:

  • Message Before Transfer and On Failure Message each offer a Static and a Prompt Based option. Static plays the same line every time. Prompt Based lets the bot phrase it in context.
  • Think about how hard the caller has to push before the bot gives way. If your rule says to transfer as soon as anyone asks for a person, the bot will transfer on the first ask. If you want the bot to try to resolve the issue first, say so in When to Transfer and describe how many attempts it should make.
  • Warm Transfer is currently available for transfers to a human agent. When you set Transfer To to Voice Bot, The pp-up selects Cold Transfer and marks Warm Transfer as not yet supported for bot-to-bot handoff.
  • A bot can have several transfer rules, and each one can point somewhere different. A common setup is one rule that sends billing questions to a human agent and another that sends product questions to a specialized bot. Add each rule the same way, and make sure the When to Transfer text for each one describes a distinct situation. Rules that overlap make the bot’s choice unpredictable.

create a rule in call transfer tool

 

Any Questions?

Did you find this article helpful? Please let us know any feedback you may have in the comments section below. We’d love to hear from you and help you out!

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
toggle

In This Article