Una respuesta SIP a una solicitud INVITE puede ser final o provisional.
Las respuestas finales siempre se envían de forma fiable, pero las
respuestas provisionales normalmente no. Para los casos en los que
debe enviar una respuesta provisional de forma fiable, puede utilizar
el método PRACK (Provisional response acknowledgment).
Antes de empezar
Para desarrollar aplicaciones que soportan PRACK, se deben
satisfacer los criterios siguientes:
- Para indicar que el cliente soporta PRACK, el cliente que envía
la solicitud INVITE debe poner una etiqueta 100rel en la cabecera
Soportado o Necesario.
- El servlet SIP debe responder invocando el método sendReliably(),
en lugar del método send().
Acerca de esta tarea
PRACK se describe en los estándares siguientes:
- RFC 3262
("Reliability of Provisional Responses in the Session Initiation
Protocol (SIP)"), que amplía
RFC 3261
("SIP: Session Initiation Protocol"), añadiendo PRACK y la
etiqueta de opción 100rel.
- Sección 5.7.1 ("Respuestas provisionales fiables")
de
JSR 289
("Especificación de servlet SIP versión 1.1").
Procedimiento
- Si está desarrollando una aplicación que actúa como un proxy,
haga que la aplicación genere y envíe una respuesta provisional
fiable para cualquier solicitud INVITE que no tenga ninguna
etiqueta en el campo Para.
- Si está desarrollando una aplicación que actúa como un cliente
de agente de usuario (UAC), realice las acciones siguientes:
- Haga que la aplicación añada la etiqueta 100rel a las solicitudes
INVITE salientes.
La etiqueta de opción debe aparecer en la cabecera Soportado o
Necesario.
- Para crear una solicitud PRACK y enviar la solicitud al
servidor de agente de usuario (UAS), invoque el método createPrack()
en la respuesta entrante en el doProvisionalResponse(...) de la
aplicación . El contenedor maneja la cabecera RAck tal como se
define en la especificación JSR 289 sección 5.7.1.
- La aplicación que actúa como un UAC recibe una respuesta final
2xx-6xx en el PRACK, que el
UAC puede manejar con un método doResponse().
- Si está desarrollando una aplicación que actúa como un servidor
de agente de usuario (UAS), realice las acciones siguientes: