Experimental matrix support
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "TellMe Server",
|
||||
"version": "2.2.0",
|
||||
"version": "3.0.0",
|
||||
"description": "TellMe Server",
|
||||
"scripts": {
|
||||
"dev": "webpack-dev-server --inline --hot"
|
||||
|
||||
0
server/src/config.yml
Normal file
0
server/src/config.yml
Normal file
4
server/src/requirements.txt
Normal file
4
server/src/requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
flask
|
||||
websocket-client
|
||||
pyyaml
|
||||
matrix-client
|
||||
@@ -7,8 +7,9 @@ import random
|
||||
import logging
|
||||
import os
|
||||
from pprint import pprint
|
||||
from matrix_client.client import MatrixClient
|
||||
|
||||
__version__ = "2.2.0"
|
||||
__version__ = "3.0.0"
|
||||
versionstring='Taurix TellMe server v' + __version__
|
||||
|
||||
log_dir = '/var/log/tellme'
|
||||
@@ -70,6 +71,30 @@ def send_smp_message(target, message):
|
||||
return False
|
||||
|
||||
|
||||
def send_matrix_message(target, message):
|
||||
try:
|
||||
homeserver = config.get('matrix_homeserver', 'https://matrix.org')
|
||||
access_token = config.get('matrix_access_token')
|
||||
user_id = config.get('matrix_user_id')
|
||||
|
||||
if not access_token or not user_id:
|
||||
log.error("Matrix credentials not configured")
|
||||
return False
|
||||
|
||||
client = MatrixClient(homeserver)
|
||||
client.login(token=access_token, user_id=user_id)
|
||||
|
||||
room = client.join_room(target)
|
||||
room.send_text(message)
|
||||
|
||||
client.logout()
|
||||
log.info("Sent message to Matrix room %s" % (target))
|
||||
return True
|
||||
except Exception as e:
|
||||
log.error("Failed to send message to Matrix: %s" % (e))
|
||||
return False
|
||||
|
||||
|
||||
def get_hook(hook_id):
|
||||
return hooks.get(str(hook_id))
|
||||
|
||||
@@ -122,6 +147,19 @@ def webhook_receiver(id):
|
||||
else:
|
||||
log.error("No target found, dropping message")
|
||||
return jsonify({'message': 'No target found, dropping message'}), 400
|
||||
elif transport == 'matrix':
|
||||
if target is not None:
|
||||
log.info(target)
|
||||
if message is not None:
|
||||
send_matrix_message(target, message)
|
||||
else:
|
||||
log.error("No message, dropping")
|
||||
else:
|
||||
log.error("No target found, dropping message")
|
||||
return jsonify({'message': 'No target found, dropping message'}), 400
|
||||
else:
|
||||
log.error("Unknown transport: %s" % (transport))
|
||||
return jsonify({'message': 'Unknown transport'}), 400
|
||||
else:
|
||||
log.error("No transport found, dropping message")
|
||||
return jsonify({'message': 'No transport found, dropping message'}), 400
|
||||
|
||||
Reference in New Issue
Block a user