Files
grafana-matrix-alert/bridge.py
2021-04-16 13:40:59 +02:00

49 lines
1.2 KiB
Python

import asyncio
import json
import logging
import os
from flask import Flask, request
from flask_restful import Resource, Api
from nio import AsyncClient
logging.basicConfig(level=logging.INFO)
app = Flask(__name__)
api = Api(app)
MATRIX_HOMESERVER_URL = os.environ.get("MATRIX_HOMESERVER_URL")
MATRIX_USER = os.environ.get("MATRIX_USER")
MATRIX_PASSWORD = os.environ.get("MATRIX_PASSWORD")
MATRIX_ROOM_ID = os.environ.get("MATRIX_ROOM_ID")
async def send_message(msg, room_id):
client = AsyncClient(
MATRIX_HOMESERVER_URL,
MATRIX_USER
)
await client.login(MATRIX_PASSWORD)
await client.room_send(
room_id=room_id,
message_type="m.room.message",
content={"msgtype": "m.text", "body": msg},
)
await client.close()
def publish(msg, room_id):
asyncio.get_event_loop().run_until_complete(send_message(msg, room_id))
class SendLogs(Resource):
def post(self):
logging.info(request.data)
data = json.loads(request.data)
msg = f"{data.get('title', '<no title>')}: {data.get('message', '<no message>')}"
publish(msg, MATRIX_ROOM_ID)
return None, 204
api.add_resource(SendLogs, '/')