Informacje wstępne

background image

Wstęp

Typowa aplikacja

głosowa


Poniższy rysunek przedstawia typową strukturę aplikacji głosowej:


Użytkownik łączy się z aplikacją (usługą) wybierając odpowiedni numer
telefonu. Interpreter kontekstu VXML

wykrywa rozmówcę, pobiera

początkowy dokument VXML i odbiera telefon. Interpreter VXML
rozpoczyna wykonanie dokumentu VXML.

background image

Pod kontrolą dokumentu, interpreter może wykonywać następujące
zadania:

1)

wysyłanie do użytkownika podpowiedzi głosowych, wiadomości lub
innych materiałów audio (jak muzyka i efekty dźwiękowe);

2) przyjmowanie

wejść numerycznych, które wprowadza użytkownik

za pomocą klawiatury telefonu tonowego (sygnały DTMF);

3)

przyjmowanie wejść głosowych i rozpoznawanie słów;

4) przyjmowanie i rejestrowanie

wejść głosowych (bez rozpoznawania

słów);

5)

przesyłanie informacji użytkownika na strony sieciowe lub inne
serwery internetowe;

6) otrzymywanie informacji z Internetu i przekazywanie jej do

użytkownika.


Dodatkowo

dokumenty VXML mogą wykonywać typowe funkcje

programowania, jak operacje arytmetyczne i logiczne czy operacje na
tekście.
S

esja użytkownika nie musi być prostą sekwencją, która przebiega w ten

sam sposób za każdym razem – dokument VXML może zawierać
instr

ukcje „if-then-else” i inne złożone struktury.

background image

Kompletna aplikacja VXML zwykle wymaga jakiś zasobów poza
serwerem

– hostem aplikacji VXML: może potrzebować strony sieciowej

lub innego serwera, który umożliwia przyjmowanie i przetwarzanie
informacji

od użytkownika i wysyłanie do niego odpowiedzi.


Wykorzystując VXML jako „front - end” aplikacji webowej, minimalizuje
się ilość wymaganego kodowania VXML. Pozostała cześć aplikacji może
wykorzystywać dobrze znane protokoły, jak HTTP i CGI, dla których
dostępne są inne, odpowiednie narzędzia programowe.

Dokumenty VXML i inne związane z nimi pliki mogą być przechowywane
na hoście portalu głosowego lub na własnym serwerze (z określonym
URI).

Dokumenty VXML składają się z prostego tekstu, można go tworzyć i
edyt

ować za pomocą edytora tekstowego, jak Notepad dla Windows.


Testowanie aplikacji odbywa się przez połączenie z odpowiednim
numerem telefonicznym

i interakcję z nią.

background image

Podstawy VXML

Przykład prostego dokumentu VXML:

<?xml version="1.0"?>

1

<!DOCTYPE vxml PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN"
"http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">

2

<vxml version="2.0"
xmlns="http://www.w3.org/2001/vxml"
xml:lang="en-US">

3

<form>

4

<field name="selection">

5

<prompt>

6

Please choose News, Weather, or Sports.

7

</prompt>

8

<grammar type="application/x-nuance-gsl">

9

[ news weather sports ]

10

</grammar>

11

</field>

12

<block>

13

<submit next="select.jsp"/>

14

</block>

15

</form>

16

</vxml>

17


Scenariusz:

1) wypowiedzenie polecenia dla

użytkownika:

"Please choose News,

Weather, or Sports”

;

2) przyj

ęcie odpowiedzi użytkownika;

3) przekazanie tej odpowiedzi do innego dokumentu

– tutaj do skryptu

o nazwie

selekt.jsp

, który przypuszczalnie dostarczy usługi, którą

wybrał użytkownik.

background image

W dokumencie są

znaczniki (tagi)

– słowa kluczowe lub wyrażenia

otoczone nawiasami kątowymi (z wyjątkiem linii 7 i 10).

Tag może mieć

atrybuty

wewnątrz nawiasów kątowych.


