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
--
Iñaki Baz Castillo