KR20010079555A - 대화식 서비스 및 그 방법을 위한 마크업 언어 - Google Patents

대화식 서비스 및 그 방법을 위한 마크업 언어 Download PDF

Info

Publication number
KR20010079555A
KR20010079555A KR1020017001008A KR20017001008A KR20010079555A KR 20010079555 A KR20010079555 A KR 20010079555A KR 1020017001008 A KR1020017001008 A KR 1020017001008A KR 20017001008 A KR20017001008 A KR 20017001008A KR 20010079555 A KR20010079555 A KR 20010079555A
Authority
KR
South Korea
Prior art keywords
user
input
value
attribute
markup language
Prior art date
Application number
KR1020017001008A
Other languages
English (en)
Inventor
데이비드 레드
그레고리 존슨
Original Assignee
비센트 비.인그라시아, 알크 엠 아헨
모토로라 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비센트 비.인그라시아, 알크 엠 아헨, 모토로라 인코포레이티드 filed Critical 비센트 비.인그라시아, 알크 엠 아헨
Publication of KR20010079555A publication Critical patent/KR20010079555A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/487Arrangements for providing information services, e.g. recorded voice services or time announcements
    • H04M3/493Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
    • H04M3/4938Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals comprising a voice browser which renders and interprets, e.g. VoiceXML
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42204Arrangements at the exchange for service or number selection by voice
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/436Arrangements for screening incoming calls, i.e. evaluating the characteristics of a call before deciding whether to answer it
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2201/00Electronic components, circuits, software, systems or apparatus used in telephone systems
    • H04M2201/60Medium conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2207/00Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place
    • H04M2207/20Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/38Graded-service arrangements, i.e. some subscribers prevented from establishing certain connections
    • H04M3/382Graded-service arrangements, i.e. some subscribers prevented from establishing certain connections using authorisation codes or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/42229Personal communication services, i.e. services related to one subscriber independent of his terminal and/or location
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/44Additional connecting arrangements for providing access to frequently-wanted subscribers, e.g. abbreviated dialling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/46Arrangements for calling a number of substations in a predetermined sequence until an answer is obtained
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M3/00Automatic or semi-automatic exchanges
    • H04M3/42Systems providing special services or facilities to subscribers
    • H04M3/50Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
    • H04M3/53Centralised arrangements for recording incoming messages, i.e. mailbox systems
    • H04M3/5307Centralised arrangements for recording incoming messages, i.e. mailbox systems for recording messages comprising any combination of audio and non-audio components

Abstract

본 발명은 대화식 서비스를 제공하는 음성 브라우저에 대한 것이다. 본 발명에 따른 마크업 언어 문서는 다수의 마크업 언어 요소들을 포함하는 대화 요소를 포함한다. 다수의 마크업 언어 요소들은 각각 적어도 하나의 마크업 태그에 의해 식별할 수 있다. 단계 요소는 대화 요소에 포함되어 대화 요소 안에서 상태를 정의한다. 단계 요소는 프롬프트 요소와 입력 요소를 포함한다. 프롬프트 요소는 사용자에게 읽혀지는 고지를 포함한다. 입력 요소는 사용자 입력에 대응하는 적어도 하나의 입력을 포함한다. 본 발명에 따른 방법은 다수의 요소들을 포함하는 마크업 언어 문서를 생성하는 단계, 프롬프트 요소를 선택하는 단계, 그리고 사용자에게 읽혀질 프롬프트 요소에서 음성 통신을 정의하는 단계를 포함한다. 상기 방법은 입력 요소를 선택하는 단계와 사용자가 입력한 데이터를 저장하기 위해 입력 변수를 정의하는 단계를 더 포함한다.

Description

