A lightweight SIP call bridging tool for VOIP.MS that connects two phone numbers via automated transfer.
- 🔗 Bridges two phone calls using SIP REFER method
- 📞 HD voice support with G.722 codec
- 🚀 Fast and lightweight Go implementation
- 🔒 Secure digest authentication
- 📦 Nix flake for reproducible builds
- 🖥️ Cross-platform support (macOS, Linux)
# Run directly
nix run github:ak2k/siplink -- 15551234567 15559876543
# Install to profile
nix profile install github:ak2k/siplinkgit clone https://github.com/ak2k/siplink
cd siplink
go build -o siplink main.goSet your VOIP.MS credentials as environment variables:
export VOIPMS_USER='your_voipms_username'
export VOIPMS_PASS='your_voipms_password'
export VOIPMS_SERVER='chicago.voip.ms' # Optional, defaults to chicagoSee VOIP.MS Recommended POPs for the full list of available servers and their locations.
# Basic usage
siplink <source_number> <destination_number>
# Example
siplink 15551234567 15559876543
# With environment override
VOIPMS_SERVER=toronto.voip.ms siplink 14161234567 14169876543Using rbw, a fast Bitwarden CLI:
-
Store your credentials in Bitwarden:
- Item name:
voipms(or any name you prefer) - Custom fields:
voipms_user: Your VOIP.MS usernamevoipms_pass: Your VOIP.MS password
- Item name:
-
Install and configure rbw:
# Install rbw nix-env -iA nixpkgs.rbw # or add to your nix configuration # First-time setup rbw config set email [email protected] rbw login rbw sync
-
Use with siplink:
# Set credentials from Bitwarden export VOIPMS_USER=$(rbw get "voipms" --field voipms_user) export VOIPMS_PASS=$(rbw get "voipms" --field voipms_pass) export VOIPMS_SERVER="chicago.voip.ms" # or your preferred server # Run siplink siplink 15551234567 15559876543
- Registration: Authenticates with VOIP.MS SIP server
- Call Initiation: Places call to first number
- Transfer: Uses SIP REFER to transfer call to second number
- Monitoring: Tracks transfer progress via NOTIFY messages
- Completion: Exits cleanly when transfer succeeds
- VOIP.MS account with sub-account credentials
- Go 1.21+ (for building from source)
- Nix (for nix-based installation)
Use 11-digit format for US/Canada numbers: 1XXXXXXXXXX
- Verify credentials are correct
- Check if your IP is whitelisted in VOIP.MS settings
- Try a different server if connection fails
Some carriers may not support SIP REFER transfers. Test with known working numbers first.
MIT License - see LICENSE file for details
Pull requests welcome! Please ensure:
- Code follows Go conventions
- Tests pass
- Documentation is updated
- Both
flake.lockandvendorHashare updated when dependencies change
Built with SIPGO - a modern SIP library for Go.