diff --git a/telepest.py b/telepest.py new file mode 100755 index 0000000..f71d0ad --- /dev/null +++ b/telepest.py @@ -0,0 +1,64 @@ +#!/usr/bin/python + +import sys +import re +import urllib2 +import json +import syslog + +env = {} +tests = 0; + +while 1: + line = sys.stdin.readline().strip() + + if line == '': + break + key,data = line.split(':') + if key[:4] <> 'agi_': + #skip input that doesn't begin with agi_ + sys.stderr.write("Did not work!\n"); + sys.stderr.flush() + continue + key = key.strip() + data = data.strip() + if key <> '': + env[key] = data + +def checkresult (params): + params = params.rstrip() + if re.search('^200',params): + result = re.search('result=(\d+)',params) + if (not result): + sys.stderr.write("FAIL ('%s')\n" % params) + sys.stderr.flush() + return -1 + else: + result = result.group(1) + #debug("Result:%s Params:%s" % (result, params)) + sys.stderr.write("PASS (%s)\n" % result) + sys.stderr.flush() + return result + else: + sys.stderr.write("FAIL (unexpected result '%s')\n" % params) + sys.stderr.flush() + return -2 + +if env.has_key('agi_callerid'): + match = re.match('^(0)(44)?([0-9]{10})$', env['agi_callerid']) + if match: + num = '0' + match.group(3) + res = json.load(urllib2.urlopen('http://www.telepest.co.uk/%s?f=json' % num, timeout=3)) + syslog.syslog(syslog.LOG_INFO | syslog.LOG_DAEMON, + "telepest results: %s" % str(res)) + telepest = res.has_key('status') and (res['status'] == 1) + caller_name = None + if res.has_key('callers') and len(res['callers']) > 0: + caller_name = res['callers'][0] + if telepest and (caller_name != None): + sys.stdout.write('SET CALLERID "TP: %s"<%s>' % (caller_name, num)) + elif telepest: + sys.stdout.write('SET CALLERID "Telepest"<%s>' % num) + elif caller_name != None: + sys.stdout.write('SET CALLERID "%s"<%s>' % (caller_name, num)) + sys.stdout.flush()