Skip to content

πŸš€ The open-source alternative to Twilio

License

Notifications You must be signed in to change notification settings

jonaskriks/fonoster

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

build license: MIT Tweet

Flow

πŸ’¬ Join the conversation πŸ‘ˆ

Fonoster Inc researches an innovative Programmable Telecommunications Stack that will allow for an entirely cloud-based utility for businesses to connect telephony services with the Internet.

Fonoster - Engage with your customers with VoIP or SMS | Product Hunt

Features

The most notable features on FN 0.2 are:

  • Cloud initialization with Cloud-Init
  • Multitenancy
  • Easy deployment of PBXs functionalities
  • Programmable Voice Applications
  • NodeJS SDK
  • Web SDK
  • Support for Amazon Simple Storage Service (S3)
  • Secure API endpoints with Let's Encrypt
  • Authentication with OAuth2
  • Authentication with JWT
  • Role-Based Access Control (RBAC)
  • Plugins-based Command-line Tool
  • Support for Google Speech API
  • Experimental support for Cloud Functions
  • Experimental support for Secret management

Code Examples

A Voice Application is a server that takes control of the flow in a call. A Voice Application can use any combination of the following verbs:

  • Answer - Accepts an incoming call
  • Hangup - Closes the call
  • Play - Takes an URL or file and streams the sound 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
  • 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:

const { VoiceServer } = require("@fonoster/voice");
const voiceServer = new VoiceServer({ base: '/voiceapp' });

voiceServer.listen((req, res) => {
  console.log(req);
  res.play("sound:hello-world");
});

// your app will leave at http://127.0.0.1/voiceapp 
// and you can easily publish it to the Internet with:
// ngrok http 3000

Everything in FN 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:

const Fonoster = require("@fonoster/sdk");
const callManager = new Fonoster.CallManager();

callManager.call({
 from: "9842753574",
 to: "17853178070",
 webhook: "https://5a2d2ea5d84d.ngrok.io/voiceapp"
})
.then(console.log)
.catch(console.error);

Getting Started

To get started with FN use the following resources:

Bugs and Feedback

For bugs, questions, and discussions, please use the Github Issues

Contributing

For contributing, please see the following links:

We're glad to be supported by respected companies and individuals from several industries. See our Github Sponsors learn more.

Sponsors

Find all supporters in our BACKERS.md file.

Support Fono's developers on Gh Sponsors


Special Announcement:

We now have a Slack Channel
There we plan to discuss roadmaps, feature requests and more
Join the channel


Authors

License

Copyright (C) 2021 by Fonoster Inc. MIT License (see LICENSE for details).

About

πŸš€ The open-source alternative to Twilio

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 81.4%
  • TypeScript 18.3%
  • Shell 0.2%
  • Dockerfile 0.1%
  • Mustache 0.0%
  • HTML 0.0%