KR20020042831A - Method For Customizing And Rendering Of Selected Data Fields - Google Patents
Method For Customizing And Rendering Of Selected Data Fields Download PDFInfo
- Publication number
- KR20020042831A KR20020042831A KR1020027003231A KR20027003231A KR20020042831A KR 20020042831 A KR20020042831 A KR 20020042831A KR 1020027003231 A KR1020027003231 A KR 1020027003231A KR 20027003231 A KR20027003231 A KR 20027003231A KR 20020042831 A KR20020042831 A KR 20020042831A
- Authority
- KR
- South Korea
- Prior art keywords
- information
- page
- user
- web
- name
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/42—Systems providing special services or facilities to subscribers
- H04M3/487—Arrangements for providing information services, e.g. recorded voice services or time announcements
- H04M3/493—Interactive information services, e.g. directory enquiries ; Arrangements therefor, e.g. interactive voice response [IVR] systems or voice portals
- H04M3/4938—Interactive 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/174—Form filling; Merging
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Machine Translation (AREA)
- User Interface Of Digital Computer (AREA)
- Document Processing Apparatus (AREA)
Abstract
본 발명은 데이터 요소들이, 시그너처에 의한 참조를 통하여 요소들을 액세스하는데 적합한 시스템에 의하여, 적절한 해당 언어 번역기를 통하여 조회자에게 렌더링될 수 있는 데이터의 수학적 정규식으로부터 추출되는 시그너처에 의하여 제공 및 식별되는 방법을 제공한다. 해당 언어 번역기는 텍스트-음성 번역기, 상기 요소들에 매핑되는 저장된 청각식 및 HTML 표현식에 매치시키기 위하여 프로그램된 단순한 텍스트식을 포함할 수 있다. 본 발명의 또 다른 형태에 따르면, 본 발명은 선택된 요소의 식별, 상기 의도된 문맥에 적합한 렌더링을 위한 선택된 요소의 맞춤화 및 적합한 해당 언어 번역기를 통한 선택된 요소 및 맞춤화된 요소의 추가 명세를 더 포함한다.The present invention relates to a method in which data elements are provided and identified by a signature extracted from a mathematical regular expression of data that can be rendered to a queryer via a suitable corresponding language translator, by a system suitable for accessing the elements via a reference by signature. to provide. The language translator may include a text-to-speech translator, a stored textual expression mapped to the elements, and a simple textual expression programmed to match an HTML expression. According to another form of the invention, the invention further comprises the identification of the selected element, customization of the selected element for rendering suitable for the intended context and further specification of the selected element and the customized element via a suitable language translator. .
Description
현재, 유용한 다량의 정보들이 HTML 포맷으로 이용될 수 있다. 하지만 HTML은 주로 명세화된 시각적 문맥에서의 액세스, 즉 웹브라우저와 함께 사용되도록 설계된 형식의 그래픽 사용자 인터페이스의 수단으로 설계된다. HTML 데이터를 다른 인터페이스 및 판독기를 통해서 액세스할 수 있게 만들 필요가 있다. 여기에 기술된 본 발명은 그러한 필요성에 주안점을 두고 있다.At present, a large amount of useful information is available in HTML format. However, HTML is primarily designed as a means of access in a specified visual context, a form of graphical user interface designed to be used with a web browser. You need to make the HTML data accessible through other interfaces and readers. The present invention described herein focuses on such a need.
본 발명은 맞춤화된(customized) 데이터를 청각적 포팻 및 제한된 시각적 포맷을 포함한 다른 포맷으로 렌더링(rendering)하는 것에 관한 것이다. 특히 본 발명은 하이퍼텍스트마크업랭귀지(HTML)에서의 데이터를 소스포맷 이외의 청각적 포맷이나 시각적 포맷과 같은 다른 형태로 렌더링하는 것에 관한 것이다.The present invention is directed to rendering customized data in other formats including audio format and limited visual format. In particular, the present invention relates to rendering data in a hypertext markup language (HTML) in other forms such as an audio format or a visual format other than the source format.
도 1은 HTML 페이지로부터 정보를 검색(retrieve)하기에 적절한 렌더링 도구를 갖춘, 런타임 엔진이 본 발명에 따른 식별된 요소를 사용하는, 본 발명에 따른 시스템의 블럭도,1 is a block diagram of a system according to the invention, wherein the runtime engine employs the identified elements according to the invention, with a rendering tool suitable for retrieving information from an HTML page;
도 2는 본 발명에 따른 샘플 번역의 플로우차트.2 is a flowchart of sample translation in accordance with the present invention.
본 발명에 따라, 컴퓨터 네트워크 시스템에서 테이터의 수학적 정규식으로부터 추출된 시그니처에 의하여 선택되고 식별된 데이터가 시그니처에 의한 참조(reference)를 통하여 요소들을 액세스하기에 적합한 시스템에 의하여 조회자(querier)에게 해당하는 적절한 언어 번역기를 통하여 렌더링될 수 있는 방법이 제공된다. 해당 언어 번역기는 스피치 번역기에 대한 텍스트, 요소들에 대하여 매핑된(mapped) 저장된 청각식(aural expression) 및 HTML 표현식에 맞추기 위하여 프로그램된 단순화된 텍스트식(textual expression)을 포함할 수 있다. 본 발명의 또 다른 실시형태에 따르면, 상기 방법은 선택된 요소의 식별, 의도하는 문장에 적합한 렌더링을 위한 선택된 요소의 맞춤화, 및 관심사의 적절한 언어번역기를 통하여 선택되고 맞춤화된 요소의 또 다른 명세(specification)를 더욱 포함한다.According to the present invention, data selected and identified by a signature extracted from a mathematical regular expression of data in a computer network system corresponds to a query by a system suitable for accessing elements via a reference by the signature. A method is provided that can be rendered via a suitable language translator. The language translator may include text for the speech translator, a simplified textual expression programmed to match the stored aural expression and the HTML expression mapped to the elements. According to another embodiment of the present invention, the method further comprises identifying the selected element, customizing the selected element for rendering suitable for the intended sentence, and another specification of the selected and customized element through an appropriate language translator of interest. More).
HTML 페이지가 정규식으로 표현될 수 있다는 것이 본 발명의 중요한 인식이다. 요소들만이 선택될 필요가 있고 요소들의 실제값은 선택될 필요가 없어서 그 값이 동적으로 업데이트되고 현재값으로 렌더링되게 할 수 있다는 것이 또한 본 발명의 중요한 인식이다.It is an important recognition of the present invention that an HTML page can be represented by a regular expression. It is also an important recognition of the present invention that only the elements need to be selected and the actual values of the elements need not be selected so that the values can be dynamically updated and rendered to the current values.
이하, 첨부된 도면과 연계하여 상세한 설명을 참조로 본 발명을 더욱 이해할 수 있다.Hereinafter, with reference to the detailed description in conjunction with the accompanying drawings, the present invention may be further understood.
도 1은 주요 런타임 구성요소 및 관련된 요소를 갖춘 시스템(101)의 블럭도를 도시한다. 웹페이지(11)는 호스트 웹서버(12)로부터 번역기(20)로 검색되고, 다음에 상기 번역기는 소위 WML 페이지(23) 및 런타임 객체(runtime object)(24)를 만들기 위해서 공유 지속성 스토어(shared persistent store)(14)로부터 해당하는 목표 언어문서(21)를 검색한다. 이전에 디자이너(13)는 HTML 또는 소스 언어 페이지(11)로부터 어떤 데이터(이하, "구성요소"(17)라 칭함)를 선택하여, HTML 페이지로부터 실시간 데이터를 추출하기 위해서 런타임 엔진(22)을 통하여 런타임 환경이 사용하는 특유의 시그니처(unique signature)가 자동으로 생성되었다. 런타임 엔진(22)은 폰서버 또는 기타 렌더링 서버(26)와 인터페이스하고, 사용자(28)는 렌더링 서버(26)를 통하여 제공되는 포맷으로 호스트 웹서버로부터 요청된 실시간 정보를 액세스한다. 런타임시에, 런타임 번역기(20)는 호스트 웹서버(12)에 대하여 사이트로부터 HTML 페이지를 다운로드하는 브라우저처럼 작용한다. 또한 번역기(20)는 특정 실시예에서 공유 지속성 스트어(14)로부터 목표 언어(소위 AML용으로 제작된 언어)의 스크립트를 검색한다. 각 웹페이지에 대하여 대응하는 AML 스크립트는 번역기에 어떻게 런타임 객체(24)를 생성하는지를 알려준다. 이들 런타임 객체(24)는 런타임 엔진(22)으로 공급되고 그런 다음 호출자와 대화한다. 런타임 엔진(22)은 텍스트를 읽고 텍스트 대 음성 또는 텍스트 대 축약 텍스트(reduced text) 기술을 사용하여 사용자(28)에게 전화기 또는 기타 인터페이스장치로 프롬프트를 발행한다. 전화 호출자(28)가 그의 응답할 때마다, 엔진(22)은 음성인식기술 또는 텍스트-온-나인(text-on-nine)(여기에서는 T9로 칭함)을 사용하여 호출자 응답을 텍스트로 변환한다. 그리고 번역기(20)는 호출자로부터 다시 호스트웹서버(12)에 응답 데이터를 제출할 수 있으며, 다시 호스트 웹서버가 그 요청을 해석하고 응답하는 식으로 계속된다.1 shows a block diagram of a system 101 with major runtime components and associated elements. The web page 11 is retrieved from the host web server 12 to the translator 20, which is then shared to create a so-called WML page 23 and a runtime object 24 shared shared store. The corresponding target language document 21 is retrieved from the persistent store 14. The designer 13 previously selects some data (hereinafter referred to as "component" 17) from the HTML or source language page 11 and uses the runtime engine 22 to extract real-time data from the HTML page. This creates a unique signature for the runtime environment. The runtime engine 22 interfaces with the phone server or other rendering server 26 and the user 28 accesses the real time information requested from the host web server in a format provided through the rendering server 26. At runtime, runtime translator 20 acts as a browser to download HTML pages from the site to host web server 12. The translator 20 also retrieves the script of the target language (the language written for AML) from the shared persistence store 14 in certain embodiments. The corresponding AML script for each web page tells the translator how to create the runtime object 24. These runtime objects 24 are supplied to the runtime engine 22 and then talk to the caller. The runtime engine 22 reads the text and issues a prompt to the user 28 by phone or other interface device using text-to-speech or text-to-reduced text technology. Each time telephone caller 28 responds, engine 22 converts the caller response to text using speech recognition technology or text-on-nine (hereafter referred to as T9). . The translator 20 can then submit the response data back to the host web server 12 from the caller, and then continue in such a way that the host web server interprets and responds to the request.
스크립트는 내부 페이지 흐름(inter-page flow)를 인코딩하고 웹페이지의 URL을 간직하도록 설정될 수 있기 때문에, 번역기는 적절한 웹페지를 요청할 수 있다. 런타임시에, 호스트 웹서버(12)는 종래의 웹브라우저에 접속되어 있는 것으로 생각한다.Since the script can be set to encode the inter-page flow and retain the URL of the web page, the translator can request the appropriate web page. At runtime, the host web server 12 is assumed to be connected to a conventional web browser.
런타임 객체(24)를 생성하는 것 이외에도, 런타임 번역기(20)는 WML 파일을 사용하는 제3자 애플리케이션(third party application)을 위한 WML 파일도 생성할 수 있다. 포털(portal)로부터 액세스된 가청 사이트(audio-enabled site)가 맞춤화된 애플릿을 사용할 수도 있다.In addition to creating a runtime object 24, the runtime translator 20 can also generate a WML file for a third party application that uses the WML file. Audio-enabled sites accessed from the portal may use customized applets.
런타임 작동의 중요한 관점은 번역과정이다. 이하 번역과정을 설명한다.An important aspect of runtime operation is the translation process. The following describes the translation process.
A.번역 A. Translation
이 섹션에서는 어떻게 전 섹션으로부터 다양한 구성요소가 렌더링되는지를 설명한다.This section explains how the various components are rendered from the previous section.
A.1 번역: 양식(form)A.1 Translation: Form
아래에 샘플 양식의 번역을 보인다. 상기 양식의 각 입력요소는 "STEP"으로 나타난다. 스텝요소는 이 입력의 특성(nature of input)을 사용자에게 알려주는 프롬프트요소 및, 사용자로부터 입력을 끌어모으는 입력요소를 갖는다. 도 2는 여기에 서술된 샘플 번역의 플로우차트이다.See below for a translation of the sample form. Each input element of the form is represented by "STEP". The step element has a prompt element that informs the user of the nature of the input and an input element that draws input from the user. 2 is a flowchart of a sample translation described herein.
<Dialog Name="Logon" greeting="Logon Page"><Dialog Name = "Logon" greeting = "Logon Page">
<component Name="Longon" TYPE="FORM"<component Name = "Longon" TYPE = "FORM"
position=1></component>position = 1> </ component>
<STEP Name="Longon"><STEP Name = "Longon">
<PROMPT>Please speak the eight digits in your account number<PROMPT> Please speak the eight digits in your account number
</PROMPT></ PROMPT>
<INPUT TYPE="DIGIT" NAME="SignonAccountNumber"<INPUT TYPE = "DIGIT" NAME = "SignonAccountNumber"
NEXT="#F2"></INPUT>NEXT = "# F2"> </ INPUT>
</STEP></ STEP>
<STEP Name="F2"><STEP Name = "F2">
<PROMPT>Please speak your password</PROMPT><PROMPT> Please speak your password </ PROMPT>
<INPUT TYPE="STRING" NAME="Signon Password" NEXT="#F3"></INPUT><INPUT TYPE = "STRING" NAME = "Signon Password" NEXT = "# F3"> </ INPUT>
</STEP></ STEP>
<STEP Name="F3"><STEP Name = "F3">
<PROMPT>Please choose from one of the following options.<PROMPT> Please choose from one of the following options.
Account Overview, Stock Trading, Options Trading, Mutual FundAccount Overview, Stock Trading, Options Trading, Mutual Fund
Trading, Corporate Bond Trading, Real-Time Quotes, AccountTrading, Corporate Bond Trading, Real-Time Quotes, Account
Balances and Position.</PROMPT>Balances and Position. </ PROMPT>
<INPUT TYPE="OPTIONLIST" NAME="StartAnchor" NEXT="#F4"<INPUT TYPE = "OPTIONLIST" NAME = "StartAnchor" NEXT = "# F4"
grammar=.optionlistgrammar = .optionlist
//[comment: The grammar defines what the user is expected to say or// [comment: The grammar defines what the user is expected to say or
input at this point. If the user says something else, an error isinput at this point. If the user says something else, an error is
raised and is handled according to the onError step.]raised and is handled according to the onError step.]
onError=#error>onError = # error>
<RENAME VARNAME="Start Anchor"<RENAME VARNAME = "Start Anchor"
GRAMMARNAME="X">GRAMMARNAME = "X">
//[comment: The forgoing is the mapping between the variable name and// [comment: The forgoing is the mapping between the variable name and
the grammar name.]the grammar name.]
<option Value="Ccbodyi">Account Overview</OPTION><option Value = "Ccbodyi"> Account Overview </ OPTION>
<option Value="TradingEQ">Stock Trading</OPTION><option Value = "TradingEQ"> Stock Trading </ OPTION>
<option Value="TradingOpt">Option Trading</OPTION><option Value = "TradingOpt"> Option Trading </ OPTION>
<option Value="TradeMF">Mutual Fund Trading</OPTION><option Value = "TradeMF"> Mutual Fund Trading </ OPTION>
<option Value="TradeCorpBonds">Corporate Bond Trading<option Value = "TradeCorpBonds"> Corporate Bond Trading
</OPTION></ OPTION>
<option Value="Quotes">Real-Time Quotes</OPTION><option Value = "Quotes"> Real-Time Quotes </ OPTION>
<option Value="Balance">Account Balances</OPTION><option Value = "Balance"> Account Balances </ OPTION>
<option Value="Position">Position</OPTION><option Value = "Position"> Position </ OPTION>
</INPUT></ INPUT>
</STEP></ STEP>
//[comment: The following is for a form. In a form, hidden variables, actions and methods are always pulled from the HTML or sourse page.]// [comment: The following is for a form. In a form, hidden variables, actions and methods are always pulled from the HTML or sourse page.]
<FORM><FORM>
NAME="F4"NAME = "F4"
PARAMETERS="StartAnchor=$amlvar(StartAnchor)&SignonPassPARAMETERS = "StartAnchor = $ amlvar (StartAnchor) & SignonPass
word=$amlvar(SignonPassword)&SignonAccountNumber=$amlvarword = $ amlvar (SignonPassword) & SignonAccountNumber = $ amlvar
(SignonAccountNumber)"(SignonAccountNumber) "
Component="Logon">Component = "Logon">
<PROMPT>Attempting to Log on to Charles Schwab<PROMPT> Attempting to Log on to Charles Schwab
</Prompt></ Prompt>
</FORM></ FORM>
<flow<flow
Name="formflow"Name = "formflow"
Source="https://trading2.schwab.com/trading/signon/."Source = "https://trading2.schwab.com/trading/signon/."
Sourceaudio=logonSourceaudio = logon
Destination="...trading/generic/?FormName=DelayedQuotes"Destination = "... trading / generic /? FormName = DelayedQuotes"
Destinationaudio=headlinesDestinationaudio = headlines
Destinationstep=headlines>Destinationstep = headlines>
</flow></ flow>
</Dialog></ Dialog>
애트리뷰트는 주어진 스텝으로부터의 변환점(transition)을 정의한다. 예를 들어, 도 2를 참조하면, 첫번째 스텝 F1(로그온 스텝)에서 프롬프트는 사용자의 8자리 계정번호(account number)를 물어보고 음성 입력으로 그것을 수신함과 동시에 스텝 F2로 넘어간다. 로그온 스텝에서, 입력요소의 네임 애트리뷰트인 SignonAccountNumber는 "global" 변수이고 나중에 $amlvar(SignonAccountNumber)로서 액세스될 수 있다. 계속해서 스텝 F2에서, 프롬프트는 패스워드를 물어보고 입력을 수신하면, 스텝 F3로 넘어간다. 스텝 F3는 옵션리스트로서 여기에서 사용자는 많은 옵션들 중 하나를 선택할 수 있다. 하나의 옵션을 선택한 다음, 사용자는 스텝 F4로 진행하게 된다. 파라미터 애트리뷰트는 동작 url로 진행되는 데 필요한 파라미터를 명세화하며, 마지막으로 프롬프트는 사용자에게 행해지고 있는 것에 대한 피드백을 제공한다. 플로우요소는 다음 스텝으로의 변환점을 정의한다. 행선지 url이 주어지면, 설계자 및 런타임 시스템은 브라우징을 속행하는 데 필요한 다음 AML 페이지를 결정할 수 있다.An attribute defines a transition from a given step. For example, referring to FIG. 2, in the first step F1 (logon step), the prompt asks for the user's eight digit account number and receives it by voice input and goes to step F2. In the logon step, the name attribute of the input element, SignonAccountNumber, is a "global" variable and can later be accessed as $ amlvar (SignonAccountNumber). Subsequently, at step F2, the prompt asks for a password and, upon receiving an input, proceeds to step F3. Step F3 is a list of options from which the user can select one of many options. After selecting one option, the user proceeds to step F4. The parameter attribute specifies the parameters needed to proceed to the action url, and finally the prompt provides feedback about what is being done to the user. The flow element defines the transition point to the next step. Given a destination url, designers and runtime systems can determine the next AML page needed to continue browsing.
인식 문법(recognition grammar)은 그 값을 지정하는 변수(가령, X)에 대한 네임을 명세화하고, 그 스텝은 입력(Startanchor)에 대응하는 변수 네임을 갖는다. 어떤 경우에는, 이들이 동일하지 않을 수 있는데, 예를 들어 많은 상이한 입력 스텝들간에 문법이 공유되는 때에는 그들이 모두 상이한 변수 네임으로 코드되어 있다. 그 경우에, RENAME 요소는 인식 변수 네임으로부터 스텝의 변수 네임으로의매핑(mapping)을 정의하는 데 도움을 줄 것이다. 문법이 다수의 변수를 할당한다면, 각각의 변수에 대하여 하나의 리네임 요소를 명세화할 필요가 있다. 예를 들어, 다음의 코드 세그먼트에서 모든 변수가 문법으로 할당되어 있고, 그들은 다음의 또다른 예의 코드에서 사용되는 변수 네임으로 리매핑(remapped)된다.A recognition grammar specifies a name for a variable (eg, X) that specifies its value, and the step has a variable name corresponding to the starter. In some cases, they may not be the same, for example when they are shared between many different input steps they are all coded with different variable names. In that case, the RENAME element will help define the mapping from the recognition variable name to the variable name of the step. If the grammar assigns multiple variables, then you need to specify one rename element for each variable. For example, in the following code segment all variables are assigned by syntax, and they are remapped to the variable names used in the following example code.
<STEP Name="stock"><STEP Name = "stock">
<PROMPT>What would you like to trade?</PROMPT><PROMPT> What would you like to trade? </ PROMPT>
<INPUT TYPE>="GRAMMAR"GRAMMAR="StockTrade2"<INPUT TYPE> = "GRAMMAR" GRAMMAR = "StockTrade2"
onError="#error">onError = "# error">
<RENAME VARNAME="TradeType" GRAMMARNAME="A1"><RENAME VARNAME = "TradeType" GRAMMARNAME = "A1">
<RENAME VARNAME="Symbol" GRAMMARNAME="A2"><RENAME VARNAME = "Symbol" GRAMMARNAME = "A2">
<RENAME VARNAME="OrderType" GRAMMARNAME="A3"><RENAME VARNAME = "OrderType" GRAMMARNAME = "A3">
<RENAME VARNAME="LimitPrice" GRAMMARNAME="A4"><RENAME VARNAME = "LimitPrice" GRAMMARNAME = "A4">
<RENAME VARNAME="TimeLimit" GRAMMARNAME="A5"><RENAME VARNAME = "TimeLimit" GRAMMARNAME = "A5">
<RENAME VARNAME="Quantity" GRAMMARNAME="A6"><RENAME VARNAME = "Quantity" GRAMMARNAME = "A6">
</INPUT></ INPUT>
</STEP></ STEP>
어떤 이유로 하여 (음성)인식 엔진이 사용자가 말한 것을 이해하지 못한다면, 에러 상태가 뜬다. 온에러 애트리뷰트가 명세화되지 않으면 그것은 디폴트 방식(default way)으로 조작된다. 즉, 프롬프트는 인식이 정확할 때까지 몇 번 반복된다. 사용자는 디폴트 행위를 그 자신이 정의한 에러스텝으로 대치하도록 선택할수 있다. 다음의 예에서, 에러스텝은 사용자에 의하여 글로벌스텝으로 정의된다. 상기 스텝은 여러가지 에러의 경우에 따른 조치를 정의한다. 상기 스텝은 글로벌스텝으로서, 즉 기타의 후속하는 aml 페이지로부터 엑세스될 수 있다.If for some reason the (speech) recognition engine does not understand what you say, you get an error. If the on error attribute is not specified, it is manipulated in the default way. That is, the prompt is repeated several times until the recognition is correct. You can choose to replace the default behavior with an error step of your own definition. In the following example, the error step is defined as a global step by the user. This step defines the actions taken in case of various errors. The step can be accessed as a global step, i.e. from another subsequent aml page.
<STEP name=error global=true><STEP name = error global = true>
<switch name=$amlvar(amlerror.type)><switch name = $ amlvar (amlerror.type)>
<case value=RECOGNITION_FAILURE<case value = RECOGNITION_FAILURE
next="#recognition_failure"></case>next = "# recognition_failure"> </ case>
<case value=CALLER_TIMEOUT<case value = CALLER_TIMEOUT
next="#caller_timeout"></case>next = "# caller_timeout"> </ case>
<switch><switch>
</STEP></ STEP>
<STEP name=recognition_failure><STEP name = recognition_failure>
<prompt>>I did not understand what you said.</propmt><prompt >> I did not understand what you said. </ propmt>
<switch name=$amlvar(amlerror.number_errors_page)><switch name = $ amlvar (amlerror.number_errors_page)>
<case value=1 next="#first_error"></case><case value = 1 next = "# first_error"> </ case>
<case value=1 next="#second_error"></case><case value = 1 next = "# second_error"> </ case>
<case value=1 next="#third_error"></case><case value = 1 next = "# third_error"> </ case>
</switch></ switch>
</STEP></ STEP>
<STEP name=first_error><STEP name = first_error>
<prompt>$amlvar(lastprompt)</prompt><prompt> $ amlvar (lastprompt) </ prompt>
</STEP></ STEP>
<STEP name=second_error><STEP name = second_error>
<prompt>$amlvar(lastshadowprompt)</prompt><prompt> $ amlvar (lastshadowprompt) </ prompt>
</STEP></ STEP>
<STEP name=third_error><STEP name = third_error>
<prompt>Giving up!</prompt><prompt> Giving up! </ prompt>
<INPUT type=none next="navigation"><INPUT type = none next = "navigation">
</STEP></ STEP>
A.2 번역: 테이블A.2 Translation: Tables
테이블은 다중 방법으로 판독될 수 있다. 이번 섹션에서는 두 가지 가능한 방법을 서술한다. 한 가지 방법은 한번에 테이블의 1열을 판독하면서 사용자에게 계속 진행할 것을 원하는지 묻는 것이다. 또 하나의 방법은 한번에 테이블의 모든 열을 판독하면서 사용자가 어느 때에라도 열람(barge)할 수 있게 하는 것이다.The table can be read in multiple ways. This section describes two possible methods. One way is to read the first column of the table at a time and ask the user if they want to proceed. Another way is to allow the user to barge at any time, reading all the rows of the table at once.
A.2.1 한번에 1열A.2.1 One Row At A Time
사용자가 시스템에 로그온하면 사용자는 브라우저를 사용하여 예를 들어, 특수한 스톡기호의 헤드라인 뉴스의 테이블이 있는 페이지를 번역할 수 있다. 이 테이블의 선택된 셀은 특수한 관심의 대상이다. 그것들은 각각 날짜, 시간 및 헤드라인 뉴스를 명시할 수 있다. 테이블의 각 열은 스톡기호용 뉴스 헤드라인이다. 그러한 예에 대하여 대응하는 AML 페이지가 아래에 보인다. 그것은 식별부(identification part) 및 번역부를 모두 담고있다. 식별부는 반복 루프로 이루어진 테이블의 열 및 html 페이지로부터 예시용으로 선택된 셀(1, 3, 5)을 포함한다. 이 페이지에는 단지 하나의 스텝, 즉 Headline만 있다. 그것은 프롬프트 및 입력요소를 갖는다. 이 스텝의 입력요소는 구성요소 애트리뷰트로 명세화된 구성요소에 대하여 루프(loop)하는 루프요소에 속한다. 입력요소와 결부되어, 루프의 반복마다 소리내는 또다른 프롬프트가 있다. 본 예시에서 루프와 결부된 프롬프트는 현재 열에 대한 날짜 변수를 의미하는 배열 변수(array variable)의 항, 즉 $amlvar(Headlines[index].date)로 명세화된다.When the user logs on to the system, the user can use a browser to translate a page with a table of headline news, for example, of a special stock symbol. Selected cells in this table are of special interest. They can specify date, time and headline news respectively. Each column of the table is a news headline for stock symbols. The corresponding AML page is shown below for such an example. It contains both an identification part and a translation part. The identification part comprises cells 1, 3, 5 selected for illustration from a column of the table consisting of a repeating loop and an html page. There is only one step on this page, the Headline. It has a prompt and an input element. The input element of this step belongs to the loop element that loops over the component specified by the component attribute. In conjunction with the input element, there is another prompt that sounds for each iteration of the loop. In this example, the prompt associated with the loop is specified in terms of an array variable, $ amlvar (Headlines [index] .date), meaning the date variable for the current row.
넥스트 애트리뷰트는 옵션 태그(option tag)에 대하여 중의성(multiple connotation)을 갖는다. 즉,The next attribute has multiple connotation for the option tag. In other words,
(1) next="#goto": goto 라는 스텝에서의 계속을 가리킴(1) next = "# goto": indicates the continuation at goto
(2) next="return": 인보킹 스텝(invoking step)으로 되돌아옴(2) next = "return": return to the invoking step
(3) 그 밖에도, next가 그 이외의 어느것으로 명세화되면, 즉 next="$amlvar(c.continue)" 또는 next=http://www.amazon.com/select/select.cgi 이라면, 넥스트 스텝은 앵커요소(anchor element)를 횡단하고(traversing) 있다.(3) Next, if next is specified as anything else, ie next = "$ amlvar (c.continue)" or next = http: //www.amazon.com/select/select.cgi, the next step Is traversing the anchor element.
반복마다 프롬프트를 따라오는 옵션에 대한 "next" 애트리뷰트는 두 개의 가능한 값을 갖는다. 즉, (ⅰ) continue, 이것은 시스템이 루프의 넥스트 반복으로진행한다는 것을 가리키는 예약어(reserved word)이다. (ⅱ) $amlvar(headline [index].news.url), 이것은 사용자가 "Yes"라고 하면 시스템이 지정된 url로 트랜지션해야 한다는 것을 명세화한다. 후속하는 흐름 요소는 브라우징을 계속하는 데 요구되는 AML 페이지를 정의한다. 다음은 청각 프롬프트가 내장된 AML 코드이다:The "next" attribute for the option that follows the prompt per iteration has two possible values. That is, (ⅰ) continue, which is a reserved word that indicates that the system proceeds to the next iteration of the loop. (Ii) $ amlvar (headline [index] .news.url), which specifies that if the user says "Yes" the system should transition to the specified url. Subsequent flow elements define the AML pages required to continue browsing. Here is the AML code with the built-in hearing prompt:
<DIALOG name=headlines greeting="news headline"><DIALOG name = headlines greeting = "news headline">
//...component definition would be here...////...component definition would be here ... //
<STEP Name="Headlines"><STEP Name = "Headlines">
<PROMPT>This is a list of all the headlines</PROMPT><PROMPT> This is a list of all the headlines </ PROMPT>
<LOOP name=headlines loopindex=index start=0 increment=1<LOOP name = headlines loopindex = index start = 0 increment = 1
end=$amlvar(headlines.length)next=#query></LOOP>end = $ amlvar (headlines.length) next = # query> </ LOOP>
</STEP></ STEP>
<STEP name="query"><STEP name = "query">
<PROMPT><PROMPT>
News on Date $amlvar(Headlines[index].date)atNews on Date $ amlvar (Headlines [index] .date) at
time$amlvar(Headlines[index].time)$amlvar(Headlines[index].news).time $ amlvar (Headlines [index] .time) $ amlvar (Headlines [index] .news).
If you want to hear the complete story say Yes or No to go to the next healineIf you want to hear the complete story say Yes or No to go to the next healine
</PROMPT></ PROMPT>
<INPUT type=optionlist grammar=".YesNoNavigation"><INPUT type = optionlist grammar = ". YesNoNavigation">
<OPTION next="return">No</OPTION><OPTION next = "return"> No </ OPTION>
<OPTION NEXT=$amlvar(Headlines[index].url)">Yes<OPTION NEXT = $ amlvar (Headlines [index] .url) "> Yes
</OPTION></ OPTION>
</INPUT></ INPUT>
</STEP></ STEP>
<FLOW<FLOW
Name="datailflow"Name = "datailflow"
Source="/parser/test/schwab/news.html"Source = "/ parser / test / schwab / news.html"
Sourceaudio=headlinesSourceaudio = headlines
Destination="parser/test/schwab/<amlvar>.html"Destination = "parser / test / schwab / <amlvar> .html"
Destinationaudio=/parser/test/schwab/detail.voxDestinationaudio = / parser / test / schwab / detail.vox
DestinationStep="detail">DestinationStep = "detail">
</FLOW></ FLOW>
</DIALOG></ DIALOG>
A.2.2 모든 열 함께A.2.2 All Columns Together
모든 열이 하나씩 하나씩 판독될 수 있고, 사용자는 판독의 끝에서 방향에 대하여 프롬프트될 수 있다. 그들은 바지-인(barge-in)용 지원을 부가하도록, 즉 사용자가 중간부에서 리스트의 플레잉(playing)을 인터럽트할 수 있도록 강화될 수 있다.All rows can be read one by one and the user can be prompted for direction at the end of the reading. They can be enhanced to add support for barge-in, ie allow the user to interrupt playing of the list in the middle.
<STEP Name="Headlines"><STEP Name = "Headlines">
<PROMPT><PROMPT>
Here are the headlines. If you want to hear the complet story say Yes for the headlineHere are the headlines. If you want to hear the complet story say Yes for the headline
</PROMPT></ PROMPT>
<LOOP name=headlines loopindex=index<LOOP name = headlines loopindex = index
next="#query"start=0 increment=1next = "# query" start = 0 increment = 1
end=$amlvar(Headlines.length)>end = $ amlvar (Headlines.length)>
</LOOP></ LOOP>
</STEP></ STEP>
<STEP name="query"><STEP name = "query">
<PROMPT><PROMPT>
News on Date $amlvar(Headlines[index].date) atNews on Date $ amlvar (Headlines [index] .date) at
time $amlvar(Headlines[index].time)time $ amlvar (Headlines [index] .time)
$amlvar(Headlines[index].news).$ amlvar (Headlines [index] .news).
</PROMPT></ PROMPT>
<INPUT NAME="choice" TYPE=OPTIONLIST<INPUT NAME = "choice" TYPE = OPTIONLIST
BARGEIN=TRUEBARGEIN = TRUE
grammar=".YesNoNavigation"grammar = ". YesNoNavigation"
onError=#error>onError = # error>
<option NEXT="$amlvar(Headlines[index].url)">Yes<option NEXT = "$ amlvar (Headlines [index] .url)"> Yes
</OPTION></ OPTION>
<option next="return">No</OPTION><option next = "return"> No </ OPTION>
</INPUT></ INPUT>
</STEP></ STEP>
바지-인은 사용자가 뉴스를 들을 수 있게 하고 상세한 뉴스를 듣고자 할 때에만 yes라고 말하면 된다. 이것은 사용자가 말해야 하는 건수를 최소화한다.The pants-in need to say yes only if they want the user to hear the news and want to hear detailed news. This minimizes the number of things the user must say.
A.3 번역: 변수 루핑요소A.3 Translation: Variable Looping Elements
또다른 예시로서 변수 루핑 예에 대한 다음의 번역을 가정한다. 구성요소 식별후의 단계에서는 이전 예시에서의 테이블의 렌더링과 큰 차이는 없다.As another example, assume the following translation of the variable looping example. The step after component identification is not much different from the rendering of the table in the previous example.
<STEP Name="resultssection"><STEP Name = "resultssection">
<PROMPT><PROMPT>
Here are the book search result. If you want to hear moreHere are the book search result. If you want to hear more
details about a book say Yesdetails about a book say Yes
</PROMPT></ PROMPT>
<LOOP name=resultssection2 loopindex=index<LOOP name = resultssection2 loopindex = index
start=0 increment=1 end=$amlvar(resultssection2.length)start = 0 increment = 1 end = $ amlvar (resultssection2.length)
next="#part">next = "# part">
</LOOP></ LOOP>
</STEP></ STEP>
<STEP name="part"><STEP name = "part">
<PROMPT><PROMPT>
Title $amlvar(resultssection2[index].title) ships inTitle $ amlvar (resultssection2 [index] .title) ships in
$amlvar(resultssection2[index].shipping). The authors for$ amlvar (resultssection2 [index] .shipping). The authors for
this book are $amlvar(resultssection2[index].author). It is athis book are $ amlvar (resultssection2 [index] .author). It is a
$amlvar(resultssection2[index].type) and was published in$ amlvar (resultssection2 [index] .type) and was published in
$amlvar(resultssection2[index].date). The price is$ amlvar (resultssection2 [index] .date). The price is
$amlvar(resultssection2[index].price).$ amlvar (resultssection2 [index] .price).
</PROMPT></ PROMPT>
<INPUT NAME="choice"TYPE=OPTIONLIST bargein=true<INPUT NAME = "choice" TYPE = OPTIONLIST bargein = true
grammar=".YesNoNavigation"grammar = ". YesNoNavigation"
onError="#error">onError = "# error">
<option NEXT="$amlvar(resultssection2[index].detail)"><option NEXT = "$ amlvar (resultssection2 [index] .detail)">
yes</OPTION>yes </ OPTION>
<option next="return">no</OPTION><option next = "return"> no </ OPTION>
</INPUT></ INPUT>
</STEP></ STEP>
A.4 번역: 교번 구조(alternate structures)A.4 Translation: Alternate Structures
이전 예시의 반복 구조에서, 각 열은 동일한 구조를 가졌고 선택된 셀은 필요 입력을 제공하였다. 이 섹션에서는 열 구조가 동일하지 않은 경우의 예시를 보인다.In the repeating structure of the previous example, each column had the same structure and the selected cell provided the necessary input. This section shows an example where the column structures are not the same.
예시 1Example 1
다음 테이블은 아래와 같이 테이블의 상이한 경우에 대하여 상이한 프롬프트로 렌더링될 수 있다.The following table can be rendered with different prompts for different cases of the table as follows.
------------------------------------------------------------------------------------------------------------------- ---------------
Stock Price Quantity Operation DateStock Price Quantity Operation Date
IFMX 10.50 100 BUY 5/25/98IFMX 10.50 100 BUY 5/25/98
ORCL 51.5 200 SELL 5/26/98ORCL 51.5 200 SELL 5/26/98
IBM 171.5 DIVIDEND 5/27/98IBM 171.5 DIVIDEND 5/27/98
IBM 51.5 INTEIBM 51.5 INTE
----------------------------------------------------------------------------------------------------------------------- -------------------
<STEP Name="transactionList"next="#finish"><STEP Name = "transactionList" next = "# finish">
<LOOP name=transactionList loopindex=index<LOOP name = transactionList loopindex = index
start=0 end=$amlvar(transactionList.length)increment=1start = 0 end = $ amlvar (transactionList.length) increment = 1
next="#iteration">next = "# iteration">
LOOP>LOOP>
</STEP></ STEP>
</STEP name="#finish"></ STEP name = "# finish">
<PROMPT> You have now heard your entire transaction list.<PROMPT> You have now heard your entire transaction list.
Should I return to the main menu?Should I return to the main menu?
</PROMPT></ PROMPT>
<INPUT TYPE=OPTIONLIST grammar=".YesNoNavigation"<INPUT TYPE = OPTIONLIST grammar = ". YesNoNavigation"
NAME="choice"NAME = "choice"
onError="#error">onError = "# error">
<option NEXT="/trading/center"Value="yes"><option NEXT = "/ trading / center" Value = "yes">
yes<OPTION>yes <OPTION>
<option Next="#exit"Value="no">no</option><option Next = "# exit" Value = "no"> no </ option>
</INPUT></ INPUT>
</STEP></ STEP>
<STEP name="iteration"next="return"><STEP name = "iteration" next = "return">
<SWITCH name=transactionList[index].define><SWITCH name = transactionList [index] .define>
<CASE value="INTEREST" next="#interest></CASE><CASE value = "INTEREST" next = "# interest> </ CASE>
<CASE value="DIVIDEND" next="#dividend"></CASE><CASE value = "DIVIDEND" next = "# dividend"> </ CASE>
<CASE value=default next="#default"></CASE><CASE value = default next = "# default"> </ CASE>
</SWITCH></ SWITCH>
</STEP></ STEP>
</STEP name="interest></ STEP name = "interest>
<PROMPT>Interest $amlvar(transactionList[index].ico12)was<PROMPT> Interest $ amlvar (transactionList [index] .ico12) was
posted on $amlvar(transactionList[index].ico15).</PROMPT>posted on $ amlvar (transactionList [index] .ico15). </ PROMPT>
<INPUT type=none next="return"><INPUT type = none next = "return">
</STEP></ STEP>
</STEP name="dividend"></ STEP name = "dividend">
<PROMPT> Dividend $amlvar(transactionList[index].dcol2)was<PROMPT> Dividend $ amlvar (transactionList [index] .dcol2) was
posted on amlvar(transactionList[index].dco15)posted on amlvar (transactionList [index] .dco15)
for stock symbol $amlvar(transactionList[index].dcol1).for stock symbol $ amlvar (transactionList [index] .dcol1).
</PROMPT></ PROMPT>
<INPUT type=none next="return"><INPUT type = none next = "return">
</STEP></ STEP>
</STEP name="default"></ STEP name = "default">
<PROMPT> A $amlvar(transactionList[index].co14)transaction of<PROMPT> A $ amlvar (transactionList [index] .co14)
$amlvar(transactionList[index].co13)shares at$ amlvar (transactionList [index] .co13) shares at
$amlvar(transactionList[index].co12)of$ amlvar (transactionList [index] .co12) of
$amlvar(transactionList[index].co11) was posted on$ amlvar (transactionList [index] .co11) was posted on
$amlvar(transactionList[index].co15).$ amlvar (transactionList [index] .co15).
</PROMPT></ PROMPT>
<INPUT type=none next="return"><INPUT type = none next = "return">
</STEP></ STEP>
예시 2Example 2
다음 AML 코드는 거래이력 테이블(trade history table)을 렌더링한다. 두 가지 루프가 존재하는데, 하나는 스톡기호를 통한 루프이고 다른 하나는 각각의 기호에 대한 거래이력 루프이다.The following AML code renders a trade history table. There are two loops, one through the stock symbol and the other through the transaction history loop for each symbol.
<Dialog Name="allstocks"greeting="This is the Trade History page"><Dialog Name = "allstocks" greeting = "This is the Trade History page">
<!--Loop over all the stocks one by one><!-Loop over all the stocks one by one>
<STEP Name="allstocks"><STEP Name = "allstocks">
<loop name=stocks bargein=true loopindex=index1<loop name = stocks bargein = true loopindex = index1
start=0 increment=1 end=$amlvar(stocks.length)start = 0 increment = 1 end = $ amlvar (stocks.length)
next="#iteration1">next = "# iteration1">
</loop></ loop>
</STEP></ STEP>
<STEP name="iteration1"><STEP name = "iteration1">
<PROMPT>Please say yes if you want to listen to the orders for<PROMPT> Please say yes if you want to listen to the orders for
$amlvar(stocks[index1].stock).$ amlvar (stocks [index1] .stock).
</PROMPT></ PROMPT>
<INPUT TYPE="OPTIONLIST"GRAMMAR=".YesNo"NAME<INPUT TYPE = "OPTIONLIST" GRAMMAR = ". YesNo" NAME
="choice">= "choice">
<option Next="#stock1" Value="Yes"></option><option Next = "# stock1" Value = "Yes"> </ option>
<option Next="return"Value="No"></option><option Next = "return" Value = "No"> </ option>
</INPUT></ INPUT>
</STEP></ STEP>
<!--For each stock, loop over the trades for that stock><!-For each stock, loop over the trades for that stock>
<STEP Name="stock1"next=return><STEP Name = "stock1" next = return>
<LOOP NAME=stock1 loopindex=index2 next="#iteration2"<LOOP NAME = stock1 loopindex = index2 next = "# iteration2"
start=3 increment=1 end=$amlvar(stock1.length)start = 3 increment = 1 end = $ amlvar (stock1.length)
order=$amlvar(stock1[index2].closed)direction=descend>order = $ amlvar (stock1 [index2] .closed) direction = descend>
</LOOP></ LOOP>
</STEP></ STEP>
<STEP name="iteration2"><STEP name = "iteration2">
<switch name=stock1[index].define><switch name = stock1 [index] .define>
<case value="CLOSED"next="#closed"></case><case value = "CLOSED" next = "# closed"> </ case>
<case value="OPEN"next="#open"></case><case value = "OPEN" next = "# open"> </ case>
</switch></ switch>
</STEP></ STEP>
<!Prompt for open trades><! Prompt for open trades>
<STEP name="open"><STEP name = "open">
<PROMPT><PROMPT>
$amlvar(stock1[index2].orderno)is currently open, and is a$ amlvar (stock1 [index2] .orderno) is currently open, and is a
$amlvar(stock1[index2].action)$ amlvar (stock1 [index2] .action)
for $amlvar(stock1[index2].qty) shares offor $ amlvar (stock1 [index2] .qty) shares of
$amlvar(allstocks[index1].stock)at price$ amlvar (allstocks [index1] .stock) at price
$amlvar(stock1[index2].price). It was posted on$ amlvar (stock1 [index2] .price). It was posted on
$amlvar(stock1[index2].date)with a time limit of$ amlvar (stock1 [index2] .date) with a time limit of
$amlvar(stock1[index2].limit)$ amlvar (stock1 [index2] .limit)
</PROMPT></ PROMPT>
<INPUT type=none next="return"><INPUT type = none next = "return">
</STEP></ STEP>
<!prompt for closed trades><! prompt for closed trades>
<STEP name="closed"><STEP name = "closed">
<PROMPT><PROMPT>
$amlvar(stock1[index2].order no)was a$ amlvar (stock1 [index2] .order no) was a
$amlvar(stock1[index2].action)for$ amlvar (stock1 [index2] .action) for
$amlvar(stock1[index2].qty) shares of$ amlvar (stock1 [index2] .qty) shares of
$amlvar(allstocks[index1].stock)at price$ amlvar (allstocks [index1] .stock) at price
$amlvar(stock1[index2].price). It was posted on$ amlvar (stock1 [index2] .price). It was posted on
$amlvar(stock1[index2].date)with a time limit of$ amlvar (stock1 [index2] .date) with a time limit of
$amlvar(stock1[index2].limit) The transaction was closed$ amlvar (stock1 [index2] .limit) The transaction was closed
on $amlvar(stock1[index2].date2) and the action wason $ amlvar (stock1 [index2] .date2) and the action was
$amlvar(stock1[index2].action2).$ amlvar (stock1 [index2] .action2).
</PROMPT></ PROMPT>
<INPUT type=none next="return"><INPUT type = none next = "return">
</STEP></ STEP>
B. 흐름: 특정화된 urls/양식 동작(form actions)B. Flow: Specialized urls / form actions
html의 페이지로부터 html의 또다른 페이지까지의 트랜지션은 url로 또는 양식 동작 요소로 가능해질 수 있다. 또한 이들은 본 발명에 따른 대응 오디오 페이지 명세 사이에서의 순위를 정의한다. 따라서, 행선지 url 및 행선지 voice 요소를 정의하는 "흐름(flow)" 이라 불려지는 매핑(mapping)을 가질 수 있다. 단순성과 아마도 더 용이한 탐색을 위하여, 원시 url 및 원시 page 정보가 또한 저장될 것이다. url은 정적 부분과 동적 부분을 가질 수 있다. 연산에서, 변수 urls 를 명세화시키기 위한 구성요소 명세에 대한 구조 속성이 재사용된다.Transitions from a page of html to another page of html can be enabled either as a url or as a form action element. They also define the ranking among the corresponding audio page specifications according to the invention. Thus, it may have a mapping called "flow" that defines a destination url and a destination voice element. For simplicity and perhaps easier navigation, raw url and raw page information will also be stored. The url can have a static part and a dynamic part. In the operation, the structure attribute for the component specification to specify the variable urls is reused.
GUI 부분에서, html 페이지를 오디오 "program" 으로 변환시키는데에는 두 가지 레벨이 있다. 첫 번째 레벨에서, 개별 html 페이지는 대응하는 오디오 페이지로 전환된다. 두 번째 레벨에서, 모든 오디오 페이지가 표시되고, 사용자는 대응하는 html 구성요소에서 urls/양식 동작(form action) 방법을 사용하여 다양한 오디오 페이지들 사이의 트랜지션을 형성하도록 된다. 각각의 url 트랜지션에 대하여,오디오 요소가 형성되고, 그것은 "urls->audioid" 의 매핑에서 내부적으로 유지될 것이며 여기서 audioid는 오디오 페이지의 식별자가 된다.In the GUI section, there are two levels of conversion of html pages to audio "programs". At the first level, individual html pages are converted to the corresponding audio pages. At the second level, all audio pages are displayed and the user is forced to form a transition between the various audio pages using the urls / form action method in the corresponding html component. For each url transition, an audio element is formed, which will be kept internally in the mapping of "urls-> audioid" where audioid is the identifier of the audio page.
url 트랜지션은 흐름 요소를 사용하여 구체화된다. 흐름 요소는 url 및 그것의 대응하는 다이얼로그를 명세화한다. html 페이지에서 다음의 href 문장을 고려할 것임.The url transition is specified using a flow element. The flow element specifies the url and its corresponding dialog. Consider the following href statement in the html page:
<a<a
HREF="/trading/generic/?FormName=DelayedQuotes"HREF = "/ trading / generic /? FormName = DelayedQuotes"
NAME=CompanyNewsTARGET="CCBodyi"NAME = CompanyNewsTARGET = "CCBodyi"
onMouseOver="parent.self.status='Company News';return true">onMouseOver = "parent.self.status = 'Company News'; return true">
<u>Company</u><u> Company </ u>
</a></a>
만약 사용자가 이러한 url(행선지 주소)을 순회할 수 있다면, 그 다음에 대응하는 흐름 명세는 다음과 같이 될 것이다.If the user can traverse this url, then the corresponding flow specification would be:
<flow<flow
Name="CompanyNews"Name = "CompanyNews"
Source="https://trading2.schwab.com/trading/signon/."Source = "https://trading2.schwab.com/trading/signon/."
Sourceaudio=logonSourceaudio = logon
Destination="...trading/generic/?FormName=DelayedQuotes"Destination = "... trading / generic /? FormName = DelayedQuotes"
Destinationaudio=headlines>Destinationaudio = headlines>
</flow></ flow>
유사하게, Amazon 홈 페이지 예시에서 양식 구성요소가 선택된 다음, 순위를 위한 동작 방식이 암시적으로 선택된다. 따라서 그것을 위한 흐름요소를 형성할 필요가 있다. 예를 들어, 양식 요소는 다음과 같이 시작한다.Similarly, in the Amazon home page example, the form component is selected, and then the mode of operation for ranking is implicitly selected. Therefore, it is necessary to form a flow element for it. For example, a form element begins with:
<form method="post"<form method = "post"
action="/exec/obidos/generic-quicksearch-query/002-0363237-action = "/ exec / obidos / generic-quicksearch-query / 002-0363237-
2566852">2566852 ">
양식이 제출되는 때의 행선지 url은The destination url when the form is submitted
http://www.amazon.com/exec/obidos/generic - quicksearch - query/002 - 0363237 -2566852 이다. 이것은 정적부분:http://www.amazon.com/exec/obidos/generic - quicksearch - query/ 및 변수부분:002-0363237-2566852를 가진다. 변수부분은 amazon.com 페이지로 들어오는 새로운 세션에 할당된 session-id 이다. 그러면 이러한 페이지에 대한 흐름 구성요소는 다음과 같이 정의될 수 있다.http://www.amazon.com/exec/obidos/generic-quicksearch-query / 002-0363237 -2566852 It has a static part: http://www.amazon.com/exec/obidos/generic-quicksearch-query / and a variable part: 002-0363237-2566852. The variable part is the session-id assigned to the new session coming into the amazon.com page. The flow component for these pages can then be defined as follows:
<flow<flow
name="Resultsflow"name = "Resultsflow"
source="http://www.amazon.com/exec/obidos/generic -source = "http://www.amazon.com/exec/obidos/generic-
quicksearch - query/<amlvar name=sessionid>>"quicksearch-query / <amlvar name = sessionid >> "
destination="http://www.amazon.com/exec/obidos/generic -destination = "http://www.amazon.com/exec/obidos/generic-
quicksearch - query/<amlvar name=sessionid>"quicksearch-query / <amlvar name = sessionid> "
sourceaudio=homepagesourceaudio = homepage
destinationaudio=Resultpage>destinationaudio = Resultpage>
</flow></ flow>
호출자/음성 이용자는 뒤로(back), 앞으로(forward), 정지(stop) 계속(continue), 및 재생(refresh) 과 같은 네비게이션 명령을 사용하여 상이한 오디오 단계들 사이에서 네비게이트할 수 있다. 트랜지션은 트랜지션 단계로 표시되는 단계들 사이에서 형성된다. 뒤로(back) 및 앞으로(forward) 명령어는 호출자를 각각 다음 트랜지션 단계로 뒤로 또는 앞으로 향하게 할 것이다. 정지(stop)는 현재의 렌더링 또는 세션의 배경실행(background execution of the session)을 종결시킬 것이다. 계속(continue)은 그것이 정지되었던 위치로부터 작용할 것이다. 재생(refresh)은 html 페이지가 일반적으로 상기 세션을 진단할 때 재생할 것이다. 따라서, 다음 AML 언어코드에서, 헤드라인 단계는 (디폴트에 의한 "거짓(false)"인)속성 트랜지션을 사용하여 트랜지션 단계로 표시된다:The caller / speech user may navigate between different audio steps using navigation commands such as back, forward, stop continue, and refresh. The transition is formed between the steps represented by the transition step. The back and forward instructions will direct the caller back or forward to the next transition phase, respectively. A stop will terminate the current rendering or background execution of the session. The continue will work from where it was stopped. Refresh will play when the html page normally diagnoses the session. Thus, in the following AML language code, the headline phase is represented as a transition phase using an attribute transition (which is "false" by default):
<STEP Name="Headlines"transition=true><STEP Name = "Headlines" transition = true>
<PROMPT><PROMPT>
Here are the headlines. If you want to hear the completeHere are the headlines. If you want to hear the complete
story say Yes for the headlinestory say Yes for the headline
</PROMPT></ PROMPT>
<LOOP name=headlines loopindex=index<LOOP name = headlines loopindex = index
next="#query" start=0 increment=1next = "# query" start = 0 increment = 1
end=$amlvar(headlines.length)>end = $ amlvar (headlines.length)>
</LOOP></ LOOP>
</STEP></ STEP>
모든 단계들이 변환될 필요는 없다. 따라서, 내부적으로, 양식은 다중단계로 번역될 것이고, 사용자는 상기 양식의 제1단계로 항상 변환될 수 있도록 되어 있다.Not all steps need to be converted. Thus, internally, the form will be translated in multiple stages and the user is always able to translate to the first stage of the form.
C. AML(DTD 명세)C. AML (DTD Specification)
C.1 전체 문서(Overall document)C.1 overall document
다음은 오디오 언어 AML에 대한 명세이다. 다른 언어들은 구문(syntax)의 이러한 예시에 따라 생성될 수 있고 의도된 매체에서 작동하도록 수정되거나 형성되는 제약에 지배될 수 있다. 따라서, 이러한 명세는 예시적인 것이며 제한되지 않는다.The following is the specification of audio language AML. Other languages can be generated according to this example of syntax and subject to constraints that are modified or formed to work in the intended medium. Accordingly, these specifications are illustrative and not restrictive.
<!ELEMENT DIALOG(component│form│step│flow)*><! ELEMENT DIALOG (component│form│step│flow) *>
<!ATTLIST dialog #audio page element<! ATTLIST dialog #audio page element
name CDATA #name of objectname CDATA #name of object
url CDATA #sructure of urlurl CDATA #sructure of url
greeting CDATA #information greeting user on entering audio pagegreeting CDATA #information greeting user on entering audio page
#this is read out when user reachesthis#this is read out when user reachesthis
audio page for theaudio page for the
#first time, or thereafter while navigating through the#first time, or thereafter while navigating through the
#audio pages#audio pages
cookies CDATA #any associated cookies with page, may be necessary forcookies CDATA #any associated cookies with page, may be necessary for
#identification#identification
>>
identificationidentification
<!ELEMENT COMPONENT(component│idloop│idswitch)*><! ELEMENT COMPONENT (component│idloop│idswitch) *>
<!ATTLIST component#component element-<! ATTLIST component # component element-
type CDATA #type of object form/table/tr/td/input etc.type CDATA #type of object form / table / tr / td / input etc.
position CDATA #ordinal element number of component in the patent containerposition CDATA #ordinal element number of component in the patent container
url CDATA #identifying url. url are caseurl CDATA #identifying url. url are case
sensitivesensitive
name CDATA #name of componentname CDATA #name of component
htmlname CDATA #Name on the html documenthtmlname CDATA #Name on the html document
id CDATA #ID of html objectid CDATA #ID of html object
dimension CDATAdimension CDATA
#for forms #of visible controls in the form #for a table number of rows #for a tr number of cells visible#for forms #of visible controls in the form #for a table number of rows #for a tr number of cells visible
(true│false)#set to "true"if the nonvisible data needs to be stripped(true│false) #set to "true" if the nonvisible data needs to be stripped
sructure CDATA #structure object>sructure CDATA #structure object>
<!ELEMENT idswitch(idcase)*><! ELEMENT idswitch (idcase) *>
<!ATTLIST idswitch<! ATTLIST idswitch
name CDATA #what do you switch on?>name CDATA #what do you switch on?>
<!ELEMENT idcase(component│idloop│idswitch)*><! ELEMENT idcase (component│idloop│idswitch) *>
<!ATTLIST idcase<! ATTLIST idcase
define CDATAdefine CDATA
#used to define component#used to define component
types, later #in rendering totypes, later #in rendering to
identify type of # componentidentify type of # component
being renderedbeing rendered
>>
<!ELEMENT idloop(component│idswitch│idloop)*><! ELEMENT idloop (component│idswitch│idloop) *>
<!ATTLIST idloop<! ATTLIST idloop
ignoreignore
(ALL│ALL_BUT_FIRST│ALL_BUT_LAST│LAST│EVEN│ODD)(ALL│ALL_BUT_FIRST│ALL_BUT_LAST│LAST│EVEN│ODD)
name CDATA #name of componentname CDATA #name of component
loopindex CDATA #name of loop indexloopindex CDATA #name of loop index
>>
<!ELEMENT FLOW<! ELEMENT FLOW
<!ATTLIST flow #flow element<! ATTLIST flow #flow element
name CDATA; #name of elementname CDATA; #name of element
source CDATA; #structure specification ofsource CDATA; #structure specification of
source urlsource url
destination CDATA; #structure specification ofdestination CDATA; #structure specification of
destination urldestination url
sourceaudio CDATA; #source audio page idsourceaudio CDATA; #source audio page id
desinationaudio CDATA; #desination audio page iddesinationaudio CDATA; #desination audio page id
desinationstep CDATA; #starting step in new audiodesinationstep CDATA; #starting step in new audio
elementelement
>>
<!ELEMENT AMLVAR><! ELEMENT AMLVAR>
<!ATTLIST amlvar #variable element--<! ATTLIST amlvar #variable element--
name CDATA; #name of variablename CDATA; #name of variable
type(char│int│money│dete│time) #what is the type of this variabletype (char│int│money│dete│time) #what is the type of this variable
#this is used for rendering,e.g.,#this is used for rendering, e.g.,
#if it is of type date, and#if it is of type date, and
looks likelooks like
#1/10/99, it would be# 1/10/99, it would be
rendered asrendered as
#October 1, 1999#October 1, 1999
format CDATA #for date/time/money, what is theformat CDATA #for date / time / money, what is the
formatformat
#of this variable on the html page#of this variable on the html page
#mmddy4/y4/etc.# mmddy4 / y4 / etc.
render CDATA #how is this rendered to therender CDATA #how is this rendered to the
callercaller
#mmddy4/y4/etc.# mmddy4 / y4 / etc.
visible(true│false) #visible part of text, i.e.,visible (true│false) #visible part of text, i.e.,
what you see onwhat you see on
#the screen, see Section 5.5#the screen, see Section 5.5
>>
RenderingRendering
<!ELEMENT FORM(prompt)><! ELEMENT FORM (prompt)>
<!ATTLIST form #form element<! ATTLIST form #form element
name CDATA #name of objectname CDATA #name of object
parameters CDATA #&-separated list ofparameters CDATA # &-separated list of
parameters to be passedparameters to be passed
component CDATA #name of component incomponent CDATA #name of component in
identificationidentification
>>
<!ELEMENT step(prompt)(input│switch│loop)><! ELEMENT step (prompt) (input│switch│loop)>
<!ATTLIST step<! ATTLIST step
name ID REQUIREDname ID REQUIRED
Transition (true│false) #transitional step forTransition (true│false) #transitional step for
navigationnavigation
Next CDATA #what is the next step afterNext CDATA #what is the next step after
this step.this step.
Valid ony for step #that enclose loop and switchValid ony for step #that enclose loop and switch
>>
<!ELEMENT input(option│rename)*><! ELEMENT input (option│rename) *>
<!ATTLIST step<! ATTLIST step
name ID #name ID #
next CDATA #what is the next step afternext CDATA #what is the next step after
this stepthis step
bargein (Y│N) #default is yes(Y)bargein (Y│N) #default is yes (Y)
grammar CDATA #grammar describing what togrammar CDATA #grammar describing what to
expectexpect
#from the user at this point;#from the user at this point;
some defaultsome default
#grammars available, such as#grammars available, such as
yes/no, etc.yes / no, etc
keypad CDATA #grammar describing keypadkeypad CDATA #grammar describing keypad
stuffstuff
onError CDATA #error handling step if there is aonError CDATA #error handling step if there is a
#problem in this#problem in this
#input from the user#input from the user
type (TEXT│DIGITS│OPTIONLIST│NONE)type (TEXT│DIGITS│OPTIONLIST│NONE)
>>
<!ELEMENT option(CDATA)><! ELEMENT option (CDATA)>
<!ATTLIST option<! ATTLIST option
value CDATA #value of optionvalue CDATA #value of option
next C DATA #what is the next stepnext C DATA #what is the next step
>>
<!ELEMENT switch(case)*><! ELEMENT switch (case) *>
<!ATTLIST switch<! ATTLIST switch
component CDATA #what do you switch on?component CDATA #what do you switch on?
>>
<!ELEMENT case><! ELEMENT case>
<!ATTLIST case<! ATTLIST case
value CDATA #value for this case;value CDATA #value for this case;
next CDATA #step containing body of casenext CDATA #step containing body of case
>>
<!ELEMENT prompt(CDATA)><! ELEMENT prompt (CDATA)>
<!ATTLIST prompt<! ATTLIST prompt
wavefile CDATA #wavefile containing promptwavefile CDATA #wavefile containing prompt
>>
<!ELEMENT loop><! ELEMENT loop>
<!ATTLIST loop<! ATTLIST loop
component CDATA #name of component on whichcomponent CDATA #name of component on which
to loop onto loop on
next CDATA #step containing body of loopnext CDATA #step containing body of loop
loopindex CDATA #name of loop indexloopindex CDATA #name of loop index
start CDATA #starting value for loop indexstart CDATA #starting value for loop index
(default 0)(default 0)
end CDATA #ending value for loop indexend CDATA #ending value for loop index
(default #length of component)(default #length of component)
increment CDATA #loop index increment (default 1)increment CDATA #loop index increment (default 1)
order CDATA #part of component on whichorder CDATA #part of component on which
it needs to #be sortedit needs to #be sorted
direction (ascend│descend) #render in ascending/descending order ifdirection (ascend│descend) #render in ascending / descending order if
>>
<!ELEMENT rename><! ELEMENT rename>
<!ATTLIST rename<! ATTLIST rename
VARNAME CDATA #name of aml variableVARNAME CDATA #name of aml variable
GRAMMARNAME CDATA #grammar slot nameGRAMMARNAME CDATA #grammar slot name
>>
본 발명은 특정 실시예를 참조로 기술되어 있다. 기타의 실시예들은 당업자에게 명백해질 것이다. 따라서, 첨부된 청구항에 의해서 나타난 바를 제외하고, 본 발명이 한정되는 것을 의도하지 않는다.The invention has been described with reference to specific embodiments. Other embodiments will be apparent to those skilled in the art. Accordingly, it is not intended that the invention be limited, except as indicated by the appended claims.
Claims (33)
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US39313399A | 1999-09-10 | 1999-09-10 | |
US09/393,133 | 1999-09-10 | ||
PCT/US2000/024546 WO2001018692A2 (en) | 1999-09-10 | 2000-09-06 | Method for customizing and rendering of selected data fields |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20020042831A true KR20020042831A (en) | 2002-06-07 |
Family
ID=23553412
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020027003231A KR20020042831A (en) | 1999-09-10 | 2000-09-06 | Method For Customizing And Rendering Of Selected Data Fields |
Country Status (7)
Country | Link |
---|---|
EP (1) | EP1344149A2 (en) |
JP (1) | JP2003532129A (en) |
KR (1) | KR20020042831A (en) |
CN (1) | CN1461445A (en) |
AU (1) | AU7355200A (en) |
CA (1) | CA2384618A1 (en) |
WO (1) | WO2001018692A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR200452191Y1 (en) * | 2010-06-07 | 2011-02-10 | (주)스페이스톡 | Pinwheel sculpture |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958164B2 (en) | 2006-02-16 | 2011-06-07 | Microsoft Corporation | Visual design of annotated regular expression |
US7860881B2 (en) | 2006-03-09 | 2010-12-28 | Microsoft Corporation | Data parsing with annotated patterns |
WO2012174703A1 (en) * | 2011-06-20 | 2012-12-27 | Microsoft Corporation | Hover translation of search result captions |
CN111680051B (en) * | 2020-05-29 | 2023-10-20 | 杭州趣链科技有限公司 | Data serialization and deserialization method, device and storage medium |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282511B1 (en) * | 1996-12-04 | 2001-08-28 | At&T | Voiced interface with hyperlinked information |
-
2000
- 2000-09-06 AU AU73552/00A patent/AU7355200A/en not_active Abandoned
- 2000-09-06 CN CN00814425A patent/CN1461445A/en active Pending
- 2000-09-06 EP EP00961628A patent/EP1344149A2/en not_active Withdrawn
- 2000-09-06 JP JP2001522435A patent/JP2003532129A/en active Pending
- 2000-09-06 KR KR1020027003231A patent/KR20020042831A/en not_active Application Discontinuation
- 2000-09-06 WO PCT/US2000/024546 patent/WO2001018692A2/en not_active Application Discontinuation
- 2000-09-06 CA CA002384618A patent/CA2384618A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR200452191Y1 (en) * | 2010-06-07 | 2011-02-10 | (주)스페이스톡 | Pinwheel sculpture |
Also Published As
Publication number | Publication date |
---|---|
WO2001018692A2 (en) | 2001-03-15 |
EP1344149A2 (en) | 2003-09-17 |
WO2001018692A3 (en) | 2003-07-17 |
CN1461445A (en) | 2003-12-10 |
JP2003532129A (en) | 2003-10-28 |
AU7355200A (en) | 2001-04-10 |
CA2384618A1 (en) | 2001-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100661687B1 (en) | Web-based platform for interactive voice responseivr | |
US7548858B2 (en) | System and method for selective audible rendering of data to a user based on user input | |
US6446098B1 (en) | Method for converting two-dimensional data into a canonical representation | |
US6377927B1 (en) | Voice-optimized database system and method of using same | |
KR100919738B1 (en) | Content creation system, content creation method, computer-executable program for executing the content creation method, computer-readable recording medium containing the program, graphical user interface system, and display control method | |
US8566102B1 (en) | System and method of automating a spoken dialogue service | |
EP1371057B1 (en) | Method for enabling the voice interaction with a web page | |
US20030139928A1 (en) | System and method for dynamically creating a voice portal in voice XML | |
US11604929B2 (en) | Guided text generation for task-oriented dialogue | |
KR20020042831A (en) | Method For Customizing And Rendering Of Selected Data Fields | |
Reddy et al. | Listener-controlled dynamic navigation of voicexml documents | |
US20030091176A1 (en) | Communication system and method for establishing an internet connection by means of a telephone | |
Gupta et al. | Dawn: Dynamic aural web navigation | |
Chirathivat et al. | Internet explorer smart toolbar for the blind | |
KR20010017323A (en) | Web browsing apparatus and method having language learning function | |
McTear et al. | More Advanced VoiceXML | |
Chandon | WebVoice: Speech Access to Traditional Web Content for Blind Users |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |