TeleBank
Contents Introduction n Problem Definition n The Application n Co-operation and User friendliness n Design n Implementation n
Introduction - TeleBank Automatic bank services n Initiates a Dialog with the user n
Problem definition n
Requirements – – – – – –
n
Open a new account. Close an existing account. Deposit money in an account. Withdraw money from an account. Inform how much money there is in an account. Get help/information about the application.
Goal – Design and implement TeleBank. – Implement TeleBank using SpeechMania framework. – TeleBank should be as cooperative and user friendly as possible.
The Application Coded in HDDL (Dialog Description Language) n SpeechMania Online system n Option withdraw money was not implemented. n
Co-operation and User friendliness Minimize closed questions (yes/no) n Verification Vs confirmation questions n Allow some user initiative n Reset option n
Design Dialog Design n Architecture n
Dialog Design flow chart main
start
Goeie {morgen,middag,avond} dit is telebank een telefonische dienstverlening van armo-bank
Kent U de opties ?
event
Nee
dit is een automatische telefonische bank u kunt de volgende transacties verrichten u kunt een nieuwe prive-rekening openen u kunt een prive-rekening sluiten u kunt geld storten op een prive-rekening u kunt geld afhalen van een prive-rekening u kunt het saldo van een prive-rekening opvragen u kunt deze informatie nogmals afluisteren als u een transactie wilt stoppen kunt u stop zeggen
eh Ja
option (undefned)
main question mq
geld afhalen
bank-rekening sluiten bank-rekening openen gelt storten
this option is not implemented.
option has multiple values
Welke optie wenst u?
brs
bro
gs
kunt u alstublift alleen een optie nogmaals kiezen
event informatie TeleBank over information de bank rekening
bri
ti
eh
Dialog Design flow chart close bank account
variable undefined Close bank account
variable Verifiable variable verified
event
wat is het bank rekening nummer dat u wilt sluiten
stop
event
wilt u de bank rekening met nummer acc.Num. sluiten
stop eh
stop
option acc.Num.
option acc.Num. brs
brs stop
wilt u de bank rekening met nummer acc.Num. sluiten
option acc.Num.
event event
this dialog has two variables: 1.option 2.accountNumber the next question asked is chosen accoding to the status of the variables (which are: undefined, defined, verified) when the question is answered the status of the variables will change. If not the system will create an event or the user said 'stop'.
stop
welke bank rekening wilt u sluiten
uw bank rekening acc.Num. is niet gesloten er is geen open bank rekening met dit nummer
option acc.Num.
number does not exist
option acc.Num.
checking whether the account number exists number exist
c
uw bank rekening acc.Num. is gesloten
Main module
Architecture
Welcome module
YesOrNoQues -tion module (instance1)
applicationOptions module
openBank Account module
closeBank Account module
depositMoney module
YesOrNoQues -tion module (instance2) external database end of main
bankAccountInformation module
TeleBankInformationns module
Implementation Rules & variables n Cond-actions n Example: Reset option n
Rules & Variables Variables are the interface between the speech understanding and dialog control n Variables are linked to rules n Variable can get values when the rule is ‘activated’ n Variable can be undefined, defined (single,multiple) or verified. n Example: n
RULES
: 'rekening' | 'bank' 'rekening' teleBankOptions option, INTEGER accountNumber, INTEGER amount : 'geld' 'storten' { option := DEPOSIT_MONEY; } | 'storten' 'op' { option := DEPOSIT_MONEY; amount := #1.value; accountNumber := #6.value; } … END RULES VARIABLES teleBankOptions option { <- .option }; END VARIABLES
Questions & Cond-action HDDL Dialog is a module n Dialog is controlled using an event loop n events can trigger an action (conditionally) n in a cond-action a question can be asked or the data base can be accessed n example: n
COND ( MyVerifiable(option); ) { // option: verifiable QUESTION(YES,NO,option) { INIT { "wilt u een nieuwe bank rekening"; CONFIRMATION(option); } } } COND ( ^^ option && option == OPEN_BANK_ACCOUNT ) { BOOLEAN res; ... teleBankDBinstance.openAccount(newAccountNumber,res); … OUTPUT { "uw bank rekening is nu geopend. "; …. } RETURN; // terminating the subdialog. }
Reset Option DIALOG closeBankAccount (teleBankOptions &option, …. BOOLEAN &stop) … ACTIONS STOP_COND("closeBankAccount.hdl"); …. COND (MyVerifiable(option); && MyUndefined(accountNumber);) PRIORITY
MACRO STOP_COND(fileName) { COND ( MyVerifiable(stop); ) PRIORITY > MULTIPLE { QUESTION(YES,NO,stop) { INIT { "wilt u deze transactie stoppen"; CONFIRMATION(stop); } MyEvents( NUstatements; , YNstatements; , NRstatements; , YNstatements; , "wilt u deze transactie stoppen"; CONFIRMATION(stop); ); } } COND ( ^^ stop ) PRIORITY > MULTIPLE { RETURN; } }