Twilio plugin for Vision Agents - Voice call integration with media streaming
Project description
Twilio Plugin
Twilio plugin for Vision Agents enabling voice call integration with real-time audio streaming.
Features
- Media Streaming: Bidirectional audio streaming via Twilio Media Streams
- Call Registry: Track active calls with metadata (caller info, timestamps)
- Audio Conversion: Automatic mulaw/PCM conversion for Twilio compatibility
- WebSocket Management: Handle Twilio WebSocket connections
Installation
uv add "vision-agents[twilio]"
# or directly
uv add vision-agents-plugins-twilio
Usage
from vision_agents.plugins import twilio
# Create a call registry to track active calls
registry = twilio.CallRegistry()
# When receiving a voice webhook, register the call
call = registry.create(call_sid="CA123...", form_data={"From": "+1234567890", ...})
# Create a media stream for the WebSocket connection
stream = twilio.MediaStream(websocket)
await stream.accept()
# Associate stream with call
call.twilio_stream = stream
# Run the stream (blocks until call ends)
await stream.run()
Components
TwilioCall
Dataclass representing an active call session:
@dataclass
class TwilioCall:
call_sid: str
form_data: dict[str, Any] # All Twilio webhook data
twilio_stream: Optional[TwilioMediaStream]
stream_call: Optional[Any] # Stream video call
started_at: datetime
ended_at: Optional[datetime]
# Convenience properties
from_number: str # Caller's phone number
to_number: str # Called phone number
call_status: str # Current call status
TwilioCallRegistry
In-memory registry for managing active calls:
registry = twilio.CallRegistry()
registry.create(call_sid, form_data) # Register new call
registry.get(call_sid) # Look up call
registry.remove(call_sid) # Remove and mark ended
registry.list_active() # List active calls
TwilioMediaStream
Manages Twilio Media Stream WebSocket connections:
stream = twilio.MediaStream(websocket)
await stream.accept()
# Access the audio track for publishing
stream.audio_track # AudioStreamTrack at 8kHz
# Send audio back to Twilio
await stream.send_audio(pcm_data)
# Run until stream ends
await stream.run()
Audio Utilities
from vision_agents.plugins.twilio import mulaw_to_pcm, pcm_to_mulaw, TWILIO_SAMPLE_RATE
# Convert Twilio mulaw to PCM
pcm = mulaw_to_pcm(mulaw_bytes)
# Convert PCM to Twilio mulaw
mulaw = pcm_to_mulaw(pcm_data)
Configuration
| Parameter | Description | Default |
|---|---|---|
TWILIO_SAMPLE_RATE |
Twilio audio sample rate | 8000 (8kHz) |
Environment Variables
TWILIO_ACCOUNT_SID: Your Twilio account SIDTWILIO_AUTH_TOKEN: Your Twilio auth token
Dependencies
- vision-agents
- twilio
- numpy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vision_agents_plugins_twilio-0.4.2.tar.gz.
File metadata
- Download URL: vision_agents_plugins_twilio-0.4.2.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8cbfb503c1465d4a108694de23fb9ed27a8097b1977b4b7287142decb391ecf2
|
|
| MD5 |
80c14aca3d81d5ca534b7bdb88261750
|
|
| BLAKE2b-256 |
d99660ffd8498f82b6bf43b138881fea59fb910948cfc88b49816316b53df262
|
File details
Details for the file vision_agents_plugins_twilio-0.4.2-py3-none-any.whl.
File metadata
- Download URL: vision_agents_plugins_twilio-0.4.2-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d379cab7e3bc668520e251cde959a5c9a6a39bc9508576d07e1a4f396b0305a2
|
|
| MD5 |
e88ac8dd4579ecd67dea0ba5960d5128
|
|
| BLAKE2b-256 |
e88908ffef3644b76cecdd764e783056b7b2b6e0df332521935ad83b7bf96c22
|