대화식 서비스 및 그 방법을 위한 마크업 언어{MARKUP LANGUAGE FOR INTERACTIVE SERVICES AND METHODS THEREOF}
개인용 컴퓨터를 보유한 개인들이 다양한 유형의 정보를 검색하기 위하여 온라인 전자 정보 서비스를 점점 많이 활용하고 있다. 일반적으로, 인터넷 게이트웨이(internet gateway), 온라인 서비스(예컨대 America On-line, CompuServer 또는 Prodigy) 또는 전자 게시판(bulletin board)과 같은 서비스 제공자로 모뎀 접속할 수 있는 개인용 컴퓨터를 보유한 사용자가 원하는 정보를 나타내는 데이터를 다운로드 하기 위한 경우이다.
서비스 제공자가 제공한 정보는 일반적으로 실시간으로, 즉 정보를 요청함과 동시에 다운로드(download)된다. 이러한 방법으로 다운로드된 정보로서 신문, 책(예, 백과사전), 기사, 금융 정보 등을 전자화한 문서를 예로 들 수 있으며 이것들은 문자 외에 그래픽도 포함한다.
본 발명은 첨부한 청구항에서 명확히 지적하고 있으나, 다음의 도면과 그 도면에 대한 상세한 설명을 참조하면 본 발명의 특징이 더욱 자명해질 것이며 발명을 용이하게 이해할 수 있을 것이다.
도 1은 본 발명에 따른 시스템의 실시예를 도시하는 블록도(block diagram).
도 2는 정보원으로부터 정보를 검색하는 방법의 흐름도(flow diagram).
도 3은 본 발명에 따른 시스템의 또 다른 실시예를 예시하는 블록도.
도 4는 도 3에 도시한 시스템의 음성 브라우저(voice browser)에 대한 블록도.
도 5A-5C는 도 4에 도시한 음성 브라우저가 수행하는 루틴의 흐름도.
도 6은 예시적인 마크업 언어 문서.
도 7은 도 6에 도시한 마크업 언어 문서의 계층 구조(hierarchical structure)를 개략적으로 도시한 도면.
도 8은 마크업 언어 문서의 예시적인 상태도(state diagram).
도 9는 마크업 언어 문서의 예시적인 응용에 대한 예시적인 상태도.
본 실시예를 상세히 설명함에 앞서, 본 발명에 첨부된 도면이나 설명에 개시된 부분의 내용에만 그 응용이나 용도가 한정되어 있다고 이해해서는 안될 것이다. 본 발명의 실시예는 다른 실시예로 기타 변화나 수정을 가해서 구현될 수도 있으며 다양한 방법으로 행해질 수 있다는 것을 알 수 있을 것이다. 또한, 다르게 지적하지 않는 한, 여기서 채택한 용어나 표현들은 편의를 고려하여 본 발명의 구체적인 실시예를 설명하기 위한 것이지 그 용어나 표현으로 한정시키기 위한 목적은 아니다.
도 1을 참조하면, 사용자가 정보에 접근하기 위한 시스템(100)이 도시되어 있다. 시스템(100)은 일반적으로 하나 이상의 네트워크 접근 장치(network accessapparatus)(102)(하나가 도시됨), 전자 네트워크(electronic network)(104), 그리고 하나 이상의 정보원 또는 콘텐트 제공자(content provider)(106)(하나가 도시됨)를 포함한다.
전자 네트워크(104)는 라인(108)에 의해 네트워크 접근 장치(102)에 연결되며, 전자 네트워크(102)는 라인(110)에 의해 정보원(106)에 연결된다. 라인(108)과 라인(110)은 전화선이나 링크(link), ISDN 라인, 동축케이블(coaxial line), 케이블 텔레비전 라인, 광섬유 라인(fiber optic line), 컴퓨터 네트워크 라인, 디지털 가입자 라인(digital subscriber line) 또는 이와 유사한 것들이 될 수 있으며 이러한 것들에 국한되는 것은 아니다. 예컨대, 전자 네트워크(104)는 위성 통신 시스템, 유선 통신 시스템, 또는 무선 통신 시스템에 의해 네트워크 접근 장치(102)에 정보를 제공할 수 있다.
사용자들은 시스템(100)에 의해 전 세계 어느 곳에서도 적절한 네트워크 접근 장치를 경유하여 정보에 접근할 수 있다. 여기서 사용자란 셀룰러(cellular) 전화 가입자, 유선 가입자, 무선 호출 가입자(paging subscriber), 위성 통신 가입자(satellite subscriber), 이동전화나 휴대전화 가입자, 주파수 공용 통신 가입자(trunked radio subscriber), 컴퓨터 네트워크 가입자(예를 들어, 인터넷 가입자, 인트라넷 가입자 등), 분 사무소 사용자 및 기타 이와 유사한 사용자들을 말하나 이들에 국한되는 것은 아니다.
사용자들은 음성 입력 또는 명령으로 보다 손쉽게 정보원(106)의 정보에 접근할 수 있다. 예컨대, 최신 뉴스, 원하는 도시의 날씨, 교통 정보, 주식 시세,날짜 정보, 사용자 정보, 주소 정보, 그리고 주식 시장 경제 지표와 같은 최신 정보에 접근할 수 있다. 또한 사용자들은 시스템을 통하여 다양한 처리를 할 수 있다. 예를 들어, 사용자들은 시스템을 통하여 꽃을 주문하거나, 식당에 주문하거나, 주식매매를 하거나, 은행 계좌 잔액 조회, 전화 번호 조회, 목적지에 대한 노선 조회 등을 할 수 있다.
도 1에 도시한 바와 같이, 사용자는 전자 네트워크(104)와 연결 또는/및 통신을 하기 위해 시스템(100)의 네트워크 접근 장치(102)를 활용할 수 있다. 전자 네트워크(104)는 사용자의 음성 명령(speech commands) 또는 복합 주파수 부호(dual tone multifrequency, DTMF) 톤(tone)에 기초하여 정보원(106)으로부터 정보를 검색한다. 정보는 (도시하지는 않았지만) 정보원(106)의 데이터베이스 또는 저장 장치에 저장된다. 정보원(106)은 (도시하지는 않았지만) 하나 이상의 서버 컴퓨터를 포함할 수 있다. 정보원은 전자 네트워크(104)에 통합되거나 떨어져 있을 수 있다. 즉, 정보원은 콘텐트 제공자의 설비 장치에 위치할 수 있다. 또한, 네트워크 접근 장치(102), 전자 네트워크(104) 그리고 정보원(106)을 단일의 시스템이나 장치로 통합할 수도 있다.
정보원(106)의 정보는 적절한 통신 매개체(communication medium)를 통하여 접근할 수 있다. 정보원(106)은 URL(Unified Resource Locator), URN(Uniform Resource Name), IP(Internet Protocol) 주소, 전자 메일 주소, 디바이스 주소(device address)(즉, 호출 번호), 직접적인 점 대 점 연결(direct point to point connection), 메모리 주소 중에서 적어도 하나를 이용하여 식별할 수 있다.URL은 프로토콜, 도메인 네임, 경로(path), 파일 이름을 포함한다. URL 프로토콜은 다음과 같다. "file:"은 지역 저장 매체에 저장된 파일에 접근하기 위해, "ftp:"는 FTP(file transfer protocol) 서버에 있는 파일에 접근하기 위해, "http:"는 HTML(hypertext marking language) 문서에 접근하기 위해, "gopher:"는 고퍼 서버에 접근하기 위해, "mailto:"는 이메일 메시지를 보내기 위해, "news:"는 유즈넷 뉴스그룹에 연결하기 위해, "telnet:"은 텔넷 세션을 오픈하기 위해, 그리고 "wais:"는 WAIS 서버에 접근하기 위해 사용한다.
시스템(100)의 전자 네트워크(104)가 정보원(106)으로부터 정보를 받게 되면, 전자 네트워크는 네트워크 접근 장치(102)로 그 정보를 보낸다. 전자 네트워크(104)는 인터넷, 월드 와이드 웹(WWW) 그리고/또는 온라인 서비스와 같은 개방, 광역 네트워크가 될 수 있다. 또한 인트라넷(intranet), 익스트라넷(extranet), 구내 정보 통신망(local area network, LAN), 전화 네트워크(즉, 공중 교환 전화 네트워크), 셀룰러 전화 네트워크, 개인 휴대 통신 시스템(PCS), 텔레비전 네트워크(즉, 케이블 텔레비전 시스템), 페이징 네트워크(즉, 지역 페이징 네트워크), 지역 페이징 네트워크(regional paging network), 국내 또는 세계 페이징 네트워크, 이메일 시스템, 무선 데이터 네트워크(즉, 위성 데이터 네트워크 또는 지역 무선 데이터 네트워크), 그리고/또는 전기 통신 노드도 전자 네트워크(104)가 될 수 있으며 이들에 국한되는 것은 아니다.
사용자는 시스템(100)의 네트워크 접근 장치(102)에 의하여 정보원에서 검색한 정보에 접근, 즉 보거나 듣거나 할 수 있다. 네트워크 접근 장치가 사용자에게제공하는 정보는 기계 판독 데이터, 인간 판독 데이터, 오디오 또는 음성 통신, 텍스트 정보, 그래픽 또는 이미지 데이터 등의 형태이다. 네트워크 접근 장치에는 다양한 형태가 있는데, 예를 들면 전화, 이동 전화, 사무실 전화, 주택 전화, 유료 전화, 페이징 유닛, 무선 유닛, 웹 전화, 개인 정보 관리자(personal information manager, PIM), 개인 휴대용 정보 단말기(personal digital assistant, PDA), 범용 컴퓨터, 네트워크 텔레비전, 인터넷 텔레비전, 인터넷 전화, 휴대 무선 장치, 워크 스테이션 또는 기타 다른 적절한 통신 장치가 있으며 여기에 국한되는 것은 아니다. 네트워크 접근 장치를 전자 네트워크와 통합하는 것도 생각해 볼 수 있다. 예를 들어, 네트워크 접근 장치, 전자 네트워크 그리고/또는 정보원이 개인용 컴퓨터에 함께 있는 것이다.
네트워크 접근 장치(102)는 또한 넷스케이프 네비게이터(Netscape Navigator), 마이크로소프트 인터넷 익스플로러(Microsoft Internet Explorer), 모자익(Mosaic) 웹 브라우저와 같은 음성 또는 웹 브라우저를 포함한다. 기계 판독 데이터, 자기 데이터, 광 데이터 등을 읽어 전자 네트워크(104)로 그 데이터를 전송하도록 광 스캐너나 바코드 판독기를 네트워크 접근 장치(102)에 포함시키는 것도 생각해 볼 수 있다. 예를 들어, 네트워크 접근 장치가 바코드를 판독하거나 스캔해서 얻은 데이터를 전자 네트워크(104)로 전송하여 정보원의 정보(즉, 식당의 메뉴, 은행 정보, 웹 페이지, 날씨 정보 등)에 접근하는 것이다.
도 2는 정보원(106)의 목적지 또는 데이터베이스에서 정보를 검색하는 방법에 대한 흐름도를 도시한다. 블록(150)에서, 사용자는 네트워크 접근 장치로부터전자 네트워크(104)를 호출한다. 블록(152)에서 전자 네트워크는 착신 호출(incoming call)에 대해 응답을 한 후, 사용자가 호출을 발한 네트워크 접근 장치의 타입 그리고/또는 사용자가 시스템의 가입자인가를 조회한다. 예를 들어, 시스템은 그 호출에 대한 자동 번호 식별(automatic number identification, ANI) 또는 통화자 라인 식별(caller line identification, CLI)을 판독하고 해독하여 호출의 CLI가 ANI나 CLI의 가입자 목록에 있는지를 확인한다. 또한 시스템은 사용자의 독특한 음성 패턴(speech pattern)을 검사하거나(즉, 화자 감식(speaker verification)) 또는 음성 명령이나 DTMF 톤을 사용하여 들어온 PIN을 검사함으로써 사용자를 식별할 수도 있다.
전자 네트워크는 호출에 응답한 후, 통화자에게 블록(154)에서, 예를 들어 "Hi. This is your personal agent. How may I help you"와 같이 고지(announcement)를 한다. 전자 네트워크는 또한 호출에 대하여 문법(즉, 단어)이나 개성(즉, 남자 혹은 여자)을 설정할 수도 있다. 전자 네트워크는 CLI, 네트워크 접근 장치 또는 사용자의 신원에 기초하여 문법과 개성을 로드할 수 있다. 예컨대, 문법과 개성은 장치의 종류(즉, 무선 전화), 통화자의 성별(즉, 남자 혹은 여자), 언어의 종류(즉, 영어, 스페인어 등), 그리고 통화자의 억양(즉, 뉴욕 억양, 남부 억양, 영국식 억양 등)에 따라 설정하거나 로드할 수 있다. 또한, 개성이나 문법이 사용자에 의해, 혹은 전자 네트워크가 검출한 음성 통신을 기초로 전자 네트워크에 의해 바꾸어 질 수도 있다.
블록(156)에서, 전자 네트워크는 사용자가 의도하는 정보원의 목적지에 해당하는 사용자 입력 혹은 명령을 기다린다. 그 입력은 음성 명령(즉, 사용자가 하는 말) 또는 DTMF 톤이 될 수 있다. 전자 네트워크는 사용자로부터 입력을 받은 후, 블록(158)에서 정보원에 대한 연결 혹은 링크를 개설한다. 전자 네트워크는 사용자로부터의 입력(즉, 사용자가 하는 말 혹은 DTMF 톤)을 기초로 하여 정보원의 전자 주소(즉, URL, URN, IP 주소 또는 전자 메일 주소)를 올바르게 결정한다. 전자 주소는 입력의 일부분을 기초로 참조 동작(Lookup operation)을 수행하여 데이터베이스에서 검색할 수도 있다.
블록(160)에서, 전자 네트워크는 정보원의 목적지로부터 최소한 정보의 일부를 검색한다. 전자 네트워크는 블록(162)에서 정보를 처리하여 사용자에게 출력을 제공한다. 그 출력은 음성 통화, 문자 정보, 그리고/또는 그래픽 정보를 포함한다. 예컨대, 전자 네트워크는 음성 대 문자 기술 또는 사람 목소리를 녹음한 것을 이용하여 음성으로 제공할 수 있다. 전술한 바와 같이, 본 처리 과정은 블록(164) 또는 블록(154)으로 진행한다. 전술한 방법을 컴퓨터로 수행할 수 있다.
도 3은 사용자가 정보에 접근할 수 있게 해주는 시스템(200)의 실시예에 대한 예시적인 블록도이다. 시스템(200)에 의해 사용자는 세계 어느 곳에서도 적절한 통신 장치를 통해 정보에 접근할 수 있다. 시스템(200)은 옐로우 페이지, 방향, 교통, 주소, 영화, 콘서트, 항공 정보, 날씨 정보, 뉴스 리포트, 금융 정보, 꽃, 개인 데이터, 달력 데이터, 주소 데이터, 선물, 책 등에 대한 접근을 가능하게 해준다. 또한 사용자는 원래의 시스템에 대한 통화를 종료하지 않고도 일련의 처리를 할 수 있다. 예컨대, 사용자는 새로운 전화번호로 전화를 걸거나 원래의 통화를 종료하지 않고서 최신 뉴스를 알아보거나 날씨 정보를 얻을 수 있다. 또한 시스템(200)에 의해 응용 개발자들은 주식회사 모토로라가 개발한 VoxML 음성 마크업 언어와 같은 마크업 언어를 사용하여 대화식 음성 어플리케이션을 개발할 수 있다.
시스템(200)은 일반적으로 하나 이상의 통신 장치 또는 네트워크 접근 장치(201, 202, 203, 204) (네 개를 도시하고 있음), 전자 네트워크(206), 콘텐트 제공자(208, 209)와 같은 하나 이상의 정보원 (두 개를 도시하고 있음) 그리고 마크업 언어 서버를 포함한다. 사용자는 음성 명령 또는 DTMF 톤을 사용하여 정보원에서 정보를 검색할 수 있다.
사용자는 통신 장치(202)에서 직접 연결되는 하나의 전화 번호(즉, 외국 교환 번호, 지역 번호, 무료 번호 또는 PBX)로 전화를 걸어 전자 네트워크(206)에 접근할 수 있다. 또한 사용자는 통신 장치(204)로부터 인터넷을 경유하여, 통신 장치(203)로부터 페이징 네트워크(211)를 경유하여, 그리고 통신 장치(201)로부터 구내 정보 통신망(LAN), 광역 통신 네트워크(WAN) 또는 이메일 연결을 경유하여 전자 네트워크(206)에 접근할 수 있다.
통신 장치는 유선 장치(즉, 집 전화, 직장 전화, 컴퓨터, 팩시밀리, 유료 전화), 무선 장치(이동 전화, 주파수 공용 통신, 휴대 전화, PIM, PDA 등), 네트워크 접근 장치(즉, 컴퓨터), 무선 호출기 등을 포함하며 이들에 국한되지 않는다. 통신 장치는 마이크, 스피커, 그리고/또는 디스플레이도 포함한다.
도 3에 도시한 바와 같이, 시스템(200)의 전자 네트워크(206)는 통신 네트워크(210)와 통신 노드(communication node)(212)를 포함한다. 통신 네트워크(210)는 T1 전화선, 구내 정보 통신망(LAN) 또는 광역 통신 네트워크(wide area network, WAN)와 같은 고속 데이터 링크를 경유하여 통신 노드(212)에 연결하는 것이 바람직하다. 통신 네트워크(210)는 공중 교환 전화 네트워크(public switched network, PSTN)와 반송 네트워크(216)를 포함하는 것이 바람직하다. 통신 네트워크(210)는 또한 국제 혹은 지역 교환 네트워크, 케이블 텔레비전 네트워크, 내부 교환 반송 네트워크(interexchange carrier network, IXC) 또는 원거리 반송 네트워크(long distance carrier network), 셀룰러 네트워크(즉, 이동 전화 교환국(mobile switching center, MSC)), PBX, 위성 시스템 그리고 (도시하지는 않았지만) 종래의 혹은 주파수 공용 통신 교환국과 같은 다른 전화 교환국 등을 포함할 수 있다.
통신 네트워크(210)의 PSTN(214)은 ATM 네트워크, 광섬유 분산 데이터 네트워크(Fiber Distributed data network, FDDI), T1 선, 케이블 텔레비전 네트워크 그리고 이와 유사한 것과 같은 다양한 유형의 통신 장비 또는 장치를 포함할 수 있다. 통신 네트워크(210)의 반송 네트워크(carrier network)(216)는 일반적으로 전화 교환국 또는 중앙국(218)을 포함한다. 반송 네트워크(216)는 통화를 통신 노드(212)로 라우팅(routing) 시켜주는 어떠한 적절한 시스템이어도 무방하며 전화 교환국(218)은 어떠한 적절한 유선 혹은 무선 교환 시스템이어도 무방하다.
시스템(200)의 통신 노드(212)는 바람직하게 구성되어 WWW과 같은 인터넷(220)과 반송 네트워크(216)로부터의 착신 호출을 수신하여 처리한다. 통신노드는 페이징 네트워크(211)의 페이지들을 수신하여 처리할 수 있으며 LAN, WAN, 이메일 연결(213)의 메시지들(즉, 이메일)도 수신하고 처리할 수 있다.
사용자가 통신 장치(202)에서 전화를 걸어 전자 네트워크(206)에 접속하면, 반송 네트워크(216)는 하나 이상의 전화선 또는 트렁크를 통하여 착신 호출을 PSTN(214)에서 통신 노드(212)로 넘겨준다. 착신 호출은 하나 이상의 "888" 또는 "800" INWATS 트렁크 선, 지역 교환 트렁크 선 또는 원거리 트렁크 선을 통해 반송 네트워크(216)에 들어가는 것이 바람직하다. 착신 신호를 케이블 네트워크, 셀룰러 시스템 또는 다른 적절한 시스템으로부터 수신하는 것도 가능하다.
통신 노드(212)는 반송 네트워크(216)로부터의 착신 호출에 대해 응답하고 데이터베이스, 서버 또는 브라우저에서 적당한 고지(즉, 환영 인사)를 검색한다. 그 후, 노드(212)는 통화자에게 고지를 한다. 사용자의 오디오 입력에 응답하여, 통신 노드(212)는 콘텐트 제공자(208, 209) 또는 마크업 언어 서버와 같은 하나 이상의 정보원의 목적지 또는 데이터베이스에서 정보를 검색한다. 통신 노드(212)는 정보를 검색한 후, 검색한 정보에 기초하여 사용자에게 응답을 하게 된다.
노드(212)는 다양한 개성의 대화 목소리(즉, 여자 목소리, 남자 목소리 등)를 제공하며, 다양한 문법(즉, 어휘)을 구현하여 사용자의 음성 입력을 검사하고 응답할 수 있다. 게다가, 통신 노드는 사용자 프로파일, 사용자의 통신 장치, 그리고/또는 사용자의 구술 패턴에 기초하여 자동적으로 다양한 언어 인식 모델들(즉, 영어 모델, 스페인어 모델, 영국 억양 모델 등)을 선택할 수 있다. 또한 통신 노드(212)에 의해 사용자는 특별한 언어 인식 모델을 선택할 수 있다.
사용자가 시스템에 등록된 통신 장치(즉, 사용자의 집 전화, 직장 전화, 셀룰러 전화 등)에서 전자 네트워크(206)에 접근할 때, 통신 노드(212)는 사용자 적격 옵션 및 자동 번호 식별(ANI) 또는 통화자 라인 식별(CLI)을 사용하여 자동으로 사용자(또는 사용자의 통신 장치 타입)를 식별한다. 통신 노드는 호출을 확인한 후, 사용자에게, 예를 들어 "Hi. this is your agent, Maya. Welcome Bob. How may I help you?"와 같은 인사말을 제공한다. 그 후, 통신 노드는 사용자와 대화를 시작하고, 사용자는 통신 노드가 제공하는 다양한 정보를 선택할 수 있다.
사용자가 시스템에 등록되지 않은 통신 장치(즉, 유료 전화, 비가입자의 전화 등)로부터 전자 네트워크(206)에 접근하면, 노드는 그 호출에 응답한 후 사용자에게 그의 이름 그리고/또는 음성 명령이나 DTMF 톤을 이용하여 개인 식별 번호(PIN)를 입력하라고 촉구한다. 또한 노드는 사용자의 특별한 음성 패턴을 식별하기 위하여 화자 검증을 활용한다. 노드가 사용자에게 시스템에 대한 접근 권한을 부여하면, 사용자에게, 예를 들어 "Hi. this is your agent, Maya. Welcome Ann. How may I help you?"와 같은 개인적인 인사말을 건네게 된다. 그 다음, 노드는 사용자와 대화를 개시하며, 사용자는 노드가 제공한 다양한 정보를 선택하게 된다. 만일 사용자의 이름 그리고/또는 PIN이 인식되거나 검증되지 못한 경우, 사용자를 고객 서비스의 대리인에게 연결한다.
도 3에 도시한 바와 같이, 통신 노드(212)는 전화 스위치(telephone switch)(230), 음성 또는 오디오 인식(VRU) 클라이언트(232), 음성 인식(VRU) 서버(234), 제어기 또는 호출 제어 유닛(call control unit)(236), 작동 및관리국(operation and maintenance office, OAM) 또는 빌링 서버 유닛(billing server unit)(238), 구내 정보 통신망(LAN)(240), 어플리케이션 서버 유닛(242), 데이터베이스 서버 유닛(244), 게이트웨이 서버 또는 라우터 침입 차단 서버(router firewall server)(246), 음성 인터넷 프로토콜(voice over internet protocol, VOIP) 유닛(248), 음성 브라우저(250), 마크업 언어 서버(251) 그리고 페이징 서버(252)를 포함하는 것이 바람직하다. 통신 노드(206)는 다양한 종류의 독립적이고 분리된 유닛 또는 장치로 구성되어 있는 것처럼 보이지만, 하나 이상의 집적 회로, 마이크로프로세서, 마이크로컨트롤러 또는 컴퓨터를 프로그램하여 도시한 장치나 유닛이 수행하는 것과 동등한 작용이나 기능을 실현할 수 있다. 통신 노드(212)를 하드웨어 구성요소와 회로 설계, 소프트웨어 또는 컴퓨터 프로그래밍 또는 이들을 조합하는 형태로 구성할 수도 있다.
통신 노드(212)는 전 세계 또는 전 미국(즉, 시카고, 일리노이즈)에 걸쳐 다양한 지리적인 위치에 배치할 수 있다. 통신 노드(212)는 하나 이상의 수행자(즉, Sprint PCS, Qwest Communications, MCI 등) 또는 예컨대 주식회사 모토로라와 같은 독립적인 서비스 제공자가 운영할 수 있다.
통신 노드(212)는 반송 네트워크(216)(즉, 네트워크의 통합 부분)와 통합하거나 함께 위치할 수 있으며 또한 반송 네트워크(216)로부터 떨어진 지역에 위치할 수도 있다. 통신 노드(212)를 유선 또는 무선 전화, 무선 장치, 개인용 컴퓨터, PDA, PIM 등과 같은 통신 장치에 통합시키는 것도 고려해 볼 수 있다. 이런 배합에서는, 통신 장치를 프로그램하여 직접 정보원에 연결 혹은 링크시킬 수 있다.
또한 통신 노드(212)를 독립형의 시스템으로 구성하여, 사용자가 무료 번호 또는 직접 접근할 수 있는 번호를 통해 통신 노드로 직접 전화를 걸 수 있게 할 수 있다. 게다가, 통신 노드(212)는 전화 스위치(즉, PBX 또는 센트릭스 유닛), 기업 네트워크 또는 구내 정보 통신망을 포함할 수도 있다. 이런 구성에서는, 사용자가 전화와 같은 통신 장치로부터 자동으로 통신 노드(212)에 연결할 수 있도록 구현을 할 수 있다.
통신 노드(212)의 전화 스위치(230)가 반송 네트워크(216)로부터 착신 호출을 수신하면, 호출 제어 유닛(236)은 그 스위치(230)를 VRU 클라이언트(232)에 연결시킨다. 그러면, 통신 노드(212)는 사용자와 대화를 개시하여 다양한 서비스와 기능을 제공한다. VRU 클라이언트(232)는 사전에 기록된 음성 메시지를 생성하여 사용자가 구술 명령이나 DTMF 톤으로 신속히 통신 노드에 입력을 하게 하는 것이 바람직하다. 사용자의 입력에 응답하여, 노드(212)는 정보원 중 하나의 목적지로부터 정보를 검색하고 그 정보를 기반으로 사용자에게 출력을 제공한다.
통신 노드(212)의 전화 스위치(230)는 VRU 클라이언트(232), VOIP 유닛(248) 그리고 LAN(240)과 연결하는 것이 바람직하다. 전화 스위치(230)는 반송 네트워크(216)로부터 착신 호출을 수신한다. 또한 전화 스위치(230)는 VOIP 유닛(248)을 경유하여 인터넷(220)으로 연결된 통신 장치(204)로부터의 착신 신호도 수신한다. 또한 스위치(230)는 통신 장치(201)와 통신 장치(203) 각각의 메시지와 페이지도 수신한다. 전화 스위치(230)는 Excel Switching 회사, 255 Independence Drive, Hyannis, MA 02621에서 구할 수 있는 모델 번호 LNX, 교차 연결 스위치가 바람직하나 어떠한 적절한 전화 스위치이어도 무방하다.
통신 노드(212)의 VRU 클라이언트는 VRU 서버(234)와 LAN(240)에 연결하는 것이 바람직하다. VRU 클라이언트(232)는 사용자로부터의 구술 통신, DTMF 톤, 페이지 그리고 메시지(즉, 이메일)를 처리한다. VRU 클라이언트(232)는 사용자로부터 구술 통신을 수신하는 즉시 그것을 VRU 서버(234)로 라우팅한다. VRU 클라이언트(232)가 DTMF 톤을 검출하면 호출 제어 유닛(236)으로 명령을 보낸다. VRU 클라이언트(232)와 VRU 서버를 통합하는 것도 가능하다.
VRU 클라이언트(232)는 개개의 전화선들을 직접 스위치(230)로 연결할 수 있는 하드웨어를 구비한 윈도우 NT와 호환되는 컴퓨터 같은 것을 포함하는 것이 바람직하다. VRU 클라이언트는 (도시하지는 않았지만) 마이크로프로세서, 램, 롬, T1 또는 ISDN 인터페이스 보드, 그리고 하나 이상의 음성 통신 처리 보드를 포함하는 것이 바람직하다. VRU 클라이언트(232)의 음성 통신 처리 보드는 Dialogic 회사, 1515 Route 10, Parsippany, N.J. 07054에서 구할 수 있는 모델 번호 Antares, Dialogic 보드가 바람직하다. 음성 통신 보드는 음성 패턴(즉, 키워드 또는 어구)을 검출하기 위한 어휘를 보유하는 음성 인식 엔진을 포함할 수도 있다. 음성 인식 엔진은 Nuance Communications, 1380 Willow Road, Menlo Park, California 94025에서 구할 수 있는 RecServer software package가 바람직하다.
VRU 클라이언트(232)는 또한 하이브리드 임피던스 부정합 때문에 생긴 PSTN(214)로부터 전송된 문자 대 음성 또는 재생의 반향을 줄이거나 없애기 위해 반향 말소기를 포함할 수 있다. 반향 말소기는 바람직하게도 Dialogic에서 구할수 있는 Antares Board Support Package속에 포함된다.
통신 노드(212)의 호출 제어 유닛(236)은 LAN(240)에 연결하는 것이 바람직하다. 호출 제어 유닛(236)은 전화 스위치(23)를 설정하여 호출 신호를 VRU 클라이언트(232)로 연결시킨다. 또한 호출 제어 유닛은 착신 호출 또는 페이지를 인터넷(220)을 통해 노드(212)로 진입시키며 통신 장치(201)로부터 전송된 메시지와 통신 장치(203)로부터 전송된 페이지는 페이징 네트워크(211)와 이메일 시스템(213)을 경유하여 노드(212)로 진입시킨다. 호출 제어 유닛(236)은 윈도우 NT 호환 컴퓨터와 같은 것을 포함하는 것이 바람직하다.
통신 노드(212)의 LAN(240)에 의해 노드(212)의 다양한 구성 요소와 장치들이 연선, 광섬유 케이블, 동축케이블 또는 기타 유사한 것을 통해 상호 통신을 할 수 있다. LAN(240)은 이더넷, 토큰 링 또는 다른 적절한 유형의 프로토콜을 사용할 수도 있다. LAN(240)은 Cisco Systems, San Jose, California에서 구할 수 있는 100 Megabit per second 이더넷 스위치가 바람직하다. LAN(240)은 어떤 적절한 네트워크 시스템도 포함할 수 있으며 통신 노드(212)는 복수의 LAN을 포함할 수 있다.
통신 노드(212)의 VRU 서버(234)는 VRU 클라이언트(232)와 LAN(240)에 연결된다. VRU 서버(234)는 VRU 클라이언트(232)를 경유하여 사용자로부터 음성 통신을 수신한다. VRU 서버(234)는 그 음성 통신을 처리하고 그것을 데이터베이스 서버 유닛(244) 또는 메모리 장치에 저장된 어휘나 문법과 비교한다. VRU 서버(234)는 LAN(240)으로 출력 신호를 보내며, 이것은 음성 처리의 결과를 나타낸다.LAN(240)은 출력 신호를 호출 제어 유닛(236), 어플리케이션 서버(242), 그리고/또는 음성 브라우저(250)로 라우팅한다. 그 다음, 통신 노드(212)는 출력 신호들과 연관된 특정한 기능을 수행한다.
VRU 서버(234)는 문자 대 음성(TTS) 유닛(252), 자동 음성 인식(ASR) 유닛(254) 그리고 음성 대 문자(STT) 유닛(256)을 포함하는 것이 바람직하다. VRU 서버(234)의 TTS 유닛(252)은 어플리케이션 서버 유닛(242), 데이터베이스 서버 유닛(244), 호출 제어 유닛(236), 게이트웨이 서버(246), 어플리케이션 서버(242) 그리고 음성 브라우저(250)로부터 문자 데이터 또는 정보(즉, 이메일, 웹 페이지, 문서, 파일 등)를 수신한다. TTS 유닛(252)은 문자 데이터를 처리하고 그것을 음성 데이터 또는 정보로 변환한다.
TTS 유닛(252)은 사용자에게 데이터를 읽거나 실행하는 VRU 클라이언트(232)에게 데이터를 제공한다. 예컨대, 사용자가 정보(즉, 최신 뉴스, 주식 정보, 교통 정보 등)를 요청하게 되면, 통신 노드(212)는 하나 이상의 정보원의 목적지로부터 원하는 데이터(즉, 문자 정보)를 검색하고 그 데이터를 TTS 유닛(252)을 통해 실제 응답으로 변환하는 것이다.
그 다음 그 응답을 VRU 클라이언트(232)로 송신한다. VRU 클라이언트는 그 응답을 처리하고 그것에 기초하여 사용자에게 오디오 메시지를 읽어준다. VRU 서버(234)는 녹음한 사람의 목소리나 합성한 목소리로 오디오 메시지를 읽을 수도 있다. TTS 유닛(252)은 Lernout and Hauspie Speech Product NV, 52 Third Avenue, Burlington, Mass. 01803에서 구할 수 있는 TTS 2000 software package가 바람직하다.
VRU 서버(234)의 ASR 유닛(254)은 사용자의 음성 입력 또는 통신을 화자에 무관하게 자동으로 인식을 할 수 있다. ASR 유닛(254)이 화자에 의존하는 음성 인식을 포함할 수도 있다. ASR 유닛(254)은 사용자의 음성 입력을 처리하여 단어나 음성 패턴이 데이터베이스 서버 유닛(244)에 저장된 혹은 음성 브라우저로부터 다운로드된 문법이나 어휘와 일치하는가를 결정한다. ASR 유닛(254)은 음성 입력의 선택된 음성 패턴을 식별하게 되면 출력 신호를 송신하여 인식된 음성 패턴과 연관된 특정한 기능을 구현한다. ASR 유닛(254)은 Nuance Communications에서 구할 수 있는 speaker independent speech recognition software package, 모델 번호 RecServer가 바람직하다. ASR 유닛(254)은 사용자의 음성 통신을 검출하기 위한 어떠한 적절한 음성 인식 유닛이어도 무방하다.
VRU 서버(234)의 STT 유닛(256)은 사용자로부터 음성 입력 또는 통신을 수신하고 그 음성 입력을 문자 정보(즉, 문자 메시지)로 변환한다. 그 문자 정보는 통신 장치(201, 202, 203, 204), 콘텐트 제공자(208, 209), 마크업 언어 서버, 음성 브라우저 그리고 어플리케이션 서버(242)로 송신하거나 라우팅할 수 있다. STT 유닛(256)은 Dragon Systems, 320 Nevada Street, Newton, MA 02160-9803에서 구할 수 있는 Naturally Speaking software package가 바람직하다.
통신 노드(212)의 VOIP 유닛(248)은 전화 스위치(230)와 LAN(240)에 연결하는 것이 바람직하다. VOIP 유닛(248)에 의하여 사용자는 음성 명령을 사용하여 인터넷(220)을 통해 노드(212)에 접근할 수 있다. VOIP 유닛(240)은 인터넷(220)으로 전송된 VOIP 프로토콜(즉, H.323 프로토콜)을 수신하고 그것을 음성 정보나 데이터로 변환할 수 있다. 그 다음, 그 음성 정보는 VRU 클라이언트(232)를 경유하여 사용자에게 읽혀진다. 또한 VOIP 유닛(248)은 사용자로부터 음성 입력이나 통신을 수신하고 그것을 인터넷(220)으로 전송할 수 있는 VOIP 프로토콜로 변환할 수 있다. VOIP 유닛(248)은 Dialogic Corporation에서 구할 수 있는 Voice Net software package가 바람직하다. VOIP 장치는 통신 장치와 통합할 수 있다.
또한 통신 노드(212)는 검출 유닛(260)을 포함한다. 검출 유닛(260)은 사용자의 착신 오디오 입력이나 통신 또는 DTMF 톤을 검출하기 위한 어구 또는 키워드 감시자이다. 검출 유닛(260)은 스위치(230)와 통합하는 것이 바람직하나, VRU 클라이언트(232), 반송 스위치(216) 또는 VRU 서버(256)와도 통합될 수 있다. 검출 유닛(260)은 바람직하게도 Nuance Communications에서 구할 수 있는 RecServer software package속에 포함된다.
검출 유닛(260)은 사용자의 오디오 입력을 기록하고 그 오디오 입력을 데이터베이스 서버 유닛(244)에 저장한 어휘나 문법과 비교한다. 검출 유닛은 사용자가 노드(212)에 연결한 후, 주요 어구나 단어를 검출하기 위해 계속적으로 사용자의 오디오 입력을 감시한다. 검출 유닛(260)이 그 주요 어구나 단어를 검출하면, VRU 클라이언트(232)는 사용자에게 사전에 녹음된 메시지를 보낸다. 그 다음, VRU 클라이언트(232)는 사용자가 제공한 오디오 입력에 대한 응답을 한다.
통신 노드(212)의 빌링 서버 유닛(238)은 LAN(240)에 연결하는 것이 바람직하다. 빌링 서버 유닛(238)은 사용자가 통신 노드를 사용한 사항에 관한 데이터(즉, 통화의 길이, 사용자가 접근한 특징 등)를 기록할 수 있다. 사용자가 통화를 종료하면, 호출 제어 유닛(236)은 빌링 서버 유닛(238)으로 데이터를 송신한다. 그 다음, 빌링 서버는 고객 계산서를 준비하기 위하여 그 데이터를 처리한다. 빌링 서버 유닛(238)은 사용자에게 올바르게 청구하기 위하여 통신 장치의 ANI나 CLI를 이용할 수 있다. 빌링 서버 유닛(238)은 윈도우 NT 호환 컴퓨터를 포함하는 것이 바람직하다.
통신 노드(212)의 게이트웨이 서버 유닛(246)은 LAN(240)과 인터넷(220)에 연결하는 것이 바람직하다. 게이트웨이 서버 유닛(246)에 의해 인터넷(220)을 통한 콘텐트 제공자(208) 및 마크업 언어 서버(257)로의 접근이 가능하다. 또한 게이트웨이 유닛(246)에 의해 사용자는 인터넷(220)을 통해 통신 장치(204)로부터 통신 노드(212)에 접근할 수 있다. 게이트웨이 유닛(246)은 마치 방화벽(firewall)과 같은 기능도 할 수 있어서 권한이 부여된 사용자만 통신 노드(212)에 접근하도록 할 수 있다. 게이트웨이 유닛(246)은 Cisco Systems에서 구할 수 있는 Cisco Router가 바람직하다.
통신 노드(212)의 데이터베이스 서버 유닛(244)은 LAN(240)에 연결하는 것이 바람직하다. 데이터베이스 서버 유닛(244)은 사용자, 구술 어휘, 대화, 개성, 사용자가 입력한 데이터 그리고 기타 다른 정보에 대한 데이터를 저장하기 위한 복수의 저장 영역을 포함하는 것이 바람직하다. 데이터베이스 서버 유닛(244)은 개인 파일 또는 주소 책을 저장하는 것이 바람직하다. 개인 주소 책은 시스템의 작동을 위해 요구되는 정보를 포함할 수 있으며, 여기에는 사용자 참조 번호, 개인 접근코드, 개인 계좌 정보, 접촉한 주소 그리고 전화 번호 등을 포함한다. 데이터베이스 서버 유닛(244)은 윈도우 NT 호환 컴퓨터 같은 것이 바람직하다.
통신 노드(212)의 어플리케이션 서버(242)는 LAN(240)과 콘텐트 제공자(209)에 연결하는 것이 바람직하다. 어플리케이션 서버(242)로 인해 통신 노드(212)는 콘텐트 제공자와 마크업 언어 서버와 같은 정보원 목적지의 정보에 접근할 수 있다. 예컨대, 어플리케이션 서버는 정보원의 목적지로부터 정보(즉, 날씨 소식, 주식 정보, 교통 소식, 식당, 꽃집, 은행 등)를 검색할 수 있다. 어플리케이션 서버(242)는 검색한 정보를 처리하고 그 정보를 VRU 서버(234)와 음성 브라우저(250)에게 제공한다. VRU 서버(234)는 그 정보에 기초하여 문자 대 음성 합성 또는 녹음한 사람의 목소리를 이용하여 사용자에게 오디오 고지를 할 수 있다. 또한 어플리케이션 서버(242)는 사용자로부터 수신한 태스크 또는 요청(즉, 트랜잭션 정보)을 정보원(즉, 피자를 주문하는 요청)으로 송신할 수 있다. 어플리케이션 서버(242)는 또한 음성 인식 출력에 기초하여 VRU 서버(234)로부터 사용자 입력을 수신할 수 있다. 어플리케이션 서버는 윈도우 NT 호환 컴퓨터 같은 것이 바람직하다.
통신 노드(212)의 마크업 언어 서버(251)는 LAN(240)에 연결하는 것이 바람직하다. 마크업 언어 서버(251)는 데이터베이스, 스크립트 그리고 마크업 언어 문서 또는 페이지를 포함할 수 있다. 마크업 언어 서버(251)는 윈도우 NT 호환 컴퓨터 같은 것이 바람직하다. 또한 마크업 언어 서버(251)는 인터넷 서버(즉, Sun Microsystems 서버)가 될 수도 있다.
통신 노드(212)의 페이징 서버(252)는 LAN(240)과 페이징 네트워크(211)에 연결하는 것이 바람직하다. 페이징 서버(252)는 LAN(240)과 페이징 네트워크사이의 페이지들을 라우팅한다. 페이징 서버(252)는 윈도우 NT 호환 컴퓨터 같은 것이 바람직하다.
시스템(200)의 음성 브라우저(250)는 LAN(240)에 연결하는 것이 바람직하다. 음성 브라우저(250)는 어플리케이션 서버(242), 마크업 언어 서버(251, 257), 데이터베이스(244) 그리고 콘텐트 제공자(208)를 경유하여 콘텐트 제공자(209)와 같은 정보원으로부터 정보를 수신하는 것이 바람직하다. 사용자의 음성 입력 또는 DTMF 톤에 응답하여, 음성 브라우저(250)는 콘텐트 요청(즉, 전자 주소)을 발생시켜 하나 이상의 정보원의 목적지로 항해한다. 콘텐트 요청은 URL, URN, IP, 페이지 요청 또는 전자 이메일의 적어도 일부분을 사용할 수 있다.
음성 브라우저가 정보원에 연결된 후, TCP/IP 연결을 사용해서 요청을 정보원으로 보낸다. 정보원은 요청에 응답하여 전자적인 형태로 나타낸 요청 정보의 적어도 일부분을 음성 브라우저에게 송신한다. 정보는 정보원의 데이터베이스에 저장할 수 있으며 문자 콘텐트, 마크업 언어 문서 또는 페이지, 비문자 콘텐트, 대화, 오디오 샘플 데이터, 인식 문법 등을 포함할 수 있다. 그 다음, 음성 브라우저는 이하 상술하는 바와 같이 정보를 분석하고 번역한다. 음성 브라우저는 통신 장치(201, 202, 203, 204)와 통합할 수 있다.
도 3에 도시한 바와 같이, 콘텐트 제공자(209)는 통신 노드(212)의 어플리케이션 서버(244)에 연결되고 콘텐트 제공자(208)는 인터넷(220)을 경유하여 통신 노드(212)의 게이트웨이 서버(246)에 연결된다. 콘텐트 제공자는 뉴스, 날씨, 교통 정보 등의 다양한 콘텐트 정보를 저장할 수 있다. 콘텐트 제공자(208, 209)는 웹 페이지나 마크업 언어 형태의 문서를 운영하는 서버를 포함할 수 있다. 또한 콘텐트 제공자(208, 209)는 데이터베이스, 스크립트 그리고/또는 마크업 언어 문서나 페이지를 포함할 수도 있다. 스크립트는 이미지, 오디오, 문법, 컴퓨터 프로그램 등을 포함할 수 있다. 콘텐트 제공자는 적절한 서버 소프트웨어를 실행하여 음성 브라우저에게 요청한 정보를 송신한다.
도 4를 참조하면, 통신 노드(212)의 음성 브라우저(250)의 블록도가 도시되어 있다. 음성 브라우저(250)는 일반적으로 네트워크 인출 유닛(network fetcher unit)(300), 구문 분석기 유닛(parser unit)(302), 번역기 유닛(interpreter unit)(304) 그리고 상태 기계 유닛(state machine unit)(306)을 포함한다. 음성 브라우저를 다양한 형태의 독립적이고 분리된 유닛 혹은 장치로 구성된 것처럼 도시하였지만, 하드웨어 구성 요소와 회로 디자인, 소프트웨어 또는 컴퓨터 프로그래밍, 또는 이들을 조합한 형태로 구성할 수도 있다.
음성 브라우저(250)의 네트워크 인출기(300)는 구문 분석기(302)와 번역기(304)로 연결된다. 네트워크 인출기(300)는 또한 통신 노드(212)의 LAN(240)으로도 연결된다. 네트워크 인출기 유닛(304)은 정보를 검색하며 정보원의 마크업 언어 문서, 오디오 샘플 그리고 문법을 포함한다.
음성 브라우저(250)의 구문 분석기 유닛(302)은 네트워크 인출기 유닛(300)과 상태 기계 유닛(306)에 연결된다. 구문 분석기 유닛(302)은 네트워크 인출기유닛(300)으로부터 정보를 수신하고 후술하는 바와 같이 마크업 언어의 구문 규칙(즉, 확장 가능한 마크업 언어 구문)에 따라 정보를 분석한다. 구문 분석기 유닛(302)은 상태 기계 유닛(306)의 메모리에 저장되는 마크업 언어를 나타내는 트리 또는 계층적인 구조를 생성한다. 예시적인 마크업 언어 문서의 트리 구조를 도 7에서 도시한다.
다음 본문은 음성 브라우저의 구문 분석기 유닛이 마크업 언어 문서의 트리 구조를 구축하기 위해 활용하는 구문과 문법을 정의한다.
<!ELEMENT dialog (step|class)*>
<!ATTLIST dialog bargein (Y|N) "Y">
<!ELEMENT step (prompt|input|help|error|cancel|ack)*>
<!ATTLIST step name ID #REQUIRED
parent IDREF #IMPLIED
bargein (Y|N) "Y"
cost CDATA #IMPLIED>
<!ELEMENT class (prompt|help|error|cancel|ack)*>
<!ATTLIST class name ID #REQUIRED
parent IDREF #IMPLIED
bargein (Y|N) "Y"
cost CDATA #IMPLIED>
<!ELEMENT prompt (#PCDATA|options|value|emp|break|pros|audio)*>
<!ELEMENT emp (#PCDATA|options|value|emp|break|pros|audio)*>
<!ATTLIST emp level (strong|moderate|none|reduced) "moderate">
<!ELEMENT pros (#PCDATA|options|value|emp|break|pros|audio)*>
<!ATTLIST pros rate CDATA #IMPLIED
vol CDATA #IMPLIED
pitch CDATA #IMPLIED
range CDATA #IMPLIED>
<!ELEMENT help (#PCDATA|options|value|emp|break|pros|audio)*>
<!ATTLIST help ordinal CDATA #IMPLIED
reprompt (Y|N) "N"
next CDATA #IMPLIED
nextmethod (get|post) "get">
<!ELEMENT error (#PCDATA|options|value|emp|break|pros|audio)*>
<!ATTLIST error type NMTOKENS "ALL"
ordinal CDATA #IMPLIED
reprompt (Y|N) "N"
next CDATA #IMPLIED
nextmethod (get|post) "get">
<!ELEMENT cancel (#PCDATA|value|emp|break|pros|audio)*>
<!ATTLIST cancel next CDATA #REQUIRED nextmethod (get|post) "get">
<!ELEMENT audio EMPTY>
<!ATTLIST audio src CDATA #REQUIRED>
<!ELEMENT ack (#PCDATA|options|value|emp|break|pros|audio)*>
<!ATTLIST ack confirm NMTOKEN "YORN"
background (Y|N) "N"
reprompt (Y|N) "N">
<!ELEMENT input (option|response|rename|switch|case)*>
<!ATTLIST input type
(none|optionlist|record|grammar|profile|hidden|
yorn|digits|number|time|date|money|phone) #REQUIRED
name ID #IMPLIED
next CDATA #IMPLIED
nextmethod (get|post) "get"
timeout CDATA #IMPLIED
min CDATA #IMPLIED
max CDATA #IMPLIED
profname NMTOKEN #IMPLIED
subtype NMTOKEN #IMPLIED
src CDATA #IMPLIED
value CDATA #IMPLIED
msecs CDATA #IMPLIED
storage (file|request) #REQUIRED
format CDATA #IMPLIED>
<!ELEMENT switch (case|switch)*>
<!ATTLIST switch field NMTOKEN #REQUIRED>
<!ELEMENT response (switch)*>
<!ATTLIST response next CDATA #IMPLIED
nextmethod (get|post) "get"
fields NMTOKENS #REQUIRED>
<!ELEMENT rename EMPTY>
<!ATTLIST rename varname NMTOKEN #REQUIRED
recname NMTOKEN #REQUIRED>
<!ELEMENT case EMPTY>
<!ATTLIST case value CDATA #REQUIRED
next CDATA #REQUIRED
nextmethod (get|post) "get">
<!ELEMENT value EMPTY>
<!ATTLIST value name NMTOKEN #REQUIRED>
<!ELEMENT break EMPTY>
<!ATTLIST break msecs CDATA #IMPLIED>
size (none|small|medium|large) "medium">
<!ELEMENT options EMPTY>
<!ELEMENT or EMPTY>
<!ELEMENT option (#PCDATA|value|or)*>
<!ATTLIST option value CDATA #IMPLIED
next CDATA #IMPLIED
nextmethod (get|post) "get">
도 4를 다시 참조하면, 음성 브라우저(250)의 번역기 유닛(304)은 상태 기계 유닛(306)과 네트워크 인출기 유닛(300)에 연결된다. 또한 번역기 유닛(304)은 LAN에 연결된다. 번역기 유닛(304)은 마크업 언어 문서를 나타내는 트리 구조에 기초하여 사용자와 대화를 수행한다. 번역기 유닛은 TTS(252)로 데이터를 송신한다. 번역기 유닛(304)은 또한 사용자로부터 VRU 서버를 경유하여 받은 입력에 기초하여 데이터를 수신하고 그 사용자 입력에 기초하여 정보원으로 출력을 송신할 수 있다.
번역기 유닛(304)은 마크업 언어 문서의 트리 구조(즉, 대화)안에서 상태에서 상태로(즉, 단계에서 단계로) 천이를 하거나 동일한 대화 또는 다른 대화 안에서 새로운 트리 구조로 천이를 할 수 있다. 번역기 유닛은 대화의 구조와 사용자의 입력에 기초하여 다음 상태를 결정한다. 번역기 유닛은 새로운 대화 또는 페이지로 천이를 할 때, 새로운 대화나 페이지를 네트워크 인출기로 송신한다.
음성 브라우저(250)의 상태 기계(306)는 구문 분석기 유닛(302)과 번역기 유닛(304)에 연결된다. 상태 기계(306)는 마크업 언어의 트리 구조를 저장하고 음성 브라우저가 실행하는 현재의 상태 또는 단계를 유지한다.
도 5A-5C는 음성 브라우저(250)가 실행하는 소프트웨어 루틴의 흐름도를 도시한다. 소프트웨어 루틴은 대화식 음성 어플리케이션을 가능하게 한다. 블록(400)에서, 음성 브라우저(250)는 초기 주소(즉, URL)와 단계 요소 또는 이름을 결정한다. 그 다음 음성 브라우저는 블록(402)에서 정보원(즉, 콘텐트 제공자와 마크업 언어 서버)으로부터 현재 주소의 콘텐트(즉, 마크업 또는 언어 문서)를 인출한다. 음성 브라우저는 주소를 인출한 후, 블록(404)에서 콘텐트를 처리하고 지역 단계 표(즉, 트리 구조)를 생성한다.
블록(406)에서, 현재의 요소를 위해 시스템(200)의 TTS 유닛을 경유하여 사용자에게 프롬프트를 할 수 있다. 음성 브라우저는 그 다음 사용자의 입력(즉, 음성 또는 DTMF 톤)을 기다린다. 블록(408)에서, 음성 브라우저는 현재 단계 요소를 위해 사용자로부터 입력을 수집할 수 있다. 도 5C는 음성 인식을 위한 문법을 결정하기 위해 음성 브라우저가 실행하는 루틴의 예시적인 흐름도를 도시한다.
블록(502)에서, 음성 브라우저는 사용자 입력과 마크업 언어에 대해 미리 결정된 문법이 존재하는가를 결정한다. 예컨대, 음성 브라우저는 사용자 입력에 대한 문법이, 데이터베이스에 저장되거나 또는 마크업 언어에 포함된, 미리 결정된 또는 이미 존재하는 문법이 있는가를 결정한다. 만일 문법이 발견되면, 음성 브라우저는 블록(504)에서 그 문법을 VRU 서버로 송신한다. 블록(506)에서, VRU 서버는 사용자 입력을 문법과 비교하여 사용자 입력을 인식한다. VRU 서버가 사용자입력을 인식한 후, 프로세스는 후술하는 바와 같이 블록(410)으로 진행한다(도 5A 참조).
만일 이미 존재하는 문법이 블록(502)에서 발견되지 않는다면, 음성 브라우저는 사용자 입력을 위한 문법을 동적으로 생성한다. 블록(508)에서, 음성 브라우저는 사전에서 사용자를 위한 발음을 찾는다. 사전은 시스템의 데이터베이스 또는 외부 데이터베이스에 저장할 수 있다(즉, 음성 브라우저는 프로세서나 인터넷으로부터 사전을 인출할 수도 있다).
블록(510)에서, 음성 브라우저는 사전 및 음성 규칙에 의한 발음에 기초하여 사용자 입력을 위한 문법을 생성한다. Nuance Communication에서 구할 수 있는 모델 번호 RecServer인 소프트웨어 루틴을 사용하여 문법을 생성할 수 있다. 블록(512)에서, 문법은 VRU 서버로 송신된다. 그 다음, 음성 브라우저는 블록(506)에서 문법과 사용자 입력을 배합시킨다.
음성 브라우저는 블록(408)에서 사용자의 입력을 검출하거나 수집한 후, 블록(410)에서 오류가 있는가를 결정한다. 만일 음성 브라우저가 사용자의 입력을 인식하는데 어려움이 있거나 인식 오류, 타임아웃 오류 등을 검출하면, 블록(414)에서 적절한 오류 메시지가 사용자에게 전송된다. 예컨대, 음성 브라우저가 사용자로부터 너무 많은 음성을 검출하거나 인식이 지나치게 느린 경우, 프롬프트가 VRU 서버를 통해 사용자에게 실행된다(즉, "Sorry, I didn't understand you"). 만일 음성 브라우저가 예상하지 못한 DTMF 톤을 수신하면, 프롬프트가 VRU 서버를 통해 사용자에게 실행된다(즉,"I heared tones. Please speak your response").만일 음성 브라우저가 사용자로부터 어떤 음성도 검출하지 못한 경우, 사용자에게 프롬프트가 읽혀진다(즉, "I am having difficulty hearing you").
블록(416)에서, 음성 브라우저는 재-프롬프트가 오류 응답 또는 요소에 특정되었는지를 결정한다. 만일 재-프롬프트를 블록(416)에서 사용자에게 실행하려면, 프로세스는 전술한 바와 같이 블록(406)으로 진행한다. 만일 재-프롬프트를 블록(416)에서 실행하지 않을 것이면, 음성 브라우저는 블록(420)에서 오류 응답에 특정된 다음 단계 요소가 있는지를 결정한다. 만일 블록(420)에서 다른 단계 요소가 오류 응답에 특정되었다면, 프로세스는 상술한 바와 같이 블록(402)으로 진행한다. 만일 블록(420)에서 다른 단계 요소가 오류 응답에 특정되지 않았다면, 프로세스는 블록(422)으로 진행한다.
만일 음성 브라우저가 블록(410)에서 인식 오류를 검출하지 않으면, 블록(412)에서 사용자가 도움말을 요청했는지를 결정한다. 만일 사용자가 도움말을 요청했다면, 블록(424)에서 적절한 도움말 응답이 사용자에게 실행된다(즉, "please enter or speak your pin").
블록(425)에서, 음성 브라우저는 도움말 응답 또는 단계에서 재-프롬프트가 특정되었는지를 결정한다. 만일 재-프롬프트가 블록(425)에서 도움말 응답에 특정되면, 프로세스는 전술한 바와 같이 블록(406)으로 진행한다. 만일 재-프롬프트가 블록(425)에서 도움말 응답에 특정되지 않았으면 음성 브라우저는 블록(426)에서 다음 단계 요소가 도움말 응답에 특정되었는지를 결정한다. 만일 다른 단계 요소가 블록(426)에서 도움말 응답에 특정되었다면, 프로세스는 전술한 바와 같이블록(402)으로 진행한다. 만일 다른 단계 요소가 블록(426)에서 도움말 응답에 특정되지 않았다면, 프로세스는 블록(428)으로 진행한다.
블록(430)에서, 음성 브라우저는 사용자가 취소 요청을 하였는가를 결정한다. 만일 음성 브라우저가 블록(430)에서 사용자의 취소 요청을 검출하면, 적절한 취소 메시지가 블록(434)에서 사용자에게 실행된다(즉, "Do you wish to exit and return to the Main Menu?").
블록(436)에서, 음성 브라우저는 다음 단계 요소가 취소 응답 또는 요소에 특정되었는지를 결정한다. 만일 다른 단계 요소가 블록(436)에서 취소 응답에 특정되었다면, 프로세스는 블록(448)으로 진행한다. 만일 다른 단계 요소가 블록(436)에서 오류 응답에 특정되지 않았다면, 프로세스는 블록(422)으로 진행한다.
만일 취소 요청이 블록(430)에서 검출되지 않았다면, 음성 브라우저는 블록(432)에서 다음 단계 요소를 결정한다. 블록(440)에서, 음성 브라우저는 다음 단계 요소에 특정된 승인이 있는지를 결정한다. 만일 블록(440)에서 다음 요소에 특정된 승인이 없다면, 음성 브라우저는 블록(442)에서 현재 단계 요소를 다음 단계 요소로 설정하고 블록(444)에서 다음 단계 요소가 동일한 페이지에 있는가를 결정한다.
만일 다음 단계 요소가 블록(446)에서 현재 단계 요소와 같이 동일한 페이지 안에 있다면, 프로세스는 블록(446)으로 진행한다. 만일 다음 단계 요소가 블록(444)에서 현재 페이지와 동일한 페이지 안에 있지 않다면, 프로세스는블록(448)으로 진행한다.
만일 승인이 블록(440)에서 다음 단계 요소에 특정되면, 승인 응답은 블록(450)에서 사용자에게 실행된다. 그 다음 음성 브라우저는 블록(452)에서 확인이 정보(즉, 마크업 언어 문서)에 특정되었는가를 결정한다. 만일 확인이 블록(452)에서 정보에 특정되지 않으면, 프로세스는 전술한 바와 같이 블록(442)으로 진행한다. 만일 확인이 블록(452)에서 특정되면, 음성 브라우저는 블록(454)에서 응답이 사용자로부터 인식되었는가를 결정한 후 블록(456)에서 그 응답이 긍정적인가를 결정한다.
만일 음성 브라우저가 블록(456)에서 긍정적인 응답을 수신하면, 프로세스는 전술한 바와 같이 블록(442)으로 진행한다. 만일 음성 브라우저가 블록(456)에서 사용자로부터 긍정적인 응답을 수신하지 않으면, 프로세스는 블록(446)으로 진행한다.
다음 본문에서 통신 노드(212)의 음성 브라우저가 처리하는 예시적인 마크업 언어를 설명한다. 마크업 언어는 후술하는 바와 같이 문자, 녹음된 소리 샘플, 항해 제어 그리고 음성 어플리케이션을 위한 입력 제어를 포함하는 것이 바람직하다. 마크업 언어로 말미암아 서비스의 개발자 또는 시스템 설계자 또는 콘텐트 제공자는 음성 브라우저를 지시하여 의도하는 사용자 대화식 음성 서비스를 제공하는 어플리케이션 프로그램을 만들 수 있다. 또한 마크업 언어를 이용하여 설계자는 동적으로 그들의 콘텐트에 대한 주문을 받아 만들 수 있다. 예컨대, 설계자는 최신 뉴스, 날씨, 교통 등을 제공할 수 있다.
마크업 언어를 제어 흐름, 상태 관리 그리고 통신 노드(212)와 사용자 사이의 정보 흐름의 콘텐트를 표현하도록 설계할 수 있다. 특히, 음성 어플리케이션을 위해 언어 구조를 설계할 수 있고 마크업 언어는 대화 단위로 설계하고 주는 것이 바람직하다.
마크업 언어는 문서 또는 페이지의 구조를 설명하는 요소, 단어나 어구의 발음을 제공하는 요소, 대화식 음성 서비스를 제어하기 위해 본문에 표지를 다는 요소들을 포함할 수 있다. 또한 마크업 언어는 구절, 강조, 고저, 구술 속도와 기타 다른 특성을 제어하는 요소들을 제공할 수 있다. 마크업 언어는 콘텐트 제공자(208, 209)와 마크업 언어 서버(251, 257)와 같은 정보원의 데이터베이스에 저장하는 것이 바람직하다.
도 6은 통신 노드의 음성 브라우저가 처리할 수 있는 예시적인 마크업 언어 문서를 도시한다. 마크업 언어 문서는 계층적인 구조를 가지고 있으며 여기서 모든 요소(대화 요소는 제외하고)는 또 다른 요소가 포함한다. 또 다른 요소 사이의 요소를 자식 또는 트리의 하위 요소라 정의한다. 도 7은 도 6의 마크업 언어 문서의 트리 구조를 도시한다.
도 6에서 도시한 바와 같이, 마크업 언어 문서는 괄호 사이에 있는 실제 요소와 태그(tag)를 포함하며, <> 기호로 표시한다. 마크업 언어는 시작 태그("<>")와 끝 태그("</>")를 포함한다. 시작 태그는 마크업 요소를 시작하고 끝 태그는 대응하는 마크업 요소를 종료한다. 예컨대, 도 6에서 도시한 마크업 언어 문서에서, 라인 2의 DIALOG 요소(<dialog>)는 마크업 언어 문서 또는 페이지가 시작하고라인 26의 DIALOG 요소(</dialog>)는 마크업 언어 문서가 종료됨을 나타낸다.
마크업 언어 문서의 DIALOG 요소와 STEP 요소는 문서의 기본적인 구조를 제공한다. DIALOG 요소는 마크업 언어 문서의 범주를 정의하고 모든 다른 요소들은 DIALOG 요소에 포함된다. STEP 요소는 DIALOG 요소 안에서 상태들을 정의한다(즉, STEP 요소는 어플리케이션 상태를 정의한다). 예컨대, 어플리케이션 상태는 초기 프롬프트, 도움말 메시지, 오류 메시지 또는 클린업과 엑시트 과정을 포함한다.
마크업 언어 문서의 DIALOG 요소와 그것과 연관된 STEP 요소들은 음성 브라우저와 사용자 사이의 상호적인 대화를 나타내는 상태 기계를 정의한다. 음성 브라우저는 마크업 언어 문서를 번역할 때, 사용자의 응답에 따라 DIALOG 요소를 통해 상이한 STEP 요소들로 항해를 하게된다.
다음의 예는 통신 노드의 음성 브라우저가 처리할 수 있는 예시적인 마크업 언어 문서를 도시한다. 동 예에는 하나의 DIALOG 요소와 두 개의 STEP 요소가 있다.
<?XML VERSION="1.0"?>
<DIALOG>
<STEP NAME="init">
<PROMPT> Please select a soft drink. </PROMPT>
<HELP> Your choices are coke, pepsi, 7 up, or root beer. </HELP>
<INPUT TYPE="optionlist" NAME="drink">
<OPTION NEXT="#confirm"> coke </OPTION>
. <OPTION NEXT="#confirm"> pepsi </OPTION>
<OPTION NEXT="#confirm"> 7 up </OPTION>
<OPTION NEXT="#confirm"> root beer </OPTION> </INPUT>
</STEP>
<STEP NAME="confirm">
<PROMPT> You ordered a <VALUE NAME="drink"/>.
</PROMPT>
</STEP>
</DIALOG>
음성 브라우저가 위의 마크업 언어 문서를 해석할 때, 초기에 "init"라고 하는 STEP 요소를 실행시킨다. 우선, 사용자는 프롬프트 요소에 포함된 본문을 듣게 된다(즉, "Please select a soft drink."). 만일 사용자가 선택을 하기 전에 "help"라는 응답을 하면, 사용자는 HELP 요소에 포함된 본문을 듣게 된다(즉, "Your choices are coke, pepsi, 7up, or root beer."). 사용자가 선택을 한 후, 음성 브라우저는 "confirm"이라고 하는 STEP 요소를 실행시키며, 이것은 사용자의 선택을 다시 읽어 주고 어플리케이션을 빠져나가는 것이다. 마크업 언어 문서의 STEP 요소는 사용자의 응답에 기초하여 실행되는 것이지 소스 파일에 저장된 STEP 요소의 순서에 의한 것이 아니라는 점을 알아야 한다. "init" STEP 요소의 정의가 "confirm" STEP 요소의 정의 전에 있지만, 이들이 정의된 순서는 음성 브라우저가 이들을 항해하는 순서에 아무런 영향을 주지 않는다.
다음 본문은 마크업 언어 요소들, 이들의 속성 그리고 이들의 구문을 설명한다. 마크업 언어의 DIALOG 요소(즉, <DIALOG [BARGEIN="value"]> markup language document </DIALOG>)는 마크업 언어의 기본적인 요소이다. BARGEIN 속성의 값은 "Y" 또는 "N"이 될 수 있다. BARGEIN 속성은 DIALOG 요소가 사용자로부터 미리 결정된 응답(즉, wake up)에 기초하여 언제든지 해석될 수 있게 해준다.
DIALOG 요소는 어플리케이션 안에서 문맥의 기본적인 유닛을 정의하며, 일반적으로 주소(즉, URL)마다 하나의 DIALOG 요소가 있다. 각각의 DIALOG 요소는 "init"라고 하는 하나의 STEP 요소를 포함한다. DIALOG요소는 "init" STEP과 함께 실행이 된다.
다음의 마크업 언어 문서 또는 페이지 예는 DIALOG 요소를 포함하고 있다.
<DIALOG>
<STEP NAME="init">
<PROMPT> Welcome to VoxML"! voice markup language. </PROMPT>
</STEP>
</DIALOG>
위의 예에서, DIALOG 요소는 "init"라고 하는 하나의 STEP 요소를 포함한다. 그 STEP 요소는 문자 대 음성 유닛(252)을 통해 사용자에게 읽혀질 하나의 PROMPT 요소를 갖고 있다. 이 STEP 요소에는 정의된 INPUT 요소가 없기 때문에, 마크업 언어 어플리케이션은 PROMPT 요소를 읽은 후 바로 종료할 것이다.
마크업 언어의 STEP 요소(즉, <STEP NAME="vlaue" [PARENT="value"][BARGEIN="value"] [COST="value"]> text </STEP>) 는 마크업 언어 문서 또는 페이지에서 상태를 정의한다. STEP 요소는 DIALOG 요소가 포함한다. STEP 요소는 NAME 속성, PARENT 속성, BARGEIN 속성, 그리고 COST 속성을 포함한다. NAME과 PARENT 속성의 값은 식별자(즉, 포인터 또는 변수 이름)가 될 수 있고, BARGEIN 속성의 값은 "Y" 또는 "N"이 될 수 있고, COST 속성의 값은 정수가 될 수 있다.
STEP 요소는 일반적으로 어플리케이션 상태를 정의하는 관련된 PROMPT 요소와 INPUT 요소를 갖고 있다. 다음 예는 마크업 언어 문서에서 STEP 요소를 사용하는 방법을 도시한다.
<STEP NAME="askpython" PARENT="tvrating">
<PROMPT> Please rate Monty Python's Flying Circus on a scale of 1 to 10. </PROMPT>
<INPUT NAME="python" TYPE="number" NEXT="#drwho" /> </STEP>
상기의 예는 여러 공중 텔레비전 쇼 중 하나에 관한 사용자의 의견을 수집하는 STEP 요소를 도시한다. STEP 요소는 PARENT 속성을 사용하여 다른 TV 쇼를 평가하는 STEP 요소와 도움말 및 오류 요소들의 공통된 집합을 공유한다. 예컨대, PARENT 속성은 1,5,10등이 무엇을 의미하는지를 설명하는 HELP 요소를 포함할 수 있고 공통 오류 메시지는 사용자에게 어떤 숫자로 된 등수가 기대된다는 것을 상기 시켜준다.
마크업 언어의 PROMPT 요소(즉, <PROMPT> text </PROMPT>)를 사용하여 사용자에게 제공될 내용(즉, 문자 또는 오디오 파일)을 정의한다. 일반적으로, PROMPT요소는 문자 대 음성 유닛을 통해 사용자에게 읽혀질 몇몇의 마크업 요소(즉, 후술하는 바와 같은 BREAK 또는 EMP 요소)와 문자를 포함한다.
PROMPT 요소는 STEP 또는 CLASS 요소 속에 포함할 수 있다. 다음 예는 마크업 언어 문서 또는 페이지에서 PROMPT 요소를 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> How old are you? </PROMPT>
<INPUT TYPE="number" NAME="age" NEXT="#weight"/>
</STEP>
상기 예에서, 본문 "How old are you?"가 문자 대 음성 유닛을 통해 사용자에게 재생된 후, 음성 브라우저는 사용자가 그의 나이를 말하기를 기다린다.
마크업 언어의 INPUT 요소를 사용하여 각각의 STEP 요소 안에서 유효한 사용자 입력을 정의한다. INPUT 요소는 STEP 요소 안에 포함된다. 마크업 언어의 INPUT요소는 INPUT 속성을 포함한다. INPUT 속성의 값은 DATE 입력, DIGIT 입력, FORM 입력, GRAMMAR 입력, HIDDEN 입력, MONEY 입력, NONE 입력, NUMBER 입력, OPTIONLIST 입력, PHONE 입력, PROFILE 입력, RECORD 입력, TIME 입력, YORN 입력이 될 수 있다.
마크업 언어의 INPUT 속성의 DATE 입력(즉, <INPUT TYPE="DATE" NAME="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"] />)을 사용하여 사용자로부터 달력 날짜를 수집할 수 있다. DATE 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고(즉, 자바 스크립트 프로그램 또는 마크업 언어 서버에 대한 입력), TIMEOUT 속성의 값은 millisecond단위로 나타낸 숫자가 될 수 있다.
다음 예는 마크업 언어 문서에서 DATE 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> What is your date of birth? <PROMPT>
<INPUT TYPE="date" NAME="dob" NEXT="#soc"/>
</STEP>
상기 예에서, DATE 입력을 사용하여 사용자의 생일을 입력받아, 그것을 "dob"라는 변수에 저장하고, "soc"라고 하는 STEP 요소로 간다. DATE 입력은 입력 문법을 사용하여 사용자의 응답을 해석하고 그 응답을 표준 포맷으로 저장한다.
DATE 입력 문법은 여러 다른 포맷으로 된 날짜들을 해석할 수 있다. "next Friday, July 10th"와 같이 완전히 정의한 날짜는 "07101998|July|10|1998|Friday|next"로 저장된다. 만일 그 날짜를 사용자의 응답에 의해 결정할 수 없으면, 그 응답의 모호한 부분을 데이터에서 생략한다. 응답 "July 4th"는 "????????|July|4|||", "Tomorrow"는 "????????|||||tomorrow", "The 15th"는 "????????||15|||", 그리고 "Monday"는 "????????||||Monday|"로 저장한다.
마크업 언어의 INPUT 속성의 DIGITS 입력(즉, <INPUT TYPE="DIGITS"NAME="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"] [MIN="value"] [MAX="value"] />)을 사용하여 사용자로부터 일련의 숫자들을 수집한다. DIGITS 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, TIMEOUT 속성, MIN 속성, MAX 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고, TIMEOUT 속성의 값은 millisecond 단위로 표시한 숫자가 될 수 있다. MIN과 MAX 속성의 값은 각각 최소 및 최대 정수 값이 될 수 있다.
다음 예는 마크업 언어 문서 또는 페이지에서 DIGITS 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Please say your pin now. </PROMPT>
<INPUT TYPE="digits" NAME="pin" NEXT="#doit"/> </STEP>
상기 예에서, DIGITS 입력을 사용하여 사용자로부터 숫자들을 수집하고, 그 숫자를 "pin"이라는 변수에 저장하고, "doit"라고 하는 STEP으로 간다. 만일 사용자가 "four five six"라고 말을 한다고 하면, 그 값 "456"이 변수 "pin"에 저장될 것이다. DIGITS 입력은 숫자 0부터 9까지 수집할 수 있으나 20과 같은 다른 숫자들은 수집할 수 없다. 두 자리 숫자(즉, 20 또는 400)를 수집하기 위해, NUMBER 입력을 아래에서 설명하는 바와 같이 사용할 수 있다.
마크업 언어의 INPUT 속성의 FORM 입력(즉, <INPUT TYPE="FORM" NAME="value" METHOD="value" ACTION="value" TIMEOUT="value" />)을 사용하여 사용자로부터 입력을 수집하고, 그 입력을 음성 대 문자 유닛을 사용하여 문자로 변환하고, 그 문자를 마크업 언어 서버로 송신한다. FORM 입력은 NAME 속성, NEXT 속성, METHOD 속성, ACTION 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL, 포인터 또는 메모리 주소)가 될 수 있다. METHOD 속성의 값은 get 및 post가 될 수 있고 ACTION 속성의 값은 서버에서 입력을 처리하는 스크립트를 가리키는 포인터가 될 수 있다. TIMEOUT 속성의 값은 millisecond 단위로 나타낸 숫자가 될 수 있다.
FORM 입력은 음성 대 문자 유닛을 사용하여 사용자 입력을 문자로 변환한다. 사용자 입력은 그 다음 표준 HTML <FORM> 텍스트 포맷의 형태로 마크업 언어 서버로 송신되어 그 서버의 스크립트에 의해 처리된다. 만일 사용자가 "John Smith"라고 말을 한다면, 문자 열"john string"이 <FORM> 포맷의 METHOD 속성이 지시하는 방법과 ACTION 속성이 지시하는 포인터와 주소를 사용하여 서버로 송신된다.
다음은 마크업 언어 문서에서 FORM 입력을 사용하는 예이다.
<STEP NAME="order form">
<PROMPT> What you like to order? </PROMPT>
<INPUT TYPE="form" NAME="order" NEXT="#next
order" METHOD="post"
ACTION="http://www.test.com/cgi-bin/post-query"
TIMEOUT="200" />
</STEP>
상기 도시한 예에서는, FORM 입력을 사용하여 사용자의 주문 입력을 수집하고, 그것을 문자로 변환한 것을 "order"라는 변수에 저장하고, "next order"라고 하는 다음 단계로 넘어가고, 그 문자를 "http://www.test.com/cgi-bin/post-query"라는 주소로 포스팅하고 200 milliseconds의 타임아웃 값을 사용한다.
마크업 언어의 INPUT 속성의 GRAMMAR 입력(즉, <INPUT TYPE="GRAMMAR" SRC="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"] />, <INPUT TYPE="GRAMMAR", SRC="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"]> RENAME elements </INPUT>, 또는 <INPUT TYPE="GRAMMAR" SRC="value" [TIMEOUT="value"] [NEXT="value" [NEXTMETHOD="value"]]> RESPONSE elements </INPUT>)을 사용하여 사용자의 응답을 해석하는 동안 입력 문법을 특정한다. GRAMMAR 입력은 SCR 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. SCR 속성의 값은 문법 주소(즉, URL)가 될 수 있고 NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고 TIMEOUT 속성의 값은 millisecond 단위로 표현된 숫자가 될 수 있다.
다음 예는 마크업 언어 문서에서 GRAMMAR 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Say the month and year in which the credit card expires. </PROMPT>
<INPUT TYPE="GRAMMAR"
SRC="gram://.SomeGrammar/month/year"
NEXT="#stepNineteen"/>
</STEP>
상기 예는 GRAMMAR 입력을 이용하여 사용자가 입력한 월과 년에 대응하는 미리 결정된 문법을 생성하고, 그 해석된 값들을 "month"와 "year"라는 변수에 저장하고, 그 다음 "stepNineteen"이라고 하는 단계로 넘어가는 것을 도시한다.
마크업 언어의 INPUT 속성의 HIDDEN 입력(즉, <INPUT TYPE="HIDDEN" NAME="value" VALUE="value"/>)을 사용하여 변수에 값을 저장한다. HIDDEN 입력은 NAME 속성과 VALUE 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있으며, VALUE 속성의 값은 문자 값이 될 수 있다.
다음 예는 마크업 언어 문서에서 HIDDEN 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Login sequence complete.
Are you ready to place your order?
</PROMPT>
<INPUT TYPE="hidden" NAME="firstname"
VALUE="Bill"/>
<INPUT TYPE="hidden" NAME="lastname"
VALUE="Clinton"/>
<INPUT TYPE="hidden" NAME="favorite"
VALUE="fries"/>
<INPUT TYPE="optionlist">
<OPTION NEXT="#order"> yes </OPTION>
<OPTION NEXT="#wait"> not yet </OPTION>
</INPUT>
</STEP>
상기 도시된 예에서는, HIDDEN 입력을 사용하여 변수들을 만들고 그 변수들에게 값을 할당한다. 이 예에서, 사용자는 로그인 시퀀스를 마치고 사용자에 대한 신원이 생성되면 소정의 정보가 변수에 저장이 된다. 그러면, 이 정보는 데이터베이스를 다시 접근할 필요 없이 추후에 어플리케이션에서 사용을 할 수 있다.
마크업 언어의 INPUT 속성의 MONEY 입력(즉, <INPUT TYPE="MONEY" NAME="value" NEXT="value" [NEXTMETHOD="value" [TIMEOUT="value"] />)을 사용하여 사용자로부터 통화량을 수집한다. MONEY 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고 TIMEOUT 속성의 값은 millisecond단위로 나타낸 숫자가 될 수 있다.
MONEY 입력은 입력 문법을 사용하여 사용자의 응답을 해석하고 그 응답을 표준 포맷으로 저장한다. 입력 문법은 다양한 방식들을 해석하여 통화량으로 표현할 수 있다. 데이터는 cent 단위 및 정수 포맷으로 저장하는 것이 바람직하다."Five cents"는 "5"로 저장하고, "five dollars"는 "500"으로 저장하고, "a thousand"는 "100000"으로 저장한다. 단위가 모호할 경우에는, 문법은 달러라고 가정하며, "a thousand"는 마치 사용자가 "a thousand dollars"라고 말한 것처럼 저장을 한다.
다음 예는 마크업 언어 문서에서 MONEY 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> How much would you like to deposit?</PROMPT>
<INPUT TYPE="money" NAME="dep"
NEXT="#deposit"/>
</STEP>
상기 예에서는, MONEY 입력을 사용하여 사용자가 그의 계좌에 예금하기 원하는 통화량을 수집하고, 그 양을 "dep"라고 하는 변수에 저장하고, 그 후 "deposit"라고 하는 단계로 넘어간다.
마크업 언어의 INPUT 속성의 NONE 입력(즉, <INPUT TYPE="NONE" NEXT="value" [NEXTMETHOD="value" />)을 사용하여 사용자가 아무런 응답을 하지 않을 경우 음성 브라우저가 실행을 계속할 다음 장소를 특정한다. NONE 입력은 NEXT 속성과 NEXTMETHOD 속성을 포함한다. NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다.
다음 예는 마크 업 언어에서 NONE 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Welcome to the system. </PROMPT>
<INPUT TYPE="none" NEXT="#mainmenu"/>
</STEP>
상기 예에서는, NONE 입력을 사용하여 사용자의 응답을 기다림 없이 이 대화 안에서 또 다른 STEP 요소로 점프를 하게 된다. 이 예에서는, 사용자는 "Welcome to the system"이라는 어구를 들음과 동시에 메인 메뉴의 프롬프트가 나오게 된다.
마크업 언어의 INPUT 속성의 NUMBER 입력(즉, <INPUT TYPE="NUMBER" NAME="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"]/>을 사용하여 사용자로부터 숫자들을 수집할 수 있다. NUMBER 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있으며, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고, TIMEOUT 속성의 값은 millisecond로 표현된 숫자가 될 수 있다.
다음 예는 마크업 언어 문서 또는 페이지에서 NUMBER 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Please say your age now. </PROMPT>
<INPUT TYPE="number" NAME="age" NEXT="#doit"/> </STEP>
상기 예에서는, NUMBER 입력을 사용하여 사용자로부터 숫자를 수집하고, 그 숫자를 "age"라는 변수에 저장하고, 그리고 나서 "doit"이라고 하는 STEP 요소로넘어 간다. 만일 사용자가 PROMPT 요소에 응답하여 "eighteen"이라고 말하면 값 "18"이 변수 "age"에 저장될 것이다. NUMBER 입력은 20(즉, twenty)과 같은 숫자들을 수집할 것이나, 매 입력마다 하나의 숫자만 수집한다. "four five six"(즉, "456")과 같은 일련의 숫자를 수집하기 위해서, DIGITS 입력을 전술한 바와 같이 사용할 수 있다.
마크업 언어의 INPUT 속성의 OPTIONLIST 입력(즉, <INPUT TYPE="OPTIONLIST" [NAME="value"] [TIMEOUT="value"] [NEXT="value" [NEXTMETHOD="value"]] > OPTION elements </INPUT>)을 사용하여 사용자가 선택할 수 있는 옵션의 리스트를 열거한다. OPTIONLIST 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고 NEXT 속성의 값은 다음 단계 URL이 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고, TIMEOUT 속성의 값은 millisecond로 표시되는 숫자일 수 있다.
OPTIONLIST 입력은 OPTION 요소와 함께 사용하며, 이것은 특정한 사용자 응답과 각각의 OPTION 요소와 연관된 작용을 정의한다. 다음 예는 마크업 언어 문서에서 OPTIONLIST 요소를 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> What would you like to drink? </PROMPT>
<INPUT TYPE="optionlist">
<OPTION NEXT="#coke"> coke </OPTION>
<OPTION NEXT="#coke"> coca-cola </OPTION>
<OPTION NEXT="#pepsi"> pepsi </OPTION>
<OPTION NEXT="#rc"> r c </OPTION
</INPUT>
</STEP>
상기 도시한 예에서, 음성 브라우저는 사용자가 선택한 콜라에 따라 다른 STEP 요소 또는 상태로 갈 것이다. 만일 사용자가 "coke" 또는 "coca-cola"라고 말한다면, 음성 브라우저는 "coke"라고 하는 STEP 요소로 갈 것이다.
마크업 언어의 INPUT 속성의 PHONE 입력(즉, <INPUT TYPE="PHONE" NAME="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"]/>)을 사용하여 사용자로부터 전화 번호를 수집할 수 있다. PHONE 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있으며, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고, TIMEOUT 속성의 값은 millisecond로 표현된 숫자가 될 수 있다.
PHONE 입력은 입력 문법을 사용하여 사용자의 응답을 해석하고 그 응답을 표준 포맷으로 저장한다. 전화 번호는 숫자열로 해석하며 변수에 저장한다. 만일 사용자가 "One, eight zero zero, seven five nine, eight eight eight eight"라고 말하면, 그 응답은 "18007598888"로 저장이 된다.
다음은 마크업 언어 문서에서 PHONE 입력을 사용하는 예이다.
<STEP NAME="phone">
<PROMPT> What is your phone number? </PROMPT>
<INPUT TYPE="phone" NAME="ph" NEXT="#fax"/>
</STEP>
상기 도시한 예에서는, PHONE 입력을 사용하여 사용자로부터 전화 번호를 수집하고, 그 번호를 "ph"라고 하는 변수에 저장하고, "fax"라고 하는 STEP로 넘어간다.
마크업 언어의 INPUT 속성의 PROFILE 입력(즉, <INPUT TYPE="PROFILE" NAME="value" PROFNAME="value" [SUBTYPE="value"]/>)을 사용하여 사용자의 프로파일 정보(즉, 이름, 성, 메일 주소, 이메일 주소, 그리고 통지 주소)를 수집한다. 사용자 프로파일 정보는 시스템의 데이터베이스(244)에 저장한다.
PROFILE 입력은 NAME 속성, PROFNAME 속성, 그리고 SUBTYPE 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있으며, PROFNAME 속성의 값은 프로파일 요소 이름(문자열)이 될 수 있으며, SUBTYPE 속성의 값은 프로파일 요소 서브타입(문자열)이 될 수 있다.
다음 예는 마크업 언어 문서에서 PROFILE 입력을 사용하는 방법을 도시한다.
<STEP NAME="getinfo">
<INPUT TYPE="profile" NAME="firstname"
PROFNAME="N" SUBTYPE="first"/>
<PROMPT> Hello, <VALUE NAME="firstname"/>.
Please say your pin. </PROMPT>
<INPUT TYPE="digits" NAME="pin"
NEXT="#verify"/>
</STEP>
상기 예에서는, PROFILE 입력을 사용하여 사용자의 이름을 수신하고 그 문자열을 "firstname"이라고 하는 변수에 저장한다. 그 다음, 이름을 포함하는 문자열은 후술하는 바와 같이 VALUE 요소를 사용하여 PROMPT 요소로 삽입된다. PROFILE 입력을 사용하는 동안, 하나 이상의 INPUT 요소를 동일한 STEP 요소에 포함시킬 수 있는데 그 이유는 PROFILE 입력은 대화식 INPUT 요소가 아니기 때문이다. 각각의 STEP 요소는 사용자로부터 응답을 수신하는 단지 하나의 INPUT 요소만 포함한다.
다음의 표는 프로파일 이름과 그것의 연관된 서브타입들을 유효하게 조합한 것이다.
Profile Name Subtype Description
ADR POSTAL postal address
PARCEL parcel address
HOME home address
WORK work address
DOM domestic address
INTL international address
BDAY none birthday
EMAIL address none primary email
NOTIFICATION notification email address
FN none formatted name
GEO(longitude;lattitude) none geographic location
KEY none public encryption key
LABEL none mailing label
MAILER none email program used
N FIRST first name
LAST last name
MIDDLE middle name
PREFIX prefix(e.g. Mr.,Mrs.,DR.)
SUFFIX suffix(e.g. Jr.,D.D.S,M.D.)
ORG none organization
ROLE none job role or position
TEL HOME home telephone nember
WORK work telephone
MSG voicemail telephone
VOICE voice call
FAX fax call telephone
CELL celluar telephone
PREF preferred telephone
TITLE none job title
TZ none time zone
UID none globally unique id
URL none URL of home page
VERSION none version of Vcard
위에 도시한 통지 주소는 사용자에게 긴급한 정보나 적시의 정보를 송신하기 위해 사용할 수 있다(즉 무선 호출기로 정보 송신). 통지 주소의 포맷은 사용자가 가입을 했을 때 제공한 이메일 주소로 하는 것이 바람직하다. 사용자의 통지 주소는 "n_addr"이라고 하는 변수에 저장된다. 그러면, 어플리케이션은 이 이메일 주소를 사용하여 사용자에게 메시지를 보낼 수 있다. 음성 브라우저로부터 통지 주소를 검색하기 위해, PROFILE 입력을 마크업 언어 문서상에서 다음과 같은 방식으로 사용할 수 있다:
<INPUT TYPE="profile" NAME="n_addr"
PROFNAME="email" SUBTYPE="notification"/>
마크업 언어의 INPUT 속성의 RECORD 입력(즉, <INPUT TYPE="RECORD" TIMEOUT="value" STORAGE="value" [FORMAT="value"] [NAME="value"] NEXT="value" [NEXTMETHOD="value"]/>)을 사용하여 오디오 샘플을 기록하고 그 오디오 샘플을 특정 위치에 저장한다. RECORD 입력은 TIMEOUT 속성, FORMAT 속성, NAME 속성, STORAGE 속성, NEXT 속성, 그리고 NEXTMETHOD 속성을 포함한다. TIMEOUT 속성의 값은 millisecond로 표현된 맥시멈 기록 시간이 될 수 있고, FORMAT 속성의 값은 녹음된 오디오 포맷(audio/wav)이 될 수 있고, NAME 속성의 값은 식별자가 될 수 있고, STORAGE의 값은 파일 및 요청이 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)이 될 수 있고, NEXTMETHOD 속성의 값은 get, post 및 put이 될 수 있다.
다음 두 예는 마크업 언어 문서에서 RECORD 입력이 사용되는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> Please say your first and last name.
</PROMPT>
<INPUT TYPE="record" TIMEOUT="7000"
NAME="theName" STORAGE="REQUEST"
NEXT="http://wavhost/acceptwav.asp"
NEXTMETHOD="POST"/>
</STEP>
상기 도시한 예에서는, RECORD 입력을 사용하여 7초의 오디오 샘플을 저장한 후, 그 샘플을 "wavhost"라고 하는 원격의 기계로 "POST"한다. "POST"에 대한 응답은 어플리케이션을 계속 실행시키는 대화이어야 한다.
<STEP NAME="init">
<PROMPT> Please say your first and last name.
</PROMPT>
<INPUT TYPE="record" TIMEOUT="7000"
NAME="theName" STORAGE="FILE"
NEXT="#reccomplete" NEXTMETHOD="GET"/>
</STEP>
상기 도시한 예에서는, RECORD 입력을 사용하여 또 다른 7초의 오디오 샘플을 저장한다. 그러나, 그 샘플은 앞의 예에서와 같이 HTTP 요청으로 송신하는 대신, 파일로 저장한다. 파일의 이름은 음성 브라우저가 자동으로 선택하며 "theName"이라고 하는 변수에 저장한다. 오디오 샘플을 파일에 저장한 후, 음성 브라우저는 NEXT 속성이 특정한 URL에서 실행을 계속한다. 앞의 예와 달리, 변수 "theName"의 값은 오디오 파일의 이름이 된다. 더 전의 예에서는(여기서는 오디오 샘플이 HTTP 요청을 통해 전송되었다), 변수 "theName"의 값은 무효값이다.
마크업 언어의 INPUT 속성의 TIME 입력 타입(즉, <INPUT TYPE="TIME" NAME="value" NEXT="value" [NEXTMETHOD="value"] [TIMEOUT="value"]/>)을 사용하여 사용자로부터 하루중의 시간을 수집할 수 있다. TIME 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있고 TIMEOUT 속성의 값은 millisecond로 표현된 숫자가 될 수 있다.
TIME 입력은 입력 문법을 사용하여 사용자의 응답을 해석하고 그 응답을 표준 포맷으로 저장한다. 이 문법은 12시간 및 24시간 관례를 포함하는 다양한 형태의 응답을 해석한다. "Four oh three PM"은 "403P"가 된다. "P"가 시간에 부가됨을 알 수 있다. 마찬가지로, "Ten fifteen in the morning"은 "1015A"가 된다. "Noon"은 "1200P"로 저장되고, "Midnight"는 "1200A"로 저장된다. 군사 시간, 예컨대 "Thirteen hundred hours"는 "100P"가 된다. 만일 사용자가 아침인가 저녁인가를 명시하지 않으면, 변수에는 아무런 표시가 없게 된다(즉, "Four o'clock"은 "400"으로 저장된다).
다음 예는 마크업 언어 문서에서 TIME 입력을 사용하는 방법을 도시한다.
<STEP NAME="init">
<PROMPT> What time would you like your wakeup call? </PROMPT>
<INPUT TYPE="time" NAME="wakeup" NEXT="#record"/> </STEP>
상기 도시한 예에서는, TIME 입력을 사용하여 사용자로부터 하루중의 시간을수집하고, 그 데이터를 "wakeup"이라고 하는 변수에 저장하고, 그 후 "record"라고 하는 STEP 요소로 넘어간다.
마크업 언어의 INPUT 속성의 YORN 입력(즉, <INPUT TYPE="YORN" NAME="value" [TIMEOUT="value"] NEXT="value" [NEXTMETHOD="value"]/>, or <INPUT TYPE="YORN" [NAME="value"] [TIMEOUT="value"] [NEXT="value" [NEXTMETHOD="value"]]> CASE elements </INPUT>)을 사용하여 사용자로부터 "yes" 또는 "no" 응답을 수집한다. YORN 입력은 NAME 속성, NEXT 속성, NEXTMETHOD 속성, 그리고 TIMEOUT 속성을 포함한다. NAME 속성의 값은 식별자가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있다. NEXTMETHOD 속성의 값은 get 및 post가 될 수 있으며, TIMEOUT 속성의 값은 millisecond로 표현된 숫자가 될 수 있다.
YORN 입력은 다양한 긍정 및 부정적인 응답에 대하여 "Y" 와 "N" 값을 부여한다. YORN 입력은 긍정적인 응답에 대해 "Y"값을 저장하고 부정적인 응답에 대해 "N"값을 저장한다. 긍정 및 부정적인 응답은 다양한 사용자 응답을 적절한 결과로 매핑하는 입력 문법을 사용하여 결정한다.
다음의 예는 마크업 언어 문서에서 YORN 입력을 사용하는 방법을 도시한다.
<STEP NAME="ask">
<PROMPT> Fire the missles now? </PROMPT>
<INPUT TYPE="YORN" NAME="fire"
NEXT="#confirm"/>
</STEP>
상기 도시한 예에서는, YORN 입력을 사용하여 사용자로부터 "yes" 또는 "no" 응답을 수집하고, 그 응답을 "fire"라고 하는 변수에 저장한 후, "confirm"이라고 하는 STEP으로 넘어간다.
마크업 언어의 OPTION 요소(즉, <OPTION [NEXT="value" [NEXTMETHOD="value"]] [VALUE="value"] > text </OPTION>)를 사용하여 STEP 요소 또는 상태에서 사용자가 기대하는 응답의 타입을 정의한다. OPTION 입력은 VALUE 속성, NEXT 속성, 그리고 NEXTMETHOD 속성을 포함한다. VALUE 속성의 값은 문자값이 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다. OPTION 요소는 INPUT 요소 안에 존재하며, OPTIONLIST 입력을 사용하는 때에만 존재한다.
다음 두 예는 마크업 언어 문서에서 OPTION 요소를 사용하는 방법을 도시한다.
<INPUT NAME="choice" TYPE="optionlist">
<OPTION NEXT="#doit" VALUE="1"> one </OPTION>
<OPTION NEXT="#doit" VALUE="2"> two </OPTION>
</INPUT>
상기에서 도시한 예는 INPUT 요소 안에서 OPTION 요소를 사용하는 방법을 도시한다. 이 예에서, 첫 번째 OPTION 요소는 사용자가 "one"이라고 응답할 때 실행되고, 두 번째 OPTION은 사용자가 "two"라고 응답할 때 실행된다. 만일 사용자가"one"이라고 말한다면, VALUE 속성을 사용하기 때문에 "choice"라고 하는 변수의 값은 "1"이 된다. 이 OPTIONLIST의 OPTION 요소들을 위한 NEXT 속성이 동일하므로, 음성 브라우저는 "one"이 인식되든, "two"가 인식되든, "doit"이라고 하는 STEP 요소로 진행할 것이다.
<INPUT TUPE="optionlist">
<OPTION NEXT="http://localhost/vml/weather.asp">
weather </OPTION>
<OPTION NEXT="http://localhost/vml/news.asp"> news </OPTION>
<OPTION NEXT="http://localhost/vml/traffic.asp">
traffic </OPTION>
</INPUT>
상기 도시한 예는 OPTION 요소를 사용하여 세 개의 어플리케이션 중에서 하나를 선택하는 방법을 도시한다. NEXT 속성들이 사용한 URL들은 완전한 HTTP URL들이고, 전의 예와 달리, 각각의 OPTION 요소는 독자적인 NEXT 속성을 갖고 있음을 알 수 있다.
마크업 언어의 OPTIONS 요소(즉, <OPTIONS/>)는 주어진 STEP 요소 안에서 기대되는 입력의 유형을 기술한다. OPTIONS 요소는 HELP 요소에서 이용하여 유효한 응답들에 대한 완전한 리스트를 사용자에게 제공할 수 있다. OPTIONS 요소는 문자를 사용자에게 읽어 주는 곳이라면 어느 곳에서도 사용할 수 있다. OPTIONS 요소는 PROMPT, EMP, PROS, HELP, ERROR, 또는 ACK 요소가 포함할 수 있다.
다음 예는 마크업 언어 문서에서 OPTIONS 요소를 사용하는 방법을 도시한다.
<CLASS NAME="helpful">
<HELP> Your choices are: <OPTIONS/> </HELP>
</CLASS>
상기 도시한 예는 "helpful" 클래스를 구성하기 위해 어떻게 OPTIONS 요소를 사용할 수 있는가를 도시한다. 직접 혹은 간접적으로 "helpful"을 PARENT 요소로 지명하는 모든 STEP 요소들은 메시지를 말함으로써 도움 요청(즉, "help")에 응답하며, 이 메시지에서 OPTIONS 요소는 대화 중 이 시점에서 사용자가 말할 수 있는 것을 설명해준다.
마크업 언어의 ACK 요소(즉, <ACK [CONFIRM="value"] [BACKGROUND="value"] [REPROMPT="value"] > text </ACK>)를 사용하여 STEP 요소간의 천이를 승인하며, 보통 사용자 응답의 결과이다. ACK 요소는 CONFIRM 속성, BACKGROUND 속성, 그리고 REPROMPT 속성을 포함한다. BACKGROUND 및 REPROMPT 속성은 "Y" 및 "N"이 될 수 있고, CONFIRM 속성은 전술한 바와 같이 YORN 요소가 될 수 있다. 이후에 설명하겠지만, ACK 요소는 STEP 요소 또는 CLASS 요소가 포함할 수 있다.
<STEP NAME="card_type">
<PROMPT>
What type of credit card do you have?
</PROMPT>
<INPUT NAME="type" TYPE="optionlist">
<OPTION NEXT="#exp"> visa </OPTION>
<OPTION NEXT="#exp"> mastercard </OPTION>
<OPTION NEXT="#exp"> discover </OPTION>
</INPUT>
<ACK CONFIRM="YORN" REPROMPT="Y">
I thought you said <VALUE NAME="type"/>
<BREAK/> Is that correct?
</ACK>
</STEP>
상기 예에서, ACK 요소를 사용하여 사용자의 신용 카드 선택을 확인한다. 음성 브라우저가 이 요소를 해석할 때, PROMPT 요소가 문자 대 음성 유닛(252)을 이용하여 사용자에게 읽혀진다. 시스템은 사용자가 "visa", "mastercard", 또는 "discover"로 응답할 때까지 기다린 후, 카드의 종류가 올바로 인식되었는가를 사용자에게 묻는다. 사용자가 ACK 요소에게 "yes"라고 대답하면, 음성 브라우저는 "exp"라고 하는 STEP 요소로 진행한다. 만일 사용자가 ACK 요소에게 "no"라고 대답하면, PROMPT 요소의 본문을 다시 읽어 주고 사용자로 하여금 다시 선택하도록 한다. 그 후, 음성 브라우저는 STEP 요소로 다시 들어가거나 STEP 요소를 다시 실행한다.
마크업 언어의 AUDIO 요소(즉, <AUDIO SRC="value" />)는 실행시켜야 할 오디오 파일을 특정한다. AUDIO 요소는 SRC 속성을 포함한다. SRC 속성의 값은 오디오 파일 URL이 될 수 있다. AUDIO 요소는 PROMPT, EMP, PROS, HELP, ERROR, CANCEL, 또는 ACK 요소가 포함할 수 있다.
다음 마크업 언어는 AUDIO 요소를 포함한다.
<PROMPT>
At the tone, the time will be 11:59 p m
<AUDIO SRC="http://localhost/sounds/beep.wav"/> </PROMPT>
상기 예에서는, AUDIO 요소를 PROMPT 요소가 포함한다. 음성 브라우저가 해석할 때, 프롬프트(즉, "At the tone, the time will be 11:59 pm.")를 사용자에게 재생하고, AUDIO 요소가 특정한 바와 같이 WAV 파일 "beep.wav"도 사용자에게 재생한다.
마크업 언어의 BREAK 요소(즉, <BREAK [MSECS="value" | SIZE="value"] />)를 사용하여 내용 중에 또는 사용자에게 재생할 정보에 일시 정지를 삽입할 수 있다. BREAK 요소는 MSEC 속성과 SIZE 속성을 포함한다. MSEC 속성의 값은 millisecond로 표현된 숫자를 포함할 수 있고, SIZE 속성의 값은 none, small, medium, large가 될 수 있다.
BREAK 요소는 텍스트 또는 오디오샘플을 사용자에게 재생할 때 사용할 수 있다. BREAK 요소는 PROMPT, EMP, PROS, HELP, ERROR, CANCEL, 또는 ACK 요소가 포함할 수 있다. 다음 마크업 언어는 BREAK 요소를 포함한다.
<PROMPT>
Welcome to Earth. <BREAK MSECS="250"/>
How may I help you?
</PROMPT>
상기 예에서, BREAK 요소는 PROMPT 요소 안에서 MSECS 속성과 함께 사용된다. 음성 브라우저는 해석을 할 때, 프롬프트(즉, "Welcome to Earth.")를 사용자에게 읽어준다. 그러면, 시스템은 250 milliseconds 동안 잠시 멈춘 후, "How may I help you?"를 재생한다.
양자택일로, 아래에 도시한 바와 같이, millisecond 단위로 특정하는 대신에, BREAK 요소의 SIZE 속성(즉, "small", "medium", "large")을 사용하여 잠시 멈추는 길이를 조정할 수도 있다.
<PROMPT>
Welcome to Earth. <BREAK SIZE="medium"/>
How may I help you?
</PROMPT>
마크업 언어의 OR 요소(즉, <OR/>)를 사용하여 OPTION 요소 안에 교체 가능한 인식 결과를 정의한다. OR 요소는 논리 OR로 해석하며, 다수의 인식 결과들을 하나의 NEXT 속성과 연관 지우기 위해 사용한다.
다음 예는 마크업 언어 문서에서 OR 요소를 사용하는 방법을 도시한다.
<INPUT TYPE="optionlist">
<OPTION NEXT="#coke_chosen">
coke <OR/> coca-cola
</OPTION>
<OPTION NEXT="#pepsi_chosen"> pepsi </OPTION>
</INPUT>
상기 예는 OPTION 요소 안에서 OR 요소를 사용하는 것을 도시한다. 앞에서 도시한 바와 같이, 사용자는 "coke"나 "coca-cola"로 응답하게 되며, 음성 브라우저는 "coke_chosen"이라고 하는 STEP으로 진행한다.
마크업 언어의 CANCEL 요소(즉, <CANCEL NEXT="value" [NEXTMETHOD="value"] /> or <CANCEL NEXT="value" [NEXTMETHOD="value"]> text </CANCEL>)를 사용하여 현재의 PROMPT 요소를 취소하라는 사용자의 요청에 대한 어플리케이션의 응답 작용을 정의한다. CANCEL 요소는 NEXT 속성과 NEXTMETHOD 속성을 포함한다. NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다.
CANCEL 요소는 다양한 어구를 통해 호출할 수 있다. 예컨대, 사용자는 단지 "cancel"이라고 말하거나 또는 "I would like to cancel, please."라고 말할 수 있다. CANCEL 요소는 STEP 요소나 CLASS 요소가 포함할 수 있다. 음성 브라우저는 사용자로부터 "cancel"을 검출하면, 마크업 언어 문서 내 CANCEL 요소의 사용 방식에 따라 응답을 한다. 만일 주어진 STEP 요소와 연관된 CANCEL 요소가 없다면, 현재의 프롬프트는 (만일 동작하고 있을 경우) 인터럽트되고 동일한 어플리케이션 상태에 머무르면서 대화식 입력들을 처리하게 된다.
다음 예는 CANCEL 요소를 포함하는 마크업 언어를 도시한다.
<STEP NAME="report">
<CANCEL NEXT="#traffic_menu"/>
<PROMPT> Traffic conditions for Chicago, Illinois, Monday, May 18. Heavy
congestion on ... </PROMPT>
INPUT TYPE="optionlist">
<OPTION NEXT="#report"> repeat </OPTION>
<OPTION NEXT="#choose"> new city </OPTION>
</INPUT>
</STEP>
상기 예는, 사용자가 "cancel"이라고 말할 때 디폴트 동작 대신 음성 브라우저가 "traffic_menu"라고 하는 STEP 요소로 진행하여 PROMPT 요소의 동작을 중지시키고 사용자 응답을 기다리게 하는 것을 특정하는 CANCEL 요소의 사용법이다. 사용자는 유효한 OPTION 요소를 말함으로써 PROMPT 요소를 인터럽트할 수도 있다. 이 예에서, 사용자는 PROMPT 요소를 인터럽트 시키고 "new city"라고 말을 하여 다른 도시의 교통 정보를 얻을 수 있다.
마크업 언어의 CASE 요소(즉, <CASE VALUE="value" NEXT="value" [NEXTMETHOD="value"]/>)를 사용하여 내부 마크업 언어 변수들의 값들을 기초로, 어플리케이션의 제어 흐름을 정의한다. CASE 입력은 VALUE 속성, NEXT 속성, NEXTMETHOD 속성을 포함한다. VALUE 속성의 값은 문자값이 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다. CASE 요소는, 하나의 값을 수집하는 INPUT 요소의 입력 타입(즉, DATE, DIGITS, MONEY, PHONE, TIME, YORN)을 사용할 때, SWITCH 요소나 INPUT 요소가 포함할 수 있다.
다음의 예는 CASE 요소를 포함하는 마크업 언어를 도시한다.
<SWITCH FILED = "pizza">
<CASE VALUE="pepperoni" NEXT="#p_pizza"/>
<CASE VALUE="sausage" NEXT="#s_pizza"/>
<CASE VALUE="veggie" NEXT="#v_pizza"/>
</SWITCH>
상기 예에서, 마크업 언어는 SWITCH 요소 안에서 CASE 요소를 사용하는 것을 도시한다. 이 예에서는, CASE 요소들을 사용하여 마크업 언어 변수 "pizza"의 값을 기초로 음성 브라우저를 다른 URL로 향하게 한다.
마크업 언어의 CLASS 요소(즉, <CLASS NAME="value" [PARENT="value"] [BARGEIN="value"] [COST="value"]> text </CLASS>)를 사용하여 대화의 내용 안에서 다시 사용할 요소들의 집합을 정의한다. 예컨대, 어플리케이션 개발자들은 일단 요소들의 집합을 정의하고 이들을 몇 회 사용할 수 있다. CLASS 입력은 NAME 속성, PARENT 속성, BARGEIN 속성, 그리고 COST 속성을 포함한다. NAME과 PARENT 속성의 값은 식별자가 될 수 있다. BARGEIN 속성의 값은 "Y" 및 "N"이 될 수 있고, COST 속성의 값은 정수가 될 수 있다.
CLASS 요소를 사용하여 주어진 DIALOG 요소 안에서 ERROR 요소, HELP 요소, CANCEL 요소의 디폴트 작용을 정의할 수 있다. CLASS 요소는 DIALOG 요소가 포함할 수 있다. 다음의 예는 CLASS 요소를 포함하는 마크업 언어 문서를 도시한다.
<CLASS NAME="simple">
<HELP> Your choices are <OPTIONS/> </HELP>
<ERROR> I did not understand what you said.
Valid responses are <OPTIONS/> </ERROR>
</CLASS>
<STEP NAME="beverage" PARENT="simple">
<PROMPT> Please choose a drink. </PROMPT>
<INPUT NAME="drink" TYPE="optionlist">
<OPTION NEXT="#food"> coke </OPTION>
<OPTION NEXT="#food"> pepsi </OPTION>
</INPUT>
</STEP>
<STEP NAME="food" PARENT="simple">
<PROMPT> Please choose a meal. </PROMPT>
<INPUT NAME="meal" TYPE="optionlist">
<OPTION NEXT="#deliver"> pizza </OPTION>
<OPTION NEXT="#deliver"> tacos </OPTION>
</INPUT>
</STEP>
상기 예에서, 마크업 언어 문서는 CLASS 요소를 사용하여 이 DIALOG 요소 안의 몇몇 단계에서 사용할 HELP 요소와 ERROR 요소를 정의하는 것을 도시한다. 또한 STEP 요소의 PARENT 속성을 사용하여 CLASS 요소를 참조해서 그 안에 정의된 작용을 계승하는 것도 도시하고 있다. 음성 브라우저가 해석을 할 때, STEP 요소는 마치 CLASS 요소에서 정의한 HELP와 ERROR 요소들이 각각의 단계에서 명백히 정의된 것처럼 작용할 것이다.
마크업 언어의 EMP 요소(즉, <EMP [LEVEL="value"]> text </EMP>)를 사용하여 사용자에게 읽어 줄 본문에서 강조가 되는 내용을 식별한다. EMP 요소는 LEVEL 속성을 포함한다. LEVEL 속성의 값은 none, reduced, moderate, strong이 될 수 있다. EMP 요소는 PROMT, EMP, PROS, HELP, ERROR, CANCEL, 또는 ACK 요소 안에 포함할 수 있다. 다음의 예는 EMP 요소를 포함하는 마크업 언어 문서이다.
<PROMPT>
This example is
<EMP LEVEL="strong"> really </EMP>
simple.
</PROMPT>
상기 예에서, EMP 요소를 사용하여 PROMPT 요소의 "really"에 대해 "strong" 강조를 한다. 음성 출력의 실제 효과는 시스템의 문서 대 음성(TTS) 소프트웨어가 결정한다. 특정한 강조 효과를 내기 위하여, 후술하겠지만, EMP 요소 대신에 PROS 요소를 사용할 수 있다.
마크업 언어의 ERROR 요소(즉, <ERROR [TYPE="value"] [ORDINAL="value"] [REPROMPT="value"] [NEXT="value" [NEXTMETHOD="value"]]> text </ERROR>)를 사용하여 어플리케이션의 오류에 대한 응답 작용을 정의한다. ERROR 요소는 TYPE 속성, ORDINAL 속성, REPROMPT 속성, NEXT 속성, 그리고 NEXTMETHOD 속성을 포함한다. TYPE 속성의 값은 all, nomatch, nospeech, toolittle, toomuch, noauth, 그리고 badnext가 될 수 있다. ORDINAL 속성의 값은 정수가 될 수 있고, REPROMPT 속성의 값은 "Y" 또는 "N"이 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다.
만일 어플리케이션 개발자가 주어진 STEP 요소에 대한 ERROR 요소의 작용을 정의하지 않으면, 디폴트 작용을 사용한다. ERROR 요소에 대한 디폴트 작용이란 "An error has occurred"라고 재생하고, 현재의 STEP 요소에 머무르면서, PROMPT 요소를 다시 실행하고, 사용자의 응답을 기다리는 것을 말한다.
다음 예는 마크업 언어 문서에서 ERROR 요소를 사용하는 방법을 도시한다.
1 <STEP NAME="errors">
2 <ERROR TYPE="nomatch"> First error message.
3 I did not understand what you said. </HELP>
4 <ERROR TYPE="nomatch" ORDINAL="2">
5 Second error message.
6 I did not understand what you said. </HELP>
7 <PROMPT> This step tests error messages.
8 Say 'oops' twice. Then say 'done' to
9 choose another test. </PROMPT>
10 <INPUT TYPE="OPTIONLIST">
11 <OPTION NEXT="#end"> done </OPTION>
12 </INPUT>
13 </STEP>
상기 예에서, ERROR 요소를 사용하여 오류에 대한 어플리케이션의 응답 작용을 정의한다. 라인 2에서, 오류 메시지는 STEP 요소에서 "nomatch" 타입의 오류가 발생한 처음에 사용한다. 라인 4에서, 오류 메시지는 STEP 요소에서 "nomatch" 타입의 오류가 발생한 두 번째 이후부터 사용한다.
마크업 언어의 ERROR 요소의 ORDINAL 속성은 동일한 STEP 요소 안에서 오류가 반복되는 경우 어떤 메시지를 사용할 것인가를 결정한다. 음성 브라우저는 다음 알고리듬에 기초하여 오류 메시지를 선택한다. 만일 오류가 세 번 발생하면, 음성 브라우저는 "3"의 ORDINAL 속성을 가진 ERROR 요소를 찾는다. 만일 이러한 ERROR 요소가 정의되지 않은 경우, 음성 브라우저는 "2"의 ORDINAL 속성을 가진 ERROR 요소를 찾고, 그 다음은 "1"의 ORDINAL 속성, 그 다음은 아무런 ORDINAL 속성도 정의하지 않은 ERROR 요소를 찾는다. 따라서, 만일 ERROR 요소가 상기 도시한 STEP 요소에서 "6"의 ORDINAL 속성으로 정의를 하고, 동일한 오류가 한 행에서 6번 발생한다면, 사용자는 처음에는 첫 번째 오류 메시지를 들을 것이고, 그 다음 두 번째 오류 메시지를 4번 듣게 되며, 마지막으로 "6"의 ORDINAL 속성에 해당하는 오류 메시지를 듣게 된다.
마크업 언어의 HELP 요소(즉, <HELP [ORDINAL="value"] [REPROMPT="value"] [NEXT="value" [NEXTMETHOD="value"]]> text </HELP>)를 사용하여 사용자가 도움말을 요구할 때 어플리케이션의 작용을 정의한다. HELP 요소는 ORDINAL 속성, REPROMPT 속성, NEXT 속성, 그리고 NEXTMETHOD 속성을 포함한다. ORDINAL 속성의 값은 정수가 될 수 있고, REPROMPT 속성의 값은 "Y" 및 "N"이 될 수 있다. NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다.
HELP 요소는 CANCEL 요소처럼 다양한 어구들을 통해 검출할 수 있다. 사용자는 단순히 "help"라고 말하거나 "I would like help, please."라고 말하면 된다. 어느 경우나, HELP 요소가 해석된다. HELP 요소는 STEP 요소나 CLASS 요소가 포함할 수 있다.
음성 브라우저가 사용자로부터 "help"를 검출하면, 마크업 언어 문서의 HELP 요소를 사용하여 응답을 한다. 만일 주어진 STEP과 연관된 HELP 요소가 없다면, 현재 프롬프트는(만일 실행하고 있다면) 인터럽트 되고, 사용자는 "No help is available."라고 듣게 되며, 동일한 어플리케이션 상태에 남아서 모든 대화 입력을처리하게 된다.
다음의 예는 마크업 언어 문서에서 HELP 요소를 사용하는 방법을 도시한다.
1 <STEP NAME="helps">
2 <HELP REPROMPT="Y"> First help message.
3 You should hear the prompt again. </HELP>
4 <HELP ORDINAL="2"> Second help message.
5 You should not hear the prompt now. </HELP>
6 <PROMPT> This step tests help prompts.
7 Say 'help' twice. Then say 'done' to
8 choose another test. </PROMPT>
9 <INPUT TYPE="OPTIONLIST">
10 <OPTION NEXT="#end"> done </OPTION>
11 </INPUT>
12</STEP>
상기 예에서, HELP 요소를 사용하여 사용자 입력 "help"에 대한 어플리케이션의 응답 작용을 정의한다. 라인 2에서, 사용자가 첫 번째로 "help"라고 말할 때 사용할 도움말 메시지를 정의한다. 라인 4에서, 사용자가 두 번째 이후로 "help"라고 말할 때 사용할 도움말 메시지를 정의한다. 또한 REPROMPT 속성을 사용하였으므로 첫 번째 도움말 메시지 후에는 프롬프트를 반복하지만 두 번째 도움말 메시지 후에는 반복하지 않는다는 것을 주목해야 한다.
마크업 언어의 HELP 요소의 ORDINAL 속성은 동일한 STEP 요소 안에서 "help"라는 말이 반복되는 경우 어떤 메시지를 사용할 것인가를 결정한다. 음성 브라우저는 다음의 알고리듬에 기초하여 도움말 메시지를 선택하게 된다. 만일 사용자가 "help"라는 말을 세 번하면, 음성 브라우저는 "3"의 ORDINAL 속성을 가진 HELP 요소를 찾는다. 만일 이러한 HELP 요소가 정의되지 않았다면, 음성 브라우저는 "2"의 ORDINAL 속성을 가진 HELP 요소를 찾고, 그 다음 "1"의 ORDINAL 속성, 그 다음 ORDINAL 속성이 정의되지 않은 HELP 요소를 찾게 된다. 따라서, 만일 HELP 요소가 "6"의 ORDINAL 속성으로 정의되고, 사용자가 한 행에서 "help"를 여섯 번 말하면, 사용자는 첫 번째 도움말 메시지를 한번 듣고, 그 다음 두 번째 도움말 메시지를 네 번 듣고, 마지막으로 "6"의 ORDINAL 속성을 가진 도움말 메시지를 듣게 된다.
마크업 언어의 PROS 요소(즉, <PROS [RATE="value"] [VOL="value"] [PITCH="value"] [RANGE="value"]> text </PROS>)를 사용하여 PROMPT, HELP, ERROR, CANCEL, 그리고 ACK 요소를 통해 사용자에게 제공하는 내용의 운율을 조정할 수 있다. 운율은 문자 대 음성 구동시의 음질에 영향을 주며 말의 속도, 음의 고저, 음역, 그리고 음의 크기를 포함한다. PROS 요소는 RATE 속성, VOL 속성, PITCH 속성, 그리고 RANGE 속성을 포함한다. RATE 속성의 값은 분당 단어 수를 나타내는 정수가 될 수 있고, VOL 속성의 값은 음성의 크기를 나타내는 정수가 될 수 있다. PITCH 속성의 값은 헤르츠 단위의 고저를 나타내는 정수가 될 수 있고, RANGE 속성의 값은 헤르츠 단위의 음역을 나타내는 정수가 될 수 있다. PROS 요소는 PROMPT, EMP, PROS, HELP, ERROR, CANCEL, 또는 ACK 요소가 포함할 수 있다.
다음의 예는 PROS 요소의 사용방법을 도시한다.
<PROMPT> Let me tell you a secret:
<PROS VOL="0.5"> I ate the apple. </PROS>
</PROMPT>
상기 예에서, 구절 "I ate the apple."을 통상 볼륨의 반 크기로 말한다.
마크업 언어의 RENAME 요소(즉, <RENAME RECNAME="value" VARNAME="value" />)를 사용하여 결과 변수 이름이 문법에서 정의한 인식 슬롯의 이름과 다르도록 문법의 인식 슬롯을 개명한다. RENAME 요소는 VARNAME 속성과 RECNAME 속성을 포함한다. VARNAME 과 RECNAME 속성의 값은 식별자가 될 수 있다. RENAME 요소는 INPUT 요소 안에서만 그리고 GRAMMAR 입력 타입을 사용할 때에만 존재할 수 있다.
다음의 예는 마크업 언어 문서에서 RENAME 요소를 사용하는 방법을 도시한다.
<INPUT TYPE="GRAMMAR"
SRC="http://www.foo.com/mygram.grm"
NEXT="http://www.fancyquotes.com/vmlstocks.asp">
<RENAME VARNAME="sym" RECNAME="symbol">
<RENAME VARNAME="detail" RECNAME="quotetype">
</INPUT>
상기 예에서, RENAME 요소를 사용하여 문법으로부터 수집된 변수 이름들과 또 다른 스크립트가 예상하는 변수 이름들의 차이를 설명한다. 특별히, foo.com의문법을 사용하여 fancyquotes.com이 호스팅하는 어플리케이션으로 입력을 제공한다. 이 예에서 문법과 스크립트는 독립적으로 개발되었기 때문에, RENAME 요소를 사용하여 문법과 주식-인용 어플리케이션의 연결을 도와준다.
마크업 언어의 RESPONSE 요소(즉, <RESPONSE FIELDS="value" [NEXT="value" [NEXTMETHOD="value"]]/> or <RESPONSE FIELDS="value" [NEXT="value" [NEXTMETHOD="value"]]> SWITCH elements </RESPONSE>)를 사용하여 인식 슬롯의 다른 조합에 대한 어플리케이션의 응답 작용을 정의한다. RESPONSE 요소는 FIELDS 속성, NEXT 속성, 그리고 NEXTMETHOD 속성을 포함한다. FIELDS 속성의 값은 식별자의 리스트가 될 수 있고, NEXT 속성의 값은 다음 단계의 주소(즉, URL)가 될 수 있고, NEXTMETHOD 속성의 값은 get 및 post가 될 수 있다.
RESPONSE 요소에 의해, 어플리케이션 개발자들은 어느 문법의 슬롯이 채워졌는가에 따라 상이한 NEXT 속성을 정의할 수 있다. RESPONSE 요소는 INPUT 요소 안에서만 그리고 문법의 입력 타입을 사용할 때에만 존재할 수 있다.
다음의 예는 마크업 언어 문서에서 RESPONSE 요소를 사용하는 방법을 도시한다.
<INPUT TYPE="GRAMMAR"
SRC="gram://.Banking/action/amt/fromacct/toacct"
NEXT="#notenoughfields">
<RESPONSE FIELDS="action,amt,fromacct,toacct"
NEXT="#doit"/>
<RESPONSE FIELDS="action,amt,fromacct"
NEXT="#asktoacct"/>
<RESPONSE FIELDS="action,amt,toacct"
NEXT="#askfromacct"/>
<RESPONSE FIELDS="action,amt"
NEXT="#askaccts"/>
<RESPONSE FIELDS="action"
NEXT="#askamtaccts"/>
</INPUT>
상기 예는 사용자가 문법에서 이용할 수 있는 모든 변수들보다 적게 특정하는 경우 RESPONSE 요소의 사용에 대한 것이다. RESPONSE 요소를 사용하여, 어플리케이션은 전 단계가 미처 채우지 못한 정보를 수집하여 정리할 수 있다. 특별히, 이 예에서는 만일 출금 및 입금 계좌가 특정되지 않으면 "askaccts" STEP 요소로 이동하지만 만일 사용자가 입금될 계좌는 말하고 출금할 계좌는 특정하지 않은 경우(즉, 사용자가 "transfer 100 dollars to savings"라고 말한다면) "askfromacct" STEP 요소로 이동한다. 사용자의 응답이 정의된 응답과 일치하지 않은 경우, INPUT 요소의 다음 URL을 사용한다.
마크업 언어의 SWITCH 요소(즉, <SWITCH FIELD="value"> vml </SWITCH>)를 사용하여 특정한 인식 슬롯의 값에 따른 어플리케이션 작용을 정의한다. SWITCH 요소는 FIELD 속성을 포함한다. FIELD 속성의 값은 식별자가 될 수 있다. SWITCH요소는 CASE 요소와 함께 사용한다. SWITCH 요소는 INPUT 요소 안에 그리고 문법 입력 타입을 사용할 때에만 존재할 수 있다.
다음의 예는 마크업 언어 문서에서 SWITCH 요소를 사용하는 방법을 도시한다.
<INPUT TYPE="GRAMMAR"
SRC="gram://.Banking/action/amount/fromacct/toacct">
<SWITCH FIELD="action">
<CASE VALUE="transfer" NEXT="#transfer" />
<CASE VALUE="balance" NEXT="#balance" />
<CASE VALUE="activity">
<SWITCH FIELD="fromacct">
<CASE VALUE="checking" NEXT="#chxact" />
<CASE VALUE="savings" NEXT="#savact" />
</SWITCH>
</CASE>
</SWITCH>
</INPUT>
상기 예에서는, SWITCH 요소를 사용하여 은행 업무 요청에 응하여 실행할 다음 STEP 요소를 결정한다. 이 예에서, 문법은 변수들(즉, "action", "amount", "fromacct", and "toacct")의 일부 혹은 전부를 채우게 된다. 만일 사용자가 이체나 조회를 요청하면, 실행할 다음 STEP 요소는 이체 또는 조회 단계이다. 만일 사용자가 거래 내역서를 요청하면, 두 번째 SWITCH 요소는 요청하는 내역서의 계좌 타입에 기초하여 다음 STEP 요소를 결정한다("fromacct"변수에서 이용가능 하다고 가정하였다).
마크업 언어의 VALUE 요소(즉, <VALUE NAME="value"/>)를 사용하여 문자 대 음성 유닛을 통해 사용자에게 변수의 값을 제공할 수 있다. VALUE 요소는 FIELD 속성을 포함한다. FIELD 속성의 값은 식별자가 될 수 있다. VALUE 요소는 문자를 사용자에게 읽어주는 어느 곳에서나 사용할 수 있다. VALUE 요소는 PROMPT, EMP, PROS, HELP, ERROR, CANCEL, 또는 ACK 요소가 포함할 수 있다.
다음의 예는 마크업 언어 문서에서 VALUE 요소를 사용하는 방법을 도시한다.
<STEP NAME="thanks">
<PROMPT> Thanks for your responses. I'll record that
<VALUE NAME="first"/> is your favorite and that
<VALUE NAME="second"/> is your second choice.
</PROMPT>
<INPUT TYPE="NONE" NEXT="/recordresults.asp" />
</STEP>
상기 예는 VALUE 요소를 사용하여 사용자에게 사용자의 선택사항을 다시 읽어 주는 것에 대해 도시한다. 도시한 바와 같이, "first"라고 하는 변수의 값을 PROMPT 요소에 삽입하고, "second"라고 하는 변수의 값을 PROMPT 요소에 삽입할 것이다.
마크업 언어의 STEP 요소의 COST 속성을 사용하여 사용자에게 각종의 서비스에 대한 비용을 청구한다. COST 속성은 더 많은 STEP 또는 CLASS 요소의 정의에서 사용할 수 있다. COST 속성의 값은 내용을 열람한 대가로 사용자에게 청구하는 금액을 나타내는 정수이다. 예컨대, 특별한 단계 요소를 청취한 대가로 금액 10을 청구한다고 하면, 제공자는 다음의 마크업 언어를 사용할 수 있다.
<STEP NAME="premiumContent" COST="10">
premium content goes here
</STEP>
만일 콘텐트 제공자가 가입자에 대한 비용 청구 기록을 유지하고 싶으면, 다음과 같은 PROFILE 입력 타입을 사용하여 사용자에 대한 식별 데이터를 요구하면 된다.
<INPUT TYPE="PROFILE" PROFNAME="UID" NAME="subID"/>
결과 값을 이용하고 SUB_CHARGE 질문-문자열 파라미터를 각 페이지 요청에서 조사함으로써, 콘텐트 제공자는 가입자 기초에 대한 기록을 유지할 수 있다.
다음 본문은 도 3에 도시한 시스템(200)이 실행할 수 있는 날씨 어플리케이션(500)을 설명한다. 도 8은 사용자에게 날씨 데이터베이스에 접근하기 위해 입력을 촉구하는 상태들을 포함하는 날씨 어플리케이션의 예시적인 상태도를 도시한다. 현재 혹은 앞날의 날씨 정보를 말한 후, 어플리케이션은 사용자가 도시명이나 주 환영 프롬프트로 돌아가기 위해 "exit"라는 단어를 말할 것을 예상한다. 사용자는현재의 날씨 정보 프롬프트 후, 날씨 예보를 선택할 수 있다. 어플리케이션은 오류, 도움말, 취소 요청도 올바르게 말할 수 있도록 설계되었다.
아래에 보인 마크업 언어는 날씨 어플리케이션의 하나의 정적인 버전이다. 초기 상태 또는 환영 프롬프트가 첫 번째 단계, init(라인 11-20)에 있다. 사용자는 "weather", "market", "news" 또는 "exit"중에서 하나를 선택하여 응답한다. 어플리케이션이 "weather"라는 사용자 응답을 검출하면, 다음 단계, weather(라인 21-29)가 시작된다. 프롬프트는 사용자에게 도시명을 질문한다. "London", "New York", "Chicago"가 유효하다.
london_current, london_forecast, newyork_current, newyork_forecast, chicago_current, chicago_current, chicago_forecast라고 하는 단계들은 각각의 도시에 대한 날씨 정보 프롬프트를 제공한다. Market 과 news 단계는 동 예에서는 단지 자리만 차지하고 있다(라인 111과 라인 115).
<?XML VERSION="1.0"?>
<!--____________________________________________________________-->
<!-- (c) 1998 Motorola Inc. -->
<!-- weather.vml -->
<!--____________________________________________________________-->
<DIALOG>
<CLASS NAME="help_top">
<HELP>You are at the top level menu. For weather information,say weather. </HELP>
</CLASS>
<STEP NAME="init" PARENT="help_top">
<PROMPT>Welcome to Genie.<BREAK SIZE="large"/> How may I help you? </PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#weather">weather</OPTION>
<OPTION NEXT="#market??market</OPTION>
<OPTION NEXT="#news??news</OPTION>
<OPTION NEXT="#bye??exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="weather" PARENT="help_top">
<PROMPT>What city? </PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago_current">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<CLASS NAME="help_generic">
<HELP>Your choices are <OPTIONS/>.</HELP>
</CLASS>
<STEP NAME="london_current" PARENT="help_generic">
<PROMPT>It is currently 46 degrees in London, with rain.
<BREAK SIZE="large"/>
To hear the 3 day forecast for London, say forecast, or say another city name, such as Chicago or New York.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#london_forecast">forecast</OPTION>
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago_current">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="london_forecast" PARENT="help_generic">
<PROMPT>London forecast for
Tuesday. Showers. High of 50. Low of 44.
Wednesday. Partly cloudy. High of 39. Low of 35.
<BREAK SIZE="large"/>
Choose a city, or say exit to return to the main menu.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago_current">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="chicago_current" PARENT="help_generic">
<PROMPT>It is currently 31 degrees in Chicago, with snow.
<BREAK SIZE="large"/>
To hear the 3 day forecast for Chicago, say forecast, or say another city name, such as London or New York.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#chicago_forecast">forecast</OPTION>
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago_current">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="chicago_forecast" PARENT="help_generic">
<PROMPT>Chicago forecast for
Tuesday. Flurries. High of 27. Low of 22.
Wednesday. Snow showers. High of 27. Low of 12.
<BREAK SIZE="large"/>
Choose a city, or say exit to return to the main menu.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago_current">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="newyork_current" PARENT="help_generic">
<PROMPT>It is currently 39 degrees in New York City, with cloudy skies.
<BREAK SIZE="large"/>
To hear the 3 day forecast for New York, say forecast, or say another city name, such as London or New York.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#newyork_forecast">forecast</OPTION>
<OPTION NEXT="#london_">london</OPTION>
<OPTION NEXT="#newyork">new york</OPTION>
<OPTION NEXT="#chicago">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="newyork_forecast" PARENT="help_generic">
<PROMPT>New York City forecast for
Tuesday. Windy. High of 48. Low of 43.
Wednesday. Rain. High of 43. Low of 28.
<BREAK SIZE="large"/>
Choose a city, or say exit to return to the main menu.</PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#london_current">london</OPTION>
<OPTION NEXT="#newyork_current">new york</OPTION>
<OPTION NEXT="#chicago.">chicago</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="market">
<PROMPT>Market update is currently not supported. </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="news">
<PROMPT>News update is currently not supported. </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="bye" PARENT="help_top">
<PROMPT>Thanks for using Genie. Goodbye. </PROMPT>
<INPUT TYPE="NONE" NEXT="#exit"/>
</STEP>
</DIALOG>
도 9는 각각의 대화 외곽에 라벨을 붙였으나 도 8에서 도시한 날씨 어플리케이션과 동일한 상태도이다. 초기 대화와 대화1은 환영과 도시명에 대한 사용자 프롬프트를 포함한다. 또한 대화1은 프롬프트를 제어하여 도시의 현재 또는 앞으로의 날씨를 듣고 다시 메인 메뉴로 돌아오게 한다. 대화2는 사용자가 지적한 도시의 현재 날씨를 알아보기 위해 날씨 데이터베이스에 접근해서 정보를 사용자에게 읽어준다. 그 후, 대화2는 사용자의 다음 요청을 수용하기 위해 대화1에게 컨트롤을 넘겨준다. 유사하게, 대화3은 요청한 도시의 날씨 예보를 알아보기 위해 날씨 데이터베이스에 접근해서 그 정보를 말해준다. 사용자의 다음 입력을 수용하기 위해 대화1에게 컨트롤을 넘겨준다.
아래에 보인 마크업 언어는, 도 9의 상태도에서 제시한 바와 같이, 대화 외곽에 대응하는 날씨 어플리케이션의 예이다. 어플리케이션은 VBscript를 사용한 Active Server Pages로 구현하였다. 이것은 dialog1.asp, dialog2.asp, dialog3.asp 세 개의 파일로 구성되며, 각각 대화1, 대화2, 대화3에 대응된다.
대화 1에 있어서, 두 개의 메시지 타입, help_top과 help_dialog1(라인 16 과 라인 29)이 있다. 첫 번째 단계, init는 라인 19에 있다. weather 단계는 라인 32에서 시작된다. 유효한 도시명들은 날씨 데이터 베이스의 citylist 표(라인 36)에 있다. 라인 7과8은 ADO를 통해 데이터베이스와의 연결을 개설해 준다. 라인 38은 가능한 모든 도시 응답의 옵션 리스트를 생성하는 루프의 시작점이다. 만일 사용자가 도시를 선택하면, 컨트롤은 라인 40에 도시한 바와 같이 대화2의 getcurrentweather 단계로 넘어간다. 이 경우, 도시명도 라인 34에서 변수 CITY를 통해 대화2로 전달된다. 대화1의 마지막 주요 단계는 nextcommand이며 대화2나 대화3에 의해 참조될 수 있다. 이것은 사용자에게 도시명 또는 forecast라는 단어를 입력하도록 촉구한다. weather 단계와 유사하게, nextcommand는 루프를 사용하여 optionlist(라인 53)를 생성한다. 만일 사용자가 도시명으로 응답하면, 대화2의getcurrentweather 단계가 호출된다. 만일 사용자가 forecast라는 단어로 응답하면, 대신 getforecastweather 단계가 호출된다.
대화2는 getcurrentweather 단계 하나만 포함한다. 이 단계는 먼저 도시명을 지역 변수 strCity(라인 95)로 읽어준다. 데이터베이스 질의는 날씨 데이터베이스에 그 도시와 일치하는 것이 있는지 찾아본다(라인 97과 98). 만일 그 도시에 해당하는 날씨 정보를 발견하지 못하면, 어플리케이션은 메시지를 말하고(라인 101) 대화1의 init 단계로 진행한다(라인 110). 해당하는 날씨 정보를 발견하면, 어플리케이션은 그 도시에 대한 날씨 정보를 말하고(라인 105) 대화1의 nextcommand 단계로 전환한다(라인 112).
대화3은 대화2와 유사하다. 그것은 getforecastweather 단계 하나만 포함한다. 데이터베이스 질의는 대화2에서와 동일하다. 만일 도시에 대한 날씨 정보가 있으면, 어플리케이션은 날씨 예보를 말하고(라인 105), 그렇지 않으면 어떤 고지 메시지를 말한다(라인 101). 대화3은 init 단계(라인 110) 또는 nextcommand(라인 112)와 함께 컨트롤을 대화1로 넘긴다.
<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Private objConnection, rsCities
Private strCity, SQLQuery
' Create and open a connection to the database.
Set objConnection = Server.CreateObject("ADODB.Connection") objConnection.Open "Weather Database"
%>
<?XML VERSION="1.0"?>
<!--____________________________________________________________-->
<!-- (c) 1998 Motorola Inc. -->
<!-- dialog1.asp -->
<!--____________________________________________________________-->
<DIALOG>
<CLASS NAME="help_top">
<HELP>You are at the top level menu. For weather information, say weather. </HELP>
</CLASS>
<STEP NAME="init" PARENT="help_top">
<PROMPT>Welcome to Genie.<BREAK SIZE="large"/> How may I help you? </PROMPT>
<INPUT TYPE="OPTIONLIST">
<OPTION NEXT="#weather">weather</OPTION>
<OPTION NEXT="#market??market</OPTION>
<OPTION NEXT="#news??news</OPTION>
<OPTION NEXT="#bye??exit</OPTION>
</INPUT>
</STEP>
<CLASS NAME="help_dialog1">
<HELP>Your choices are <OPTIONS/>.</HELP>
</CLASS>
<STEP NAME="weather" PARENT="help_dialog1">
<PROMPT>What city? </PROMPT>
<INPUT TYPE="optionlist" NAME="CITY">
<% ' Get all city names. %>
<% SQLQuery = "SELECT * FROM CityList" %>
<% Set rsCities = objConnection.Execute(SQLQuery) %>
<% Do Until rsCities.EOF %>
<% ' Create an OPTION element for each city. %>
<OPTION NEXT="dialog2.asp#getcurrentweather" VALUE="<%= rsCities("City") %>">
<%= rsCities("City") %></OPTION>
<% rsCities.MoveNext %>
<% Loop %>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="nextcommand" PARENT="help_dialog1">
<% strCity = Request.QueryString("CITY") %>
<PROMPT> To hear the 3 day forecast for <%=strCity%>, say forecast, or say another city name.</PROMPT>
<INPUT TYPE="optionlist" NAME="CITY">
<% ' Get all city names. %>
<% SQLQuery = "SELECT * FROM CityList" %>
<% Set rsCities = objConnection.Execute(SQLQuery) %>
<% Do Until rsCities.EOF %>
<% ' Create an OPTION element for each city. %>
<OPTION NEXT="dialog2.asp#getcurrentweather" VALUE="<%= rsCities("City") %>">
<%= rsCities("City") %></OPTION>
<% rsCities.MoveNext %>
<% Loop %>
<OPTION NEXT="dialog3.asp#getforecastweather" VALUE="<%= strCity %>">forecast</OPTION>
<OPTION NEXT="#init">exit</OPTION>
</INPUT>
</STEP>
<STEP NAME="market">
<PROMPT>Market update is currently not supported. </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="news">
<PROMPT>News update is currently not supported. </PROMPT>
<INPUT TYPE="NONE" NEXT="#init"/>
</STEP>
<STEP NAME="bye" PARENT="help_top">
<PROMPT>Thanks for using Genie. Goodbye. </PROMPT>
<INPUT TYPE="NONE" NEXT="#exit"/>
</STEP>
</DIALOG>
<!--_________________End of Dialog1.asp_________________________-->
<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Private objConnection, rsWeather, SQLQuery
Private strCity, Valid
' Create and open a connection to the database.
Set objConnection = Server.CreateObject("ADODB.Connection") objConnection.Open "Weather Database"
%>
<?XML VERSION="1.0"?>
<!--____________________________________________________________-->
<!-- (c) 1998 Motorola Inc. -->
<!-- dialog2.asp -->
<!--____________________________________________________________-->
<DIALOG>
<CLASS NAME="help_dialog2">
<HELP>Your choices are <OPTIONS/>.</HELP>
</CLASS>
<STEP NAME="getcurrentweather">
<% strCity = Request.QueryString("CITY") %>
<% Valid = "TRUE" %>
<% SQLQuery = "SELECT * FROM WDB WHERE( City='" & strCity & "' )" %>
<% Set rsWeather = objConnection.Execute(SQLQuery) %>
<% If rsWeather.EOF Then %>
<% Valid = "FALSE" %>
<PROMPT> Sorry, <BREAK/> There are no current weather conditions available for <%=strCity%>.<BREAK/></PROMPT>
<% Else %>
<% ' Speak current weather information %>
<PROMPT> <%=rsWeather(??urrent??%> </PROMPT>
<%End If %>
<INPUT TYPE = "Hidden" NAME="CITY" VALUE="<%=strCity%>" > </INPUT>
<% If ( Valid = "FALSE" ) Then %>
<INPUT TYPE="none" NEXT="dialog1.asp#init"</INPUT>
<% Else %>
<INPUT TYPE="none" NEXT="dialog1.asp#nextcommand"></INPUT>
<% End If %>
</STEP>
</DIALOG>
<!--_________________End of Dialog2.asp______________________-->
<%@ LANGUAGE="VBSCRIPT" %>
<%
Option Explicit
Private objConnection, rsWeather, SQLQuery
Private strCity, Valid
' Create and open a connection to the database.
Set objConnection = Server.CreateObject("ADODB.Connection") objConnection.Open "Weather Database"
%>
<?XML VERSION="1.0"?>
<!--_________________________________________________________-->
<!-- (c) 1998 Motorola Inc. -->
<!-- dialog3.asp -->
<!--_________________________________________________________-->
<DIALOG>
<CLASS NAME="help_dialog3">
<HELP>Your choices are <OPTIONS/>.</HELP>
</CLASS>
<STEP NAME="getforecastweather">
<% strCity = Request.QueryString("CITY") %>
<% Valid = "TRUE" %>
<% SQLQuery = "SELECT * FROM WDB WHERE( City='" & strCity & "' )"%>
<% Set rsWeather = objConnection.Execute(SQLQuery) %>
<% If rsWeather.EOF Then%>
<% Valid = "FALSE" %>
<PROMPT> Sorry, <BREAK/> There is no forecast weather available for <%=strCity%>.<BREAK/></PROMPT>
<% Else %>
<% ' Speak forecast weather information %>
<PROMPT> <%=rsWeather(??orecast??%> </PROMPT>
<% End If %>
<INPUT TYPE = "Hidden" NAME="CITY" VALUE="<%=strCity%>" > </INPUT><% If ( Valid = "FALSE" ) Then%>
<INPUT TYPE="none" NEXT="dialog1.asp#init"</INPUT>
<% Else %>
<INPUT TYPE="none" NEXT="dialog1.asp#nextcommand"></INPUT><% End If %>
</STEP>
</DIALOG>
<!--_________________End of Dialog3.asp______________________-->
이상, 사용자가 적절한 네트워크 접근 장치를 통해 세계 어느 곳에서도 정보에 접근할 수 있는 방법과 시스템을 기술하였다. 사용자는 최근 뉴스, 원하는 도시의 날씨, 교통 정보, 주식 인용, 주식 시장 지표 등과 같은 최신 정보에 접근할수 있다. 또한 시스템을 통해 사용자는 다양한 처리도 할 수 있다(즉, 꽃을 주문하거나, 식당에 주문을 하거나, 주식 매매를 하거나, 잔액 조회를 하거나, 전화 번호를 찾아보거나, 목적지까지의 경로를 알아보는 등).
당업자는 개시한 실시예를 다양한 방식으로 변형할 수도 있고 특별히 위에서 설명한 바람직한 형태 이외의 많은 실시예도 생각할 수 있을 것이 자명하다. 따라서, 본 발명의 진정한 사상 및 범주 내에 드는 모든 발명의 변형을 첨부된 청구항에 포함시키기를 의도한다.

Claims (10)

  1. 대화식 서비스를 제공하기 위하여 컴퓨터 판독 가능 매체에 저장되는 마크업 언어에 있어서,
    각각 적어도 하나의 마크업 태그로 식별할 수 있는 다수의 마크업 언어 요소들을 포함하는 대화 요소와,
    상기 대화 요소 안에서 상태를 정의하기 위하여 상기 대화 요소에 포함되며, 프롬프트 요소와 입력요소를 포함하는 단계 요소와,
    사용자에게 제공될 고지를 포함하는 프롬프트 요소와,
    사용자 입력에 대응하는 적어도 하나의 입력을 포함하는 입력 요소
    를 포함하는 마크업 언어.
  2. 제1항에 있어서, 상기 고지는 인터넷 프로토콜 상의 음성 데이터와 문자 데이터를 포함하는 마크업 언어 문서.
  3. 제1항에 있어서, 상기 대화 요소는 사용자로부터의 도움말 요청을 식별하기 위하여 도움말 요소를 더 포함하는 마크업 언어.
  4. 제1항에 있어서, 상기 대화 요소는 오류를 식별하기 위하여 오류 요소를 더 포함하는 마크업 언어.
  5. 제1항에 있어서, 상기 단계 요소는 네임(name) 속성, 바게인(bargein) 속성, 페어런트(parent) 속성 및 코스트(cost) 속성을 더 포함하는 마크업 언어.
  6. 제1항에 있어서, 상기 대화 요소는 상기 사용자에게 재생되는 오디오 데이터를 포함하는 오디오 요소를 더 포함하는 마크업 언어.
  7. 사용자 대화식 음성 서비스를 제공하는 음성 어플리케이션 프로그램을 생성하는 방법에 있어서,
    다수의 요소를 가지고 있는 마크업 언어 문서를 생성하는 단계와,
    프롬프트 요소를 선택하는 단계와,
    사용자에게 제공하기 위해 상기 프롬프트 요소에서 음성 통신을 정의하는 단계와,
    입력 요소를 선택하는 단계와,
    사용자가 입력한 데이터를 저장할 입력 변수를 정의하는 단계
    를 포함하는 방법.
  8. 대화식 음성 서비스를 제공하기 위하여 컴퓨터 판독 가능 매체에 저장되는 프로그램에 있어서,
    프롬프트 요소를 정의하기 위하여 사용자에게 제공되는 음성 통신을 연관시키는 단계와,
    입력 요소를 정의하기 위하여 사용자 입력에 대응하는 적어도 하나의 옵션을 연관시키는 단계
    를 포함하는 프로그램.
  9. 대화식 음성 서비스를 제공하기 위하여 컴퓨터 판독 가능 매체에 저장되는 마크업 언어 문서에 있어서,
    도움말 요소를 포함하며, 적어도 하나의 마크업 태그에 의해 식별되는 대화 요소와,
    사용자로부터의 도움말 요청에 응답하여 상기 사용자에게 재생되는 적어도 하나의 프롬프트를 포함하는 상기 도움말 요소
    를 포함하는 마크업 언어 문서.
  10. 대화식 음성 서비스를 제공하기 위하여 컴퓨터 판독 가능 매체에 저장되는 마크업 언어 문서에 있어서,
    오류 요소를 포함하며, 적어도 하나의 마크업 태그에 의해 식별되는 대화 요소와,
    오류에 응답하여 사용자에게 재생되는 적어도 하나의 프롬프트를 포함하는 상기 오류 요소
    를 포함하는 마크업 언어 문서.
KR1020017001008A 1998-07-24 1999-07-23 대화식 서비스 및 그 방법을 위한 마크업 언어 KR20010079555A (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US9413198P 1998-07-24 1998-07-24
US9403298P 1998-07-24 1998-07-24
US60/094,032 1998-07-24
US60/094,131 1998-07-24
US16546998A 1998-10-02 1998-10-02
US09/165,469 1998-10-02
PCT/US1999/016777 WO2000005643A1 (en) 1998-07-24 1999-07-23 Markup language for interactive services and methods thereof

Publications (1)

Publication Number Publication Date
KR20010079555A true KR20010079555A (ko) 2001-08-22

Family

ID=27377629

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017001008A KR20010079555A (ko) 1998-07-24 1999-07-23 대화식 서비스 및 그 방법을 위한 마크업 언어

Country Status (5)

Country Link
EP (1) EP1099152A4 (ko)
KR (1) KR20010079555A (ko)
CN (1) CN1354851A (ko)
AU (1) AU5006799A (ko)
WO (1) WO2000005643A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843581B1 (ko) * 2005-11-02 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 플러그인 프레임워크를 사용하는 브라우저의 마크업 확장
KR100950239B1 (ko) * 2006-06-09 2010-04-05 리서치 인 모션 리미티드 무선 컴퓨팅 장치 세트에 의한 액세스를 위한 마크업 언어문서의 원격 저장

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6654722B1 (en) * 2000-06-19 2003-11-25 International Business Machines Corporation Voice over IP protocol based speech system
EP1376418B1 (en) * 2000-08-31 2006-12-27 Hitachi, Ltd. Service mediating apparatus
CA2436940C (en) 2000-12-01 2010-07-06 The Trustees Of Columbia University In The City Of New York A method and system for voice activating web pages
US7895583B2 (en) * 2000-12-22 2011-02-22 Oracle International Corporation Methods and apparatus for grammar-based recognition of user-interface objects in HTML applications
DE10110977C1 (de) * 2001-03-07 2002-10-10 Siemens Ag Bereitstellen von Hilfe-Informationen in einem Sprachdialogsystem
CA2408624A1 (en) 2001-03-14 2002-09-19 At&T Corp. Method for automated sentence planning
US7729918B2 (en) 2001-03-14 2010-06-01 At&T Intellectual Property Ii, Lp Trainable sentence planning system
US7574362B2 (en) 2001-03-14 2009-08-11 At&T Intellectual Property Ii, L.P. Method for automated sentence planning in a task classification system
US7506022B2 (en) 2001-05-04 2009-03-17 Microsoft.Corporation Web enabled recognition architecture
US7409349B2 (en) 2001-05-04 2008-08-05 Microsoft Corporation Servers for web enabled speech recognition
US7610547B2 (en) 2001-05-04 2009-10-27 Microsoft Corporation Markup language extensions for web enabled recognition
US6941268B2 (en) * 2001-06-21 2005-09-06 Tellme Networks, Inc. Handling of speech recognition in a declarative markup language
US7711570B2 (en) 2001-10-21 2010-05-04 Microsoft Corporation Application abstraction with dialog purpose
US7149287B1 (en) 2002-01-17 2006-12-12 Snowshore Networks, Inc. Universal voice browser framework
US7136804B2 (en) 2002-10-30 2006-11-14 Hewlett-Packard Development Company, L.P. Systems and methods for providing users with information in audible form
US7254541B2 (en) 2002-10-30 2007-08-07 Hewlett-Packard Development Company, L.P. Systems and methods for providing users with information in audible form
EP1455282A1 (en) * 2003-03-06 2004-09-08 Alcatel Markup language extension enabling speech recognition for controlling an application
US7698435B1 (en) 2003-04-15 2010-04-13 Sprint Spectrum L.P. Distributed interactive media system and method
US7260535B2 (en) 2003-04-28 2007-08-21 Microsoft Corporation Web server controls for web enabled recognition and/or audible prompting for call controls
CN1894658B (zh) 2003-06-06 2012-02-29 纽约市哥伦比亚大学托管会 用于话音激活网页的系统和方法
US8311835B2 (en) 2003-08-29 2012-11-13 Microsoft Corporation Assisted multi-modal dialogue
US7552055B2 (en) 2004-01-10 2009-06-23 Microsoft Corporation Dialog component re-use in recognition systems
US7797676B2 (en) 2004-04-20 2010-09-14 International Business Machines Corporation Method and system for switching between prototype and real code production in a graphical call flow builder
US7321856B1 (en) 2005-08-03 2008-01-22 Microsoft Corporation Handling of speech recognition in a declarative markup language
CN107092364A (zh) * 2017-04-19 2017-08-25 重庆小雨点小额贷款有限公司 一种信息录入方法以及装置
CN109766073A (zh) * 2019-01-25 2019-05-17 四川长虹电器股份有限公司 电视浏览器中语音操作网页内容导航的方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136634A (en) * 1989-03-10 1992-08-04 Spectrafax Corp. Voice operated facsimile machine network
US4974254A (en) * 1989-05-10 1990-11-27 Perine Michael C Interactive data retrieval system for producing facsimile reports
US5351276A (en) * 1991-02-11 1994-09-27 Simpact Associates, Inc. Digital/audio interactive communication network
CA2048039A1 (en) * 1991-07-19 1993-01-20 Steven Derose Data processing system and method for generating a representation for and random access rendering of electronic documents
WO1997023973A1 (en) * 1995-12-22 1997-07-03 Rutgers University Method and system for audio access to information in a wide area computer network
US5953392A (en) * 1996-03-01 1999-09-14 Netphonic Communications, Inc. Method and apparatus for telephonically accessing and navigating the internet
GB2317070A (en) * 1996-09-07 1998-03-11 Ibm Voice processing/internet system
US5915001A (en) * 1996-11-14 1999-06-22 Vois Corporation System and method for providing and using universally accessible voice and speech data files
US5899975A (en) * 1997-04-03 1999-05-04 Sun Microsystems, Inc. Style sheets for speech-based presentation of web pages

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100843581B1 (ko) * 2005-11-02 2008-07-04 인터내셔널 비지네스 머신즈 코포레이션 플러그인 프레임워크를 사용하는 브라우저의 마크업 확장
KR100950239B1 (ko) * 2006-06-09 2010-04-05 리서치 인 모션 리미티드 무선 컴퓨팅 장치 세트에 의한 액세스를 위한 마크업 언어문서의 원격 저장

Also Published As

Publication number Publication date
EP1099152A1 (en) 2001-05-16
WO2000005643A1 (en) 2000-02-03
AU5006799A (en) 2000-02-14
EP1099152A4 (en) 2004-05-19
CN1354851A (zh) 2002-06-19

Similar Documents

Publication Publication Date Title
US6493673B1 (en) Markup language for interactive services and methods thereof
US6470317B1 (en) Markup language to allow for billing of interactive services and methods thereof
US20020006126A1 (en) Methods and systems for accessing information from an information source
KR20010079555A (ko) 대화식 서비스 및 그 방법을 위한 마크업 언어
US20020118800A1 (en) Telecommunication systems and methods therefor
US7197461B1 (en) System and method for voice-enabled input for use in the creation and automatic deployment of personalized, dynamic, and interactive voice services
US7082397B2 (en) System for and method of creating and browsing a voice web
US6996227B2 (en) Systems and methods for storing information associated with a subscriber
US6668043B2 (en) Systems and methods for transmitting and receiving text data via a communication device
US6583716B2 (en) System and method for providing location-relevant services using stored location information
US5724481A (en) Method for automatic speech recognition of arbitrary spoken words
US7167830B2 (en) Multimodal information services
US6668046B1 (en) Method and system for generating a user&#39;s telecommunications bill
US6751296B1 (en) System and method for creating a transaction usage record
US20030147518A1 (en) Methods and apparatus to deliver caller identification information
US20040203660A1 (en) Method of assisting a user placed on-hold
US20050114139A1 (en) Method of operating a speech dialog system
US20070121814A1 (en) Speech recognition based computer telephony system
US20040109543A1 (en) Method of accessing an information source
US7512223B1 (en) System and method for locating an end user
WO2000005861A1 (en) Telecommunication audio processing systems and methods therefor

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application