mirror of
https://github.com/suitenumerique/meet.git
synced 2026-07-28 04:39:16 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bf0315ac51 |
@@ -24,6 +24,8 @@ class RecordingEventsService:
|
|||||||
|
|
||||||
room_name = str(recording.room.id)
|
room_name = str(recording.room.id)
|
||||||
|
|
||||||
|
print('$$ handle_update')
|
||||||
|
|
||||||
status_mapping = {
|
status_mapping = {
|
||||||
api.EgressStatus.EGRESS_ACTIVE: "started",
|
api.EgressStatus.EGRESS_ACTIVE: "started",
|
||||||
api.EgressStatus.EGRESS_ENDING: "saving",
|
api.EgressStatus.EGRESS_ENDING: "saving",
|
||||||
@@ -31,12 +33,18 @@ class RecordingEventsService:
|
|||||||
}
|
}
|
||||||
|
|
||||||
recording_status = status_mapping.get(egress_status)
|
recording_status = status_mapping.get(egress_status)
|
||||||
|
|
||||||
|
print('$$ recording_status')
|
||||||
|
print(recording_status)
|
||||||
|
|
||||||
if recording_status:
|
if recording_status:
|
||||||
try:
|
try:
|
||||||
|
print('$$ update')
|
||||||
utils.update_room_metadata(
|
utils.update_room_metadata(
|
||||||
room_name, {"recording_status": recording_status}
|
room_name, {"recording_status": recording_status}
|
||||||
)
|
)
|
||||||
except utils.MetadataUpdateException as e:
|
except utils.MetadataUpdateException as e:
|
||||||
|
print('$$ exception')
|
||||||
logger.exception("Failed to update room's metadata: %s", e)
|
logger.exception("Failed to update room's metadata: %s", e)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
@@ -118,12 +118,14 @@ class LiveKitEventsService:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise InvalidPayloadError("Invalid webhook payload") from e
|
raise InvalidPayloadError("Invalid webhook payload") from e
|
||||||
|
|
||||||
room_name = data.room.name or data.egress_info.room_name
|
if self._filter_regex and not self._filter_regex.search(data.room.name):
|
||||||
|
logger.info("Filtered webhook event for room '%s'", data.room.name)
|
||||||
if self._filter_regex and not self._filter_regex.search(room_name):
|
|
||||||
logger.info("Filtered webhook event for room '%s'", room_name)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
print('$$ data.event')
|
||||||
|
print(data.event)
|
||||||
|
print(data)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
webhook_type = LiveKitWebhookEventType(data.event)
|
webhook_type = LiveKitWebhookEventType(data.event)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
@@ -131,6 +133,9 @@ class LiveKitEventsService:
|
|||||||
f"Unknown webhook type: {data.event}"
|
f"Unknown webhook type: {data.event}"
|
||||||
) from e
|
) from e
|
||||||
|
|
||||||
|
print("$$ webhook_type")
|
||||||
|
print(webhook_type)
|
||||||
|
|
||||||
handler_name = f"_handle_{webhook_type.value}"
|
handler_name = f"_handle_{webhook_type.value}"
|
||||||
handler = getattr(self, handler_name, None)
|
handler = getattr(self, handler_name, None)
|
||||||
|
|
||||||
@@ -143,6 +148,8 @@ class LiveKitEventsService:
|
|||||||
def _handle_egress_updated(self, data):
|
def _handle_egress_updated(self, data):
|
||||||
"""Handle 'egress_updated' event."""
|
"""Handle 'egress_updated' event."""
|
||||||
|
|
||||||
|
print("$$ _handle_egress_updated")
|
||||||
|
|
||||||
egress_id = data.egress_info.egress_id
|
egress_id = data.egress_info.egress_id
|
||||||
try:
|
try:
|
||||||
recording = models.Recording.objects.get(worker_id=egress_id)
|
recording = models.Recording.objects.get(worker_id=egress_id)
|
||||||
@@ -151,7 +158,11 @@ class LiveKitEventsService:
|
|||||||
f"Recording with worker ID {egress_id} does not exist"
|
f"Recording with worker ID {egress_id} does not exist"
|
||||||
) from err
|
) from err
|
||||||
|
|
||||||
|
print("$$ egress found")
|
||||||
|
|
||||||
egress_status = data.egress_info.status
|
egress_status = data.egress_info.status
|
||||||
|
print('$$ egress_status')
|
||||||
|
print(egress_status)
|
||||||
self.recording_events.handle_update(recording, egress_status)
|
self.recording_events.handle_update(recording, egress_status)
|
||||||
|
|
||||||
def _handle_egress_ended(self, data):
|
def _handle_egress_ended(self, data):
|
||||||
|
|||||||
@@ -276,6 +276,8 @@ async def update_room_metadata(
|
|||||||
room = response.rooms[0]
|
room = response.rooms[0]
|
||||||
|
|
||||||
existing_metadata = json.loads(room.metadata) if room.metadata else {}
|
existing_metadata = json.loads(room.metadata) if room.metadata else {}
|
||||||
|
print('$$ existing_metadata')
|
||||||
|
print(existing_metadata)
|
||||||
|
|
||||||
if remove_keys:
|
if remove_keys:
|
||||||
for key in remove_keys:
|
for key in remove_keys:
|
||||||
@@ -283,6 +285,9 @@ async def update_room_metadata(
|
|||||||
|
|
||||||
updated_metadata = {**existing_metadata, **metadata}
|
updated_metadata = {**existing_metadata, **metadata}
|
||||||
|
|
||||||
|
print('$$ updated_metadata')
|
||||||
|
print(updated_metadata)
|
||||||
|
|
||||||
await lkapi.room.update_room_metadata(
|
await lkapi.room.update_room_metadata(
|
||||||
UpdateRoomMetadataRequest(
|
UpdateRoomMetadataRequest(
|
||||||
room=room_name, metadata=json.dumps(updated_metadata).encode("utf-8")
|
room=room_name, metadata=json.dumps(updated_metadata).encode("utf-8")
|
||||||
|
|||||||
@@ -66,22 +66,16 @@ export function ToastRecordingRequest({
|
|||||||
name: participant?.name,
|
name: participant?.name,
|
||||||
})}
|
})}
|
||||||
{!options.isMenuOpen && (
|
{!options.isMenuOpen && (
|
||||||
<div
|
<Button
|
||||||
|
size="sm"
|
||||||
|
variant="text"
|
||||||
className={css({
|
className={css({
|
||||||
marginLeft: '0.5rem',
|
color: 'primary.300',
|
||||||
})}
|
})}
|
||||||
|
onPress={options.openMenu}
|
||||||
>
|
>
|
||||||
<Button
|
{t('openMenu')}
|
||||||
size="sm"
|
</Button>
|
||||||
variant="text"
|
|
||||||
className={css({
|
|
||||||
color: 'primary.300',
|
|
||||||
})}
|
|
||||||
onPress={options.openMenu}
|
|
||||||
>
|
|
||||||
{t('openMenu')}
|
|
||||||
</Button>
|
|
||||||
</div>
|
|
||||||
)}
|
)}
|
||||||
</HStack>
|
</HStack>
|
||||||
</StyledToastContainer>
|
</StyledToastContainer>
|
||||||
|
|||||||
@@ -161,7 +161,6 @@ export const ControlsButton = ({
|
|||||||
fullWidth
|
fullWidth
|
||||||
onPress={handle}
|
onPress={handle}
|
||||||
isDisabled={isDisabled}
|
isDisabled={isDisabled}
|
||||||
size="compact"
|
|
||||||
>
|
>
|
||||||
{t('button.start')}
|
{t('button.start')}
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -29,10 +29,9 @@ export const RowWrapper = ({
|
|||||||
className={css({
|
className={css({
|
||||||
width: '100%',
|
width: '100%',
|
||||||
background: 'gray.100',
|
background: 'gray.100',
|
||||||
paddingBlock: '0.5rem',
|
padding: '8px',
|
||||||
paddingInline: '0',
|
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
marginTop: '0.25rem',
|
marginTop: '4px',
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@@ -41,7 +40,6 @@ export const RowWrapper = ({
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
paddingInline: '0.25rem',
|
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{/* fixme - doesn't handle properly material-symbols */}
|
{/* fixme - doesn't handle properly material-symbols */}
|
||||||
@@ -49,11 +47,10 @@ export const RowWrapper = ({
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className={css({
|
className={css({
|
||||||
flex: 6,
|
flex: 5,
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
gap: '0.25rem',
|
gap: '0.25rem',
|
||||||
paddingInlineEnd: '8px',
|
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
{children}
|
{children}
|
||||||
|
|||||||
@@ -31,12 +31,6 @@ export const buttonRecipe = cva({
|
|||||||
borderRadius: 4,
|
borderRadius: 4,
|
||||||
'--square-padding': '0',
|
'--square-padding': '0',
|
||||||
},
|
},
|
||||||
compact: {
|
|
||||||
borderRadius: 4,
|
|
||||||
paddingX: '0.5',
|
|
||||||
paddingY: '0.625',
|
|
||||||
'--square-padding': '{spacing.0.625}',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
square: {
|
square: {
|
||||||
true: {
|
true: {
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ backend:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
||||||
LIVEKIT_WEBHOOK_EVENTS_FILTER_REGEX: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
|
|
||||||
ALLOW_UNREGISTERED_ROOMS: False
|
ALLOW_UNREGISTERED_ROOMS: False
|
||||||
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
||||||
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041', 'help_article_transcript': 'https://lasuite.crisp.help/fr/article/visio-transcript-1sjq43x', 'help_article_recording': 'https://lasuite.crisp.help/fr/article/visio-enregistrement-wgc8o0', 'help_article_more_tools': 'https://lasuite.crisp.help/fr/article/visio-tools-bvxj23'}"
|
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041', 'help_article_transcript': 'https://lasuite.crisp.help/fr/article/visio-transcript-1sjq43x', 'help_article_recording': 'https://lasuite.crisp.help/fr/article/visio-enregistrement-wgc8o0', 'help_article_more_tools': 'https://lasuite.crisp.help/fr/article/visio-tools-bvxj23'}"
|
||||||
@@ -99,7 +98,7 @@ backend:
|
|||||||
# Extra volume mounts to manage our local custom CA and avoid to set ssl_verify: false
|
# Extra volume mounts to manage our local custom CA and avoid to set ssl_verify: false
|
||||||
extraVolumeMounts:
|
extraVolumeMounts:
|
||||||
- name: certs
|
- name: certs
|
||||||
mountPath: /usr/local/lib/python3.13/site-packages/certifi/cacert.pem
|
mountPath: /usr/local/lib/python3.12/site-packages/certifi/cacert.pem
|
||||||
subPath: cacert.pem
|
subPath: cacert.pem
|
||||||
|
|
||||||
# Extra volumes to manage our local custom CA and avoid to set ssl_verify: false
|
# Extra volumes to manage our local custom CA and avoid to set ssl_verify: false
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ backend:
|
|||||||
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
||||||
LIVEKIT_FORCE_WSS_PROTOCOL: True
|
LIVEKIT_FORCE_WSS_PROTOCOL: True
|
||||||
LIVEKIT_ENABLE_FIREFOX_PROXY_WORKAROUND: True
|
LIVEKIT_ENABLE_FIREFOX_PROXY_WORKAROUND: True
|
||||||
LIVEKIT_WEBHOOK_EVENTS_FILTER_REGEX: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
|
|
||||||
ALLOW_UNREGISTERED_ROOMS: False
|
ALLOW_UNREGISTERED_ROOMS: False
|
||||||
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
||||||
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041', 'help_article_transcript': 'https://lasuite.crisp.help/fr/article/visio-transcript-1sjq43x', 'help_article_recording': 'https://lasuite.crisp.help/fr/article/visio-enregistrement-wgc8o0', 'help_article_more_tools': 'https://lasuite.crisp.help/fr/article/visio-tools-bvxj23'}"
|
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041', 'help_article_transcript': 'https://lasuite.crisp.help/fr/article/visio-transcript-1sjq43x', 'help_article_recording': 'https://lasuite.crisp.help/fr/article/visio-enregistrement-wgc8o0', 'help_article_more_tools': 'https://lasuite.crisp.help/fr/article/visio-tools-bvxj23'}"
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ backend:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
LIVEKIT_API_URL: https://livekit.127.0.0.1.nip.io/
|
||||||
LIVEKIT_WEBHOOK_EVENTS_FILTER_REGEX: "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}"
|
|
||||||
ALLOW_UNREGISTERED_ROOMS: False
|
ALLOW_UNREGISTERED_ROOMS: False
|
||||||
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
FRONTEND_SILENCE_LIVEKIT_DEBUG: False
|
||||||
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041'}"
|
FRONTEND_SUPPORT: "{'id': '58ea6697-8eba-4492-bc59-ad6562585041'}"
|
||||||
|
|||||||
Reference in New Issue
Block a user