From d54f21d51e04a1510e2f10d74779d2def62901c2 Mon Sep 17 00:00:00 2001 From: Nils Brederlow <62596379+dingodoppelt@users.noreply.github.com> Date: Tue, 9 Jun 2026 22:49:47 +0200 Subject: [PATCH] add jamulusserver/privateChatMessage RPC method for sending messages to single channels --- docs/JSON-RPC.md | 18 ++++++++++++++++++ src/serverrpc.cpp | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/docs/JSON-RPC.md b/docs/JSON-RPC.md index cfe8dfbe3e..52c8973c29 100644 --- a/docs/JSON-RPC.md +++ b/docs/JSON-RPC.md @@ -396,6 +396,24 @@ Results: | result.registrationStatus | string | The server registration status as string (see ESvrRegStatus and SerializeRegistrationStatus). | +### jamulusserver/privateChatMessage + +Sends a chat message to a single connected client. + +Parameters: + +| Name | Type | Description | +| --- | --- | --- | +| params.chatMessage | string | The chat message text. | +| params.id | number | The client's channel id. | + +Results: + +| Name | Type | Description | +| --- | --- | --- | +| result | string | Always "ok". | + + ### jamulusserver/restartRecording Restarts the recording into a new directory. diff --git a/src/serverrpc.cpp b/src/serverrpc.cpp index 315a3e262c..07b6c47eb0 100644 --- a/src/serverrpc.cpp +++ b/src/serverrpc.cpp @@ -292,6 +292,24 @@ CServerRpc::CServerRpc ( CServer* pServer, CRpcServer* pRpcServer, QObject* pare response["result"] = "acknowledged"; Q_UNUSED ( params ); } ); + + /// @rpc_method jamulusserver/privateChatMessage + /// @brief Sends a chat message to a single connected client. + /// @param {string} params.chatMessage - The chat message text. + /// @param {number} params.id - The client's channel id. + /// @result {string} result - Always "ok". + pRpcServer->HandleMethod ( "jamulusserver/privateChatMessage", [=] ( const QJsonObject& params, QJsonObject& response ) { + auto jsonChatMessage = params["chatMessage"]; + const int id = params["id"].toInt(); + if ( !jsonChatMessage.isString() ) + { + response["error"] = CRpcServer::CreateJsonRpcError ( CRpcServer::iErrInvalidParams, "Invalid params: chatMessage is not a string" ); + return; + } + + pServer->SendChatTextToConChannel ( id, jsonChatMessage.toString() ); + response["result"] = "ok"; + } ); } #if defined( Q_OS_MACOS ) && QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )