| name | telephony-integration |
| description | Add or modify telephony providers in assistant-api with transport-aware streamer/webhook implementations, factory wiring, and codec/resampling compatibility. |
Telephony Integration Skill
Mission
Integrate telephony providers safely across webhook payloads, media streams, callbacks, and cleanup paths.
Inputs expected from user
- Transport type: WebSocket, SIP, AudioSocket, or mixed.
- Inbound/outbound requirements.
- Codec and sample-rate constraints.
If missing:
- Use nearest baseline (
twilio, exotel, vonage, asterisk, sip).
- Preserve internal LINEAR16 16k and base resampler usage.
Hard boundaries
In scope:
api/assistant-api/internal/channel/telephony/internal/<provider>/...
api/assistant-api/internal/channel/telephony/telephony.go
- optional:
inbound.go, outbound.go, type/telephony.go, type/streamer.go
- UI telephony registry/component wiring
Out of scope:
- STT/TTS provider internals
- EOS/VAD internals
- integration-api LLM caller logic
Runtime flow checklist
ReceiveCall maps webhook payload to CallInfo.
InboundCall returns provider connect handshake.
- Streamer
Recv/Send handles codec and buffer lifecycle.
StatusCallback maps provider events.
- Disconnect and directive paths cleanly terminate sessions.
Validation commands
go test ./api/assistant-api/internal/channel/telephony/...
go test ./api/assistant-api/internal/adapters/internal/...
cd ui && yarn test providers
./skills/telephony-integration/scripts/validate.sh --check-diff --provider <provider>
References
references/checklist.md
references/telephony-provider-checklist.md
examples/sample.md