Każdy atrybut składa się z

nazwy

i

wartości

oddzielonych znakiem „

=

”,

wartość musi być zamknięta

w cudzysłowie

(np. atrybut w linii 3 version,

czy w linii 5 atrybut name).

Tagi występują:

- w parach (wtedy nazywają się kontenerami – zawierają tag

początkowy, atrybuty, treść: tekst lub inne tagi oraz tag
końcowy)

- lub pojedynczo (nazywają się autonomicznymi lub pustymi –

nie zawierają treści i innych tagów, ale mogą mieć atrybuty –
linia 14).


Stosuje się pojęcie element, które oznacza albo tag pusty albo tag
kontener.

Jeżeli element zawiera inny element – mówi się o rodzicu i dziecku.

background image

Nagłówek

– linie1,2,3 wymagane na początku wszystkich dokumentów

VXML.

Po nagłówku - główna część dokumentu VXML, zwykle zawiera
przynajmniej tag

<form>

, definiujący formularz, który umożliwia

interakcję z użytkownikiem.

Formularz zwykle zawiera pola

field

, które przyjmują informacje od

użytkownika (tutaj: linie 5-12), pole ma przypisaną zmienną o nazwie

selection,

w której przechowuje wypowiedź użytkownika).


Wewnątrz pola jest element

<prompt>

, zawierający prosty tekst, który

interpreter odczyta za

pomocą TTS i prześle do użytkownika. Zamiast

TTS można zastosować tag

<audio>

, aby odtworzyć wcześniej nagrane

pliki audio.

Kolejny element to gramatyka

<grammar> -

definiuje trzy odpowiedzi,

które interpreter przyjmie dla tego pola. Inne postaci gramatyki są
możliwe. Gramatyki definiują słowa wypowiadane lub sekwencje cyfr (w
postaci

kodów DTMF) lub jedne i drugie.


Po wysłaniu podpowiedzi do użytkownika, interpreter czeka na
odpowiedź użytkownika i próbuje ją dopasować do gramatyki. Gdy
dopasuje, interpreter przypisuje zmien

nej selection tę odpowiedź – jest

ona

dostępna w pozostałej części formularza.

Element

<block>

kończący formularz zawiera tag

<submit>

, który

przekazuje sterowanie do submit.jsp, podając wartość zmiennej
selection do skryptu.

background image


Przykładowy dialog

Dokument VXML realizuje funkcje kalkulatora

: użytkownik nazywa

operację (add, subtract, multiply lub divide), następnie wypowiada dwie
liczby, dokument odpowiada wynikiem operacji.

Interakcja realizowana jest za pomocą formularza z trzema polami,
dodano elementy

umożliwiające udzielenie pomocy i wyczyszczenie

całego formularza.

background image

Inicjacja
dokumentu za
pomocą
standardowych
elementów

<?xml version="1.0" ?>

<!DOCTYPE vxml
PUBLIC "-//BeVocal Inc//VoiceXML 2.0//EN"
"http://cafe.bevocal.com/libraries/dtd/vxml2-0-bevocal.dtd">

<vxml version="2.0"
xmlns="http://www.w3.org/2001/vxml"
xml:lang="en-US">


<!--
<meta name="maintainer" content="you@yourcompany.com"/>
-->





<link maxage="0" next="http://yourcompany.com/this.vxml">
<grammar type="application/x-nuance-gsl">
[
(bevocal reload)
(dtmf-star dtmf-star dtmf-star)
]
</grammar>
</link>


tag <meta> z atrybutem name
o wartości maintainer,
pomocny przy śledzeniu
aktywności dokumentu:
interpreter VXML wyśle pod
wskazany adres e-mail
wiadomość (z logiem
rozmowy w postaci pliku
XML) przy każdym jego
uruchomieniu

Kod pomocny przy uruchamianiu
dokumentu: przeładowanie i restart
dokumentu bez przerywania rozmowy;
- tag <link> jest jak hiperlink, definiuje
zawsze akty

