Hola, estoy empezando a leer la doc de SipServlets [1] y me he atascado en un ejemplo muy chulo, el de "Call Schedule on Busy or No Answer".
El punto 11 no lo entiendo:
11. The service sends a SIP SUBSCRIBE request to Bob’s SIP UA. This will allow the service to know when Bob becomes available again. 12. Bob’s UA accepts the subscription.
El asunto es que el servidor de aplicaciones previamente, haciendo de B2BUA (aunque entiendo que no es necesario en este caso), había recibido un 486 del destino y lo había transformado en 302 para ofrecer al llamante la historia del formulario web y tal.
Entonces dice que el servidor de aplicaciones envía un SUBSCRIBE para recibir un NOTIFY del llamado cuando éste vuelva a estar disponible.
Me gustaría entender la naturaleza de este SUBSCRIBE ya que el tema de la presencia SIMPLE no está, que yo sepa, nada ligado a la disponibilidad de atender una llamada (depende de la implementación de cada UAS).
Es decir, que un teléfono no tenga líneas disponibles (o tenga "CallWaiting=no") no implica que cuando vuelva a estar disponible publique un nuevo estado de presencia.
De hecho, lo único que he visto que se le medio-parece es el XLite/Eyebeam que envía un PUBLISH ("online/offline" - "On the phone") cuando está en una llamada y al acaba dicha llamada envía un nuevo PUBLISH sin el "On the phone". Pero esto ni siquiera implica que no pueda aceptar llamadas en ese estado (CallWaiting=yes). En cualquier caso el servidor de aplicaciones sólo genera el SUBSCRIBE si había recibido 486 así que en este punto no hay problema.
Mi gran duda es: ¿se puede enviar un SUBSCRIBE a **cualquier** tfno SIP (los clásicos Linksys, Thomson, Snom, softphones...) y que dicho tfno envíe un NOTIFY cuando acepte llamadas? ¿Cómo es el "Event" de ese SUBSCRIBE?
He comprobado que muchos tfnos tienen un "Allow: [...] SUBSCRIBE", pero pensaba que era para el tema del REFER (notificación del resultado de la transferencia) no para el caso que comento.
Gracias por cualquier aclaración sobre esto y un saludo.
PD: No viene al caso, pero ahora que me fijo el "Allow" de un Linksys PAP2 no tiene SUBSCRIBE:
User-Agent: Linksys/PAP2-2.0.12(LS). Allow: ACK, BYE, CANCEL, INFO, INVITE, NOTIFY, OPTIONS, REFER.
Sin embargo el REFER funciona perfectamente y esas cosas ¿?¿? (me tendré que leer de nuevo la teoría por si se me ha escapado algo).
[1] http://www.wesip.com/mediawiki/API/sipservlet-1.0-fcs.pdf