A Contact header field value provides a URI whose meaning depends on the type of request or response it is in. A Contact header field value can contain a display name, a URI with URI parameters, and header parameters.
The Contact header field provides a SIP or SIPS URI that can be used to contact that specific instance of the User Agent for subsequent requests. The Contact header field MUST be present and contain exactly one SIP or SIPS URI in any request that can result in the establishment of a dialog. For the methods defined in this specification, that includes only the INVITE request. For these requests, the scope of the Contact is global. That is, the Contact header field value contains the URI at which the User Agent would like to receive requests, and this URI MUST be valid even if used in subsequent requests outside of any dialogs.
If the Request-URI or top Route header field value contains a SIPS URI, the Contact header field MUST contain a SIPS URI as well.
Messages and Contact Headers
- Requests: A contact header is mandatory for INVITE's and optional for ACK, OPTIONS and REGISTER requests. This allows the callee to send future Requests, such as BYE Requests, directly to the caller instead of through a series of proxies.
- Informational Responses - A contact header is optional in a Informational Response to an INVITE request. It has the same semantics in an Informational Response as a Success Response.
- Success Responses - A contact header is mandatory in response to INVITE's and optional in response to OPTIONS and REGISTER requests. An user agent server sending a Success Response to an INIVTE must insert a ContactHeader in the Response indicating the SIP address under which it is reachable most directly for future SIP Requests.
- Redirection Responses - A contact header is optional in response to INVITE's, OPTIONS, REGISTER and BYE requests. A proxy may also delete the contact header.
- Ambiguous Header: - A contact header is optional in response to INVITE, OPTIONS, REGISTER and BYE requests.
The ContactHeader defines the Contact parameters "q" and "expires". The
q-value
value is used to prioritize addresses in a list of contact addresses. The
expires
value suggests an expiration interval that indicates how long the client would like a registration to be valid for a specific address. These parameters are only used when the Contact is present in a:
- REGISTER request
- REGISTER response
- 3xx response
For Example:
Contact: "Mr. Watson" sip:watson@worcester.jcp.org; q=0.7; expires=3600, "Mr. Watson" mailto:watson@jcp.org.com; q=0.1
@see HeaderAddress
@see Parameters
@author BEA Systems, NIST
@version 1.2