Parlay X Terminal Status over SIP/IMS allows
client applications to use Web services to synchronously request the
status of an IMS terminal (or terminals), and then to receive asynchronous
Web service notifications for changes to the state of the terminal.
This service also supports group-level operations.
On startup, the IMS terminal for each user must register its existence
with an S-CSCF. Because this registration must succeed for the terminal
to use any IMS-based services, the existence of this registration
indicates if a user is online and reachable, or offline and unreachable. Parlay X Terminal Status over SIP/IMS is
used by client applications through Parlay X Web service APIs to determine
if an IMS terminal is reachable. To retrieve Parlay X Terminal Status over SIP/IMS from
IMS, Parlay X Terminal Status over SIP/IMS behaves
as an IMS watcher application on top of the Pw reference point where
it retrieves Parlay X Terminal Status over SIP/IMS information
from a Presence Server.
Call flows
When processing getStatus, getStatusForGroup,
startNotification and endNotification requests,
Parlay X Terminal Status over SIP/IMS uses
SIP SUBSCRIBE and NOTIFY signaling to communicate with the presence
server. An example of a SIP message flow would be:
- The Parlay X Terminal Status over SIP/IMS receives
an incoming getStatus request for a particular terminal (such as the
presentity).
- The service implementation sends a SIP SUBSCRIBE message to the
presence server. This step assumes that the PresenceServerSIPURI is
configured.
- The presence server sends a 200 OK response to the SUBSCRIBE request.
The service implementation receives the 200 OK response.
- The presence server sends a NOTIFY response which includes the
presence information of the presentity. The service implementation
receives the NOTIFY.
- The service implementation sends a 200 OK response to the NOTIFY
message.
- The service implementation processes the rich presence information
and determines current status of the terminal. It then responds to
the incoming getStatus request with the result.
When the Web service implementation processes a getStatus or
getStatusForGroup request, the outbound SUBSCRIBE message has a SIP
Expires header indicating that it is a presence
fetch.
The presence server then sends only a single NOTIFY in response.
When
the service processes a startNotification request, the outbound SUBSCRIBE
message has a SIP Expires header indicating that it is an extended
subscription. The presence server sends an immediate NOTIFY in response,
and may send subsequent NOTIFY messages as the underlying state of
the presentity changes. Later, the Web service implementation may
send additional SUBSCRIBE requests to refresh the subscription.
When
the service processes an endNotification request, the outbound SUBSCRIBE
message has a SIP Expires header indicating that it wishes to terminate
the subscription. The Web service implementation sends only a single
NOTIFY in response.
Interfaces
- TerminalStatus
- getStatus
- Obtains the status of the terminal. The Web service implementation
generates an outbound SIP SUBSCRIBE request to the configured presence
server and uses the incoming presence information to determine whether
the terminal is busy, reachable, or unreachable.
- getStatusForGroup
- Performs the same query as getStatus, except that it accepts group
lists and can return multiple results simultaneously.
- TerminalStatusNotificationManager
- startNotification
- Like getStatus and getStatusForGroup, this operation uses SIP
SUBSCRIBE and NOTIFY interactions to retrieve presence information.
However, startNotification differs in that it creates long-lived subscriptions
instead of performing a single fetch operation. The Web service implementation
then uses the PX Notification component Web service to
deliver Web service callbacks to a Web service endpoint that is implementing
the TerminalNotification interface.
- endNotification
- Terminates a subscription that was created using startNotification.
- statusNotification_DeliveryAttempted
- The attempted delivery of a StatusNotification.
- statusNotification_DeliveryResult
- The delivery result for a single StatusNotification.
- statusChanged_DeliveryAttempted
- The attempted delivery to change the status.
- statusChanged_DeliveryResult
- The result of a single change in status.
- statusError_DeliveryAttempted
- The attempted delivery of a StatusError.
- statusError_DeliveryResult
- The delivery result for a single StatusError.
- statusEnd_DeliveryAttempted
- The attempted delivery to end the status.
- statusEnd_DeliveryResult
- The delivery result for a single status to end.