SIP Gateway

SIP trunks in, Ulai SFU voice rooms out.

ulai-sip-module is a single Go binary (sip-sfu-gateway) that puts a phone call into an Ulai SFU room. A carrier’s INVITE is routed, admitted and answered; an API call dials out through a trunk. Either way the caller ends up as an ordinary WebRTC participant talking to whoever else is in the room.

Source: github.com/ulaidotin/ulai-sip-module

Run it

docker run -d --name ulai-sip \
  -e ULAI_CONTROL_PLANE_URL=https://stgcp.ulai.co.in \
  -e SIP_ROUTING_REDIS_URL='redis://USER:PASSWORD@redis.ulai.co.in:6379' \
  -e SIP_PUBLIC_IP=148.113.58.51 \
  -e SIP_LISTEN_ADDR=0.0.0.0:5060 \
  -e SIP_TRANSPORT=udp \
  -e SIP_RTP_HOST=0.0.0.0 \
  -e SIP_RTP_PORT_LOW=10000 \
  -e SIP_RTP_PORT_HIGH=10500 \
  -e SIP_HTTP_PORT=8082 \
  --network host \
  asia-south1-docker.pkg.dev/arctic-operand-415316/ulai/sip:v6

--network host is not optional — see networking.

Dial out

curl -X POST http://148.113.58.51:8082/sip/originate \
  -H 'Authorization: Bearer ulai_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -d '{
    "to_number":        "+919363399639",
    "trunk_id":         "74958094-8c76-419f-aa42-d4eac6768ec2",
    "project_id":       "fa3f23f8-a75d-44a4-84f0-6a1c828f579f",
    "from_number":      "+13187184515",
    "name":             "sip-module",
    "max_participants": 8,
    "offer_srtp":       true,
    "require_srtp":     true,
    "dial_verbatim":    false,
    "session_id":       "527f78a3262dbe8b0d0a678a9e98ac29"
  }'

In this section

  • Overview — what it does, what it does not do, and where it sits in the platform.
  • Getting started — prerequisites, build, configuration, and your first inbound and outbound call.
  • Concepts — call flows, the routing plane, and the media pipeline.
  • Configuration — every environment variable and built-in timeout.
  • HTTP API/health, /calls and /sip/originate.
  • Operations — deployment, networking, observability and troubleshooting.

Overview

What the gateway does, and where it sits in the platform.

Getting started

Run the image and put a call through it.

Concepts

How the gateway is put together and how a call moves through it.

Configuration

Every environment variable, its default, and what breaks when it is wrong.

HTTP API

/health, /calls and /sip/originate.

Operations

Deploying it, networking it, watching it, and fixing it.

Last modified September 21, 2026: removed contents (b99f1a5)