Coder Social home page Coder Social logo

fonoster / goodtok Goto Github PK

View Code? Open in Web Editor NEW
77.0 77.0 6.0 55.81 MB

A better shopping experience 🤙

Home Page: https://goodtok.io

License: MIT License

HTML 3.39% JavaScript 1.90% CSS 5.48% TypeScript 88.55% Shell 0.20% Dockerfile 0.15% Handlebars 0.33%
customer-engagement customer-experience cx fonoster video webrtc

goodtok's Introduction

Fonoster: The open-source alternative to Twilio

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

Fonoster community banner

build release Discord Code Of Conduct GitHub Twitter Follow

Attention ⚠️:

Exploring Fonoster: We encourage new users to initially explore Fonoster's features through our SaaS (Software as a Service) option. This platform is free to start and offers a comprehensive experience of what Fonoster can do.

Installation Advisory: Please note that the current installation process for Fonoster is complex. We are actively working to simplify this process. We recommend waiting for our upcoming 0.4 or 0.5 release before attempting a direct installation. These future releases are designed to offer a more user-friendly installation experience.

Thank you for your interest in Fonoster. We are committed to enhancing your experience with every release.

Features

The most notable features of Fonoster 0.4 are:

  • Multitenancy
  • Easy deployment of PBX functionalities
  • Programmable Voice Applications
  • NodeJS 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 APIs
  • Secrets managed by Hashicorp Vault

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 a 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 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:

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 Fonoster, use the following resources:

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

Contributing

For contributing, please see the following links:

Pedro
Pedro Sanders
Efrain
Efrain Peralta
Wardner
Wardner Lara
Richard
Richard HC
Hoan
Hoan Luu Huu
Speedy
Speedy Monster
Brayan
Brayan Munoz Vargas
Dede
Dede kurniawan
gabriel
gabriel duncan
Prasurjya
Prasurjya Pran Borah
Hector
Hector Ventura
0xflotus/
0xflotus
Manish/
Manish
Osama
Osama Sehgol
Paul
Paul Sütterlin
Riad
Riad Vargas
Shailendra
Shailendra Paliwal
The
The Gitter Badger
Yuri/
Yuri
cdrsociate/
cdrsociate
pavan/
pavan
nrjchnd/
nrjchnd
Salami
Salami Bashir
Shivam
Shivam Deepak Chaudhary
showf68/
showf68
telenautical/
telenautical
Wisdom
Wisdom Elendu
Judge
Judge Godwins
Jon
Jon Chin
Harish
Harish Chander
Gary
Gary Barnes
Fidal
Fidal Mathew
Dung
Dung Duc Huynh (Kaka)
Ciprian/
Ciprian
Christopher
Christopher Adigun
Bruno
Bruno Wego
Bruno
Bruno Arueira
Antonius
Antonius Ostermann
Ali
Ali Firat ARI
Alex/
Alex
Albert
Albert E. Hidalgo Taveras

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) 2024 by Fonoster Inc. MIT License (see LICENSE for details).

goodtok's People

Contributors

dependabot[bot] avatar github-actions[bot] avatar obrucheoghene 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  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

goodtok's Issues

[BUG]: "Accept-Invite" link leads to blank page

What happened?

A user encounters a blank page after clicking on an "accept-invite" link received via email from a workspace admin or owner.

Steps to reproduce

  1. Admin or owner sends an invite
  2. User receives the invite email and clicks on the link
  3. User experiences a blank page instead of the expected content

Expected behavior

The expected behavior is a confirmation and redirection to the login page.

Additional context

The issue has not been reproducible on my end. Further investigation is needed to identify and resolve the underlying cause.

[BUG]: Fail to switch call modes in Goodtok

What happened?

Goodtok fails to properly switch between media modes during calls. Regardless of the initial media agreement (voice or video), users cannot switch to a voice-only mode after starting in video mode; the camera indicator erroneously remains active. Similarly, if the call begins with voice-only, an attempt to switch to video mode does not activate the video feed.

Steps to reproduce

  1. Start a video call using [Application Name]
  2. Attempt to stop the video feed
  3. Observe that the camera indicator remains active
  4. End the call.
  5. Initiate a voice-only call.
  6. Attempt to switch to video mode during the call.
  7. Note the failure of the application to send a video feed.

Expected behavior

The application should allow users to switch between video and voice-only modes fluidly during a call. When switching from video to voice-only, the camera indicator should deactivate to reflect the privacy status accurately. Similarly, switching from voice-only to video should activate the video feed without issues.

Additional context

No response

Suggestion or Question.

Hi,
as you are Asterisk Specialist man,
Would it be possible to connect agent panel and Extensions to asterisk PBX?
for example the agents get calls from asterisk or they have asterisk extension?

thanks

[BUG]: INSTALLATION GUIDE FAILS TO START APP WHEN PORTS ARE ALREADY IN USE.

What happened?

The application could not start locally following the installation guide.
This is because one of the ports required (Peerjs server port) was already in use in my local machine.

Screenshot 2023-12-30 at 12 51 40 PM

Steps to reproduce

  • Start or ensure a process is running on port 9000 e.g php-fmp as shown screenshot
  • Follow the installation guide in the readme.

Expected behavior

  • A way to update the container ports in a situation where ports are already been used

Additional context

RECOMMENDATION

  • Add a more flexible installation process where users can update container port on the compose.yaml file

[BUG]: Possible EventEmitter memory leak detected

What happened?

We are currently observing the following logs in the APIServer due to a bug in a dependency. The error is similar to the following:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace: 
    at EventEmitter.<anonymous> (events.js:139:15)
    at EventEmitter.<anonymous> (node.js:385:29)
    at Server.<anonymous> (server.js:20:17)
    at Server.emit (events.js:70:17)
    at HTTPParser.onIncoming (http.js:1514:12)
    at HTTPParser.onHeadersComplete (http.js:102:31)
    at Socket.ondata (http.js:1410:22)
    at TCP.onread (net.js:354:27)

This issue occurs when the getLogger function is called more than 31 times.

Steps to reproduce

Start the API Server and monitor the console.

Expected behavior

We should be able to import the logger as much as needed without seeing this warning.

Additional context

The issue will need to be fix at @fonoster/logger

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.