1 informacje wstępne, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5


Wstęp

Typowa aplikacja głosowa

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

0x01 graphic

Użytkownik łączy się z aplikacją (usługą) wybierając odpowiedni numer telefonu. Interpreter VXML odbiera telefon i rozpoczyna wykonanie dokumentu VXML.

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ą sygnałów DTMF (telefon tonowy);

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

  4. przyjmowanie i nagrywanie 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: operacje arytmetyczne i logiczne, operacje na tekście.

Sesja użytkownika nie musi być prostą sekwencją, która przebiega w ten sam sposób za każdym razem - dokument VXML może zawierać instrukcje „if-then-else” i inne złożone struktury.

Wykorzystując VXML jako „front - end” aplikacji webowej, minimalizuje się ilość wymaganego kodowania VXML.

Dokumenty VXML składają się z prostego tekstu, można go tworzyć i edytować za pomocą edytora tekstowego, jak Notepad dla Windows.

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.

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).

Testowanie aplikacji odbywa się przez połączenie z odpowiednim numerem telefonicznym i interakcję z nią.

Podstawy VXML

Scenariusz:

  1. wypowiedzenie prośby do użytkownika: "Please choose News, Weather, or Sports”;

  2. przyjęcie odpowiedzi użytkownika;

  3. przekazanie tej odpowiedzi do innego dokumentu - w rzeczywistości do skryptu serwera o nazwie selekt.jsp, który przypuszczalnie dostarczy usługi, którą wybrał użytkownik.

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

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ą:

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.

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 może wejść w interakcję z użytkownikiem.

Formularz zwykle zawiera pola field, które przyjmują informacje od użytkownika (tutaj: linie 5-12, pole z przypisaną zmienną o nazwie selection, w której przechowuje wybór 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.

Po elemencie <prompt> jest element <grammar>, który 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 zmiennej 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.

Przykładowy dialog

Dokument VXML realizuje funkcje kalkulatora: użytkownik nazywa operację (add, subtract, multiply lub divide), następnie wypowiada dwie liczby, skrypt odpowiada wynikiem operacji.

Interakcja realizowana jest za pomocą formularza z trzema polami, dodano elementy umożliwiające udzielenie pomocy i wyczyszczenie całego formularza.


<?xml version="1.0" ?>

0x08 graphic

<!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"

0x08 graphic
xml:lang="en-US">

<!--

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

-->

0x08 graphic
<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>

<noinput>

0x08 graphic
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>

<form>

0x08 graphic
<block>

This is the BeVocal calculator.

</block>

0x08 graphic

<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>

<field name="a" type="number">

0x08 graphic
<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>

0x08 graphic

<var name="result"/>

<field name="b" type="number">

0x08 graphic
<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)"/>

0x08 graphic
<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>

0x08 graphic

</filled>

</field>

<clear/>

</form>

</vxml>

  

13

Inicjacja dokumentu za pomocą standardowych elementów

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 aktywną 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

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);

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).

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.

Pole o nazwie „b” zachowuje drugą liczbę.

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

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

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 począ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:
cw5, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
I9G2S1 Węgrecki Wojciech sprawozdanie, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
2 zmienne i wyrazenia vxml, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
4. Podpowiedzi, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
3. Formularze, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
sd potrek, WAT, SEMESTR V, systemy dialogowe, SDial, spr
Tematy ćwiczeń - SD, WAT, SEMESTR V, systemy dialogowe
SPRAWOZDANIE Z ĆWICZENIA LABORATORYJNEGO NR 4, WAT, SEMESTR V, systemy dialogowe, od borysa, SD cwic
Tematy ćwiczeń - SD, WAT, SEMESTR V, systemy dialogowe
Ćwiczenie nr 2, WAT, SEMESTR V, systemy dialogowe, lab2
Systemy dialogowe - pytania na zaliczenie2010 - OPRACOWANE, WAT, SEMESTR V, systemy dialogowe
Ćwiczenie nr 3, WAT, SEMESTR V, systemy dialogowe, lab3
Ćwiczenie nr 4, WAT, SEMESTR V, systemy dialogowe
Typowe zagrożenia, WAT, semestr VII, Bezpieczeństwo systemów informatycznych
Zadanie, WAT, semestr VII, Bezpieczeństwo systemów informatycznych
moje wypociny, WAT, semestr VII, Bezpieczeństwo systemów informatycznych
Podatności systemu - lista, WAT, semestr VII, Bezpieczeństwo systemów informatycznych
Zadanie(1), WAT, semestr VII, Bezpieczeństwo systemów informatycznych
SYSTEMY DOKUMENTACYJNE I SYSTEMY FAKTOGRAFICZNE(1), informacja naukowa i bibliotekoznawstwo 3 semest

więcej podobnych podstron