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]