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,60 +4,36 @@ import websocket
|
|||||||
import json
|
import json
|
||||||
import yaml
|
import yaml
|
||||||
import random
|
import random
|
||||||
import threading
|
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
|
||||||
__version__ = "2.0.0b2"
|
__version__ = "2.0.0b2"
|
||||||
versionstring='Taurix TellMe server v' + __version__
|
versionstring='Taurix TellMe server v' + __version__
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
lock = threading.Lock()
|
|
||||||
|
|
||||||
ws = None
|
socket = context.socket(zmq.REQ)
|
||||||
uri = "ws://localhost:5080"
|
socket.connect("tcp://localhost:5555")
|
||||||
ws = websocket.create_connection(uri)
|
|
||||||
|
|
||||||
hooks = {}
|
hooks = {}
|
||||||
with open(r'/etc/tellme/hooks.yml') as hooksfile:
|
with open(r'/etc/tellme/hooks.yml') as hooksfile:
|
||||||
hooks = yaml.load(hooksfile, Loader=yaml.FullLoader)
|
hooks = yaml.load(hooksfile, Loader=yaml.FullLoader)
|
||||||
|
|
||||||
|
|
||||||
def sendmessage(target, message):
|
def sendmessage(target, message):
|
||||||
global ws
|
global socket
|
||||||
print("Sendmessage %s called to %s" % (message, target))
|
jsonmessage = {}
|
||||||
msg = ("%s %s" % (target, message))
|
jsonmessage['target'] = target
|
||||||
|
jsonmessage['message'] = message
|
||||||
|
socket.send_string(json.dumps(jsonmessage))
|
||||||
|
|
||||||
# Create a unique correlation ID
|
# Wait for a reply
|
||||||
command = {
|
reply = socket.recv_string()
|
||||||
"corrId": f"id{random.randint(0, 999999)}",
|
print(f"Received reply: {reply}")
|
||||||
"cmd": msg,
|
|
||||||
}
|
|
||||||
json_command = json.dumps(command)
|
|
||||||
|
|
||||||
""" Connects to WebSocket server, sends a message, and returns the response """
|
if reply == 'sent':
|
||||||
if ws is None:
|
return True
|
||||||
uri = "ws://localhost:5080"
|
else:
|
||||||
ws = websocket.create_connection(uri) # Blocking WebSocket connection
|
return False
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/webhook/<id>", methods=['POST'])
|
@app.route("/webhook/<id>", methods=['POST'])
|
||||||
|
Loading…
Reference in New Issue
Block a user