Appearance
Call Flow Builder
FreshIntroduction
Call Flow Builder offers built-in versioning. This feature empowers users to test different configurations of a Call Flow without affecting the live version, and to revert to a previous version if needed.
Once a Call Flow has been created, you can click on the Version History button located in the top left corner of the Call Flow Builder interface. This will open a panel showing all the versions of the call flow, along with a timestamp of when the version was created.
Opening the version history of a Call Flow.
Opening the version history of a Call Flow.
Deploy a new version
If you wish to make edits to a call flow, you can create a new version making any changes you need. Once you are satisfied with the new version, you can click the Deploy button to make the new version the live version of the call flow. When a new version is saved, it will add a new entry to the version history. The name of the version will be +1 from the previous version. E.g. Version 1.0, Version 2.0, Version 3.0, etc.
Deploying a new version of a Call Flow.
Deploying a new version of a Call Flow.
Revert changes
If you need to revert to a previous version of a call flow, open the version history panel by clicking the Version History button. Select the version to which you wish to revert. Click the Restore button to confirm.
Reverting to a previous version of a Call Flow.
Reverting to a previous version of a Call Flow.
AI Agent
This node is used to connect to a SignalWire conversational AI agent. The AI agent can be used to handle natural language processing, sentiment analysis, make and handle API calls, and other conversational tasks.
Learn more about AI Agents with our comprehensive Getting Started guide!
Node Settings
AI Agent Name
string
The name of the AI agent to connect to. The dropdown menu will populate with any AI Agent Resource that have been created in your SignalWire portal.
Example
In this example, we will create a simple call flow that connects to an AI agent after the call is answered.
AI Agent node.
AI Agent node.
Forward to Phone
This node will allow you to forward the incoming call to another phone or SIP endpoint.
Output Node Connectors
Success
string
Call is forwarded successfully. The connector will be triggered when the call is successfully forwarded to the phone number.
No Answer
string
Call is not answered. The connector will be triggered when the call is not answered by the phone number.
Busy
string
Call is busy. The connector will be triggered when the call is busy.
Decline
string
Call is declined. The connector will be triggered when the call is declined.
Error
string
An error occurred. The connector will be triggered when an error occurs while forwarding the call.
Node Settings
Default From
string
The default phone number to use as the caller ID when forwarding the call.
Default Timeout
integer
The time in seconds to wait for the call to be answered before timing-out and either disconnecting the call or attempting a new number.
Default Value: 45 seconds.
Call State URL
string
A webhook URL that will receive a POST request containing call details each time a Call State Event is triggered. You will need to choose which events you want listen for in the next field. If no events are chosen, the URL will receive no requests.
Call State Events
string
The events that will trigger a POST request to the Call State URL.
Possible Values:created, ringing, answered, ended
Call Numbers
string
Only shows when multiple numbers are added.
A toggle option to change the behavior of the forwarding of the call. If set to Sequential, the call will be forwarded to the next number in the list if the previous number is busy, declined, or not answered. If set to Simultaneously, the call will be forwarded to all numbers in the list at the same time.
Possible Values:Sequential, Simultaneously
Phone Number Configuration
One or more phone numbers can be added to the node. Additional phone numbers can be added by clicking the Add Phone Number button. Depending on the Call Numbers property, the call will be forwarded to the next number in the list (Sequential) or to all numbers in the list at the same time (Simultaneously).
To
string
The phone number or SIP endpoint to forward the call to.
From
string
The phone number to use as the caller ID when forwarding the call. If not set, Default From will be used.
Timeout
integer
The time in seconds to wait for the call to be answered before timing out and either disconnecting the call or attempting a new number. If not set, Default Timeout will be used.
Enable Whisper
boolean
This executes SWML when the call is answered. The SWML will be executed before connecting the call.
Handle Via:External URL that is hosted off the SignalWire platform, or a SWML script resource.
Examples
Preserve Original Caller ID When Forwarding
This example shows how to forward calls while preserving the original caller’s phone number as the caller ID. This is useful when you want the person receiving the forwarded call to see who originally called, rather than your SignalWire number.
In this flow, the Handle Call node receives the incoming call and passes it to the Forward to Phone node, which forwards the call to the destination number. The key configuration is setting the From field to %{call.from} - this variable contains the original caller’s phone number, ensuring that the person receiving the forwarded call will see the original caller’s number on their caller ID rather than your SignalWire number.
If the forward is successful, the call connects directly. If the call fails for any reason (no answer, busy, declined, or error), the flow routes to Hang Up Call. This approach is particularly useful for business scenarios where you want to maintain transparency about who is calling.
A Call Flow that uses the Forward to Phone node to forward the call while preserving the original caller ID.
Forward call while preserving original caller ID
Forward to SIP
In order to dial a SIP endpoint, format the To field with with “sip:” followed by the endpoint’s address. For example:
To:sip:alice@example.com
If the endpoint is unavailable, the flow will follow one of the four failed routes depending on the SIP signaling that is received. You can give individual actions for each signal, or route them all back into the same node.
A Call Flow that uses the Forward to Phone node to forward the call to a sip endpoint.
Forward to SIP
Forward to multiple SIP endpoints and phone
You can combine SIP dialing and Phone number dialing in the same node. The example below is set to Sequential dialing, so the sales endpoint will first ring for 20 seconds. After that, the call will ring the support endpoint for 20 more seconds before finally dialing out to +15552223333.
Forward to multiple SIP endpoints and phone numbers sequentially using the Forward to Phone node.
Forward to multiple SIP endpoints and phone numbers sequentially using the Forward to Phone node.
Hang Up Call
The Hang Up Call node will disconnect a call and end the flow.
This node is not strictly required, as calls will automatically end when the call reaches the end of a flow.
The Reason parameter is used for logging purposes and does not change the behavior of the Hang Up Call node.
The Hangup Call node.
The Hangup Call node.
Node Settings
Reason
string
The reason for hanging up the call.
Possible Values:Busy, Decline, Hang up
Default Value:Busy
Play Audio or TTS
This node allows you to play an audio file, play silence, play a ringtone, or play text-to-speech.
Node Settings
Text to Speech
object
Text to Speech node options. See Text to Speech Settings.
Play Audio File
object
Play Audio file node options. See Play Audio File Settings.
Text to Speech Settings
Node options for Text to Speech.
Language
string
The language to use for the text-to-speech.
Gender
string
The gender of the voice to use for the text-to-speech.
Voice
string
The voice to use for the text-to-speech.
Please note that any voices that show (premium) next to the name will be billed at the Premium TTS rate.
Text
string
The text to convert to speech. SSML can be used to customize the speech. The text can also include variables to be replaced with the variable value.
SSML Example:<speak>Here is a <say-as interpret-as="characters">SSML</say-as> example</speak>
Variables Example:Hello, you got a call from %{call.from}
Play Audio File Settings
Node options for Play Audio File.
Audio File
string
A URL of a audio file to play.
Additionally a ringtone or silence can be played over the call.
Ringtone Format:silence:<time in seconds> (ex: silence:5)
Silence Format:ring:<time in seconds><ringtone code> (ex: ring:5:jp)
Example
Text to Speech node example with variable.
Text to Speech node example with variable
Set Variables
Use this node to set variables that can be accessed from other nodes in the Call Flow.
The value can be a static value set as a string ("value"), a variable from another node such as a request response ( %{request_response.<object_field>} ), or a call parameter ( %{call.from}).
Access these variables in other blocks with %{<Key>} and unset variables with the Unset Variables node.
Node Settings
Key
string
The name of the variable to set.
Value
string
The value to set the variable to. This can be a static value, a variable from another node, or a call parameter.
Example
Use Set Variables if you plan to use multiple Request nodes in the same Flow and you need the variables to carry across the entire Flow.
This example makes a request to an API for temperature and location. The request’s response is saved in variables called my_temperature and my_location.
In order to make a new request to a new webhook, the Set Variables node is essential because the second Request node will overwrite the request_response. Your first variables will remain accessible using %{vars.my_temperature} and %{vars.my_location}.
Set variables from a request response.
Set variables from a request response.
