1
WOJSKOWA AKADEMIA TECHNICZNA
im. Jarosława Dąbrowskiego
SYSTEMY DIALOGOWE
SPRAWOZDANIE Z ĆWICZENIA nr 5
Temat:
Portal głosowy.
Zasady języka VXML – prosta aplikacja głosowa.
Wykonał: plut. pchor. Radosław WOŹNIAK
Grupa: I9G1S1
2
1.
TREŚĆ ZADANIA
1.
Sporządzić schemat strukturalny (elementy i powiązania - rysunek)
oraz o
pisać działanie portalu głosowego.
2.
Zaprojektować prostą aplikację głosową (temat aplikacji wybiera
student):
a) identyfikacja aplikacji (
przykładowe dialogi);
b) opracowanie modelu (scenariusza) dialogu w postaci
schematu blokowego;
c)
opis dostępu użytkownika do aplikacji.
2. Utworzenie aplikacji w postaci dokumentu VXML:
a)
opatrzyć komentarzem wszystkie jej znaczniki.
b) testowanie (iteracyjne) w celu udoskonalenia interfejsu.
Zadania szcze
gółowe dotyczące projektowania aplikacji głosowych:
1)
określenie wiadomości podpowiadanych w celu wydobycie
informacji od użytkownika;
2)
sformułowanie gramatyki opisującej słowa i frazy, które rozmówca
może wypowiedzieć w odpowiedzi na podpowiedź (prompt);
3)
opisanie sposobu radzenia sobie w przypadku wystąpienia błędów
(ang. error handler), aby pomóc rozmówcy rozwiązać problemy,
które pojawią się, gdy urządzenie rozpoznawania mowy nie
rozpozna jego wypowiedzi.
Przykładowe tematy aplikacji głosowych:
składanie i obsługa zamówień
zawiadomienie o wypadkach
budzenie telefoniczne
śledzenie lotów
głosowy dostęp do poczty głosowej
wybieranie głosowe połączenia telefonicznego
gaze
ty audio (podawanie wiadomości)
opowiadanie bajek
wypełnianie formularza
przelicznik waluty
…
3
2. WYNIKI
Zad.1.
Portal głosowy jest to system, który pozwala użytkownikom na dostęp do
informacji znajdujących się w sieci Internet poprzez telefon. Używa do tego
technologii rozpoznawania mowy oraz tzw. „text to speech" (TTS) w celu
dostosowania interfejsu użytkownika do możliwości nawigacji po stronach portalu
głosowego przez telefon używając komend głosowych. Ideą portali głosowych jest
więc umożliwienie użytkownikom dostępu do zasobów internetowych poprzez
telefon.
Rys.1. Schemat strukturalny portalu głosowego (rysunek zapożyczony ze strony
studio.tellme.com).
Platforma głosowa jest tutaj widoczna jako brama łącząca sieć telefoniczną z
Internetem. Rozwijanie portalu głosowego w oparciu o język VXML jest analogiczne i
zgodne z technikami wytwarzania tradycyjnych serwisów opartych o język HTML.
Warto jednak zauważyć, że obsługa klienta za pomocą portalu głosowego narzuca
zupełnie inne podejście do interfejsu użytkownika, zmieniają się wymagania
narzucone
na
interfejs oraz problemy z jakimi styka się projektant.
Przeglądarka głosowa jako kluczowy komponent omawianej architektury różni
się w sposób znaczący od serwisów opartych o platformę IVR. Przeglądarka głosowa
przechwytuje dialog między użytkownikiem, a następnie pobiera konkretne dane z
repozytorium serwisu. Serwerem aplikacji może być dowolny serwer tego typu.
Rodzaj bazy danych również zależy od preferencji osoby projektującej serwis.
4
ZAD.2 i 3.
W celu realizacji zadania zaprojektować prostą aplikację głosową
odpowiedzialną za składanie i obsługę zamówień w pizzerii. Jest to uproszczona
aplikacja, klient ma do wyboru 5 z góry ustalonych rodzajów pizz, 4 ustalone
rozmiary. W celu dalszego kontaktu i oddzwonienia klient jest proszony o podanie lub
wpisanie swojego numeru telefonu. W trakcie rozmowy, jeśli komunikator nie
zrozumie lun nie usłyszy pytania, informuje o tym fakcie i ponawia swoje zapytanie.
Klient ma na końcu możliwość odsłuchania swojego zamówienia i potwierdzenia go
oraz jeśli chce może zamówić kolejną pizze. Zadanie zrealizowałem w języku
angielskim.
Przykładowe dialogi:
Podkreślenie – to pytania aplikacji.
o Kursywa
– to odpowiedź potencjalnego klienta.
Dialog nr.1 - bezproblemowy
Welcome to the Hot Pizza Service! What kind of pizza would you like to order?
We have peperoni, margerita, havana, winter and hothothot!
o peperoni
Do you want a small, medium, large or a XXL pizza?
o Small
Please say or enter your phone number.
o 123 123 123
Do you want to have a Small pizza peperoni? And you number is
123 123 123?
o Yes
Your pizza will be delivered in 30 minutes.Thanks for your order. Do you want
to order more pizza?
o No
Thanks for your calling!
5
Dialog nr.2
– z drobnymi pomyłkami klienta, takimi jak nie odpowiednie słowa lub
milczenie
Welcome to the Hot Pizza Service! What kind of pizza would you like to order?
We have peperoni, margerita, havana, winter and hothothot!
o I do not know?
I did not recognize that pizza. Please try again. What kind of pizza would you
like to order? We have peperoni, margerita, havana, winter and hothothot!
o winter
Do you want a small, medium, large or a XXL pizza?
o
(…silence…)
I did not hear anything. Please try again. Do you want a small, medium, large
or a XXL pizza?
o Small
Please say or enter your phone number.
o I do not remember!
Incorect phone number. Please try again. Please say or enter your phone
number.
o 123 123 123
Do you want to have a Small pizza winter? And you number is 123 123 123?
o Yes
Your pizza will be delivered in 30 minutes.Thanks for your order. Do you want
to order more pizza?
o No
Thanks for your calling!
Dialog nr.3
– klient rozmyśla się co do swojego wyboru i wybiera inną pizze.
Welcome to the Hot Pizza Service! What kind of pizza would you like to order?
We have peperoni, margerita, havana, winter and hothothot!
o peperoni
Do you want a small, medium, large or a XXL pizza?
o Small
Please say or enter your phone number.
o 123 123 123
6
Do you want to have a Small pizza peperoni? And you number is
123 123 123?
o No
Your order has been cancelled. Do you want to order more pizza?
o Yes
Welcome to the Hot Pizza Service! What kind of pizza would you like to order?
We have peperoni, margerita, havana, winter and hothothot!
o peperoni
Do you want a small, medium, large or a XXL pizza?
o Small
Please say or enter your phone number.
o 123 123 123
Do you want to have a Small pizza peperoni? And you number is
123 123 123?
o Yes
Your pizza will be delivered in 30 minutes.Thanks for your order. Do you want
to order more pizza?
o No
Thanks for your calling!
Przykładowe dialogi odzwierciedlają tylko kilka przypadków komunikacji pomiędzy
klientem a aplikacją. Na podstawie schematu (rys.2.) można stworzyć znacznie
więcej dialogów.
7
Rys.2. Model dialogu w postaci schematu blokowego.
Schemat blokowy odzwierciedla m.in. przykładowe dialogi zaprezentowane
wcześniej, a także na jego podstawie zaimplementowałem aplikacje w vxml.
8
<?xml version="1.0" encoding="UTF-8"?> <!-- zgodnosc wezsji xml i kodowanie znakow -->
<vxml version="2.0" xmlns="http://www.w3.org/2001/vxml" xml:lang="en-US"> <!-- zgodnosc wersji vxml oraz jezyk -->
<form id="powitanie"> <!-- formatka, w programie wykorzystalem tylko jeden formularz-->
<property name="bargein" value="false"/> <!-- aplikacja nie przerwie swojej wypowiedzi, na skutek pytania klienta --
>
<block> <!--tag block nie wymaga interakcji z klientem -->
<prompt bargein="false"> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Welcome to the Hot Pizza Service!
</prompt>
</block>
<field name="rodzaj"> <!-- ten tag powoduje przyjmowanie info od klienta-->
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
What kind of pizza would you like to order? We have peperoni, margerita, havana, winter and hothothot!
</prompt>
<grammar mode="voice" root="rodzajepizzy"> <!--
definiuje odpowiedzi, które interpreter
przyjmie dla tego pola.-->
<rule id="rodzajepizzy" scope="public">
<one-of> <!-- wybor jednej opcji-itema ponizej-->
<item>peperoni</item>
<item>margerita</item>
<item>havana</item>
<item>winter</item>
<item>hothothot</item>
</one-of>
</rule>
</grammar>
<nomatch> <!-- gdy nie rozpozna syg wej-->
I did not recognize that pizza. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</nomatch>
<noinput> <!--
gdy nei odbierze żadnego syg wej -->
I did not hear anything. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</noinput>
</field>
<field name="rozmiar">
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Do you want a small, medium, large or a XXL pizza?
</prompt>
<grammar mode="voice" root="rozmiarpizzy"> <!--
definiuje odpowiedzi, które interpreter
przyjmie dla tego pola.-->
<rule id="rozmiarpizzy" scope="public">
<one-of>
<item>small</item>
<item>medium</item>
<item>large</item>
<item>XXL</item>
</one-of>
</rule>
</grammar>
<nomatch>
I did not recognize your answer. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</nomatch>
<noinput>
I did not hear anything. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</noinput>
</field>
<field name="telefon" type="phone">
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Please say or enter your phone number.
</prompt>
<nomatch>
Incorect phone number. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</nomatch>
<noinput>
I did not hear anything. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</noinput>
</field>
<field name="potwierdzenie">
9
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Do you want to have a <value expr="rozmiar"/> pizza <value expr="rodzaj"/>?
And you number is <value expr="telefon"/>?
</prompt>
<grammar mode="voice" root="potwierdz"> <!--
definiuje odpowiedzi, które interpreter przyjmie
dla tego pola.-->
<rule id="potwierdz" scope="public">
<one-of>
<item>yes</item>
<item>no</item>
</one-of>
</rule>
</grammar>
<nomatch>
I did not recognize your answer. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</nomatch>
<noinput>
I did not hear anything. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</noinput>
<filled>
<if cond="potwierdzenie == 'yes'"> <!-- warunek if - jesli spelniony to wykonuje-->
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Your pizza will be delivered in 30 minutes.
Thanks for your order.
</prompt>
<else/> <!--jesli if nie spelniony to to sie wykonuje -->
<prompt> <!-- interpreter odczyta tek
st i prześle go do użytkownika-->
Your order has been cancelled.
</prompt>
</if>
</filled>
</field>
<field name="jeszczeraz">
<prompt> <!--
interpreter odczyta tekst i prześle go do użytkownika-->
Do you want to order more pizza?
</prompt>
<grammar mode="voice" root="jeszcze"> <!--
definiuje odpowiedzi, które interpreter przyjmie dla
tego pola.-->
<rule id="jeszcze" scope="public">
<one-of>
<item>yes</item>
<item>no</item>
</one-of>
</rule>
</grammar>
<nomatch>
I did not recognize your answer. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</nomatch>
<noinput>
I did not hear anything. Please try again.
<reprompt/> <!--
spowoduje powtórzenie prompta -->
</noinput>
<filled>
<if cond="jeszczeraz == 'yes'">
<clear/>
<goto next="#powitanie"/> <!-- przejscie do poczatku formularza z
id=powitanie -->
<else/>
<prompt> <!-- interpreter odczyt
a tekst i prześle go do użytkownika-->
Thanks for your calling!
</prompt>
</if>
</filled>
</field>
</form> <!--zakonczenie formularza -->
</vxml> <!-- zamkniecie kodu vxml -->
Rys.3. Listing kodu aplikacji głosowej w vxml. (jest dołączony do sprawozdania w
pliku vxml z komentarzami i bez).
10
Rys.4. Zrzut ekranu potwierdzający dodanie aplikacji do portalu VOXEO.
Rys.5. Zrzut ekranu z danymi kontaktowymi do aplikacji.
11
Rys.6. Zrzut ekranu potwierdzający nawiązanie połączenia z aplikacją głosową.
W celu uruchomienia aplikacji głosowej zarejestrowałem i zalogowałem się na
stronie:
Wykorzystałem zakładkę ACCOUNT ->
Application Manager
, uzupełniłem wymagane pola zgodnie z zaleceniami
prowadzącego i utworzyłem aplikację. Dostęp do aplikacji można uzyskać dzięki
numerowi skype
, widoczny na zrzutach ekranów (rys.5 i 6).
3.
WNIOSKI i SPOSTRZEŻENIA.
Zadanie zostało zrealizowane w całości, udało się zaprojektować,
zaimplementować i wykonać aplikacje głosową. Zadanie dotyczy obsługi klienta
zamawiającego pizze. Jest to znacznie okrojona i uproszczona aplikacja. Klient ma
do wyboru rodzaje pizz i ich rozmiary, jeżeli wykorzysta inne słowo niż podane,
12
pyta
nie zostanie mu przeczytane jeszcze raz. Także przy podawaniu numeru
telefonu jeśli się pomyli. Przy każdym odczekiwaniu na odpowiedz klienta, w
przypadku jego braku zostanie powtórzone pytanie. Klient pod konie konwersacji
odsłuchuje swojego zamówienia i ma możliwość jego potwierdzenia lub odrzucenia.
Na koniec klient może zorzyc zamówienie na nowa pizze lub zakończyć rozmowę
Pytania zostały skonstruowane tak aby klient miał możliwość usłyszenia
możliwości odpowiedzi (oprócz pytań oczekujących tylko odp. tak lub nie). Sytuacje
kiedy klient odpowie inaczej niż komunikator tego oczekuje, usłyszy ponownie
pytanie.
Aplikacje głosowe mogą znacznie ułatwić i przyspieszyć zdobywanie
informacji, zamawianie różnych produktów lub usług przez interesantów. Mogą
zautomatyzować i zmniejszyć koszty ponoszone przez firmy wykorzystujące
telemarketing, czy call centra. Niestety m
oże to wiązać się z utratą pracy przez
pewna liczbę osób.