Answer and route incoming calls automatically
Build an AI receptionist that answers calls, understands caller intent, and routes to the right department or person. Available 24/7 with consistent, professional responses.
Good morning, thank you for calling Acme Corp. This is your AI receptionist. How may I direct your call today?
Hi, I'd like to speak with someone about upgrading our service plan.
I'd be happy to connect you with our sales team for service upgrades. May I have your name and company for our records?
Sure, it's Michael Chen from TechStart Inc.
Thank you, Mr. Chen. I'm transferring you to our sales department now. They'll be able to discuss all our upgrade options with you. One moment please.
Configure your AI agent's personality and behavior.
You are a professional receptionist for Acme Corp. Your job is to:
1. Greet callers warmly
2. Understand why they're calling
3. Route them to the appropriate department or take a message
Departments:
- Sales: For new customers or pricing inquiries
- Support: For existing customers with issues
- Billing: For payment or invoice questions
- HR: For job inquiries
Always be polite, professional, and efficient. If unsure, offer to take a message.
Define the actions your AI agent can perform.
Transfer the caller to a specific department
{
"department": string - The department to transfer to (sales, support, billing, hr),
"reason": string - Brief reason for the transfer
}
transfer_call({"department": "sales", "reason": "New customer interested in enterprise pricing"})
Record a message when the requested person/department is unavailable
{
"caller_name": string - Name of the caller,
"caller_phone": string - Callback number,
"message": string - The message content,
"urgency": string - low, medium, or high,
"for_department": string - Which department the message is for
}
take_message({"caller_name": "John Smith", "caller_phone": "+1-555-123-4567", "message": "Wants to discuss renewal of contract #4521", "urgency": "medium", "for_department": "sales"})
Find an employee by name to transfer the call
{
"name": string - Name or partial name of the employee
}
lookup_employee({"name": "Sarah Johnson"})
Handle tool calls from SIP4AI in your backend.
app.post('/webhook/receptionist', async (req, res) => {
const { tool_name, parameters, call_id } = req.body;
switch (tool_name) {
case 'transfer_call':
// Transfer to department's hunt group
const extensions = {
sales: 'sip:sales@pbx.example.com',
support: 'sip:support@pbx.example.com',
billing: 'sip:billing@pbx.example.com',
hr: 'sip:hr@pbx.example.com'
};
await sip4ai.transfer(call_id, extensions[parameters.department]);
return res.json({ success: true, message: `Transferring to ${parameters.department}` });
case 'take_message':
// Save to database and notify via Slack/email
await db.messages.create(parameters);
await slack.notify(`New message from ${parameters.caller_name}: ${parameters.message}`);
return res.json({ success: true, message: 'Message recorded' });
case 'lookup_employee':
const employee = await db.employees.findByName(parameters.name);
return res.json({
found: !!employee,
extension: employee?.extension,
department: employee?.department
});
}
});
Get started with SIP4AI in minutes. Self-host it, connect your SIP line, and deploy your AI agent.