Added ZMQ
This commit is contained in:
parent
040bd08503
commit
fbfc7d9992
71
server/src/notifier.py
Normal file
71
server/src/notifier.py
Normal 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")
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user