RFC 3842
A Message Summary and Message Waiting Indication Event Package for the Session Initiation Protocol (SIP)
1. Conventions π
okay so the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document mean exactly what they mean in BCP 14, RFC 2119 [3]. no cap, they're not vibes, they're rules π«Ά
2. Background and Appropriateness π
okay so Message Waiting Indication is a classic telephone-network thing β¨ it usually shows up as an audible or visible cue that you've got messages, like a special dial tone (called message-waiting dial tone in telephone networks), a light or indicator on the phone, icons or text, or some mix of those πΈ
Message-waiting dial tone is similar to but distinct from stutter dial tone. Both are defined in GR-506 [11].
the SIP [1] base spec was only designed to handle session initiation for multimedia sessions and rendezvous π¦ and since Message Waiting Indication is really status information that's orthogonal to a session, it wasn't clear how an IP phone acting as a SIP User Agent would get comparable functionality. the telephony crowd saw this as a shortcoming of SIP, and honestly, fair π
users want the useful stuff they already have on traditional analog, mobile, and PBX phones π it's also good to offer comparable functionality in a flexible way that allows more customization and new features β¨ SIP Specific Event Notification (RFC 3265 -- SIP Events) [2] is the right tool here, because it keeps the user mobility and rendezvous features that SIP gives you π§
so with SIP-Specific Event Notification, a Subscriber User Agent (usually an IP phone or a SIP software User Agent) subscribes to the status of their messages π then a SIP User Agent working on behalf of the user's messaging system notifies the Subscriber every time the messaging account's messages change. (this Notifier could be combined with a User Agent that gives a real-time media interface to send or receive messages, or it could be a stand-alone entity π) the Notifier puts a message summary in the body of a NOTIFY, encoded in a new MIME type defined later in this document. a User Agent can also explicitly fetch the current status π«Ά
a SIP User Agent MAY subscribe to multiple accounts, which are told apart by the Request URI β¨ and multiple SIP User Agents MAY subscribe to the same account. so many people, one inbox, iconic π
before any subscriptions or notifications get sent, each interested User Agent must be made aware of its messaging notifier(s) π this MAY be configured by hand on the interested User Agents, configured by hand on an appropriate SIP Proxy, or discovered dynamically based on requested caller preferences [4] and registered callee capabilities [5]. (for more on usage with callee capabilities, see Section 4.2 π)
3. Event Package Formal Definition π
3.1. Event Package Name
this document defines a SIP Event Package the way RFC 3265 [2] describes one β¨ the event-package token name for this package is:
"message-summary"
3.2. Event Package Parameters
this package doesn't define any event package parameters π
3.3. SUBSCRIBE Bodies
this package doesn't define any SUBSCRIBE bodies π
3.4. Subscription Duration
subscriptions to this event package MAY range from minutes to weeks β³ subscriptions in hours or days are more typical and are RECOMMENDED πΈ the default subscription duration for this event package is one hour.
3.5. NOTIFY Bodies
a simple text-based format is proposed so low-end user agents don't get an undue burden, like cheap IP phones with no display π even though the format is text-based, it's meant for machine consumption only π€
a future extension MAY define other NOTIFY bodies π¦ if no "Accept" header is present in the SUBSCRIBE, the body type defined in this document MUST be assumed. no shade, that's the default π
the format tries really hard to separate orthogonal attributes of messages β¨ messages get split by message-context-class (for example: voice-message, fax-message, pager-message, multimedia-message, text-message, and none), by message status (new and old), and by urgent and non-urgent type π
the text format starts with a simple status line and can optionally include a summary line per message-context-class π message-context-classes are defined in [7]. for each message-context-class, the total number of new and old messages is reported in the new and old fields π
In some cases, detailed message summaries are not available. The status line lets messaging systems or messaging gateways give you the traditional boolean message waiting notification.
Messages-Waiting: yes
if the Request-URI or To header in a message-summary subscription points at a group or collection of individual messaging accounts, the notifier MUST specify which account the message-summary body is about π and the account URI MUST NOT be wrapped in angle brackets ("<" and ">") π
Message-Account: sip:alice@example.com
in the next example there's more than boolean info for the User Agent β¨ there are two new and four old fax messages:
Fax-Message: 2/4
after the summary, the format can optionally list a summary count of urgent messages π₯ in the next example there's one new and three old voice messages. none of the new ones are urgent, but one of the old ones is. all counters have a max value of 4,294,967,295 ((2^32) - 1). notifiers MUST NOT generate a request with a larger value, and subscribers MUST treat a larger value as 2^32-1 π
Voice-Message: 1/3 (0/1)
after the summary counts, messaging systems MAY append RFC 2822 style message headers [9] that describe newly added messages π message headers MUST NOT be included in an initial NOTIFY, because new messages could be essentially unbounded in size π message headers in later notifications MUST only correspond to messages added since the previous notification for that subscription. a messaging system that includes message headers in a NOTIFY MUST provide an administrator-configurable mechanism to select which headers get sent π the headers likely to be included are To, From, Date, Subject, and Message-ID. also, the formatting of these headers in this body is identical to SIP extension-headers, not the similar format defined in RFC 2822 π§
implementations that generate large notifications are reminded to follow the message size restrictions for unreliable transports described in Section 18.1.1 of SIP [1] β οΈ
mapping local message state to new/old status and urgency is an implementation issue for the messaging system πΈ however, the messaging notifier MUST NOT consider a message "old" just because it generated a notification, since that could stop another subscription from accurately receiving message-summary notifications π likewise, the messaging system MAY use any suitable algorithm to decide that a message is "urgent" π₯
messaging systems MAY use any algorithm to pick the right message-context-class for a specific message π¦ systems that use Internet Mail SHOULD use the contents of the Message-Context header [7] (defined in RFC 3458), if present, as a hint for the context determination β¨ also, a composed messaging system doesn't need to support a given context in order to generate notifications tagged with that context π«Ά
3.6. Subscriber Generation of SUBSCRIBE Requests π¬
okay so Subscriber User Agents usually SUBSCRIBE to message summary info for a period of hours or days π°οΈ, and they automatically try to re-SUBSCRIBE well before the subscription is completely expired. If re-subscription fails, the Subscriber SHOULD keep retrying every so often until it works, and it should take care to backoff so it doesn't clog up the network π¦. If a subscription has already expired, new re-subscriptions MUST use a new Call-ID π
.
The Subscriber SHOULD SUBSCRIBE to that user's message summaries whenever a new user becomes associated with the device (a new login) π«Ά. The Subscriber MAY also explicitly fetch the current status at any time β¨. The subscriber SHOULD renew its subscription immediately after a reboot, or when the subscriber's network connectivity has just been re-established π.
The Subscriber MUST be prepared to receive and process a NOTIFY with new state immediately after sending a new SUBSCRIBE, a SUBSCRIBE renewal, an unsubscribe, a fetch, or at any other time during the subscription π. Be ready, bestie!
When a user de-registers from a device (logoff, power down of a mobile device, etc.), subscribers SHOULD unsubscribe by sending a SUBSCRIBE message with an Expires header of 0 π.
3.7. Notifier Processing of SUBSCRIBE Requests π‘οΈ
When a SIP Messaging System receives SUBSCRIBE messages with the message-summary event-type, it SHOULD authenticate the subscription request π. If authentication is successful, the Notifier MAY limit the duration of the subscription to an administrator defined amount of time as described in SIP Events [2] β³.
3.8. Notifier Generation of NOTIFY Requests π
Immediately after a subscription is accepted, the Notifier MUST send a NOTIFY with the current message summary information π¨. This lets the Subscriber resynchronize its state π. This initial synchronization NOTIFY MUST NOT include the optional RFC 2822 style message headers [8] π«.
When the status of the messages changes sufficiently for a messaging account to change the number of new or old messages, the Notifier SHOULD send a NOTIFY message to all active subscribers of that account π¬. NOTIFY messages sent to subscribers of a group or alias, MUST contain the message account name in the notification body π·οΈ.
A Messaging System MAY send a NOTIFY with an Expires header of 0 and a Subscription-State header of terminated before a graceful shutdown π.
3.9. Subscriber Processing of NOTIFY Requests π
Upon receipt of a valid NOTIFY request, the subscriber SHOULD immediately render the message status and summary information to the end user in an implementation specific way π.
The Subscriber MUST be prepared to receive NOTIFYs from different Contacts corresponding to the same SUBSCRIBE. (The SUBSCRIBE may have been forked π΄.)
3.10. Handling of Forked Requests π΄
Forked requests are allowed for this event type and may install multiple subscriptions πΈ. The Subscriber MAY render multiple summaries corresponding to the same account directly to the user, or MAY merge them as described below π§©.
If any of the Messages-Waiting status lines report yes, then the merged state is yes; otherwise the merged state is no π.
The Subscriber MAY merge summary lines in an implementation-specific way if all notifications contain at least one msg-summary line π.
3.11. Rate of Notifications π’
A Notifier MAY choose to hold NOTIFY requests in "quarantine" for a short administrator-defined period (seconds or minutes) when the message status is changing rapidly π§. Requests in the quarantine which become invalid are replaced by newer notifications, thus reducing the total volume of notifications π. This behavior is encouraged for implementations with heavy interactive use π. Note that timely notification resulting in a change of overall state (messages waiting or not) and notification of newly added messages is probably more significant to the end user than a notification of newly deleted messages which do not affect the overall message waiting state (e.g., there are still new messages) π€.
Notifiers SHOULD NOT generate NOTIFY requests more frequently than once per second β±οΈ.
3.12. State Agents and Lists π§
A Subscriber MAY use an "alias" or "group" in the Request-URI of a subscription if that name is significant to the messaging system π·οΈ. Implementers MAY create a service which consolidates and summarizes NOTIFYs from many Contacts πͺ. This document does not preclude implementations from building state agents which support this event package π¦. One way to implement such a service is with the event list extension [10] π.
3.13. Behavior of a Proxy Server π
There are no additional requirements on a SIP Proxy, other than to transparently forward the SUBSCRIBE and NOTIFY methods as required in SIP π. However, Proxies SHOULD allow non-SIP URLs π. Proxies and Redirect servers SHOULD be able to direct the SUBSCRIBE request to an appropriate messaging notifier User Agent π―.
4. Examples of Usage β¨
4.1. Example Message Flow
The examples shown below are for informational purposes only, so don't treat them as the rulebook π. For a normative description of the event package, check out sections 3 and 5 of this document. β¨
In this example call flow, Alice's IP phone subscribes to the status of Alice's messages π±π. The Via headers are left out to keep things clean.
Subscriber Notifier
| |
| A1: SUBSCRIBE (new) |
|---------------------->|
| A2: 200 OK |
|<----------------------|
| |
| A3: NOTIFY (sync) |
|<----------------------|
| A4: 200 OK |
|---------------------->|
| |
| |
| A5: NOTIFY (change) |
|<----------------------|
| A6: 200 OK |
|---------------------->|
| |
| |
| A7: (re)SUBSCRIBE |
|---------------------->|
| A8: 200 OK |
|<----------------------|
| |
| A9: NOTIFY (sync) |
|<----------------------|
| A10: 200 OK |
|---------------------->|
| |
| |
| A11: (un)SUBSCRIBE |
|---------------------->|
| A12: 200 OK |
|<----------------------|
| |
| A13: NOTIFY (sync) |
|<----------------------|
| A14: 200 OK |
|---------------------->|
Okay, now let's go step by step through the flow! π¦
A1 is the first move. Alice's phone (the Subscriber) sends a request to Alice's voicemail gateway (the Notifier) to subscribe to her message summary status for 1 day. π
A1: Subscriber (Alice's phone) ->
Notifier (Alice's voicemail gateway)
Subscribe to Alice's message summary status for 1 day.
SUBSCRIBE sip:alice@vmail.example.com SIP/2.0
To: <sip:alice@example.com>
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 03:55:06 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 4 SUBSCRIBE
Contact: <sip:alice@alice-phone.example.com>
Event: message-summary
Expires: 86400
Accept: application/simple-message-summary
Content-Length: 0
A2 is the Notifier saying "got it!" β¨ It replies with a 200 OK response.
A2: Notifier -> Subscriber
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=4442
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 03:55:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 4 SUBSCRIBE
Expires: 86400
Content-Length: 0
A3 is the immediate sync. πΈ Right after the subscription is accepted, the Notifier sends the current state straight away. In this case, that's 2 new and 8 old [2 urgent] messages.
A3: Notifier -> Subscriber
(immediate synchronization of current state:
2 new and 8 old [2 urgent] messages)
NOTIFY sip:alice@alice-phone.example.com SIP/2.0
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 03:55:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 20 NOTIFY
Contact: <sip:alice@vmail.example.com>
Event: message-summary
Subscription-State: active
Content-Type: application/simple-message-summary
Content-Length: 99
Messages-Waiting: yes
Message-Account: sip:alice@vmail.example.com
Voice-Message: 2/8 (0/2)
Then the phone says thanks with a 200 OK. π«Ά
A4: Subscriber -> Notifier
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 03:55:08 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 20 NOTIFY
Content-Length: 0
A5 is the change notification!! π₯ New messages have arrived, so the Notifier sends a NOTIFY with some headers from each of the new messages appended.
A5: Notifier -> Subscriber
This is a notification of new messages.
Some headers from each of the new messages are appended.
NOTIFY sip:alice@alice-phone.example.com SIP/2.0
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 04:28:53 GMT
Contact: <sip:alice@vmail.example.com>
Call-ID: 1349882@alice-phone.example.com
CSeq: 31 NOTIFY
Event: message-summary
Subscription-State: active
Content-Type: application/simple-message-summary
Content-Length: 503
Messages-Waiting: yes
Message-Account: sip:alice@vmail.example.com
Voice-Message: 4/8 (1/2)
To: <alice@atlanta.example.com>
From: <bob@biloxi.example.com>
Subject: carpool tomorrow?
Date: Sun, 09 Jul 2000 21:23:01 -0700
Priority: normal
Message-ID: 13784434989@vmail.example.com
To: <alice@example.com>
From: <cathy-the-bob@example.com>
Subject: HELP! at home ill, present for me please
Date: Sun, 09 Jul 2000 21:25:12 -0700
Priority: urgent
Message-ID: 13684434990@vmail.example.com
A6 is the phone's 200 OK reply to that change notification. π
A6: Subscriber -> Notifier
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 04:28:53 GMT
Call-ID: 1349882@alice-phone.example.com
CSeq: 31 NOTIFY
Content-Length: 0
A7 is the refresh! π§ The Subscriber sends a SUBSCRIBE to refresh the subscription.
A7: Subscriber -> Notifier
Refresh subscription.
SUBSCRIBE sip:alice@vmail.example.com SIP/2.0
To: <sip:alice@example.com>;tag=4442
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 15:55:06 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 8 SUBSCRIBE
Contact: <sip:alice@alice-phone.example.com>
Event: message-summary
Expires: 86400
Accept: application/simple-message-summary
Content-Length: 0
A8 is the Notifier confirming the refresh. β
A8: Notifier -> Subscriber
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=4442
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 15:55:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 8 SUBSCRIBE
Contact: <sip:alice@alice-phone.example.com>
Expires: 86400
Content-Length: 0
A9 is another immediate sync, this time of the current state. π
A9: Notifier -> Subscriber
(immediate synchronization of current state)
NOTIFY sip:alice@alice-phone.example.com SIP/2.0
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 15:55:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 47 NOTIFY
Contact: <sip:alice@vmail.example.com>
Event: message-summary
Subscription-State: active
Content-Type: application/simple-message-summary
Content-Length: 99
Messages-Waiting: yes
Message-Account: sip:alice@vmail.example.com
Voice-Message: 4/8 (1/2)
A10 is the phone's 200 OK for that sync. π
A10: Subscriber -> Notifier
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 15:55:08 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 47 NOTIFY
Contact: <sip:alice@vmail.example.com>
A11 is the unsubscribe moment. π The Subscriber sends a SUBSCRIBE with Expires set to 0, after "alice" logs out.
A11: Subscriber -> Notifier
Un-subscribe after "alice" logs out.
SUBSCRIBE sip:alice@vmail.example.com SIP/2.0
To: <sip:alice@example.com>;tag=4442
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 19:35:06 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 17 SUBSCRIBE
Contact: <sip:alice@alice-phone.example.com>
Event: message-summary
Expires: 0
Accept: application/simple-message-summary
Content-Length: 0
A12 is the Notifier acknowledging the unsubscribe. π«‘
A12: Notifier -> Subscriber
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=4442
From: <sip:alice@example.com>;tag=78923
Date: Mon, 10 Jul 2000 19:35:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 17 SUBSCRIBE
Contact: <sip:alice@alice-phone.example.com>
Expires: 0
Content-Length: 0
A13 is one last sync, which the subscriber can now ignore. π
A13: Notifier -> Subscriber
(immediate synchronization of current state,
which the subscriber can now ignore)
NOTIFY sip:alice@alice-phone.example.com SIP/2.0
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 19:35:07 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 56 NOTIFY
Contact: <sip:alice@vmail.example.com>
Event: message-summary
Subscription-State: terminated;reason=timeout
Content-Type: application/simple-message-summary
Content-Length: 99
Messages-Waiting: yes
Message-Account: sip:alice@vmail.example.com
Voice-Message: 4/8 (1/2)
And finally, A14 is the phone's 200 OK, closing out the whole flow. π
A14: Subscriber -> Notifier
SIP/2.0 200 OK
To: <sip:alice@example.com>;tag=78923
From: <sip:alice@example.com>;tag=4442
Date: Mon, 10 Jul 2000 19:35:08 GMT
Call-Id: 1349882@alice-phone.example.com
CSeq: 56 NOTIFY
Event: message-summary
Content-Length: 0
4.2. Example Usage with Callee Capabilities and Caller Preferences
Callee capabilities are optional, but they're encouraged π. If you use them, a messaging notifier MAY REGISTER a Contact with an appropriate methods and events tag, like in the example below. To stand out even more, the messaging notifier MAY also REGISTER as a Contact with the actor="msg-taker" tag. Here's an example of that kind of registration. β¨
REGISTER sip:sip3-sj.example.com SIP/2.0
To: <sip:alice@example.com>
From: <sip:alice@example.com>;tag=4442
...
Contact: <sip:alice@vm13-sj.example.com>
;actor="msg-taker";methods="SUBSCRIBE"
;automata;events="message-summary"
The following SUBSCRIBE message would find the Contact which registered in the example above. π
SUBSCRIBE sip:alice@example.com SIP/2.0
...
Accept: application/simple-message-summary
Event: message-summary
Accept-Contact: *;automata;actor="msg-taker"
5. Formal Syntax π
The following syntax specification uses the augmented Backus-Naur Form (BNF) as described in RFC 2234 [6]. Grammar time, bestie! π€
5.1. New Event-Package Definition
This document defines a new event-package with the package name:
message-summary
5.2. Body Format Syntax
The formal syntax for the application/simple-message-summary MIME type is described below. The message-context-class production is defined in Section 6.2 of RFC 3458 [7]. Note that all productions described here are case insensitive. π
message-summary = msg-status-line CRLF
[msg-account CRLF]
[*(msg-summary-line CRLF)]
[ *opt-msg-headers ]
msg-status-line = "Messages-Waiting" HCOLON msg-status
msg-status = "yes" / "no"
msg-account = "Message-Account" HCOLON Account-URI
Account-URI = SIP-URI / SIPS-URI / absoluteURI
msg-summary-line = message-context-class HCOLON newmsgs SLASH oldmsgs
[ LPAREN new-urgentmsgs SLASH old-urgentmsgs RPAREN ]
opt-msg-headers = CRLF 1*(extension-header CRLF)
newmsgs = msgcount
oldmsgs = msgcount
new-urgentmsgs = msgcount
old-urgentmsgs = msgcount
msgcount = 1*DIGIT ; MUST NOT exceed 2^32-1
6. Security Considerations π
Message summaries and optional message bodies contain information which is typically very privacy sensitive. This is serious stuff, babe π. At a minimum, subscriptions to this event package SHOULD be authenticated and properly authorized. Furthermore, notifications SHOULD be encrypted and integrity protected using either end-to-end mechanisms, or the hop-by-hop protection afforded messages sent to SIPS URIs.
Additional and privacy security considerations are discussed in detail in SIP [1] and SIP Events [2]. π‘οΈ
7. IANA Considerations π·
7.1. SIP Event Package Registration for message-summary
Here's what goes in the registration:
Package name: message-summary
Type: package
Contact: [Mahy]
Published Specification: This document.
7.2. MIME Registration for application/simple-message-summary π
okay so this is the MIME registration bit, and it's giving very official paperwork energy πβ¨
- MIME media type name:
application - MIME subtype name:
simple-message-summary - Required parameters: none.
- Optional parameters: none.
Encoding considerations: this MIME type was made for protocols that can carry binary-encoded data πΎ. It looks kinda like RFC 2822, but it's not totally identical bestie π«£. Line folding is SIP-specific, and included URIs can have non-ASCII characters π. So protocols that can't carry binary data (the ones with line length or character-set limits, for example) MUST use a reversible transfer encoding (such as base64) to carry this MIME type π.
- Security considerations: check the "Security Considerations" section in this document π. It's a whole vibe and you need to read it.
- Interoperability considerations: none
- Published specification: This document.
- Applications which use this media: the simple-message-summary application subtype supports the exchange of message waiting and message summary information in SIP networks π¬π.
Additional information:
- Magic number(s): N/A
- File extension(s): N/A
- Macintosh file type code: N/A
8. Contributors π§βπ»
Ilya Slain came up with the initial format of the text body in this document πΈ. He used to be listed as a co-author, but he is no longer reachable π₯².
9. Acknowledgments π
Huge thanks to all of these legends π. From Cisco: Dan Wing, Dave Oran, Bill Foster, Steve Levy, Denise Caballero-McCann, Jeff Michel, Priti Patil, Satyender Khatter, Bich Nguyen, Manoj Bhatia, David Williams, and Bryan Byerly. From Dynamicsoft: Jonathan Rosenberg and Adam Roach. From Snowshore: Eric Burger. From Comverse: Nir Chen. From Mediatrix: Eric Tremblay. You're all iconic π«Άβ¨.
10. References π
10.1. Normative References
- [1] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002.
- [2] Roach, A.B., "Session Initiation Protocol (SIP)-Specific Event Notification", RFC 3265, June 2002.
- [3] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
- [4] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller Preferences for the Session Initiation Protocol (SIP)", RFC 3841, August 2004.
- [5] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating User Agent Capabilities in the Session Initiation Protocol (SIP)", RFC 3840, August 2004.
- [6] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.
- [7] Burger, E., Candell, E., Eliot, C., and G. Klyne, "Message Context for Internet Mail", RFC 3458, January 2003.
10.2. Informational References
- [8] Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November 1996.
- [9] Resnick, P., Ed., "Internet Message Format", RFC 2822, April 2001.
- [10] Rosenberg, J., Roach, A.B., and B. Campbell, "A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists", Work in Progress, June 2003.
- [11] Telcordia, "GR-506: Signaling for Analog Interfaces, Issue 1, Revision 1", Nov 1996.
11. Author's Address ποΈ
Rohan Mahy
Cisco Systems, Inc.
5617 Scotts Valley Drive, Suite 200
Scotts Valley, CA 95066
USA
EMail: rohan@cisco.com
12. Full Copyright Statement Β©οΈ
Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions in BCP 78, and except as set out there, the authors keep all their rights π.
This document and the information in it are provided on an "AS IS" basis, and the contributor, the organization they represent or are sponsored by (if any), the Internet Society, and the Internet Engineering Task Force DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, including but not limited to any warranty that using the information herein will not infringe any rights, or any implied warranties of merchantability or fitness for a particular purpose π ββοΈ. Not a single warranty, bestie.
Intellectual Property βοΈ
The IETF takes no position on the validity or scope of any Intellectual Property Rights or other rights that might be claimed to apply to implementing or using the technology in this document, or on whether any license under those rights might be available. It also doesn't claim to have made any independent effort to identify such rights. Info on how rights work for RFC documents is in BCP 78 and BCP 79 π.
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the results of an attempt to get a general license or permission for implementers or users of this specification to use these proprietary rights, can be found in the IETF's online IPR repository at http://www.ietf.org/ipr ποΈ.
The IETF invites any interested party to bring to its attention any copyrights, patents, patent applications, or other proprietary rights that may cover technology needed to implement this standard. Send that info to the IETF at ietf-ipr@ietf.org π¨.
Acknowledgement π·
Funding for the RFC Editor function is currently provided by the Internet Society πβ¨.
π¦ where this page comes from
- ietf: rfc3842 2004-08
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms