All fields are required
Phone numbers, SIP trunks, PSTN, and media streaming on infrastructure where AI runs inside the call, not outside firing webhooks.
Webhooks fire and forget. AI conversations require persistent state: who is talking, what step are they on, what context has been established. You rebuild that state on every request.
Audio streams out to an STT service, transcript goes to an LLM, response goes to a TTS service, audio streams back. Each hop adds latency. Each vendor adds a failure mode.
Zombie calls, double updates, phantom transfers. Webhook-based state reconstruction creates race conditions that surface under load, not in demos.
When your telephony provider pivots to AI, core CPaaS capabilities get deprioritized. You need a platform that treats phone infrastructure as the product.
from signalwire_agents import AgentBase
from signalwire_agents.core.function_result import SwaigFunctionResult
class SupportAgent(AgentBase):
def __init__(self):
super().__init__(name="Support Agent", route="/support")
self.prompt_add_section("Instructions",
body="You are a customer support agent. "
"Greet the caller and resolve their issue.")
self.add_language("English", "en-US", "rime.spore:mistv2")
@AgentBase.tool(name="check_order")
def check_order(self, order_id: str):
"""Check the status of a customer order.
Args:
order_id: The order ID to look up
"""
return SwaigFunctionResult(f"Order {order_id}: shipped, ETA April 2nd")
agent = SupportAgent()
agent.run()
| Capability | Details |
|---|---|
| Phone Numbers | Local, toll-free, international. 60+ countries. Provision via API. |
| SIP Trunking | Standards-compliant. Bring your own carrier or use ours. Full SIP registrar. |
| PSTN | Origination and termination. Direct carrier interconnects. |
| Media Streaming | Real-time audio via WebSocket. |
| WebRTC | Browser-based calling via scoped subscriber tokens. |
| SMS/MMS | Programmable messaging. |
| REST API | Twilio-compatible patterns for core operations. |
| AI Voice Agents | Platform-native. Declarative YAML or Python SDK. $0.16/min AI processing. |
Port a few numbers. Point them at your existing webhook application. Verify everything works with compatible APIs.
Port the rest. No downtime during the porting window. 5 to 10 business days for US numbers.
Replace webhook state reconstruction with platform-native state. Use declarative YAML where it fits. Add AI capabilities to new features.
One vendor for telephony and AI. One invoice. One support channel. No middleware margins.
Core operations (calls, messages, number provisioning) use compatible API patterns. Update credentials and endpoint to migrate. Native interfaces provide additional capabilities beyond the compatibility layer.
5 to 10 business days for US numbers. No downtime during the porting window. Your numbers continue working on the existing carrier until the port completes.
AI processing (STT, LLM inference, TTS, and orchestration) is $0.16/min. Transport (SIP, PSTN) is billed separately at carrier rates. One invoice covers everything. SIP trunking is usage-based with no per-channel fees.
Yes. Connect your SIP trunks to SignalWire. Use the platform's routing, state management, and AI capabilities with your carrier's PSTN connectivity.
SignalWire handles phone numbers, SIP trunking, PSTN, messaging, and media streaming without any AI. Add AI capabilities when you need them.
Trusted by 2,000+ companies
Port your numbers, update your credentials, and gain platform-native AI, state management, and governed inference.