Internet Engineering Task Force Tahsin Choudhuri Internet Draft Chris Haun draft-choudhuri-sip-info-digit-00.txt Pat Sollee April 10, 2000 Scott Orton Expires: October 3, 2000 Steve Whynot Nortel Networks SIP INFO method for DTMF digit transport and collection 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. Abstract This document describes the mechanism how SIP INFO method can be used by applications that require mid session signaling for transport and collection of DTMF digits. 1.0 Introduction Using Session Initiation Protocol [1] applications can establish and terminate multimedia sessions. Telephony applications that require mid session signaling can accomplish that task by using SIP INFO [2] method. The application specific data are encoded in INFO request as MIME type [3] elements. A mechanism for transporting DTMF digits using INFO method is addressed in [4]. This Internet Draft proposes an alternate extensible payload description that can be used with INFO method to encode MIME type elements to specifically address the tranport and collection of DTMF digits in mid session. The [4] also addresses how individual applications may handle packet loss and delay problem, which is not addressed in this document. 2.0 Overview Telephony applications requiring transport of DTMF digits will use Session Initiation Protocol to establish multimedia session. Then, use SIP INFO method to transport and collect DTMF digits. Choudhuri, et. al. [Page 1] Internet Draft April 2000 Two types of messaging are used to transport and collect digits. (1) DigitMap messaging involves a server sending a template to the client to request digit collection. The client collects digits based on the template. Once the collection process is complete, the client sends the collected digits to the server. (2) Digits messaging involves client sending collected digits to the server with or without use of any template from the server. Using this method, whether a single digit or a collection of digits is sent to the server is completely left to the design of the DTMF application. Below is the syntax of DigitMap and Digits message encoding using SIP INFO method. Next few sections describe the functions of various encoding fields. The Request message format as specified in SIP RFC 2543, Request = Request-Line *( general-header | request-header | Content-Encoding | Content-Length | Content-Type) CRLF [ message-body ] Request-Line = Method SP Request-URI SP SIP-Version CRLF Method = "INFO" Content-Type = ("Content-Type" | "c") ":" media-type media-type = "application/vnd.nortelnetworks.digits" message-body = Package-Name CRLF Package-Type CRLF Package-Body CRLF Package-Name = ("Package-Name" | "p") "=" Pkg-Name Pkg-Name = ("Digit-Collection" | token) Package-Type = ("Package-Type" | "y") "=" Pkg-Type Pkg-Type = ("DigitMap" | "Digits" | "Cancel") Package-Body = ( Digitmap-Body | Digits-Body ) 3.0 Digit-Collection Package Name The Package-Name provides a level of abstraction and a frame work to easily add new types of information in the future. Thus, making the frame work extensible. The Digit-Collection package includes three kinds of package types. (1) The DigitMap package type must include a Digitmap-Body. (2) The Digits package type must include a Digits-Body. (3) The Cancel package type includes no Package-Body. Choudhuri, et. al. [Page 2] Internet Draft April 2000 4.0 DigitMap Package Type The Digitmap-Body in the DigitMap message is a template for digit collection. When a server application wants a client to collect digits in a specific way, it specifies it in the template and sends it to the client to collect digits based on that template. The Digitmap-Body is sent in an INFO message with DigitMap as Package-Type before any digits are collected. Upon receiving this message, the client should respond with a 200 OK to confirm receipt of the message and start collecting digits according to the Digitmap-Body (i.e., template). Once collection is complete, the client sends an INFO message with Digits as Package-Type and Digits-Body containing the collected digits to the server. A valid Digitmap-Body includes 1 or more of the following fields that can be specified in any order. Digitmap-Body = Min-Digits CRLF Max-Digits CRLF Inter-Digit-Timer CRLF Last-Digit-Timer CRLF Total-Timeout CRLF Termination-Key-Flag CRLF Termination-Key CRLF Repeat-Count CRLF Override CRLF Digit-Map-Association CRLF 4.1 Min-Digits In Digitmap-Body, the Min-Digits defines the minimum number of digits to be collected. The Termination-Key is not counted in this count. Min-Digits = ("Min-Digits"|"m") "=" 1*DIGIT 4.2 Max-Digits In Digitmap-Body, the Max-Digits defines the maximum number of digits to be collected. The Termination-Key is not counted in this count. Max-Digits = ("Max-Digits"|"n") "=" 1*DIGIT 4.3 Inter-Digit-Timer In Digitmap-Body, the Inter-Digit-Timer defines the maximum time the system waits for the user between two key entries. This timer is re-started after each key entry until the minimum number of digits (Min-Digits) have been collected. The timer value is specified in milli-seconds. Inter-Digit-Timer = ("Inter-Digit-Timer"|"i") "=" 1*DIGIT Choudhuri, et. al. [Page 3] Internet Draft April 2000 4.4 Last-Digit-Timer In Digitmap-Body, the Last-Digit-Timer defines the maximum time the system waits for the user between two key entries. This timer is re-started after each key entry after the minimum number of digits (Min-Digits) have been collected. The timer value is specified in milli-seconds. Last-Digit-Timer = ("Last-Digit-Timer"|"l") "=" 1*DIGIT 4.5 Total-Timeout In Digitmap-Body, the Total-Timeout defines the total time the system waits for Max-Digits number of digits to be entered by the user. This timer is started when the digit collection process begins. The timer value is specified in milli-seconds. Total-Timeout = ("Total-Timeout"|"t") "=" 1*DIGIT 4.6 Termination-Key-Flag In Digitmap-Body, the Termination-Key-Flag defines a boolean flag that determines if the Termination-Key should be included at the end of Digit-String in Digits-Body. This flag value is specified as 1 (true) or 0 (false). If the flag is set to true and the user enters the Termination-Key, then the Termination-Key is appended at the end of Digit-String. Otherwise, it is not appended. Termination-Key-Flag = ("Termination-Key-Flag"|"f") "=" ("0"|"1") 4.7 Termination-Key In Digitmap-Body, the Termination-Key specifies the key the user can optionally enter to terminate the end of the digit stream. Termination-Key = ("Termination-Key"|"k") "=" 1*AlphaNum 4.8 Repeat-Count In Digitmap-Body, the Repeat-Count defines the additional number of times the current DigitMap will be re-used after it has been used once. A repeat count value of 0 indicates, no repetition after the collection has been performed once. A repeat count value of 1 indicates, one more collection needs to be performed after the original collection has been performed, resulting in total of 2 collections. Repeat-Count = ("Repeat" | "r") "=" 1*DIGIT Choudhuri, et. al. [Page 4] Internet Draft April 2000 4.9 Override In Digitmap-Body, the Override field tells whether the message should replace the previous DigitMap or to get added to the list of DigitMaps. The Override value is specified as 1 (replace) or 0 (add). A replace request will be accepted only when no digit collection process is in effect. Number of additions are limited to an implementation dependent maximum. Override = ("Override" | "o") "=" ("0" | "1") 4.10 Digit-Map-Association In Digitmap-Body, the Digit-Map-Association field is used by the server to tag the DigitMap message with a unique ID. Upon digit collection, the client includes the Digit-Map-Association ID from the DigitMap message to the Digits message. This allows the server to synchronize which DigitMap corresponds with which Digits message it received from the client. Digit-Map-Association= ("Digit-Map-Association" | "a") "=" 1*DIGIT 5.0 Digits Package Type In Digits type messaging the Digits-Body is sent in an INFO message with Digits as Package-Type and contains the digits a user has entered along with some additional information about those digits. Upon receiving this message, the server should respond with a 200 OK to confirm the receipt of the message. A valid Digits-Body includes 1 or more of the following fields that can be specified in any order. Digits-Body = Digit-String CRLF Termination-Key CRLF Termination-Key-Flag CRLF Playback-Tone-Duration CRLF Playback-Inter-Digit-Timer CRLF Digit-Status CRLF Digit-Map-Association CRLF 5.1 Digit-String In Digits-Body, the Digit-String holds the DTMF digits collected from the user. Digit-String = ("Digits"|"d") "=" 1*(DIGIT | Dtmf-Digit) 5.2 Termination-Key-Flag In Digits-Body, the Termination-Key-Flag tells whether the Choudhuri, et. al. [Page 5] Internet Draft April 2000 Digit-String field contains the termination key. A "0" indicates the termination is not included, while a "1" indicates that it is included. Termination-Key-Flag = ("Termination-Key-Flag"|"f") "=" ("0"|"1") 5.3 Termination-Key In Digitmap-Body, the Termination-Key specifies the key the user can optionally enter to terminate the end of the digit stream. Termination-Key = ("Termination-Key"|"k") "=" 1*AlphaNum 5.4 Playback-Tone-Duration In Digits-Body, the Playback-Tone-Duration tells the recipient how long (in milliseconds) to pulse the tone of each digit. Playback-Tone-Duration = ("Playback-Tone-Duration"|"u") "=" 1*DIGIT 5.5 Playback-Inter-Digit Timer In Digits-Body, the Playback-Inter-Digit-Timer tells the recipient how long (in milliseconds) to pause between pulsing two digits. Playback-Inter-Digit-Timer = ("Inter-Digit-Timer"|"i") "=" 1*DIGIT 5.6 Digit-Status In Digits-Body, the Digit-Status field returns one of the variety of labels describing the status of the message. Digit-Status = ("Digit-Status" | "s") "=" 1*AlphaNum The supported Digit-Status values are as follows: "success" - signifies that the Digit-String contains information that meets the requirements of the previously received DigitMap request. "inter-digit-timer-exp" - signifies that the Digit-String of the Digits message is not complete, as the Inter-Digit-Timer has expired before the minimum number of digits were entered. "last-digit-timer-exp" - signifies that the Last-Digit-Timer has expired and the application now has to determine the validity of the Digit-String as it may or may not be complete. Choudhuri, et. al. [Page 6] Internet Draft April 2000 "total-timer-exp" - signifies that the Total-Timer has expired and the application now has to determine the validity of the Digit-String as it may or may not be complete. "unsolicited-digits" - signifies that the message was unsolicited (i.e., not resulting from a DigitMap request) 5.7 Digit-Map-Association In Digits-Body, the Digit-Map-Association field is used by the client to tag the Digits message with a unique ID. The client obtains this ID from the previously received DigitMap message. Upon digit collection, the client includes the Digit-Map-Association ID in the Digits message and sends the Digits message to the server. This allows the server to synchronize which DigitMap corresponds with which Digits message it received from the client. Digit-Map-Association= ("Digit-Map-Association" | "a") "=" 1*DIGIT 6.0 Cancel Message Definition The Cancel message is sent to the client by the server to indicate that the server would like to cancel the previous DigitMap message sent. After recieving a Cancel, the client cancels all pending digit collection based on DigitMaps received earlier and stops collecting any digits. This message currently has no fields. Upon receiving this message, the client should respond with a 200 OK, to confirm the receipt of the message. 7.0 Complete INFO Method Syntax Request = Request-Line *( general-header | request-header | Content-Encoding | Content-Length | Content-Type) CRLF [ message-body ] Request-Line = Method SP Request-URI SP SIP-Version CRLF Method = "INFO" Content-Type = ("Content-Type" | "c") ":" media-type media-type = "application/vnd.nortelnetworks.digits" Message-Body = Package-Name CRLF Package-Type CRLF Package-Body CRLF Package-Name = ("Package-Name" | "p") "=" Pkg-Name Choudhuri, et. al. [Page 7] Internet Draft April 2000 Pkg-Name = ("Digit-Collection" | token) Package-Type = ("Package-Type" | "y") "=" Pkg-Type Pkg-Type = ("DigitMap" | "Digits" | "Cancel" | token) Package-Body = ( Digitmap-Body | Digit-Body ) Digitmap-Body = Min-Digits CRLF Max-Digits CRLF Inter-Digit-Timer CRLF Last-Digit-Timer CRLF Total-Timeout CRLF Termination-Key CRLF Termination-Key-Flag CRLF Repeat-Count CRLF Override CRLF Digit-Map-Association CRLF Min-Digits = ("Min-Digits"|"m") "=" 1*DIGIT Max-Digits = ("Max-Digits"|"n") "=" 1*DIGIT Inter-Digit-Timer = ("Inter-Digit-Timer"|"i") "=" 1*DIGIT Last-Digit-Timer = ("Last-Digit-Timer"|"l") "=" 1*DIGIT Total-Timeout = ("Total-Timeout"|"t") "=" 1*DIGIT Termination-Key-Flag = ("Termination-Key-Flag"|"f") "=" ("0"|"1") Termination-Key = ("Termination-Key"|"k") "=" 1*AlphaNum Repeat-Count = ("Repeat" | "r") "=" 1*DIGIT Override = ("Override" | "o") "=" ("0" | "1") Digit-Map-Association= ("Digit-Map-Association" | "a") "=" 1*DIGIT Digit-Body = Digit-String CRLF Digit-Status CRLF Termination-Key CRLF Termination-Key-Flag CRLF Playback-Tone-Duration CRLF Inter-Digit-Timer CRLF Digit-Map-Association CRLF Digit-String = ("Digits" | "d") "=" 1*(DIGIT | Dtmf-Digit) Dtmf-Digit = ("*" | "#" | "A" | "B" | "C" | "D") Termination-Key = ("Termination-Key"|"k") "=" 1*AlphaNum Choudhuri, et. al. [Page 8] Internet Draft April 2000 Termination-Key-Flag = ("Termination-Key-Flag" | "f") "=" ("0"|"1") Playback-Tone-Duration = ("Playback-Tone-Duration"|"u") "=" 1*DIGIT Playback-Inter-Digit-Timer = ("Playback-Inter-Digit-Timer"|"i") "=" 1*DIGIT Digit-Status = ("Digit-Status" | "s") "=" 1*AlphaNum Digit-Map-Association = ("Digit-Map-Association" | "a") "=" 1*DIGIT 8.0 Sample Messages The Server requests an account number from the Client. This number must be between 5 and 7 digits, be terminated with a '#' (to be included in the message) and upon notification, the user should only be given 5 seconds as an Inter-Digit-Timer and 4 seconds as a Last-Digit-Timer. The Total-Timer is set to 45 seconds. The Server sends a DigitMap request to the Client using SIP INFO message. INFO sip:Client@47.161.18.26:5060 SIP/2.0 Via: SIP/2.0/UDP 47.161.18.122 To: sip:Client@nortelnetworks.com ;tag=615145584 From: sip:Server@nortelnetworks.com Call-ID: 1246884437@nortelnetworks.com CSeq: 2 INFO Content-Type: application/vnd.nortelnetworks.digits Content-Length: 75 p=Digit-Collection y=DigitMap m=5 n=7 i=5000 l=4000 t=45000 k=# f=1 r=0 o=0 a=3452985896 The Client confirms the receipt of the DigitMap message. SIP/2.0 200 OK Via: SIP/2.0/UDP 47.161.18.122 To: sip:Client@nortelnetworks.com ;tag=615145584 Choudhuri, et. al. [Page 9] Internet Draft April 2000 From: sip:Server@nortelnetworks.com Call-ID: 1246884437@nortelnetworks.com CSeq: 2 INFO Content-Length: 0 Next the Client will collect digits based on the received DigitMap. Upon completion of a successful digit collection, the Client sends a Digits message to the server containing the collected digits. INFO sip:Server@47.161.18.26:5060 SIP/2.0 Via: SIP/2.0/UDP 47.161.18.122 To: sip:Server@nortelnetworks.com ;tag=615145584 From: sip:Client@nortelnetworks.com Call-ID: 1246884437@nortelnetworks.com CSeq: 3 INFO Content-Type: application/vnd.nortelnetworks.digits Content-Length: 55 p=Digit-Collection y=Digits d=123456# k=# f=1 s=success a=3452985896 The following INFO message would be sent from the Client to the Server in the event the Inter-Digit-Timer expires before the minimum number of digits were collected. INFO sip:Server@nortelnetworks.com:5060 SIP/2.0 Via: SIP/2.0/UDP 47.161.18.122 To: sip:Server@nortelnetworks.com ;tag=615145584 From: sip:Client@nortelnetworks.com Call-ID: 1246884437@nortelnetworks.com CSeq: 3 INFO Content-Type: application/vnd.nortelnetworks.digits Content-Length: 57 p=Digit-Collection y=Digits d=123 s=inter-digit-timer-exp a=3452985896 The Server confirms the receipt of Digits message with following. SIP/2.0 200 OK Via: SIP/2.0/UDP 47.161.18.122 To: sip:Client@nortelnetworks.com ;tag=615145584 From: sip:Server@nortelnetworks Call-ID: 1246884437@nortelnetworks.com CSeq: 3 INFO Content-Length: 0 Choudhuri, et. al. [Page 10] Internet Draft April 2000 The Server sends the following message to cancel the DigitMap. INFO sip:Client@47.161.18.26:5060 SIP/2.0 Via: SIP/2.0/UDP 47.161.18.122 To: sip:Client@nortelnetworks.com ;tag=615145584 From: sip:Server@nortelnetworks.com.com Call-ID: 1246884437@nortelnetworks.com CSeq: 3 INFO Content-Type: application/vnd.nortelnetworks.digits Content-Length: 30 p=Digit-Collection y=Cancel The Client confirms the receipt of the Cancel message with following. SIP/2.0 200 OK Via: SIP/2.0/UDP 47.161.18.122 To: sip:Client@nortelnetworks.com ;tag=615145584 From: sip:Server@nortelnetworks Call-ID: 1246884437@nortelnetworks.com CSeq: 3 INFO Content-Length: 0 9.0 Glossary of Abbreviations Used MIME Multipurpose Internet Mail Extension SIP Session Initiation Protocol DTMF Dual Tone Multi-Frequency 10.0 References [1] M. Handley, H. Schulzrinne, E. Schooler and J. Rosenberg: "SIP: Session Initiation Protocol", RFC 2543, March 1999 [2] S. Donovan, M. Cannon: "The SIP INFO Method", Internet draft (draft-ietf-mmusic-sip-info-method-01), IETF, June 1999. Work in progress. [3] N. Freed, N. Borenstein: "Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types", RFC 2046, IETF, November 1996. [4] J. Kuthan: "Sample Uses of SIP INFO with Varying Reliability Needs", Internet draft (draft-kuthan-sip- infopayload-00), IETF, October 1999. Work in progress. Choudhuri, et. al. [Page 11] Internet Draft April 2000 11.0 Author's Addresses Tahsin Choudhuri Nortel Networks 2380 Performance Dr. Richardson, TX 75082 U.S.A. E-mail: tahsin@nortelnetowrks.com Chris Haun Nortel Networks 2380 Performance Dr. Richardson, TX 75082 U.S.A. E-mail: chaun@nortelnetowrks.com Pat Sollee Nortel Networks 2380 Performance Dr. Richardson, TX 75082 U.S.A. E-mail: pats@nortelnetowrks.com Scott Orton Nortel Networks 2380 Performance Dr. Richardson, TX 75082 U.S.A. E-mail: orton@nortelnetowrks.com Steve Whynot Nortel Networks 2380 Performance Dr. Richardson, TX 75082 U.S.A. E-mail: steverw@nortelnetowrks.com Choudhuri, et. al. [Page 12] Internet Draft April 2000 Table of Contents 1 Introduction ........................................ 1 2 Overview ............................................ 1 3 Digit-Collection Package Name ....................... 2 4 DigitMap Package Type ............................... 3 4.1 Min-Digits .......................................... 3 4.2 Max-Digits .......................................... 3 4.3 Inter-Digit-Timer ................................... 3 4.4 Last-Digit-Timer .................................... 4 4.5 Total-Timeout ....................................... 4 4.6 Termination-Key-Flag ................................ 4 4.7 Termination-Key ..................................... 4 4.8 Repeat-Count ........................................ 4 4.9 Override ............................................ 5 4.10 Digit-Map-Association ............................... 5 5 Digits Package Type ................................. 5 5.1 Digit-String ........................................ 5 5.2 Termination-Key-Flag ................................ 5 5.3 Termination-Key ..................................... 6 5.4 Playback-Tone-Duration .............................. 6 5.5 Playback-Inter-Digit Timer .......................... 6 5.6 Digit-Status ........................................ 6 5.7 Digit-Map-Association ............................... 7 6 Cancel Message Definition ........................... 7 7 Complete INFO Method Syntax ......................... 7 8 Sample Messages ..................................... 9 9 Glossary of Abbreviations Used ...................... 11 10 References .......................................... 11 11 Author's Addresses .................................. 12 Choudhuri, et. al. [Page 12]