Last active 1670065464

connects to an asterisk manager and picks up ExtensionStatus messages. ties into https://gist.github.com/blha303/37e83f320b009de19e7a6c140f51e8d5

Revision 6155cc5db27c855e21e00e4b13351731c3741f26

discord_presence_pbx.py Raw
1import socket
2from requests import get
3
4hints_exten = "115"
5presence_api = "http://10.1.1.2:8081"
6
7pbx_ip = "10.1.1.1"
8port = 5038
9buffersize = 1024
10
11def process_event(resp):
12 d = {}
13 for line in resp.split("\r\n"):
14 try:
15 name,data = line.split(": ", 1)
16 except ValueError:
17 print(resp)
18 return None
19 d[name] = data
20 return d
21
22with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
23 s.connect((pbx_ip,port))
24 s.sendall(b"\r\nAction: login\r\nUsername: me\r\nSecret: aa\r\n\r\n")
25 while True:
26 data = s.recv(buffersize).decode("utf-8")
27 for resp in data.split("\r\n\r\n"):
28 resp = process_event(resp)
29 if not resp:
30 continue
31 print(resp)
32 if "Event" in resp and resp["Event"] == "ExtensionStatus" and resp["Exten"] == EXTEN:
33 if resp["Status"] == "1":
34 get(presence_api + "/_calls")
35 elif resp["Status"] == "0":
36 get(presence_api + "/_clear")