Network Working Group W. O'Connor Internet Draft E. Burger Document: draft-burger-sipping-netann-01.txt J. Van Dyke Category: Standards Track SnowShore Networks, Inc. Expires: May 2002 November 21, 2001 Network Announcements with SIP Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026 [1]. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This document is the result of a chartered SIPPING work group item. 1. Abstract In SIP-based networks [2], there is a need to provide announcements. In some situations, one must play the announcement without providing an answer indication. In others, one must play the announcement after completing call setup. This document describes how to provide such announcements in a SIP-based network. The method described here is a media server service instance. The document [3] describes generic URI's for media server service instances. 2. Conventions used in this document The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC-2119 [4]. O'Connor, et. Al. Expires 5/21/2002 1 Network Announcements with SIP November 2001 3. Overview A network announcement is the delivery of an audio resource, such as a prompt file, to a terminal device. There are two types of network announcements. The differentiating characteristic between the two types is whether the network fully sets up the call before playing the announcement. The analog in the PSTN is whether answer supervision is supplied; i.e. does the announcement server answer the call prior to delivering the announcement. Playing an announcement after call setup is straightforward. First, the requesting device issues an INVITE to the media server requesting the announcement service. The media server negotiates the SDP and responds with a 200 OK. After receiving the ACK from the requesting device, the media server plays the requested prompt and issues a BYE to the requesting device. In replicating and expanding on the existing telephone network, there is a need to play announcements during call setup. That is, the network delivers media to the caller before the setup completes. Network operators need this capability to provide informational network announcements, such as "The person you are trying to reach is unavailable. Good Bye." or "We are sorry, but all circuits are busy. Please try your call again later. Good Bye." Note that simply redirecting the caller to a media server, with the media server issuing a 200 OK response, is not appropriate. The call has not completed successfully. To support the appropriate paradigm, the media server issues a 100 TRYING response, followed immediately by a 183 SESSION PROGRESS response with SDP. This enables the media server to send early media to the caller. The media server sends the requested audio. After playing the audio, the media server issues a 487 REQUEST TERMINATED response code to the requesting device. If the media server does not support announcements, it MUST respond with the 488 NOT ACCEPTABLE HERE response code, as specified by [3]. If the media server supports announcements, but it cannot find the referenced URI, it MUST respond with the 404 NOT FOUND response code, as specified by [3]. If the media server receives an INVITE for the announcement service without a "play=" parameter, it MUST respond with the 404 NOT FOUND response code, as there is no default value for the announcement service. If there is an error retrieving the announcement, the media server MUST respond with an appropriate 4xx error code reflecting the error. O'Connor, et. al. Expires 5/21/02 2 Network Announcements with SIP November 2001 4. Announcement Service The Request URI fully describes the announcement service through the use of the user part of the address and additional URI parameters, as described in [3]. The user portion of the address, "annc", specifies the announcement service on the media server. The service has several associated URI parameters that control the content and delivery of the announcement. These parameters are described below: "play=" specifies the audio resource or announcement sequence to be played. "early=" Specifies whether early media treatment is desired. "repeat=" Specifies how many times the media server should repeat the announcement or sequence named by the "play=" parameter. "delay=" Specifies a delay interval between announcement repetitions. The delay is measured in milliseconds. "duration=" Specifies the maximum duration of the announcement. The media server will discontinue the announcement and end the call if the maximum duration has been reached. The duration is measured in milliseconds. "locale=" Specifies the language and country variant of the announcement sequence named in the "play=" parameter. The language is defined as a two letter code per ISO 639 [5]. The country variant is also defined as a two letter code per ISO 3166 [6]. These elements are concatenated with a single underbar (%x5F) character. "param[n]=" Provides a mechanism for passing values that are to be substituted into an announcement sequence. Up to 9 parameters ("param1=" through "param9=") may be specified. The "play=" parameter is mandatory and MUST be present. All other parameters are OPTIONAL. NOTE: Some encodings are not self-describing. Should we specify something like content-type? Alternatively, how about a "media=" parameter? The form of the SIP Request URI for announcements is as follows. Note that the backslash, CRLF, and spacing before the "play=" is for readability purposes only. sip:annc@ms2.carrier.net; \ play="http://audio.carrier.net/allcircuitsbusy.g711"; \ early=yes sip:annc@ms2.carrier.net; \ play="file://fileserver.carrier.net/geminii/yourHoroscope.wav" O'Connor, et. al. Expires 5/21/02 3 Network Announcements with SIP November 2001 5. Operation The scenarios below assume there is a SIP Proxy, application server, or SoftSwitch between the caller and the media server. However, the announcement service works as described below even if the caller invokes the service directly. We chose to discuss the proxy case, as it will be the most common case. As described above, the "early=" parameter determines whether the media server plays the prompt after call setup or as early media. The default value for the "early=" parameter MUST BE "yes". That is, the default action is for the media server to play the prompt before establishing the call. We envision that that this service will be most commonly used for network announcements which require early media, hence that is the default behavior. 5.1. Established Call Prompting 5.1.1. Description The caller issues an INVITE to the serving SIP Proxy. The SIP Proxy determines what audio prompt to play to the caller. The proxy responds to the caller with 100 TRYING. The proxy issues an INVITE to the media server, requesting the appropriate prompt to play coded in the play= parameter. The INVITE MUST contain the parameter "early=no" to invoke the Established Call Prompting service. The media server responds with 200 OK. The proxy sends a 200 OK to the caller. The caller then issues an ACK. The proxy then issues an ACK to the media server. With the call setup, the media server plays the requested prompt. When the media server completes the play of the prompt, it issues a BYE to the proxy. The proxy then issues a BYE to the caller. O'Connor, et. al. Expires 5/21/02 4 Network Announcements with SIP November 2001 5.1.2. Protocol Diagram Caller Proxy Media Server | INVITE | | |----------------------->| INVITE | | 100 TRYING |----------------------->| |<-----------------------| 200 OK | | 200 OK |<-----------------------| |<-----------------------| | | ACK | | |----------------------->| ACK | | |----------------------->| | | | | Play Announcement (RTP) | |<================================================| | | | | | BYE | | BYE |<-----------------------| |<-----------------------| | | 200 OK | 200 OK | |----------------------->|----------------------->| | | | 5.2. Early Media Prompting 5.2.1. Description The caller issues an INVITE to the serving SIP Proxy. Normally, the SIP Proxy would complete the call to the requested destination. However, if the destination is not available, the proxy will request a media server to play an audio prompt to the caller. The proxy responds with a 100 TRYING. The proxy issues an INVITE to the media server, requesting the appropriate prompt to play. The INVITE MUST contain the parameter "early=yes" or omit the "early=" parameter to invoke the Early Media Prompting service. The media server responds with 100 TRYING followed by 183 SESSION PROGRESS. At that point, the media server sends the announcement to the caller. The document [7] describes the 183 SESSION PROGRESS result code. After the media server completes the streaming of the prompt, it MUST send a 487 REQUEST TERMINATED to the Proxy. Note: When the early media service is used the requester is implicitly asking the media server to cancel the transaction as soon as the announcement is played. Since 487 is associated with an explicit CANCEL request it seems appropriate for this use as well. The 00 version specified 486 BUSY HERE as the appropriate response in this scenario. However, 486 might could potentially be mis- interpreted as a true busy by the requester so its use has been deprecated. O'Connor, et. al. Expires 5/21/02 5 Network Announcements with SIP November 2001 The proxy sends the appropriate error response to the caller. That could be 487 or any other appropriate code reflective of the failure situation. 5.2.2. Protocol Diagram Caller Proxy Media Server | INVITE | | |----------------------->| INVITE | | 100 TRYING |----------------------->| |<-----------------------| 100 TRYING | | |<-----------------------| | | 183 SESSION PROGRESS | | 183 SESSION PROGRESS |<-----------------------| |<-----------------------| | | | | | Play Announcement (RTP) | |<================================================| | | 487 REQUEST TERMINATED | | 487 REQUEST TERMINATED |<-----------------------| |<-----------------------| | | ACK | ACK | |----------------------->|----------------------->| | | | 6. Formal Syntax The following syntax specification uses the augmented Backus-Naur Form (BNF) as described in RFC-2234 [8]. ANNC-URL = "sip:" annc-ind "@" hostport annc-parameters annc-ind = "annc" annc-parameters = ";" play-param [ ";" early-param ] [ ";" delay-param] [ ";" duration-param ] [ ";" repeat-param ] [ ";" locale-param ] [ ";" variable-params ] play-param = "play=" prompt-url early-param = "early=" ( "yes" | "no" ) delay-param = "delay=" delay-value delay-value = 1*DIGIT duration-param = "duration=" duration-value duration-value = 1*DIGIT repeat-param = "repeat=" repeat-value O'Connor, et. al. Expires 5/21/02 6 Network Announcements with SIP November 2001 repeat-value = 1*DIGIT locale-param = "locale=" locale-value locale-value = 2ALPHA %x5F 2ALPHA variable-params = param-name "=" variable-value param-name = "param" DIGIT ; e.g "param1" variable-value = 1*(ALPHA | DIGIT) The locale-value consists of a 2 letter language code as specified in ISO 639 [5]and a 2 letter country code specified in ISO 3166 [6] separated by a single underbar (%x5Fh) character. The definition of hostport is as specified by [2]. The syntax of prompt-url consists of a URL scheme as specified by [9] or a special token indicating a provisioned announcement sequence. We expect the URL to be one of the following schemes. o http o ftp o file (referencing a local or nfs (RFC 2224) location) If a provisioned announcement sequence is to be played the value of prompt-url will have the following form: prompt-url = "/provisioned/" announcement-id announcement-id = 1*(ALPHA | DIGIT) This document is strictly focused on the SIP interface for the announcement service and as such does not detail how announcement sequences are provisoned or defined. 7. Security Considerations Untrusted network elements could use the protocol described here for providing information services. Many extant billing arrangements are for completed calls. Successful call completion occurs with a 2xx result code. 8. References 1 Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, October 1996. 2 Handley, M., Schulzrinne, H., Schooler, E., Rosenberg, J., "SIP: Session Initiation Protocol", RFC 2543, March 1999. O'Connor, et. al. Expires 5/21/02 7 Network Announcements with SIP November 2001 3 Van Dyke, J. and Burger, E., "SIP URI Conventions for Media Servers", draft-ietf-sipping-msuri-01.txt, November 2001, work in progress. 4 Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. 5 ISO 639, "Codes for the representation of names of languages", 1998. 6 ISO 3166, "Codes for the representation of names of countries and their subdivisions", 1997. 7 Handley, M., Schulzrinne, H., Schooler, E., Rosenberg, J., "SIP: Session Initiation Protocol", draft-ietf-sip-rfc2543bis-05.txt, October 2001, work in progress. 8 Crocker, D. and Overell, P.(Editors), "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. 9 Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1988. 9. Changes Made in Version 01 o Added duration, repeat, delay, locale and variable parameters. o Added the ability to reference a provisioned announcement. o Made early media treatment the default behavior for the service. o 487 REQUEST TERMINATED replaces 486 BUSY HERE as the media serverĖs final response when early media treatment is desired. 10. Acknowledgments We would like to thank Kevin Summers and Ravindra Kabre of Sonus Networks for their constructive comments. 11. Author's Addresses Walter O'Connor SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA Phone: 978/367-8411 Email: woconnor@snowshore.com Eric Burger O'Connor, et. al. Expires 5/21/02 8 Network Announcements with SIP November 2001 SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA Phone: 978/367-8403 Email: eburger@snowshore.com Jeff Van Dyke SnowShore Networks, Inc. 285 Billerica Rd. Chelmsford, MA 01824-4120 USA Phone: +1 978/367-8405 Email: jvandyke@snowshore.com O'Connor, et. al. Expires 5/21/02 9 Network Announcements with SIP November 2001 Full Copyright Statement Copyright (C) The Internet Society (2001). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement The Internet Society currently provides funding for the RFC Editor function. O'Connor, et. al. Expires 5/21/02 10