FunctionResult
FunctionResult is the return type for all SWAIG tool functions. It wraps a response
message (text for the AI to speak) and an ordered list of actions (transfers, SMS,
data updates, context switches, and more). Every method returns self, so you can
chain calls into a single fluent expression.
Returned from functions defined with the @tool() decorator
or define_tool() on
AgentBase.
FunctionResult builds the response payload for a SWAIG function. See the SWML SWAIG functions reference for the full response format specification.
Properties
response
Text the AI speaks back to the caller after the function executes.
action
Ordered list of action objects to execute. Actions run sequentially in the order they were added.
post_process
When True, the AI speaks the response and takes one more conversational turn
with the user before executing actions. When False (default), actions execute
immediately after the response.
Example
Fluent Chaining Pattern
Every method on FunctionResult returns self, so you build complex responses
in a single expression. Actions execute in the order they are added.
Terminal actions like connect(final=True) and hangup() end the call flow.
Place them last in the chain so that preceding actions (data updates, SMS, etc.)
have a chance to execute.
Methods
Core
Set or replace the response text on a FunctionResult.
Enable or disable post-processing on a FunctionResult.
Append a raw action to the FunctionResult action list.
Append multiple raw actions to the FunctionResult action list.
Serialize a FunctionResult to the SWAIG response format.
Call Control
Transfer or connect the call to another destination.
End the call immediately.
Put the call on hold with an optional timeout.
Transfer the call to a SWML endpoint with a return message.
Speech
Make the AI agent speak specific text immediately.
Control how the agent pauses and waits for user input.
Stop the agent execution immediately.
Media
Play an audio or video file in the background during a call.
Stop the currently playing background audio file.
Start recording the call in the background.
Stop an active background call recording.
Stream call audio to an external endpoint via WebSocket or RTP.
Stop an active media tap stream.
Data
Set or update key-value pairs in the global session data.
Remove one or more keys from the global session data.
Set function-scoped metadata on a FunctionResult.
Remove one or more keys from the current function’s metadata store.
Context Navigation
Transition to a different step within the current conversation context.
Switch to a different conversation context.
Perform an advanced context switch with prompt replacement and history control.
Events
Send a custom user event through SWML for real-time UI updates.
Inject text as simulated user speech input.
Functions
Enable or disable specific SWAIG functions at runtime.
Allow SWAIG function calls when a speaker timeout occurs.
Hints
Add speech recognition hints dynamically during a call.
Remove all dynamically added speech recognition hints.
Settings
Adjust the end-of-speech silence timeout for speech recognition.
Adjust the speech event timeout for noisy environments.
Update AI runtime settings dynamically during a call.
Send full data to the LLM for the current turn only.
Control how this function call appears in the AI’s conversation history.
SMS
Payment
Collect and process a credit card payment during a call.
Build a payment prompt object for use with pay().
Build a single action entry for a payment prompt.
Build a parameter entry for the pay() method.
SIP
Rooms and Conferences
Join a SignalWire RELAY room for multi-party communication.
Join an ad-hoc audio conference with extensive configuration options.