wną w dokumencie opcję;

-

atrybut next określa URI uruchamianego

dokumentu, gdy link jest aktywny;
-

aktywowanie link za pomocą słów „BeVocal

reload” lub trzykrotnego przyciśnięcia „*”
w telefonie;
- atrybut maxage=0 zapewnia pobranie
najnowszej wersji pliku

background image

<noinput>
I'm sorry. I didn't hear anything.
<reprompt/>
</noinput>

<nomatch>
I didn't get that.
<reprompt/>
</nomatch>

<property name="universals" value="all" />
<help>
I'm sorry. There's no help available here.
</help>

Kod zarządzania zdarzeniami: tagi dostarczają
pomocy i reagują na błędy wejścia użytkownika:
-

<noinput >, gdy rozmówca nie dostarczył wejścia

(słów lub kodów DTMF);
-

<reprompt/> spowoduje powtórzenie ostatniego

prompt;
-

<nomatch>, gdy wejście rozmówcy jest

nierozpoznane;
-

<property> VXML ma mały zbiór dostępnych w

całym dokumencie predefiniowanych uniwersalnych
komend, włączanych za pomocą tego tagu (tutaj jest
to pomoc: element <help> określa co robić, gdy
rozmówca poprosi o pomoc);

background image

<form>
<block>
This is the BeVocal calculator.
</block>






<field name="op">
<prompt>
Choose add, subtract, multiply, or divide.
</prompt>
<grammar type="application/x-nuance-gsl">
[add subtract multiply divide]
</grammar>
<help>
Please say what you want to do. <reprompt/>
</help>
<filled>
<prompt>
Okay, let's <value expr="op"/> two numbers.
</prompt>
</filled>
</field>


Formularz steruje dialogiem.
Tag <block>:
-

zawiera sekcję wykonywanych treści, które nie wymagają

interakcji z użytkownikiem, np. logikę programu jak w
przykładzie ze wstępu (tutaj: wiadomość otwierającą bez
oczekiwanej reakcji rozmówcy);
- gdy zawiera tylko tekst

– interpreter traktuje go jak tekst w

prompt, czyli zatrudnia TTS;

Tag <field> zawiera prompty dla TTS,
gramatyki wykorzystywane przez ASR i opis
akcji wykonywanych po rozpoznaniu:
-

polu przypisana jest zmienna o nazwie „op”,

która może być używana w wyrażeniach;
-

tag <prompt> podpowiada co może

powiedzieć rozmówca;
-

tag <grammar> określa czego oczekuje się od

rozmówcy – jedno, dowolne z 4 słów jest
dopuszczalną wartością dla pola op;
-

tag <help> określa treść wiadomości, którą

rozmówca usłyszy, gdy poprosi o pomoc w
tym miejscu; tag <reprompt> spowoduje
powtórzenie promta dla tego pola; można
stosować również tagi <noinput> i <nomatch>;
-

tag <filled> określa działania po dostarczeniu

przez rozmówcę prawidłowego wejścia: tutaj
potwierdza wybór rozmówcy (za pomocą tagu
<value> z atrybutem expr).

background image

<field name="a" type="number">
<prompt>
Whats the first number?
</prompt>
<help>
Please say a number.
This number will be used as the first operand.
</help>
<filled>
<prompt> <value expr="a"/> </prompt>
</filled>
</field>

<var name="result"/>

Pole

o nazwie „a” (zachowuje pierwszą liczbę)

posiada atrybut type o wartości number (typ
liczbowy)

– to oznacza, że nie trzeba

definiować gramatyki (VXML ma gramatyki
wbudowane dla m. in. zmiennych liczbowych).
Tag <help> nie posiada tagu <reprompt> - nie
ma powtórzenia promta dla tego pola.

Deklaracja (inna niż dla pola) zmiennej, która
może przechowywać liczby, tekst i in. - tutaj
będzie to wynik obliczeń

background image

