← GPT-AI-VIDEO
DOCUMENT · 5.4 KB

vendor/OpenMontage/.agents/skills/agents/references/outbound-calls.md

Workspace snapshot · 09/04 14:52

Outbound Calls

Make outbound phone calls using your ElevenLabs agent via Twilio integration.

Prerequisites

  1. A configured ElevenLabs agent
  2. A Twilio phone number linked to your agent (obtain agent_phone_number_id from ElevenLabs dashboard)
  3. Your ElevenLabs API key

Basic Usage

See the main agents skill for basic Python, JavaScript, and cURL examples.

Request Parameters

ParameterTypeRequiredDescription
agent_idstringYesThe ID of your ElevenLabs agent
agent_phone_number_idstringYesThe ID of the Twilio phone number linked to your agent
to_numberstringYesThe destination phone number (E.164 format)
conversation_initiation_client_dataobjectNoOverride conversation settings for this call
call_recording_enabledbooleanNoWhether to let Twilio record the call
telephony_call_configobjectNoTelephony call settings like ringing timeout

Response

{
  "success": true,
  "message": "Call initiated successfully",
  "conversation_id": "conv_abc123",
  "callSid": "CA1234567890abcdef"
}
FieldTypeDescription
successbooleanWhether the call was initiated successfully
messagestringStatus message
conversation_idstringElevenLabs conversation ID for tracking
callSidstringTwilio Call SID for reference

Customizing the Call

Override agent settings for a specific call using conversation_initiation_client_data:

Python

response = client.conversational_ai.twilio.outbound_call(
    agent_id="your-agent-id",
    agent_phone_number_id="your-phone-number-id",
    to_number="+1234567890",
    call_recording_enabled=True,
    conversation_initiation_client_data={
        "conversation_config_override": {
            "agent": {
                "first_message": "Hello! This is a reminder about your appointment tomorrow.",
                "language": "en"
            },
            "tts": {
                "voice_id": "JBFqnCBsd6RMkjVDRZzb"
            }
        },
        "dynamic_variables": {
            "customer_name": "John",
            "appointment_time": "2:00 PM"
        }
    }
)

JavaScript

const response = await client.conversationalAi.twilio.outboundCall({
  agentId: "your-agent-id",
  agentPhoneNumberId: "your-phone-number-id",
  toNumber: "+1234567890",
  callRecordingEnabled: true,
  conversationInitiationClientData: {
    conversationConfigOverride: {
      agent: {
        firstMessage: "Hello! This is a reminder about your appointment tomorrow.",
        language: "en",
      },
      tts: {
        voiceId: "JBFqnCBsd6RMkjVDRZzb",
      },
    },
    dynamicVariables: {
      customer_name: "John",
      appointment_time: "2:00 PM",
    },
  },
});

Configuration Overrides

Agent Settings

OptionTypeDescription
first_messagestringCustom greeting for this call
languagestringLanguage code (e.g., "en", "es", "fr")
promptobjectOverride agent prompt and LLM settings

TTS Settings

OptionTypeDescription
voice_idstringVoice ID to use for this call
stabilitynumberVoice stability (0.0-1.0)
similarity_boostnumberVoice similarity boost (0.0-1.0)
speednumberSpeech speed multiplier

Telephony Call Configuration

OptionTypeDescription
ringing_timeout_secsintegerHow long to ring the recipient before giving up (default: 60)

Dynamic Variables

Pass custom data to your agent's prompt using dynamic_variables. Reference them in your agent's prompt with {{variable_name}} syntax.

When assigning dynamic variables, you can use the sanitize option to remove sensitive values from tool responses before they are sent to the LLM and transcript, while still allowing variable assignment:

FieldTypeDefaultDescription
sanitizebooleanfalseIf true, the assignment's value is removed from tool responses before sending to LLM/transcript but still processed for variable assignment

Complete Example

from elevenlabs import ElevenLabs

client = ElevenLabs()

# Make personalized outbound calls
customers = [
    {"name": "Alice", "phone": "+1234567890", "balance": "$150.00"},
    {"name": "Bob", "phone": "+0987654321", "balance": "$75.50"},
]

for customer in customers:
    try:
        response = client.conversational_ai.twilio.outbound_call(
            agent_id="payment-reminder-agent",
            agent_phone_number_id="your-phone-number-id",
            to_number=customer["phone"],
            call_recording_enabled=True,
            conversation_initiation_client_data={
                "conversation_config_override": {
                    "agent": {
                        "first_message": f"Hello {customer['name']}, this is a friendly reminder about your account."
                    }
                },
                "dynamic_variables": {
                    "customer_name": customer["name"],
                    "balance": customer["balance"]
                }
            }
        )
        print(f"Called {customer['name']}: {response.conversation_id}")
    except Exception as e:
        print(f"Failed to call {customer['name']}: {e}")