Resumen

  • terminated es una conclusión obligatoria sobre la suscripción en la RFC 6665, no una declaración universal sobre la vida del recurso observado.
  • Los motivos separan migración, espera, cambio de autorización, expiración, abandono, desaparición e invariabilidad; solo noresource afirma expresamente que el estado vigilado ya no existe.
  • La trazabilidad debe conservar por separado identidad y ciclo de la suscripción, estado del recurso, custodia del NOTIFY, interpretación del paquete y decisión posterior.

El sustantivo oculto cambia el diagnóstico

“Terminado” parece describir cualquier cosa que aparezca junto al indicador. En una pantalla de telefonía puede leerse como llamada terminada; en presencia, como usuario ausente; en una consola empresarial, como cuenta borrada. Sin embargo, el encabezado se llama Subscription-State. Su valor ordena al suscriptor considerar terminada la suscripción.

El recurso no carece de modelo, pero ese modelo vive en el paquete de eventos. Allí se especifican el cuerpo, el estado neutral, los cambios completos o parciales y las reglas propias de la aplicación. La RFC 6665 se niega deliberadamente a ser una infraestructura universal para todas las clases de eventos. Esa modestia evita fingir que una presencia y un buzón comparten el mismo significado.

La distinción también es operativa. Puede romperse el canal de observación mientras el recurso funciona. Puede desaparecer el recurso y tardar en llegar el aviso. Si ambos hechos se escriben como el mismo booleano, un auditor ya no podrá saber si ocurrió un cambio real o se perdió la capacidad de verlo.

El motivo no es una decoración

deactivated termina la suscripción y recomienda crear otra de inmediato; la migración entre notificadores es un ejemplo principal. probation pospone el siguiente intento. rejected refleja un cambio en la política de autorización y aconseja no volver a suscribirse. timeout indica falta de refresco antes del vencimiento y permite empezar de nuevo. giveup reconoce que el notificador no consiguió resolver la autorización a tiempo.

Los extremos semánticos son noresource e invariant. El primero dice que el estado del recurso vigilado ya no existe. El segundo dice que ese estado no cambiará en el futuro previsible. Los dos pueden detener nuevos intentos, pero uno apunta a ausencia y el otro a estabilidad. Un panel que los reúne bajo “objeto finalizado” convierte información en error.

También puede faltar la causa. El cliente puede reintentar si no hay una razón conocida, con la cautela de retry-after. La ausencia no equivale a noresource; debe quedar como desconocida. Tampoco sirve leer un expires junto a terminated: la RFC declara que no tiene semántica y exige ignorarlo.

No siempre existe un último valor

La baja voluntaria se solicita con SUBSCRIBE y Expires: 0. El notificador envía un NOTIFY final, pero este puede llevar información del recurso o no llevarla. El cliente debe soportar ambos resultados. Por ello, “última notificación” no significa automáticamente “último estado”.

Cuando falta el cuerpo, la única conclusión es el cierre de la relación. Cuando existe, todavía hay que leer su tipo de contenido, la versión y reglas del paquete, y si se trata de un estado completo o parcial. El encabezado de suscripción no convierte un delta en instantánea ni un cuerpo ausente en un valor nulo.

La respuesta 200 al NOTIFY tampoco pertenece a una persona. El suscriptor debe emitirla después de considerar aceptable la notificación y no puede mantener la transacción abierta hasta que un usuario reaccione. Es un acuse de procesamiento automático, no una prueba de lectura, comprensión o ejecución.

La confirmación puede adelantarse a la conversación

El primer NOTIFY confirma la creación. La respuesta 2xx a SUBSCRIBE indica aceptación y promete un NOTIFY inmediato, pero la red puede entregar este último antes de que termine la transacción de suscripción. El orden puede cambiar por pérdida, reordenamiento o bifurcación. Hasta recibirlo, el suscriptor debe mantener el recurso en el estado neutral definido por el paquete.

Conviene reconstruir cuatro tiempos: transacción, suscripción, recurso y observador. El primero ordena mensajes SIP; el segundo, creación, refresco y vencimiento; el tercero, hechos de la aplicación; el cuarto, recepción, análisis y pantalla. La hora más reciente de una captura no demuestra que su conocimiento sea el más reciente.

El expediente mínimo guarda clave local, Call-ID, etiquetas, Event, objetivo, CSeq, valor exacto, motivo, intervalo, origen y autenticación. Otro registro conserva presencia y huella del cuerpo, tipo de medio, versión del paquete y del analizador, y valor derivado. Mezclarlos en una sola fila impide revisar la inferencia.

La suscripción es un uso, no todo el diálogo

La definición de la RFC 6665 sitúa la suscripción dentro de un diálogo. La RFC 5057 de Robert Sparks explica que los usos que comparten diálogo mantienen ciclos independientes. Un uso de suscripción puede desaparecer y dejar activo un uso de invitación. El diálogo solo termina al acabarse su último uso.

La RFC 7621 aclaró el uso de GRUU para alcanzar la instancia adecuada del agente. La RFC 7647, de Sparks y Roach, trató las suscripciones implícitas creadas por REFER y prohibió reutilizaciones problemáticas del diálogo. Son mejoras de direccionamiento y separación. Ninguna autoriza a leer terminated como “recurso destruido”.

La autoría tiene un alcance propio

Adam Roach figura como único autor de las RFC 3265 y 6665; la segunda sustituyó a la primera en julio de 2012. Su perfil público del IETF registra participación desde 1998, servicio como director del área Applications and Real-Time entre 2017 y 2020 y presidencias anteriores en XCON, SIPCORE y NETVC. La lista actual contiene 23 RFC y no muestra funciones activas al 22 de abril de 2026.

Eso documenta contribución a estándares, no responsabilidad por cada implementación. El proveedor responde por sus temporizadores, etiquetas y reglas. El operador responde por la interpretación y la acción. El nombre del autor no es una certificación de despliegue.

Un estado compacto puede seguir siendo honesto

La consola no necesita mostrar todo el expediente, pero sí preservar cinco respuestas: qué suscripción terminó, con qué razón y tiempo; qué dijo o no dijo el cuerpo; quién entregó y autenticó el NOTIFY; qué regla lo interpretó; y qué decisión produjo. Así un timeout abre una brecha de observación, deactivated espera al sucesor y noresource solicita corroboración antes de una medida irreversible.

La objeción más fuerte es práctica: los operadores necesitan semáforos. Correcto. El semáforo puede decir “suscripción terminada; recurso desconocido” en lugar de fabricar una certeza. La precisión no añade ruido; evita que el silencio del sensor se convierta en una noticia sobre el mundo.

Fuentes