Integración · Salas
Creá una sala y repartí los enlaces #
Las salas se crean desde tu backend con ConfirioServer y la API key. El enlace de moderación y el de participante tienen permisos distintos.
Crear una sala #
Este ejemplo sigue el flujo del SDK: activa la sala de espera, programa el inicio y genera un participantRef para asociar la conexión con un código de tu sistema. Configurá la key en la terminal y guardá el código como salas.mjs.
export CONFIRIO_API_KEY=TU_API_KEY
import ConfirioServer from 'confirio-sdk/server';
const confirio = new ConfirioServer({ apiKey: process.env.CONFIRIO_API_KEY });
const room = await confirio.createRoom({
name: 'Consulta',
maxParticipants: 2,
waitingRoom: true,
startsAt: new Date(Date.now() + 15 * 60 * 1000)
});
const patientUrl = new URL(room.joinUrl);
patientUrl.hash = 'confirio.ref=turno-42';
console.log('Sala:', room.roomId);
console.log('Moderador:', room.hostUrl);
console.log('Participante:', patientUrl.toString());
Ejecutá el archivo con node salas.mjs.
En tu app, entregá room.hostUrl sólo a quien tiene que moderar. A los demás, pasales room.joinUrl (en el ejemplo, con el participantRef del turno). Protegé tus propios endpoints con el login y los permisos de tu producto.
Moderador y participante #
hostUrlidentifica a quien modera: puede admitir personas de la sala de espera y manejar la grabación si la política lo permite. Si quien modera cuelga, la llamada termina para todos.joinUrles para las demás personas. No les da permisos de moderación.createRoomForClient()devuelve sólo los datos para participantes y omitehostUrla propósito.
Con contraseña y sin sala de espera, la escribe cada persona que entra, también quien modera. Si además activás la sala de espera, nadie la escribe: quien modera entra con su enlace y a los demás los deja pasar. La longitud aceptada es de 4 a 64 caracteres. Con sala de espera, los participantes quedan esperando hasta que quien modera los deja pasar; quien modera entra directo.
participantRef #
Es un código opaco que elegís en tu sistema, por ejemplo el número del turno. Sirve para agrupar conexiones y reconexiones en los reportes; no verifica identidad ni da permisos. Usá de 1 a 64 caracteres entre letras, números, guion y guion bajo. No hace falta enviar nombre ni documento.
Hora de inicio #
startsAt acepta un objeto Date o una fecha ISO 8601 con offset, por ejemplo 2026-10-20T10:00:00-03:00. Sin ese campo, la sala queda disponible desde que se crea.
Con horario, quien modera puede entrar dentro de la ventana anticipada configurada para tu organización. El resto puede entrar a la hora indicada o antes si quien modera ya está adentro. Si también activaste sala de espera, queda pendiente de admisión.
Cuánto dura y cómo terminarla #
Una sala no se cierra porque quede vacía: mientras siga activa, el mismo enlace permite volver. La respuesta incluye expiresAt, calculado desde startsAt o desde la creación más la duración máxima configurada para tu organización. Si quien modera se desconecta, el margen de reconexión también depende de esa configuración. Una sala sin uso vence según el tiempo de disponibilidad sin uso configurado.
Para cerrarla desde tu backend, llamá await confirio.endRoom(roomId). Expulsa a quienes están adentro y evita nuevos ingresos. Esa operación cierra la sala; no es la medición de la duración. La conexión real empieza cuando alguien entra.
Los límites de duración, ingreso anticipado, reconexión y disponibilidad sin uso se ven en la configuración del cliente en el Panel.