#!/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()