PBX in a Flash / FreePBX (and I’m sure most other PBX builds) allow for a Caller ID Lookup Source to be specified. This takes inbound caller IDs, passes them to a service which then returns a meaningful name.
Such a system can be implemented extremely quickly using the lightweight Python Flask framework.
The following snippet creates a basic application which will accept a number and return a string. You will need to add your own lookup logic, be it a database query or some other method. For our implementation we query a database which was populated with client data from our CRM.
from flask import request from flask import Flask app = Flask(__name__) @app.route(''/'') def index(): num = request.args.get("number") if num == "anonymous": return("CallerID Blocked") # # cid = "your lookup logic goes here" # return(cid) if __name__ == "__main__": app.debug = True app.run(host="0.0.0.0")
Once the web app is running, configure a CallerID Lookup Source within the FreePBX interface (Admin > CallerID Lookup Sources) and attach the source to each Inbound Route (Connectivity > Inbound Routes). For the query, specify
number=[NUMBER], this will format the query in a manner that is consistent with what our our app expects to receive.