Places an outbound phone call powered by an AI agent. The agent conducts a free-form conversation using its tools, memory, and context to achieve a specified objective.
agentic_phone_callThe AI Phone Call node dials an outbound call and hands control to a configured Flusso Agent, which speaks and listens in real time using Twilio's ConversationRelay WebSocket. Unlike the standard Phone Call node โ where the call script is fixed โ the AI Phone Call node lets the agent adapt its language, questions, and reasoning dynamically based on what the recipient says.
The agent has access to two built-in call tools in addition to any tools configured on the Agent node itself:
confirmed, not_interested, callback_requested) that is returned in the step output for use in downstream routing.You can optionally provide a greeting message that the agent speaks immediately when the recipient answers, a call objective that is injected into the agent's system context to guide its behaviour, and a free-form context object that passes workflow data (such as customer name, order details, or appointment information) directly into the agent's context before the call begins.
The agent can also use vector search tools and any MCP tools connected to the Agent node in graph mode. This means the agent can look up information in a knowledge base or call external APIs mid-conversation to answer questions or take actions on the recipient's behalf.
| Field | Status | Description |
|---|---|---|
| To Number | Required | The E.164-formatted phone number to call, e.g. +12025551234. Supports {{ variable }} references. |
| Agent | Required | The Flusso Agent to use for the conversation. The agent's model, memory, and tool configuration are inherited from its Agent node settings. In graph mode, the Agent node must have a Model Config node connected to its model_in port. |
| Voice | Optional | The text-to-speech voice used for the agent's speech output. Select an ElevenLabs voice configured under Settings, or leave blank to use the default Twilio TTS voice. |
| Greeting | Optional | A message spoken immediately when the recipient answers, before the agent takes over. Useful for a consistent opening such as: "Hi, this is an automated call from Acme Corp." Supports {{ variable }} references. |
| Call Objective | Optional | A plain-language description of what the agent should achieve during the call. This is injected into the agent's system prompt before the conversation begins. Example: "Confirm the customer's delivery appointment and ask if they need to reschedule." |
| Max Duration | Optional | Maximum call length in seconds. The call is ended automatically when this limit is reached. Default: 300 seconds (5 minutes). |
| Silence Timeout | Optional | How long to wait for the recipient to speak before ending the call, in seconds. Applies when the recipient stops responding mid-conversation. Default: 10 seconds. |
| Context | Optional | A JSON object of additional data to inject into the agent's context before the call. Use this to pass workflow variables such as the customer's name, account details, or order information. Supports {{ variable }} in values. Example: {"customer_name": "{{ crm_step.output.name }}"}. |
All output fields are available in later steps using variable references.
| Field | Type | Description |
|---|---|---|
status | string | Final call status. One of: completed, no_answer, busy, failed, timeout. |
duration | number | Call duration in seconds from answer to hangup. 0 if the call was not answered. |
transcript | array | Full conversation transcript as an array of turn objects, each with role (agent or recipient) and text. |
recording_url | string | URL of the full call recording, if call recording is enabled on the Twilio account. |
ended_by | string | Who ended the call: agent (via the end_call tool), recipient (hung up), timeout (max duration or silence timeout reached), or system (error). |
summary | string | A natural-language summary of the conversation generated by the agent after the call ends. Useful for logging or passing to downstream steps. |
call_outcome | string | The structured outcome label set by the agent using the set_call_outcome tool during the call. null if the agent did not set an outcome. |
patient_name, appointment_time, and clinic_address.ai_call.output.call_outcome: confirmed โ send a confirmation SMS; reschedule_requested โ notify the clinic team via Slack; no_answer โ retry tomorrow.call_outcome to qualified, not_qualified, or callback_requested.ai_call.output.call_outcome == "qualified" and, if true, creates a deal in the CRM via an HTTP Request node and notifies the sales team in Slack. The full summary is included in the Slack message for context.transcript and summary are written back to the helpdesk ticket via an HTTP Request node for the support team's records.set_call_outcome tool is only called if you instruct the agent to use it โ either in the Call Objective or in the Agent's system prompt. Always include a list of valid outcome values in the objective so the agent uses consistent labels for downstream routing.gpt-4o-mini or a local Ollama model) for the best conversational experience. High-latency models may cause noticeable pauses.ended_by is set to timeout.call_outcome.