Ir al contenido
Fusehub
Parlantes

Crear sesión talkback

POST
/api/integration/v1/sites/{site_id}/speakers/talk/session

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:

  1. POST esta ruta → talkSessionId + credenciales talkback.
  2. SDK LiveKit: conectar a talkback.url, room talkback.roomName, token talkback.token, publicar micrófono.
  3. 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.

Autenticación

IntegrationKey
headerX-Integration-Key<token>

Clave de integración (fhint_…). Consola Fusehub → Herramientas de desarrollo → API Keys.

site_id*Site Id
application/json
  1. 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.

Cuerpo de la respuesta

Sesión creada. Éxito parcial permitido: revisar results[]. Conectar LiveKit con talkback y publicar micrófono.

application/json
  1. response
ok?Ok
Por defectotrue
talkSessionId*Talksessionid

Identificador de la sesión; usar en DELETE para cerrar.

talkback*
results*array<>
Ejemplo de petición
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"}'
Ejemplo de respuesta
{  "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"    }  ]}