Creating a HTTP CallerID Lookup Source for FreePBX
Posted on April 07, 2014
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.