Giter VIP home page Giter VIP logo

astive's Introduction

Fonoster: The open-source alternative to Twilio

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 community banner

build release Discord Code Of Conduct GitHub Twitter Follow

Features

The most notable features on FN 0.4 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 serverConfig = {
  pathToFiles: `${process.cwd()}/sounds`,
};

new VoiceServer(serverConfig).listen(
  async (req, res) => {
    console.log(req);
    await res.answer();
    await res.play(`sound:${req.selfEndpoint}/sounds/hello-world.sln16`);
    await res.hangup();
  }
);

// your app will live at http://127.0.0.1:3000 
// 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:

Give a Star! โญ

If you like this project or plan to use it in the future, please give it a star. Thanks ๐Ÿ™

Bugs and Feedback

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

Contributing

For contributing, please see the following links:

Sponsors

We're glad to be supported by respected companies and individuals from several industries.

Find all our supporters here

Become a Github Sponsor

Authors

License

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

astive's People

Contributors

astiveteam avatar ecabrerar avatar psanders avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

astive's Issues

Error in ATK command 'version.sh'.

Error: Main method not found in class org.astivetoolkit.Version, please define the main method as: public static void main(String[] args)

Define/Refine integration with third-party libraries.

The integration with third-party libraries needs to be improved. The goal is to create a JAR including only the necessary dependencies. Maven plugin "shade" seems to be a good solution. However, its cause and overweight in the Jar since it adds all the transitive dependencies.

This should be configurable.

Resource: server-core/src/main/java/org/astivetoolkit/server/monitor/FastAgiConnectionMonitor.java
Location: line 141

Add VoiceComposer to class MenuItem.

By doing this we allow the developer compose a voice using the function "Say" in Asterisk AGI. For example, for the text "This is day '2012-02-01'" you will have some like:

"VoiceComposer composer = new VoiceComposer();
composer.sayAlpha("This is day").silence(1).sayDate('2012-02-01');"

Bug in CommandProcessor.

CommandProcessor is failing to build commands properly when parameters in commands are not sort by "position".

Logger not configured correctly for 'astive' command.

When executing the command astive with the option "deploy/undeploy/stop" and "--help" astive display the next msg:

log4j:WARN No appenders could be found for logger (com.phonytive.astive.server.AstiveServer).
log4j:WARN Please initialize the log4j system properly.

Move this to a converter.

Resource: api/api-agi/src/main/java/org/astivetoolkit/agi/CommandProcessor.java
Location: line 146

Avoid unused imports

Import just used classes, avoid importing classes using practice like 'org.astivetoolkit.agi.*;' .

Remove all imports like 'org.astivetoolkit.agi.*;' and just import the used classes.

Create a BuildHive account

BuildHive is a free cloud-hosted continuous integration service for GitHub projects, based on Jenkins.

It starts a build and test cycle every time it sees a new commit to a registered Github repository.

It will also automatically schedule builds for Github pull requests, and leave a pass/fail comment on the pull request, so that project owners can know whether pull requests pass all the tests before merging them, and contributors do not have to wait for all tests to run on their own machine before submitting a pull request.

http://wiki.cloudbees.com/bin/view/DEV/BuildHive

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.