<dtmf type="application/x-dtmf">
1 | 2 | 3 | 4 | \* | #
</dtmf>
A special keyword T is used to indicate a timeout.
So following grammar can be use to enter a
phone number.
<dtmf type="application/x-dtmf">
7??? | [34]????
| 1?????????? | 011*T | ???????
</dtmf>
In this example, the phone numbers are either
internal 4 digit number (starting with 7) or a 5
digit number (starting with 3 or 4), a local
number (7 digit number), an US long-distance number
(starting with 1) or an international number
(starting with 011). The value of T is 1 second. If
you expect more delay then use multiple T's.
e.g., 011*TTT will wait for 3 seconds before assuming
the current set of dialed digits to be the
international number. The matching rules are ordered
from left to right, so if a rule 3? appears
before 34? then 34? will be ignored. However, a
matching rule of 3?T and 34? can co-exist.
The matching rule is applied from left to right when
multiple rules are specified using the binary
OR ("|") operator.
? is used to match a single character, while
* can match any sequence of characters including
none. Square brackets [ ] are used
to match one digit from a sequence, e.g., [345] matches either
3, 4, or 5.
Menu and choices
menu is a special form of a form that allows
specifying dialogs more easily in some cases. Modify the interpreter
to understand the menu and choice tags.
This will need extensive testing. We can assume only dtmf grammar
in
choice elements, or an explicit dtmf attribute
for the choice tag.
List the features you want to support, indicating the priority of each
(must, should, if time). SIP, RTP, DTMF detection, DTMF gerenation,
HTTP, XML parser, Text-to-speech, Speech recognizion, VoiceXML interpreter,
Grammar matching
rules.
Which existing libraries or modules will you be using?
Xerces-C is a freely available XML parser. It supports two ways
of using it. We will use the DOM parser. We also use HTTP client library
to post data to the web.
Programming language(s)?
C/C++
Which operating system platforms do you plan to support?
Solaris, Linux
If applicable, what GUI tool kit will you be using (e.g., Tk, Java AWT,
Java Swing, Motif, Windows)?
n/a
How will you do component testing?
Test tools?
We will use a locally developed SIP phone and IBM ViaVoice for
testing
How is error logging to be implemented, if applicable?
In the initial state we have debug flags in the browser code
that when turned on will allow us to step through the code. This feature
will enable us to debug the program itself. Once we are satistfied
with the result we will turn this option off, but still we support the
voiceXml <meta> tag that can get the name and email address of a supervisor
to send notifications to that person, in case of an error.
Once the features list is finalized, we make
a schedule describing major milestones and dates to accomplish them. You
are responsible for providing input
while finalizing the schedule. You should
consider different aspects like familiarity with the domain, socket programming
experience, other course work,
personal commitments, etc. The list of major
milestones will be finalized at the begining. This will be reviewed every
other week. There should be a verifiable
milestone at least every two weeks.
10/15: Code Done, Make file in place, and being able to compile
the code
10/29: Run time errors debugged and cleaned
11/12: Putting together with other parts, dtmf detector
11/26 Putting together with other parts, voice recognition and
text to speech code
12/03 Final test