# Fonoster: The open-source alternative to Twilio
[Fonoster](https://fonoster.com) is researching an innovative Programmable Telecommunications Stack that will allow businesses to connect telephony services with the Internet entirely through a cloud-based utility.
[](https://github.com/fonoster/fonoster/actions/workflows/release.yaml) [](https://discord.gg/4QWgSz4hTC)
## Features
The most notable features of Fonoster are:
- [x] Multitenancy
- [x] Easy deployment of PBX functionalities
- [x] Programmable Voice Applications
- [x] NodeJS SDK
- [x] Support for Amazon Simple Storage Service (S3)
- [x] Secure API endpoints with Let's Encrypt
- [x] Authentication with OAuth2
- [X] Authentication with JWT
- [x] Role-Based Access Control (RBAC)
- [x] Plugins-based Command-line Tool
- [x] Support for Google Speech APIs
## Code Examples
A Voice Application is a server that controls a call's flow. A Voice Application can use any combination of the following verbs:
- `Answer` - Accepts an incoming call
- `Hangup` - Closes the call
- `Play`: Takes a URL with a media file and streams the sound back to the calling party
- `PlayDtmf` - Takes a DTMF sequence and plays it back to the calling party
- `Say` - Takes a text, synthesizes the text into audio, and streams back the result
- `Gather` - Waits for DTMF or speech events and returns back the result
- `SGather` - Returns a stream for future DTMF and speech results
- `Stream` - Creates a bidirectional stream to send and receive audio from a caller
- `Dial` - Passes the call to an Agent or a Number at the PSTN
- `Record` - It records the voice of the calling party and saves the audio on the Storage sub-system
- `Mute` - It tells the channel to stop sending media, effectively muting the channel
- `Unmute` - It tells the channel to allow media flow
Voice Application Example:
```
…
```
Everything in Fonoster is an API first, and initiating a call is no exception. You can use the SDK to start a call with a few lines of code.
Example of originating a call with the SDK:
```
…
```
## Getting Started
To get started with Fonoster, use the following resources:
- [Deploying Fonoster with Docker](https://docs.fonoster.com/self-hosting)
- [Guide for Early Access User](https://docs.fonoster.com/quickstart)
- [Getting started with Fonoster](https://docs.fonoster.com/quickstart)
- [How we created an open-source alternative to Twilio and why it matters](https://dev.to/fonoster/how-we-created-an-open-source-alternative-to-twilio-and-why-it-matters-434g)
## Give a Star! ⭐
Please give it a star if you like this project or plan to use it. Thanks
## Bugs and Feedback
For bugs, questions, and discussions, please use the [Github Issues](https://github.com/fonoster/fonoster/issues)
## Contributing
For contributing, please see the following links:
- [Contribution Documents](https://github.com/fonoster/fonoster/blob/main/CONTRIBUTING.md)
- [Contributors](https://github.com/fonoster/fonoster/contributors)
Pedro Sanders
Efrain Peralta
Angel M. Bencosme
Wandy Hernandez
Obruche Wilfred Oghenechohwo
Wardner Lara
Richard HC
Nageswari
Hoan Luu Huu
Speedy Monster
harry_dev
Kanishka Chowdhury
Brayan Munoz V.
Ivan Milisavljevic
Dede kurniawan
gabriel duncan
Prasurjya Pran Borah
Jordan
Hector Ventura
0xflotus
Manish
Osama Sehgol
Paul Sütterlin
Riad Vargas
Shailendra Paliwal
The Gitter Badger
Yuri
cdrsociate
pavan
nrjchnd
Salami Bashir
Shivam Deepak Chaudhary
Yossef Haim
telenautical
Wisdom Elendu