<field name="b" type="number">
<prompt> And the second number? </prompt>
<help>
Please say a number.
This number will be used as the second operand.
</help>
<filled>
<prompt> <value expr="b"/> Okay. </prompt>

<if cond="op=='add'">
<assign name="result" expr="Number(a) + Number(b)"/>
<prompt>
<value expr="a"/> plus <value expr="b"/>
equals <value expr="result"/>
</prompt>
<elseif cond="op=='subtract'"/>
<assign name="result" expr="a - b"/>
<prompt>
<value expr="a"/> minus <value expr="b"/>
equals <value expr="result"/>
</prompt>
<elseif cond="op=='multiply'"/>
<assign name="result" expr="a * b"/>
<prompt>
<value expr="a"/> times <value expr="b"/>
equals <value expr="result"/>
</prompt>
<else/>
<assign name="result" expr="a / b"/>
<prompt>
<value expr="a"/> divided by <value expr="b"/>
equals <value expr="result"/>
</prompt>
</if>

</filled>
</field>
<clear/>
</form>
</vxml>


Pole

o nazwie „b” zachowuje drugą liczbę.

Tag <fielled> wybiera operację do
wykonania, wykonuje obliczenia i ogłasza
wynik rozmówcy.

Tag <if> umożliwia podjęcie decyzji, jego
atrybut cond określa warunek: jeśli jest
„prawda” kod po <if> będzie wykonany; jeśli
jest „fałsz” interpreter opuści kod aż do tagu
<else>, <elseif> lub zamykającego </if>.
Tutaj budujemy sekwencję wyborów:
-

jeśli warunek op==’add’ jest „prawda”

interpreter wykona tag <assign>, który:
-

obliczy wyrażenie Number(a) +

Number(b) i przypisze wynik zmiennej
result, określonej atrybutem name tego
tagu (nie można zapisać a+b ponieważ
symbol + oznacza konkatenację
łańcuchów, a także dodawanie);

-

wykona <prompt>, który ogłosi wynik;

-

podobnie dla odejmowania i mnożenia –

warunek rozpoczyna się od elseif, można
zapisać wyrażenie jako a-b oraz a*b
(symbole „-” i „*” maja tylko jedno
znaczenie);

-

ostatni warunek zaczyna się od else:

wyklucza się wszystkie pozostałe
warunki, pozostało tylko dzielenie;

-

if kończy tag zamykający </if>.

Tag <clear> stosuje się do przywrócenia
stanu po

czątkowego formularza: zeruje

wartości wszystkich pól – to spowoduje
wykonanie formularza od początku przy
ponownym uruchomieniu kalkulatora.
Można zerować tylko niektóre pola
umieszczając odpowiednio tag <clear>.


Wyszukiwarka

Podobne podstrony:
1 informacje wstępne, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
Informacje wstepne 0
Informacje wstepne
1 informacje wstępne QHFZUOIMA4SVPXGVLRCFO673XXNNQK2FYMBNSNI
informacje wstępne dot.substancji niebezpiecznych występujących w miejscu pracy
Informacje wstepne dotyczace przedmiotu, Akademia Morska, semestr 3, Elektrodynamika
I ROK wykłady z nawigacji informacje wstepne
Informacje wstepne, Administracja UKSW Ist, Administracja UKSW IIst, gospod.nier
1 informacje wstepne
Informacje wstępne (2)
Statystyka informacje wstepne, Dokumenty(1)
Kopia PDL informacje wstępne
wyklad Informacje wstępne, krzywa mozliwości produkcyjnych 2
cukrzyca-informacje wstępne
Informacje wstępne
wyklad nr 1 Informacje wstępne, krzywa mozliwości produkcyjnych
O. Informacje wstępne i omówienie programu Uniwersytetu, 3 Tydzień Biblijny, Prezentacje, UNIWERSYTE
Układy cieczowe - informacje wstępne, Medyczne
Informacje wstępne4, Informacje wstępne

więcej podobnych podstron