๐Ÿ‡ฌ๐Ÿ‡ง EN
๐Ÿ‡ฎ๐Ÿ‡น IT

๐Ÿค–๐Ÿ“ž AI Phone Call

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.

Category: Communicate  ยท  Type identifier: agentic_phone_call

Overview

The 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:

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.

Prerequisite: A Twilio account must be connected under Settings → Twilio before this node can place calls. The selected Agent must also be fully configured with a model provider before the workflow is run.

Configuration

FieldStatusDescription
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 }}"}.

Output Data

All output fields are available in later steps using variable references.

FieldTypeDescription
statusstringFinal call status. One of: completed, no_answer, busy, failed, timeout.
durationnumberCall duration in seconds from answer to hangup. 0 if the call was not answered.
transcriptarrayFull conversation transcript as an array of turn objects, each with role (agent or recipient) and text.
recording_urlstringURL of the full call recording, if call recording is enabled on the Twilio account.
ended_bystringWho ended the call: agent (via the end_call tool), recipient (hung up), timeout (max duration or silence timeout reached), or system (error).
summarystringA natural-language summary of the conversation generated by the agent after the call ends. Useful for logging or passing to downstream steps.
call_outcomestringThe 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.
// Reference call outputs in later steps {{ ai_call.output.status }} {{ ai_call.output.call_outcome }} {{ ai_call.output.summary }} {{ ai_call.output.ended_by }} // Access individual transcript turns {{ ai_call.output.transcript[0].role }} {{ ai_call.output.transcript[0].text }}

Example Usage

Appointment confirmation call

  1. A Schedule Trigger fires 24 hours before each upcoming appointment fetched from a calendar integration.
  2. An AI Phone Call node calls the patient. The Call Objective is set to: "Confirm the patient's appointment for {{ appointment.output.time }} with Dr {{ appointment.output.doctor }}. If they cannot make it, offer to reschedule and record the outcome." The Context field passes patient_name, appointment_time, and clinic_address.
  3. A Switch node routes on ai_call.output.call_outcome: confirmed โ†’ send a confirmation SMS; reschedule_requested โ†’ notify the clinic team via Slack; no_answer โ†’ retry tomorrow.

Lead qualification

  1. A Webhook Trigger receives a new lead from a web form with the prospect's name, company, and enquiry text.
  2. An AI Phone Call node calls the prospect. The Call Objective instructs the agent to assess budget, timeline, and decision-maker status, and to set call_outcome to qualified, not_qualified, or callback_requested.
  3. A Logic Gate checks 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.

Customer follow-up after support ticket

  1. An Event Trigger fires when a support ticket is marked as resolved in the helpdesk system.
  2. An AI Phone Call node calls the customer. The agent has a RAG vector tool connected so it can look up product documentation if the customer has follow-up questions. The Greeting is set to: "Hi {{ ticket.output.customer_name }}, we're calling to check that your recent support issue has been fully resolved."
  3. After the call, the transcript and summary are written back to the helpdesk ticket via an HTTP Request node for the support team's records.

Tips & Notes

Related Nodes