Wrote an Asterisk GUI that automatically bills with FreeAgent

YAP (Yet Another PBX) is now v1.0.0
License AGPLv3

For a while I had wanted to write a telephone system that would also handle billing and interconnect with 3rd party accountancy software. After 10 months working on it on and off version 1.0.0 is ready.

All YAP source code, SQL and BASH code is human made with no AI used. If you like my work please star and fork the YAP GitHub repo at: GitHub - ellwould/yap: YAP (Yet Another PBX) - A GUI to administrate a multi-tenanted SIP Server, automatically creates invoices and connects to 3rd party accountancy software to send invoices. YAP is written in Go and uses the Asterisk framework. · GitHub

YAP is a multi-tenant phone system with 6 different account types to log in with, below are 3 live demo sites setup to view what a YAP admin, customer and PBX account type have access to:

Live (Read Only) demo website, logged in as a YAP Admin account: ⊛ YAP (Yet Another PBX) ⊛

Live (Read Only) demo website, logged in as a Customer account: ⊛ YAP (Yet Another PBX) ⊛

Live (Read Only) demo website, logged in as a PBX account: ⊛ YAP (Yet Another PBX) ⊛

YAP Features include:

  • No passwords stored in the database as oauth2-proxy is used for authentication

  • Use GitHub to loggin into YAP but can also be configured to use Gmail, GitLab etc

  • Can be connected to a third party accountancy software (FreeAgent®) to send invoices automatically via the FreeAgent® API

  • Invoices for Extension/PBX creation/rental/removal are automatically added

  • Can set different tax rates and prices per customer for Extension/PBX creation/rental/removal

  • YAP can be set to bill if your VAT registered or not VAT registered

  • Create/Update/View/Delete Customers

  • Create/Update/View/Delete PBX’s

  • Create/Update/View/Delete Extentsions (SIP Endpoints)

  • Create/Update/View/Delete user accounts

  • Create/View/Delete Invoices

  • Create/Update/View/Delete Tax Rates

  • Create/Update/View/Delete Suppliers

  • Create/Update/View/Delete Services

  • Create/Update/View/Delete Products

A range of software, programming and markup languages is used in the YAP project:

  • Nginx (Web proxy)
  • MariaDB (Database)
  • Asterisk (VoIP Server)
  • OAuth2 Proxy (Authentication)
  • ODBC (Database Connection)
  • Go (YAP)
  • BASH (Install Script)
  • HTML/CSS (YAP)
  • JavaScript (YAP)
  • Go (YAP)
  • SQL (Install Script/YAP)

Use of the word “accountancy”, gives me a fair clue why the UI is the way it is :blush:. I’m hoping it will improve with time. I am one to always keep an eye on any multitenant Asterisk-based solution. Are you considering throwing a Kamailio/openSIPS in front of that as the product evolves? I see you try to do a lot around billing, one billing issue I’ve encountered is the need to bill some sort of monthly line-rental for DIDs. Probably something you could look into. Also some providers bill for inbound and outbound calls. Again something to probably put on your “very long list” (as opposed to a shortlist)

The design of YAP’s GUI will probably not change much any time soon; with the YAP GUI I really wanted a way to show as much information as possible but also keep it simplistic and on a single page :slight_smile: A SIP proxy is a good idea and something I thought about adding later, but there are other things I would prioritise implementing first in the YAP project, such as fail2ban and Coturn. In YAP you can already bill the actual phone number rental/cease/setup as well as other things like routers, broadband, VoIP phones etc, but as for billing actuall calls/minutes that is something I am currently working on and will be ready roughly next week, the name of the program is CDR Importer.

CDR Importer allows the import of CDR’s and rate cards in the CSV file format to be imported into a database (MySQL/MariaDB) and re-rated. From there the admin would select an option that inserts the re-rated CDR(s) into YAP based on an identifier/tag (like a phone number or SIP trunk ID) and allow the calls/minutes to be invoiced. CDR Importer is capable of handling many different suppliers of SIP trunks/minutes.

Unlike YAP CDR Importer works via the CLI and is only designed to work with YAP, the repo is here - GitHub - yet-another-pbx/cdr-importer: CDR Importer is a CLI tool used to import CDR's, re-rate them and insert them as an invoice item into the YAP (Yet Another PBX) invoice_item table. This software is specifically designed to work with YAP - https://github.com/yet-another-pbx/yap · GitHub

Website now available for the YAP Open Source project, contains guides/manuals on how to install YAP, connect to FreeAgent® and install CDR Importer

Updated the YAP (Yet Another PBX) manual to include a guide on viewing/adding/updating/deleting a SIP extension

YAP allows for different options to be set when creating/updating an extension, some of the options are:

- DTMF Mode

- Call Group

- Media Encryption

- ICE Support

- Direct Media

- Force RPort

- IPv4/6 address allowed

- Allow Transfer

If your interested in the YAP Go source code or want to install and test YAP the repository is available at - GitHub - yet-another-pbx/yap: YAP (Yet Another PBX) - A GUI to administrate a multi-tenanted SIP Server, automatically creates invoices and connects to 3rd party accountancy software to send invoices. YAP is written in Go and uses the Asterisk framework. · GitHub

YAP official website, SIP Extension page - SIP Extension Page