Webphone
Lightweight SIP based webphone over WebSocket, & essential call features (4-Lines, Mute, Hold, DND).
Install / Use
/learn @soh-kaz/WebphoneREADME
Overview
A full featured Webphone using JsSIP.
- 4 Lines for Call
- Easy to use and powerful API of JsSIP library
- SIP over WebSocket
- Lightweight!
- Feature like Mute, Hold, Transfer and DND (Do not Call)
- Attractive UI
Technology Used
- JsSIP, the JavaScript SIP library
- React + Vite
- React Icons
- Tailwindcss
Docker Support
This project comes with Docker support, making it easy to deploy the Webphone in a containerized environment.
Prerequisites
- Docker installed on your machine
Setup and Running with Docker
- Pull the Docker image from Docker Hub:
docker pull aghasuhail96/webphone
- Run the container:
docker run -p 80:80 aghasuhail96/webphone
- Access the Webphone app at http://localhost:80.
Usage
const phone = new PhoneLib(SIP_USER, SIP_PASS, URL_WEBRTC, PORT_NO_WEBRTC)
//Connect to the SIP Server
phone.connect()
Events
//On Incoming Call
phone.on('incoming', (data)=>{
console.log(data)
})
//On Outgoing Call
phone.on('outgoing', (data)=>{
console.log(data)
})
//On Line Change
phone.on('changeLine', (data)=>{
console.log(data)
})
//On Call Transfered
phone.on('transfer', (data)=>{
console.log(data)
})
//On Calls Rejected while DND is enable
phone.on('dndRejected', (data)=>{
console.log(data)
})
//On Line Hold
phone.on('hold', (data)=>{
console.log(data)
})
//On Line UnHold
phone.on('unhold', (data)=>{
console.log(data)
})
//On Line Muted
phone.on('mute', (data)=>{
console.log(data)
})
//On Line UnMuted
phone.on('unmute', (data)=>{
console.log(data)
})
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.
Screenshot

