From 58241eb3a1df2f169a1debe3c29f4e51a17a687e Mon Sep 17 00:00:00 2001 From: Carlos Santos <4a.santos@gmail.com> Date: Mon, 8 Jul 2024 13:35:13 +0200 Subject: [PATCH] backend: Improved the webhook handler --- openvidu-call-back/src/controllers/webhook.controller.ts | 7 +++++-- openvidu-call-back/src/services/room.service.ts | 7 ++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/openvidu-call-back/src/controllers/webhook.controller.ts b/openvidu-call-back/src/controllers/webhook.controller.ts index f9799afa..65d6b1b3 100644 --- a/openvidu-call-back/src/controllers/webhook.controller.ts +++ b/openvidu-call-back/src/controllers/webhook.controller.ts @@ -56,8 +56,11 @@ export const webhookHandler = async (req: Request, res: Response) => { function getRoomOrRoomName(webhookEvent: WebhookEvent) { const { room, egressInfo, ingressInfo } = webhookEvent; + const roomName = room?.name ?? egressInfo?.roomName ?? ingressInfo?.roomName ?? ''; - // KNOWN issue: room metadata is empty when track_publish and track_unpublish events are received + // !KNOWN issue: room metadata is empty when track_publish and track_unpublish events are received // This not affect OpenVidu Call, but it is a limitation of the LiveKit server - return room ?? egressInfo?.roomName ?? ingressInfo?.roomName ?? ''; + + // Prefer webhook room object over roomName if available + return room ?? roomName; } diff --git a/openvidu-call-back/src/services/room.service.ts b/openvidu-call-back/src/services/room.service.ts index 3bd8d4e1..ad942d73 100644 --- a/openvidu-call-back/src/services/room.service.ts +++ b/openvidu-call-back/src/services/room.service.ts @@ -76,12 +76,17 @@ export class RoomService { room = await this.getRoom(roomOrRoomName); } else { room = roomOrRoomName; + + // !KNOWN issue: room metadata is empty when track_publish and track_unpublish events are received + if (!room.metadata) { + room = await this.getRoom(room.name); + } } const metadata = room.metadata ? JSON.parse(room.metadata) : null; return metadata?.createdBy === CALL_NAME_ID; } catch (error) { - console.error('Error in isRoomCreatedByMe:', error); + console.warn('Error getting Room while parsing webhook checking if isRoomCreatedByMe:', error); return false; } }