Experimental matrix support

This commit is contained in:
2026-05-02 12:59:30 +02:00
parent aaf516bcd5
commit 4033d214ff
7 changed files with 96 additions and 16 deletions

View File

@@ -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
View File

View File

@@ -0,0 +1,4 @@
flask
websocket-client
pyyaml
matrix-client

View File

@@ -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