From 4c738b9fa0f6afce956fc8b020a38cebf40ee7e1 Mon Sep 17 00:00:00 2001 From: Sean DuBois Date: Thu, 16 Nov 2023 10:29:02 -0500 Subject: [PATCH] Start README --- README.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 00000000..09663849 --- /dev/null +++ b/README.md @@ -0,0 +1,76 @@ + + + + + The LiveKit icon, the name of the repository and some sample code in the background. + + + +# LiveKit SIP + + +WebRTC is proving to be a versatile and scalable transport protocol both for media ingestion and delivery. However, not all devices support WebRTC. SIP provides a way to bring SIP traffic into a LiveKit room. + + +## Capabilities + +SIP is meant to be a full featured SIP bridge, not all features are implemented yet. Currently, the following features are supported: +- Dialing Out (Sending INVITEs) +- Dialing In (Accepting INVITEs) +- Digest Authentication +- Touch Tone (Sending and Reading DTMF) + +If you need something added, we would love to hear from you! + +## Documentation + +### Workflow + +To accept SIP traffic into your running SIP service, the workflow goes like this: + +* create an SIP Trunk with `CreateSIPTrunk` API (to livekit-server) +* create an SIP Dispatch Rule with `CreateSIPDispatchRule` API (to livekit-server) +* SIP service receives a call +* SIP service connects to the LiveKit room and SIP caller is a participant + +### Service Architecture + +The SIP service and the LiveKit server communicate over Redis. Redis is also used as storage for the SIP session state. The SIP service must also expose a public IP address for remote SIP peers to connect to. + +### Config + +The SIP service takes a YAML config file: + +```yaml +# required fields +api_key: livekit server api key. LIVEKIT_API_KEY env can be used instead +api_secret: livekit server api secret. LIVEKIT_API_SECRET env can be used instead +ws_url: livekit server websocket url. LIVEKIT_WS_URL env can be used instead +redis: + address: must be the same redis address used by your livekit server + username: redis username + password: redis password + db: redis db + +# optional fields +health_port: if used, will open an http port for health checks +prometheus_port: port used to collect prometheus metrics. Used for autoscaling +log_level: debug, info, warn, or error (default info) +sip_port: port to listen and send SIP traffic (default 5060) +rtp_port: port to listen and send RTP traffic (default 10000-20000) +``` + +The config file can be added to a mounted volume with its location passed in the SIP_CONFIG_FILE env var, or its body can be passed in the SIP_CONFIG_BODY env var. + + + +
+ + + + + + + +
LiveKit Ecosystem
Client SDKsComponents · JavaScript · iOS/macOS · Android · Flutter · React Native · Rust · Python · Unity (web) · Unity (beta)
Server SDKsNode.js · Golang · Ruby · Java/Kotlin · PHP (community) · Python (community)
ServicesLivekit server · Egress · Ingress
ResourcesDocs · Example apps · Cloud · Self-hosting · CLI
+