discord_presence_pbx.py
· 1.0 KiB · Python
Raw
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")
| 1 | import socket |
| 2 | from requests import get |
| 3 | |
| 4 | hints_exten = "115" |
| 5 | presence_api = "http://10.1.1.2:8081" |
| 6 | |
| 7 | pbx_ip = "10.1.1.1" |
| 8 | port = 5038 |
| 9 | buffersize = 1024 |
| 10 | |
| 11 | def 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 | |
| 22 | with 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") |