System Tools
System tools are pre-built capabilities that agents can invoke during calls. These tools are configured in the Tools tab of your agent settings.Flow agents: End Call, Transfer, and Press Digits are handled by dedicated flow nodes instead of system tools. These three tools only appear on the Tools tab for single-prompt agents. Voicemail Detection and custom tools are available for both modes.
End Call
The End Call tool allows agents to automatically terminate calls based on configurable rules.When to Use
- Calls that have reached their natural conclusion
- Customer explicitly ends the conversation
- Maximum conversation time is reached
- Call objective has been completed
Configuration
- Navigate to the Tools tab
- Locate End Call under System Tools
- Toggle the switch to enable
- Click Configure to customize behavior
- Set End Call Rules Override to define when the agent should end calls:
- Click Save
If you leave the rules override empty, RevRing uses sensible defaults. Custom rules give you more control over call termination behavior.
How It Works
When enabled, the agent has access to anend_call function. During the conversation, if the agent determines (based on the rules) that the call should end, it will:
- Invoke the
end_callfunction - Speak a brief closing message
- Terminate the call gracefully
Transfer
The Transfer tool enables agents to transfer calls to other phone numbers or departments based on conditions you define. RevRing supports two transfer modes: cold and warm.When to Use
- Customer requests to speak with a human representative
- Issue requires specialized expertise beyond the agent’s scope
- Escalation to management or specific departments
- Routing to on-call support staff
Configuration
- Navigate to the Tools tab
- Locate Transfer under System Tools
- Toggle the switch to enable
- Click Configure to set up transfer routes
-
Select Transfer Mode:
- Cold Transfer — the agent transfers the call immediately and disconnects
- Warm Transfer — the agent places the caller on hold, calls the recipient to brief them, then connects the parties
- Add transfer routes:
- To number:
+12025559999(destination phone number in E.164 format) - Condition:
Transfer to sales team for pricing questions or to close deals
- Click Save
Cold Transfer
In cold transfer mode, the agent invokes thetransfer_to_number function and the call is immediately handed off to the destination number. RevRing’s involvement ends — billing stops and recording stops once the transfer is initiated.
The transfer appears in the call transcript as a transfer_to_number tool invocation.
Provider Setup Required: Ensure your SIP trunk provider supports SIP REFER and has call transfers enabled. Some providers like Twilio require enabling PSTN Transfer in your trunk settings. See the Telephony Setup guide for details.
Warm Transfer
Warm transfer provides a more seamless handoff. When the agent decides to transfer:- The caller is placed on hold — they hear a hold message and optional hold music
- The agent calls the recipient at the transfer destination number
- The agent briefs the recipient with a summary of the conversation so far
- The caller is connected to the recipient
| Setting | Description |
|---|---|
| Hold Message | Message spoken to the caller while on hold (e.g., “Please hold while I transfer you.”) Max 500 characters. |
| Hold Music | Enable or disable hold music while the caller waits |
| Summary Instructions | Extra guidance for the AI when briefing the human agent. Max 2,000 characters. If omitted, a default summary is generated. |
| Intro Message | Spoken after the human agent accepts, heard by both parties (e.g., “You’re now connected. They’re up to speed on your request.”) Max 500 characters. |
Configuring via API
SettransferMode and warmTransferConfig when creating or updating an agent:
Warm transfer is also available as a node type in Conversation Flows, where you can configure hold and summary settings per-node.
Voicemail Detection
Voicemail Detection automatically identifies when an outbound call reaches an answering machine or voicemail system.When to Use
- Outbound calling campaigns where live conversations are preferred
- Appointment reminders or confirmations
- Sales or follow-up calls
- Any scenario where leaving a message is optional
Configuration
- Navigate to the Tools tab
- Locate Voicemail Detection under System Tools
- Toggle the switch to enable
- Click Configure to set behavior
-
Choose Voicemail Action:
- Hangup: Immediately end the call when voicemail is detected (saves costs)
- Leave Message: Speak a pre-recorded message before hanging up
- If you selected “Leave Message”, configure Voicemail Message:
- Click Save
Voicemail detection is most effective for outbound calls. For inbound calls, it’s typically not needed since customers are calling you.
How It Works
When an outbound call connects, RevRing analyzes the audio to detect voicemail systems. If detected:- Hangup action: Call ends immediately, marked as “voicemail” in logs
- Leave message action: Agent speaks the configured message, then hangs up
Press Digits (DTMF)
The Press Digits tool allows the agent to send DTMF touch tones during a call. This is useful when navigating IVR (interactive voice response) systems — for example, when the agent needs to press digits to navigate a phone menu during a transferred call or an outbound call to a phone system.When to Use
- Navigating automated phone menus (e.g., “Press 1 for sales, press 2 for support”)
- Entering account numbers or PINs via keypad
- Interacting with external IVR systems during outbound calls
Configuration
- Navigate to the Tools tab
- Locate Press Digits under System Tools
- Toggle the switch to enable
- Optionally set a Custom Instructions Override to customize when the agent uses this tool
- Click Save
Configuring via API
DTMF input is also available as a dedicated node type (
press_digit) in Conversation Flows, where you can specify which digits to listen for and how long to wait.Advanced Settings
Block All Interruptions
By default, callers can interrupt the agent while it’s speaking. Enable Block All Interruptions to make the agent always finish speaking before listening for input.When to Use
- Delivering important legal disclaimers or disclosures that must be heard in full
- Reading back critical information (order numbers, confirmation codes)
- Playing scripted messages that should not be cut short
Configuration
- Navigate to the Advanced tab
- Toggle Block All Interruptions to on
- Click Save
Configuring via API
Block All Interruptions applies to all agent speech globally. In Conversation Flows, you can set
blockInterruptions on individual nodes for more granular control.Custom Tools
Custom tools allow you to extend agent capabilities by integrating with your own systems via webhooks. When the agent invokes a custom tool, RevRing calls your webhook with the tool’s arguments and includes the response in the conversation.Use Cases
- CRM lookups: Fetch customer information during calls
- Order status: Check order or shipment status
- Appointment booking: Create or modify appointments in your calendar system
- Payment processing: Initiate payments or check account balances
- Inventory checks: Verify product availability
- Custom business logic: Any operation specific to your workflow
Creating a Custom Tool
- Navigate to the Tools tab
- Scroll to the Custom Tools section
- Enter a Friendly Name for your tool (e.g., “Order Status Checker”)
- Enter your Webhook URL (e.g.,
https://api.yourcompany.com/tools/check-order) - Click Add Tool
The Friendly Name is just a label for the dashboard. The actual function name that the agent uses is defined in the
name field of your JSON schema (e.g., check_order_status).Defining the Tool Schema
The schema defines what parameters the tool accepts using OpenAI’s function calling format:- Click Edit on your custom tool
- In the Schema JSON field, enter your tool definition:
- Toggle Enabled to activate the tool
- Click Save
Schema Format Reference
Follow the OpenAI function calling format:- type: Always
"function"at the root level (required) - name: Unique identifier for the tool (lowercase, underscores allowed) (required)
- description: When the agent should use this tool (required)
- parameters: Object defining the tool’s input parameters (required)
- type: Always
"object"for the parameters root (required) - properties: Each parameter with its type and description (use
{}for tools with no inputs) - required: Array of required parameter names (optional)
- type: Always
For tools without inputs: You must still include the
parameters object with type: "object" and empty properties:Advanced Webhook Settings
By default, RevRing sends aPOST request with a JSON body to your webhook URL when a tool is invoked. You can customize this behavior per tool:
| Setting | Description | Default |
|---|---|---|
| HTTP Method | The HTTP method used to call your webhook (GET, POST, PUT, PATCH, DELETE) | POST |
| Headers | Custom HTTP headers to include in the request (e.g., Authorization: Bearer token123) | None |
| Query Parameters | Custom query parameters appended to the webhook URL (e.g., source=revring) | None |
| Send Raw Request Body | When enabled, sends the tool arguments directly as the request body instead of the default { callId, tool, arguments } wrapper | Off |
Webhook Request Format
When the agent invokes your custom tool, RevRing sends a request to your webhook URL. Default request body (when Send Raw Request Body is off):Response Format
Your webhook should return:- 200 OK status code
- JSON object or plain text response body
- Response within 8 seconds (recommended: under 3 seconds for best user experience)
Best Practices for Custom Tools
Clear Descriptions
The agent uses descriptions to decide when to invoke tools. Be specific: Good:Error Handling
Handle errors gracefully in your webhook. You can return structured error data or error messages:Performance
- Keep webhook response times under 3 seconds
- Implement timeouts and retries in your webhook code
- Cache frequently accessed data when possible
- Use async processing for complex operations (return immediately with a status message)
Security
- Validate requests are coming from RevRing (contact support for HMAC signing setup)
- Sanitize and validate all input parameters
- Use HTTPS for all webhook URLs
- Implement rate limiting to prevent abuse
Testing Custom Tools
- Create a simple test tool that returns static data
- Use the test panel to make a call
- During the call, prompt the agent to use the tool:
- “Can you check order ORD-12345 for me?”
- Review the transcript to see:
- Tool invocation with arguments
- Your webhook’s response
- How the agent incorporated the result into conversation
Viewing Tool Invocations
All tool invocations appear in call transcripts with detailed information:- Tool name: Which tool was invoked
- Arguments: What parameters were passed
- Status: Success (ok) or error
- Response: What your webhook returned
Tool Limitations
System Tool Constraints
- End Call: Once invoked, the call ends immediately - the agent cannot continue conversation
- Transfer: After transfer, the agent disconnects - the call continues with the transfer destination
- Voicemail Detection: Only works on outbound calls, not inbound calls
Custom Tool Constraints
- Response time: 8 second timeout - webhooks must respond within this window
- Concurrent invocations: Agents invoke tools sequentially, not in parallel
Managing Tools
Editing Tools
To modify a custom tool:- Navigate to the Tools tab
- Click Edit on the tool in the table
- Update friendly name, webhook URL, schema, or enabled status
- Click Save
Deleting Tools
To remove a custom tool:- Navigate to the Tools tab
- Click Delete on the tool in the table
- Confirm the deletion
Disabling Tools Temporarily
Instead of deleting, you can disable tools:- Click Edit on the tool
- Toggle Enabled to off
- Click Save
Advanced Tool Patterns
Chaining Tools
Agents can invoke multiple tools in sequence to accomplish complex tasks:- Customer asks: “What’s my balance and when is my next payment due?”
- Agent invokes
get_account_balance→ receives balance - Agent invokes
get_next_payment_date→ receives date - Agent combines both results in response
Conditional Tool Usage
Guide the agent to use tools conditionally based on conversation context:Tool Results in Follow-Up
Agents can reference previous tool results later in the conversation:Agent: “I checked your order ORD-12345, and it’s out for delivery today.” Customer: “Great! And what about my other order?” Agent: “Let me check that for you…” [invokes tool again with new order ID]
Troubleshooting
Custom tool not being invoked
Custom tool not being invoked
- Verify the tool is enabled (toggle is on)
- Check that the description clearly indicates when to use the tool
- Ensure your prompt doesn’t contradict or override the tool’s purpose
- Test by explicitly asking the agent to use the tool during a test call
- Review the schema - overly complex parameters may confuse the agent
Webhook not receiving requests
Webhook not receiving requests
- Confirm the webhook URL is correct and publicly accessible
- Check that your server is running and responding to POST requests
- Test the endpoint independently with curl or Postman
- Review your server logs for incoming requests
Tool returns error in transcript
Tool returns error in transcript
- Verify webhook responds within 8 seconds
- Ensure response is valid JSON or plain text
- Check HTTP status code (should be 200)
- Review your webhook logs for errors or exceptions
- Test the webhook endpoint independently with sample data
Agent misuses the tool
Agent misuses the tool
- Refine the tool’s description to be more specific about usage
- Update your prompt to provide clearer guidance on when to use tools
- Adjust parameter descriptions to clarify expected formats
- Consider splitting complex tools into simpler, focused tools
Transfer doesn't work
Transfer doesn't work
- Verify the destination number is in valid E.164 format
- Ensure your SIP trunk supports call transfers
- Check that the destination number is reachable
- Review call logs for specific transfer error messages
Next Steps
Webhooks
Learn about pre-call and post-call webhooks
API Reference
Manage custom tools programmatically via API
Inbound Calls
Configure agents for handling inbound calls
Outbound Calls
Send outbound calls with your agents