Internet DRAFT - draft-choudhuri-sip-info-digit

draft-choudhuri-sip-info-digit



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]