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