From 7c68ce61f21b2a2c81010cb0ea180178368584e6 Mon Sep 17 00:00:00 2001 From: florianfederspiel Date: Mon, 18 May 2026 18:38:21 +0200 Subject: [PATCH] KI-AGENT: Matrix-Anrufe im Chat vorbereiten --- .env.example | 2 + backend/src/modules/matrix.service.ts | 40 +++++++ backend/src/utils/secrets.ts | 6 ++ frontend/pages/communication/chat.vue | 144 +++++++++++++++++++++++++ frontend/pages/communication/index.vue | 6 ++ 5 files changed, 198 insertions(+) diff --git a/.env.example b/.env.example index e46fdfc..efa1783 100644 --- a/.env.example +++ b/.env.example @@ -89,6 +89,8 @@ MATRIX_DEV_TURN_MAX_PORT=49200 # Backend-Integration gegen den lokalen Matrix-Stack MATRIX_HOMESERVER_URL=http://localhost:8008 +MATRIX_RTC_JWT_URL=http://localhost:8081 +MATRIX_LIVEKIT_URL=ws://localhost:7880 MATRIX_REGISTRATION_SHARED_SECRET=copy-from-matrix-dev-synapse-homeserver-yaml MATRIX_SERVICE_USER_LOCALPART=fedeo_service NUXT_PUBLIC_MATRIX_ELEMENT_URL=http://localhost:8080 diff --git a/backend/src/modules/matrix.service.ts b/backend/src/modules/matrix.service.ts index ab4ff70..103046e 100644 --- a/backend/src/modules/matrix.service.ts +++ b/backend/src/modules/matrix.service.ts @@ -129,6 +129,25 @@ export function matrixService(server: FastifyInstance) { readLocalDevRegistrationSharedSecret() || "" + const rtcHost = () => + process.env.MATRIX_RTC_HOST || + secrets.MATRIX_RTC_HOST || + "call.fedeo.de" + + const rtcJwtUrl = () => + process.env.MATRIX_RTC_JWT_URL || + secrets.MATRIX_RTC_JWT_URL || + (process.env.NODE_ENV === "production" + ? `https://${rtcHost()}/livekit/jwt` + : `http://localhost:${process.env.MATRIX_DEV_RTC_JWT_PORT || "8081"}`) + + const livekitUrl = () => + process.env.MATRIX_LIVEKIT_URL || + secrets.MATRIX_LIVEKIT_URL || + (process.env.NODE_ENV === "production" + ? `wss://${rtcHost()}/livekit/sfu` + : `ws://localhost:${process.env.MATRIX_DEV_LIVEKIT_PORT || "7880"}`) + const serviceUserLocalpart = () => process.env.MATRIX_SERVICE_USER_LOCALPART || secrets.MATRIX_SERVICE_USER_LOCALPART || @@ -404,6 +423,13 @@ export function matrixService(server: FastifyInstance) { serverName: serverName(), provisioningConfigured: Boolean(registrationSharedSecret()), reachable: false, + calls: { + provider: "matrixrtc-livekit", + configured: Boolean(rtcJwtUrl() && livekitUrl()), + rtcHost: rtcHost(), + rtcJwtUrl: rtcJwtUrl(), + livekitUrl: livekitUrl(), + }, } } @@ -418,6 +444,13 @@ export function matrixService(server: FastifyInstance) { serverName: serverName(), provisioningConfigured: Boolean(registrationSharedSecret()), reachable: true, + calls: { + provider: "matrixrtc-livekit", + configured: Boolean(rtcJwtUrl() && livekitUrl()), + rtcHost: rtcHost(), + rtcJwtUrl: rtcJwtUrl(), + livekitUrl: livekitUrl(), + }, versions: versions.versions, } } catch (err: any) { @@ -427,6 +460,13 @@ export function matrixService(server: FastifyInstance) { serverName: serverName(), provisioningConfigured: Boolean(registrationSharedSecret()), reachable: false, + calls: { + provider: "matrixrtc-livekit", + configured: Boolean(rtcJwtUrl() && livekitUrl()), + rtcHost: rtcHost(), + rtcJwtUrl: rtcJwtUrl(), + livekitUrl: livekitUrl(), + }, error: err.message, } } diff --git a/backend/src/utils/secrets.ts b/backend/src/utils/secrets.ts index a186f52..e066d5a 100644 --- a/backend/src/utils/secrets.ts +++ b/backend/src/utils/secrets.ts @@ -40,6 +40,9 @@ export let secrets = { STIRLING_API_KEY: string MATRIX_HOMESERVER_URL?: string MATRIX_SERVER_NAME?: string + MATRIX_RTC_HOST?: string + MATRIX_RTC_JWT_URL?: string + MATRIX_LIVEKIT_URL?: string MATRIX_REGISTRATION_SHARED_SECRET?: string MATRIX_SERVICE_USER_LOCALPART?: string } @@ -76,6 +79,9 @@ const secretKeys = [ "STIRLING_API_KEY", "MATRIX_HOMESERVER_URL", "MATRIX_SERVER_NAME", + "MATRIX_RTC_HOST", + "MATRIX_RTC_JWT_URL", + "MATRIX_LIVEKIT_URL", "MATRIX_REGISTRATION_SHARED_SECRET", "MATRIX_SERVICE_USER_LOCALPART", ] as const diff --git a/frontend/pages/communication/chat.vue b/frontend/pages/communication/chat.vue index b338a42..b7ad205 100644 --- a/frontend/pages/communication/chat.vue +++ b/frontend/pages/communication/chat.vue @@ -1,6 +1,7 @@