I recently made the switch from 3CX as it lacks basic features for home/small-businesses.
FreePBX shines with customizability but the UI/UX is just awful.
A few things that were missing for me were:
the ability to monitor incoming/outgoing calls in realtime
a nice call log
properly working caller id in case I saved contact numbers without area codes
a usable contact manager
So I just build a module that does all this and more. It also integrates with what is already there (contactmanager, calleridlookup, pm2, ami, …). The backend uses node and the frontend is written in React.
It’s free and open source (AGPLv3).
I’m happy about feedback and would love to see contributions from the community.
The module wrapper itself (FreePBX PHP module) is a bit hacky as I had practically zero knowledge about the inner workings of FreePBX modules including all the PHP stuff. Anyway, it works.
Features:
Realtime Call Monitoring
View Active Calls (Incoming/Outgoing)
View Call Logs
Better CallerID Lookup
CallerID for Incoming and Outgoing Calls
Integrates with CallerID Lookup Module
Custom Lookup Rest Endpoint
Can match Numbers with and without custom area codes
Better Contact Management
Integrates with FreePBX ContactManager
Create/Update/Delete Contacts with beautiful UI
Save unknown Numbers from Call Logs directly as new Contacts
Add unknown Numbers from Calls Logs directly to already existing Contacts (via a Search feature)
Start Calls directly from the browser from any extension (or ring group) to any number
Beautiful UI (React + NodeJS)
Multi-Language Support
supported Languages (yet): English , German (Deutsch)
new languages can be added easily
Automatic Phonebook Generation
generates IP phone compatible phonebooks (including multiple saved phone numbers per contact)
supported manufacturers (yet): yealink, fanvil
FreePBX Module Wrapper
Easy install via FreePBX Module Admin
Uses PM2 Module to run the backend service
Administration View in FreePBX to configure the panel
(and as a VM costs less than 1cent per hour to give it a spin, anyone curious could throw a quarter of a buck and an hour or two of time at it perhaps )
The nodejs version requirement is just a blind guess from my side. I developed this using the latest LTS (v16). I actually don’t know which node versions really are supported (as I don’t want to look into repos of the dependencies). I’m sure 16 and 15 work fine. As 14 is the last LTS is should also work. Only the package-locks will be broken as 14->15 changed the locking format. Just remove the engine requirement and try it.
I also thought the supported tag is the same as depends->version, but I’ll add it.
The one thing I have headaches with is the database schema of the contactmanager module. Is there any way to pin the module to the schema version? I’m afraid that a non-major update of the contactmanager will change the schema or field values and silently break compatibility with my module. I mean, I’ll notice it when someday my contacts go crazy, but I don’t want to be responsible for broken database entries.