Crear sesión talkback
Abre una room LiveKit compartida y arranca uplink ISAPI en cada parlante destino.
Targets: serials y/o deviceIds (misma resolución que play de catálogo).
Flujo:
POSTesta ruta →talkSessionId+ credencialestalkback.- SDK LiveKit: conectar a
talkback.url, roomtalkback.roomName, tokentalkback.token, publicar micrófono. DELETE .../talk/session/{talkSessionId}al terminar (obligatorio).
Desconectar LiveKit (Room.disconnect / dejar de publicar mic) no cierra la sesión FuseHub ni el uplink ISAPI.
TTL: 5 minutos. Sin DELETE, Core detiene el uplink automáticamente.
Room: site_{siteId}__talk_{talkSessionId} — una sola room para todos los parlantes.
Éxito parcial: HTTP 200 si al menos un uplink arranca; revisar results[]. HTTP 502 si ninguno arranca.
Requisitos: parlante (PARLANTE), two-way audio, bridge conectado, LiveKit configurado.
IntegrationKeyX-Integration-Key<token>Clave de integración (fhint_…). Consola Fusehub → Herramientas de desarrollo → API Keys.
site_id*Site Idapplication/json- body
serials?array<string>|Seriales de parlantes destino.
deviceIds?array<string>|UUID Fusehub de parlantes (alternativa o complemento a serials).
talkbackIdentity?|Identity LiveKit del operador; si se omite, Core genera una.
Sesión creada. Éxito parcial permitido: revisar results[]. Conectar LiveKit con talkback y publicar micrófono.
application/json- response
ok?OktruetalkSessionId*TalksessionidIdentificador de la sesión; usar en DELETE para cerrar.
talkback*results*array<>curl -X POST 'https://api.staging.fusehub.lat/api/integration/v1/sites/string/speakers/talk/session' \ -H 'Content-Type: application/json' \ -d '{ "deviceIds": [], "serials": [ "SPK-ENTRADA", "SPK-PATIO" ], "talkbackIdentity": "operator_talk_1710000000000"}'{ "ok": true, "talkSessionId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "talkback": { "url": "wss://livekit.example.com", "roomName": "site_00000000-0000-4000-8000-000000000044__talk_aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…", "identity": "operator_talk_1710000000000" }, "results": [ { "serial": "SPK-ENTRADA", "deviceId": "00000000-0000-4000-8000-000000000101", "name": "Parlante entrada", "ok": true }, { "serial": "SPK-PATIO", "deviceId": "00000000-0000-4000-8000-000000000102", "name": "Parlante patio", "ok": false, "error": "gateway_not_connected" } ]}Reproducir audio POST
Reproducción en parlantes de la sede. Modo catálogo: JSON con `catalogAudioId` y `serials` o `deviceIds`. Modo efímero: query `type=recorded` (o `custom`) con multipart.
Cerrar sesión talkback DELETE
Detiene uplink ISAPI en cada parlante de la sesión y libera el canal de voz. Idempotencia: si la sesión ya no existe → HTTP 404. Sin `DELETE`, el uplink puede permanecer abierto en el dispositivo.