import sys import traceback import socketserver import asterisk.agi import json HOST, PORT = "127.0.0.1", 4573 class FastAGI(socketserver.StreamRequestHandler): def handle(self): try: agi=asterisk.agi.AGI(stdin=self.rfile, stdout=self.wfile, stderr=sys.stderr) handler = agi.env['agi_network_script'] if handler == 'handler1': #from channelCount import channel_count agi.verbose("TRONG") #channel_count(agi=agi) elif handler == 'handler2': pass except TypeError as e: print(traceback.format_exc()) sys.stderr.write('Unable to connect to agi://{} {}\n'.format(self.client_address[0], str(e))) except socketserver.socket.timeout as e: sys.stderr.write('Timeout receiving data from {}\n'.format(self.client_address)) except socketserver.socket.error as e: sys.stderr.write('Could not open the socket. Is someting else listening on this port?{}\n'.format(str(e))) except Exception as e: sys.stderr.write('An unknown error: {}\n'.format(str(e))) if _name_ == "__main__": server = socketserver.ForkingTCPServer((HOST, PORT), FastAGI) server.serve_forever()