import socket from requests import get hints_exten = "115" presence_api = "http://10.1.1.2:8081" pbx_ip = "10.1.1.1" port = 5038 buffersize = 1024 def process_event(resp): d = {} for line in resp.split("\r\n"): try: name,data = line.split(": ", 1) except ValueError: print(resp) return None d[name] = data return d with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((pbx_ip,port)) s.sendall(b"\r\nAction: login\r\nUsername: me\r\nSecret: aa\r\n\r\n") while True: data = s.recv(buffersize).decode("utf-8") for resp in data.split("\r\n\r\n"): resp = process_event(resp) if not resp: continue print(resp) if "Event" in resp and resp["Event"] == "ExtensionStatus" and resp["Exten"] == EXTEN: if resp["Status"] == "1": get(presence_api + "/_calls") elif resp["Status"] == "0": get(presence_api + "/_clear")