Added ZMQ

This commit is contained in:
Guy Van Sanden 2025-02-18 14:27:46 +01:00
parent 040bd08503
commit fbfc7d9992
2 changed files with 86 additions and 39 deletions

71
server/src/notifier.py Normal file
View File

@ -0,0 +1,71 @@
#!/bin/env python3
import websocket
import json
import random
import zmq
from pprint import pprint
__version__ = "2.0.0b2"
ws = None
uri = "ws://localhost:5080"
ws = websocket.create_connection(uri)
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")
def sendsmpmessage(target, message):
global ws
print("Sendmessage %s called to %s" % (message, target))
msg = ("%s %s" % (target, message))
# Create a unique correlation ID
command = {
"corrId": f"id{random.randint(0, 999999)}",
"cmd": msg,
}
json_command = json.dumps(command)
""" Connects to WebSocket server, sends a message, and returns the response """
if ws is None:
uri = "ws://localhost:5080"
ws = websocket.create_connection(uri) # Blocking WebSocket connection
ws.send(json_command) # Send message to WebSocket
responsejson = ws.recv() # Receive response
response = json.loads(responsejson)
# ws.close()
for chatitem in response['resp']['chatItems']:
statusdict = chatitem['chatItem']['meta']['itemStatus']
try:
status = statusdict['sndProgress']
except KeyError:
print("FAILED")
status = 'FAILED'
else:
smessage = chatitem['chatItem']['meta']['itemText']
print("Message '%s' sent over websocket to %s, status was %s" % (smessage, target, status))
if status == 'complete':
return True
else:
return False
if __name__ == '__main__':
while True:
zmq = socket.recv_string()
print(f"Received request: {zmqmessage}")
result = True
decoded = json.loads(zmqmessage)
pprint(decoded)
result = sendmessage(decoded.get('target'), decoded.get('message'))
if result is True:
socket.send_string("sent")
else:
socket.send_string("failed")

View File

@ -4,57 +4,33 @@ import websocket
import json
import yaml
import random
import threading
from pprint import pprint
__version__ = "2.0.0b2"
versionstring='Taurix TellMe server v' + __version__
app = Flask(__name__)
lock = threading.Lock()
ws = None
uri = "ws://localhost:5080"
ws = websocket.create_connection(uri)
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")
hooks = {}
with open(r'/etc/tellme/hooks.yml') as hooksfile:
hooks = yaml.load(hooksfile, Loader=yaml.FullLoader)
def sendmessage(target, message):
global ws
print("Sendmessage %s called to %s" % (message, target))
msg = ("%s %s" % (target, message))
global socket
jsonmessage = {}
jsonmessage['target'] = target
jsonmessage['message'] = message
socket.send_string(json.dumps(jsonmessage))
# Create a unique correlation ID
command = {
"corrId": f"id{random.randint(0, 999999)}",
"cmd": msg,
}
json_command = json.dumps(command)
# Wait for a reply
reply = socket.recv_string()
print(f"Received reply: {reply}")
""" Connects to WebSocket server, sends a message, and returns the response """
if ws is None:
uri = "ws://localhost:5080"
ws = websocket.create_connection(uri) # Blocking WebSocket connection
ws.send(json_command) # Send message to WebSocket
responsejson = ws.recv() # Receive response
response = json.loads(responsejson)
# ws.close()
for chatitem in response['resp']['chatItems']:
statusdict = chatitem['chatItem']['meta']['itemStatus']
try:
status = statusdict['sndProgress']
except KeyError:
print("FAILED")
status = 'FAILED'
else:
smessage = chatitem['chatItem']['meta']['itemText']
print("Message '%s' sent over websocket to %s, status was %s" % (smessage, target, status))
if status == 'complete':
if reply == 'sent':
return True
else:
return False