CN1354851A - 交互式服务所使用的标记语言及其方法 - Google Patents
交互式服务所使用的标记语言及其方法 Download PDFInfo
- Publication number
- CN1354851A CN1354851A CN99810096A CN99810096A CN1354851A CN 1354851 A CN1354851 A CN 1354851A CN 99810096 A CN99810096 A CN 99810096A CN 99810096 A CN99810096 A CN 99810096A CN 1354851 A CN1354851 A CN 1354851A
- Authority
- CN
- China
- Prior art keywords
- user
- input
- value
- prompt
- attribute
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
-
- 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
- G06F3/00—Input 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/16—Sound input; Sound output
-
- 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/42204—Arrangements at the exchange for service or number selection by voice
-
- 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/436—Arrangements for screening incoming calls, i.e. evaluating the characteristics of a call before deciding whether to answer it
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2201/00—Electronic components, circuits, software, systems or apparatus used in telephone systems
- H04M2201/60—Medium conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M2207/00—Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place
- H04M2207/20—Type of exchange or network, i.e. telephonic medium, in which the telephonic communication takes place hybrid systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/38—Graded-service arrangements, i.e. some subscribers prevented from establishing certain connections
- H04M3/382—Graded-service arrangements, i.e. some subscribers prevented from establishing certain connections using authorisation codes or passwords
-
- 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/42229—Personal communication services, i.e. services related to one subscriber independent of his terminal and/or location
-
- 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/44—Additional connecting arrangements for providing access to frequently-wanted subscribers, e.g. abbreviated dialling
-
- 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/46—Arrangements for calling a number of substations in a predetermined sequence until an answer is obtained
-
- 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/50—Centralised arrangements for answering calls; Centralised arrangements for recording messages for absent or busy subscribers ; Centralised arrangements for recording messages
- H04M3/53—Centralised arrangements for recording incoming messages, i.e. mailbox systems
- H04M3/5307—Centralised arrangements for recording incoming messages, i.e. mailbox systems for recording messages comprising any combination of audio and non-audio components
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明(图6)涉及提供交互式服务的一个语音浏览器。根据本发明的一个标记语言文档包括一个对话元素DIALOG(2),这个对话元素DIALOG(2)包括多个标记语言元素(3-26)。这多个标记语言元素中的每一个均可以用至少一个标记来识别。一个步骤元素STEP(11),被包括在对话元素中。这个步骤元素STEP包括一个提示元素PROMPT(4)和一个输入元素INPUT(9)。这个提示元素PROMPT(4)包括一个将被读给这个用户的一个通告。这个输入元素INPUT包括至少与一个用户输入相应的输入。根据本发明的一个方法包括步骤:产生具有多个元素(3-26)的一个标记语言文档,选择一个提示元素PROMPT(2),并且在提示元素PROMPT中定义将被读给这个用户的一个语音通信(14)。这个方法进一步包括选择一个输入元素INPUT(2),并且定义一个输入变量来保存这个用户所输入的数据。
Description
版权申明
本专利文档所公开的一部分包括了受版权保护的材料。这个版权所有者不反对任何人对该专利文档或者专利公开中的内容进行传真复制,当它出现在专利和商标局专利文件或者记录中时,但是另外,拥有所有的版权和类似的任何权利。
本发明一般涉及信息检索,更特别地,涉及允许一个用户访问来自一个信息源的信息的方法和系统。
在线电子信息服务已经越来越被具有个人计算机的个人利用来检索各种类型的信息。典型地,具有配备了一个调制解调器的个人计算机的一个用户拨号到一个服务提供者,例如一个互联网网关,一个在线服务(例如美国在线,CompuSercer,或者Prodigy),或者一个电子公告版,以下载表示这个用户所希望获得的信息的数据。
典型地,实时地从服务提供者处下载信息(即,在请求这个信息的同时,就下载这个信息)。以这个方式被下载的信息的示例包括电子版的报纸,书(即,一个百科全书),论文,金融信息等等。在任何一个示例中,这个信息可以包括文本的信息和图形的信息。
本发明的特征在后附权利要求书所公开。但是,通过联系附图并且参考下面的详细描述,可以更好地理解本发明的其它特征和本发明,其中:
图1是根据本发明的一个系统的一个实施方式的一个框图;
图2是从一个信息源检索信息的一个方法的一个流图;
图3是根据本发明的一个系统的另一个实施方式的一个示例性框图;
图4是图3系统的一个语音浏览器的一个框图;
图5a-5c是图4的语音浏览器所执行的一个例程的流图;
图6是一个示例性的标记语言文档;
图7是图6中标记语言文档的一个层次结构的一个图形示例;
图8是一个标记语言文档的一个示例性状态图;和
图9是一个标记语言文档的一个示例性应用的另一个示例性状态图。
在详细解释本实施例以前,应理解,本发明的应用或者使用不局限于附图和描述中所描述的各部分的结构和安排。应认识到,本发明的示例性实施方式可以用其它的实施方式、变化和修改来实现或者包括在其它的实施方式、变化和修改中,并且可以使用各种方法来实施和完成。进一步,除非另外指出,这里所采用的术语和表达方法之所以被选择用于描述本发明的示例性实施方式是为了读者的方便,而不具有任何局限性。
现在参考图,更特别地参考图1,显示了一个能使一个用户访问信息的系统100的一个框图。这个系统100一般包括一个或者多个网络访问装置102(仅显示了一个),一个电子网络104,和一个或者多个信息源或者内容服务提供者106(仅显示了一个)。
电子网络104经过一条线108被连接到网络访问装置102,网络访问装置102经过一条线110被连接到信息源106。线108和110可以包括,但是不局限于,一个电话线或者链路,一个ISDN线,一个同轴线,一个有线电视电缆,一个光纤线路,一个计算机网络线,一个数字用户线,或者类似的。替代地,网络访问装置102和信息源106可以通过无线的方式与电子网络进行通信。例如,电子网络104可以通过一个卫星通信系统,一个有线通信系统,或者一个无线通信系统向网络访问装置102提供信息。
系统100使用户能够在世界上的任何地方,经过任何合适的网络访问设备来访问信息。用户可以包括,但是不局限于,蜂窝用户,有线用户,寻呼用户,卫星通信用户,移动或者便携式电话用户,集群无线通信用户,计算机网络用户(即,互联网用户,内部网络用户,等等),办事处用户,和类似的用户。
优选地,用户可以使用语音输入或者命令来从信息源106访问信息。例如,用户可以访问最新的信息,例如新闻更新,指定城市的天气,交通状况,股票价格,日期信息,用户信息,地址信息,和股票市场指示符。这个系统也允许用户执行各种交易(即,订购鲜花,从饭馆订餐,购买和卖出股票,获得银行帐户余额信息,获得电话号码,接收到各种目的地的方向信息,等等)。
如图1中所显示的,一个用户利用系统100的网络访问装置102来与电子网络104进行通信和/或者连接到电子网络104。这个电子网络104根据用户发出的语音命令或者DTMF音来从信息源106检索信息。优选地,信息被保存在信息源106的一个数据库或者存储设备中(没有显示)。信息源106可以包括一个或者多个服务器计算机(没有显示)。这个信息源可以被集成到这个电子网络104中,或者可以远离这个电子网络104(即,在一个内容服务提供者设施中)。也应认识到,这个网络访问装置102,电子网络104,和信息源106可以被集成到一单个系统或者设备中。
信息源106的信息可以被经过任何合适的通信媒质所访问。这个信息源106可以被使用一个电子地址来标识,这个电子地址使用至少一个URL(全球资源定位器),一个URN(全球资源名字),一个IP(互联网协议)地址,一个电子邮件地址,一个设备地址(即一个寻呼机号码),一个直接点对点连接,一个存储器地址,等等中的一部分。应注意,一个URL可以包括:一个协议,一个域名字,一个路径,和一个文件名字。URL协议包括:“file:”用于访问被保存在一个本地存储媒质中的一个文件;“ftp:”用于访问保存在一个FTP(文件传输协议)服务器中的一个文件;“http:”用于访问一个HTML(超文本标记语言)文档;“gopher:”用于访问一个Gopher服务器;“mailto:”用于发送一个电子邮件消息;“news:”用于链接到一个Usenet新闻组;“telnet:”用于打开一个telnet会话;和“wais:”用于访问一个WAIS服务器。
一旦系统100的电子网络104从信息源106接收到信息,电子网络就向网络访问装置102发送这个信息。电子网络104可以包括一个开放的广域网,例如互联网,万维网(WWW),和/或者一个在线服务。电子网络104也可以包括,但是不局限于,一个内部网络,一个外部网络,一个局域网,一个电话网络,(即,一个公众交换电话网络),一个蜂窝电话网络,一个个人通信系统(PCS)网络,一个电视网络(即,一个有线电视系统),一个寻呼网络(即,一个本地寻呼网络),一个区域寻呼网络,一个国家的或者一个全球的寻呼网络,一个电子邮件系统,一个无线数据网络(即,一个卫星数据网络或者一个本地的无线数据网络),和/或者一个电信节点。
这个系统100的网络访问装置102允许这个用户访问(即,浏览和/或者听)从这个信息源检索到的信息。这个网络访问装置可以向这个用户提供信息,例如机器可以读取的数据,人类可以听懂的数据,音频或者语音通信,文本信息,图形或者图象数据,等等。这个网络访问装置的形式可以有各种各样,包括但是不局限于,一个电话,一个移动电话,一个办公室电话,一个家庭电话,一个收费公用电话,一个寻呼单元,一个无线单元,一个万维网电话,一个个人信息管理器(PIM),一个个人数字助理(PDA),一个通用计算机,一个网络电视,一个互联网电视,一个互联网电话,一个便携式无线设备,一个工作站,或者任何其它合适的通信设备。可以设想,这个网络访问装置可以被集成到电子网络中。例如,网络访问设备,电子网络,和/或者信息源可以驻留在一个个人计算机中。
网络访问装置102也可以包括一个语音或者万维网浏览器,例如一个Netscape Navigator万维网页面浏览器,一个Microsoft InternetExplorer万维网页面浏览器,等等。也可以设想,网络访问装置102可以包括一个光学扫描器或者条形编码阅读器来读取机器可以阅读的数据,磁性数据,光学数据,或者类似的数据,并且将这个数据传送到电子网络104。例如,网络访问装置可以读取或者扫描一个条形编码,然后向电子网络104提供被扫描的数据来访问信息源中的信息(即,饭馆的菜单,银行信息,一个万维网页面,天气信息,等等)。
图2显示了从一个目的地或者信息源106的数据库中检索信息的一个方法的一个流图。在模块150中,一个用户从一个网络访问装置接入到电子网络104。在电子网络在模块152中对这个输入呼叫进行应答后,电子网络可以试图证实这个用户是这个系统的一个用户和/或者用户使用其进行呼叫的网络访问装置的类型。例如,这个系统可以读取并且解码这个呼叫的自动号码标识(ANI)或者主叫线路标识(CLI),然后确定是否在一个被保存的ANI或者CLI用户列表中发现了这个呼叫的CLI。这个系统也可以通过检测这个用户的一个唯一语音模板(即,说话人验证)或者使用语音命令或者DTMF音而输入的一个PIN来标识一个用户。
在电子网络应答这个呼叫后,电子网络在模块154向主叫提供一个提示或者通告(即,“你好,这是您的个人代理。您有什么需要帮助吗?”)。电子网络也可以为这个呼叫设置语法(即,词汇)和个性(即,男性或者女性声音)。这个电子网络可以根据CLI,网络访问装置,或者用户的身份来载入语法和个性。例如,可以根据设备的类型(即,一个无线电话),呼叫者的性别(即,男性或者女性),语言的类型(即,英语,西班牙语,等等),和呼叫者的口音(即,一个纽约口音,一个南部口音,一个英国口音,等等)来设置或者载入语法和个性。也可以设想,用户或者电子网络可以根据电子网络所检测到的语音通信来改变个性和语法。
在模块156,电子网络等待这个用户提供与这个用户所希望的信息源的一个目的地相应的一个输入或者命令。输入可以是语音命令(即,语音)或者DTMF音。在电子网络接收到用户的输入后,电子网络在模块158建立到信息源的一个连接或者一个链路。优选地,电子网络根据这个用户的输入(即,语音或者DTMF音)来判断信息源的一个电子地址(即,URL,一个URN,一个IP地址,或者一个电子邮件地址)。可以根据至少一部分输入,使用一个查寻操作来从一个数据库中检索电子地址。
在模块160中,电子网络从信息源的目的地检索至少一部分信息。在模块162中,电子网络处理这个信息,然后,根据被检索的信息来向这个用户提供一个输出。这个输出可以包括一个语音通信,文本信息,和/或者图形信息。例如,电子网络可以使用语音-文本技术或者用专人录制的语音来提供一个语音图形。然后,这个过程进行到模块164或者模块154,如上面所描述的。应认识到,一个计算机可以执行上面所描述的方法。
现在参考图3,图3显示了使一个用户访问信息的、一个系统200的一个实施方式的一个示例性框图。系统200能够使一个用户能够从世界上的任何一个位置,经过一个合适的通信设备来访问信息。系统200可以访问黄页,说明书,交通,地址,电影,音乐会,航空信息,天气信息,新闻报道,金融信息,鲜花,个人数据,日期数据,地址数据,礼物,书,等等。这个用户可以执行一系列交易,而不需要结束到这个系统的初始呼叫。例如,这个用户可以访问一个新闻更新以及获得天气信息,而都不需要拨打附加的号码或者结束开始的呼叫。系统200也使应用开发者能够使用一个标记语言建立交互式语言应用,例如摩托罗拉公司所开发的VoxMLTM语音标记语言。
这个系统200一般包括一个或者多个通信设备或者网络访问装置201,202,203,和204(所显示的为4个)。一个电子网络206,和一个或者多个信息源,例如内容服务提供者208和209(显示的为2个)和标记语言服务器。这个用户可以使用语音命令或者DTMF音来从信息源检索信息。
这个用户可以从这个通信设备202通过拨打一个简单的直接访问电话号码(即,一个外部电话交换机号码,一个本地电话号码,或者一个长途免费电话号码或者PBX)来访问电子网络206。这个用户也可以经过互联网从通信设备204访问电子网络206,经过一个寻呼网络211从通信设备203访问电子网络206,以及经过一个局域网(LAN)、一个广域网(WAN)或者一个电子邮件连接从通信设备201访问电子网络206。
这些通信设备可以包括,但是不局限于,陆地或者有线设备(即,家庭电话,工作电话,计算机,传真机,收费公用电话),无线设备(即,预定电话,中继无线设备,手持设备,PIM,PDA,等等),网络访问设备(即,计算机),寻呼机,等等。这些通信设备也可以包括一个麦克风,一个扬声器,和/或者一个显示器。
如图3中所显示的,这个系统200的电子网络206包括一个电信网络210和一个通信节点212。优选地,这个电信网络210连接到这个通信节点212,其连接经过一个高速数据链路,例如,一个T1电话线路,一个局域网(LAN),或者一个广域网(WAN)。优选地,电信网络210包括一个公众交换电话网络(PSTN)214和一个电信公司的公用通信网(carrier network)216。电信网络210也可以包括国际或者本地交换机电话网络,有线电视网络,局际交换电信公司公用通信网(IXC)或者长途电信公司公用通信网,蜂窝网络(即,移动交换中心(MSC)),PBX,卫星系统,和其它交换中心例如传统的或者集群无线系统(没有显示),等等。
电信网络210的PSTN 214可以包括各种类型的通信设备或者装置,例如ATM网络,光纤分布式数据网络(FDDI),T1线,有线电视网络和类似的网络。电信网络210的电信公司的公用通信网216一般包括一个电话交换系统或者中心办公室218。应认识到,电信公司的公用通信网216可以是能够将呼叫路由到通信节点212的任何合适的系统,并且电话交换系统218可以是任何合适的有线或者无线交换系统。
优选地,通信节点212系统200可以被配置成从电信公司的公用通信网216和互联网220,例如WWW接收和处理进入呼叫。这个通信节点可以从寻呼网络211接收寻呼并且对这个寻呼进行处理,也能够从LAN,WAN,或者电子邮件连接中接收消息(即,电子邮件)并且处理这个消息。
当一个用户从通信设备202拨打进入到电子网络206,这个电信公司的公用通信网216经过一个或者多个电话线路或者中继线路将来自PSTN 214来的呼叫路由到通信节点212。优选地,进入呼叫通过一个或者多个“888”或者“800”INWATS中继线路,本地交换机中继电路,或者长途中继线路进入到电信公司的公用通信网216。也可以设想,可以从一个有线电缆网络,一个蜂窝系统,或者任何其它合适的系统接收这个进入呼叫。
这个通信节点212对来自电信公司的公用通信网216的进入呼叫进行应答,并且从一个数据库,服务器,或者浏览器来检索一个合适的通告(即,一个欢迎致词)。然后,节点212将这个通告播放给这个打电话者。对从这个用户来的音频输入作出响应,这个通信节点212从一个或者多个信息源,例如内容服务提供者208和209或者标记语言服务器,的一个目的地或者数据库中检索信息。在通信节点212接收到信息后,根据被检索的信息,通信节点212向这个用户提供一个响应。
这个节点212可以提供各种对话声音个性(即,一个女性的声音,一个男性的声音,等等),并且能够实现各种语法(即,词汇库)来检测并且对这个用户来的输入作出响应。另外,这个通信节点可以根据一个用户的简档文件,用户的通信设备,和/或者用户的语音模板来自动地选择各种语音识别模型(即,一个英语模型,一个西班牙语模型,一个英语口音模型,等等)。这个通信节点212也可以允许这个用户选择一个特定的语音识别模型。
当一个用户从已经在这个系统中登记的一个通信设备(即,一个用户的家庭电话,工作电话,蜂窝电话,等等)来访问电子网络206时,这个通信节点212可以旁路一个用户屏幕选项,并且自动地通过使用自动号码识别(ANI)或者呼叫线路识别(CLI)来标识这个用户(或者用户通信设备的类型)。在这个通信节点已经证实这个呼叫后,这个节点向这个用户提供一个问候语(即,“您好,这是您的个人代理,玛雅。欢迎您,鲍勃,您需要什么帮助吗?”)。然后,这个通信节点进入到与用户的一个对话中,并且这个用户选择通信节点所提供的各种信息。
当这个用户从没有被登记到这个系统的一个通信设备(即,一个收费公用电话,一个不是用户电话的电话,等等)来访问电子网络206时,这个节点应答这个呼叫,并且提示这个用户使用语音命令或者DTMF音来输入他的或者她的名字和/或者一个个人标识号码(PIN)。这个节点也可以利用说话者验证来标识这个用户的一个特定语音模板。如果这个节点授权这个用户访问该系统,该节点向这个用户提供一个个人问候语(即,“您好,这是您的个人代理,玛雅。欢迎您,安,您需要什么帮助吗?”)。然后,这个节点进入到与这个用户的一个对话中,并且这个用户能够选择该节点所提供的各种信息。如果这个节点不能够认识或者证实该用户的名字和/或者PIN,这个用户就被路由到一个客户服务处。
如图3所显示的,优选地,这个通信节点212包括一个电话交换机230,一个语音或者音频识别(VRU)客户232,一个语音识别服务器(VRU)234,一个控制器或者呼叫控制单元236,一个操作维护办公室(OAM)或者一个计费服务单元238,一个局域网(LAN)240,一个应用服务器单元242,一个数据库服务器单元244,一个网关服务器或者一个路由器防火墙服务器246,一个用互联网来承载语音的(VOIP)协议单元248,一个语音浏览器250,一个标记语言服务器251,和一个寻呼服务器252。尽管所显示的通信节点206是由各种类型的、独立的和分离的单元或者设备构成的,但是,通信节点212可以由一个或者多个集成电路,微处理器,微控制器,或者被编程成可以执行与所显示设备或者单元执行的操作或者功能等效的操作或者功能等等计算机来实现。也应认识到,可以使用硬件部件和电路设计的形式,或者也可以使用软件或者计算机程序的形式,或者其混合的形式,来实现通信节点212。
通信节点212可以位于世界上或者美国(例如,芝加哥,伊利诺斯)的不同地理位置。通信节点212可以被一个或者多个运营商(即,Sprint PCS,Qwest Communications,MCI,等等)或者独立的服务提供者,例如,摩托罗拉公司,来操作。
通信节点212可以与电信公司的公用通信网216位于一起或者被集成在一起(即,网络的一个集成部分),或者可以位于远离电信公司的公用通信网216的位置。也可以设想,通信节点212也可以被集成在一个通信设备中,例如一个有线或者无线电话,一个无线设备,一个个人计算机,一个PDA,一个PIM等等。在这个结构中,这个通信设备可以被编程成直接连接或者链接到一个信息源。
通信节点212也可以被构造成一个独立的系统,来允许用户经过一个长途免费电话号码或者一个直接拨打电话号码来直接拨号进入通信节点。另外,通信节点212也可以包括一个电话交换机(即,一个PBX,或者中央交换机单元),一个企业网络,或者一个局域网。在这个结构中,系统200可以被实现成当这个用户拿起了一个通信设备,例如电话时,自动地将一个用户连接到通信节点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是一个交叉连接交换机,例如从位于MA 02601,Hyannis,255Independence Drive的Excel交换公司获得的Model No.LNX。应认识到,电话交换机230可以是任何合适的交换机。
优选地,通信节点212的VRU客户232连接到VRU服务器234和LAN 240。VRU客户232处理从这个用户来的语音通信,DTMF音,寻呼,和消息(即,电子邮件)。在从这个用户接收到语音通信后,VRU客户232将语音通信路由到VRU服务器234。当这个VRU客户232检测到DTMF音后,VRU客户232向这个呼叫控制单元236发送一个命令。应认识到,VRU客户232可以与VRU服务器集成在一起。
优选地,VRU客户232包括一个计算机,例如,与Windows NT兼容的、其硬件可以将独立的电话线路直接连接到交换机230的计算机。优选地,VRU客户包括一个微处理器,随机访问存储器,只读存储器,一个T1或者ISDN接口板,和一个或者多个语音通信处理板(没有显示)。优选地,VRU客户232的语音通信处理器是从位于N.J.07054,Parsippany,1515 Route 10的Dialogic公司可以获得的对话板,Model No.Antares。语音通信板包括具有用于检测一个语音模板的一个词汇表(即,一个关键字或者短语)的一个语音识别引擎。这个语音识别引擎优选是可以从位于California 94025,Menlo Park,1380Willow Road的Nuance Communications公司可以获得的一个RecServer软件包。
VRU客户232也包括一个回波抵消器(没有显示)来减少或者抵消从PSTN 214发送来的、因为混合线圈阻抗不平衡而引起的、文本到语音或者播放回波。优选地,回波抵消器包括在从Dialogic公司获得的一个Antares板支持软件包中。
优选地,通信节点212的呼叫控制单元236连接到LAN 240。呼叫控制单元236将电话交换机230建立成将进入呼叫连接到VRU客户232。这个呼叫控制单元也经过互联网220建立到节点212的输入呼叫或者寻呼,并且经过寻呼网络203和电子邮件系统213建立从通信设备201和203发送来的寻呼和消息。优选地,这个控制单元236包括一个计算机,例如与Windows NT兼容的一个计算机。
通信节点212的LAN 240允许节点212的各种部件和设备相互经过一个双绞线,一个光纤,一个同轴电缆,或者类似的来进行通信。LAN240可以使用以太网,令牌环,或者其它合适的协议类型。优选地,LAN240是一个每秒100M比特的以太网交换机,这可以是从位于California,San Jose的Cisco System公司获得的。应认识到,LAN 240可以包括任何合适的网络系统,并且通信节点212可以包括多个LAN。
通信节点212的VRU服务器234被连接到VRU客户232和LAN240。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是一个从位于Mass.01803,Burlington,52 Third Avenue的Lernout和Hauspie SpeechProduct NV获得的TTS 2000软件包。
VRU服务器234的ASR单元254提供对从这个用户来的语音输入或者通信进行与说话者无关的自动语音识别。可以设想,ASR单元254可以包括与说话者相关的语音识别。ASR单元254处理从这个用户来的语音输入,来确定一个词或者一个语音模板是否与任何被保存在数据库服务器单元244中的、或者从语音浏览器下载的语法或者词汇库匹配。当ASR单元254从语音输入中标识出一个被选择的语音模板时,ASR单元254发送一个输出信号来实现与这个被识别语音模板相关的特定功能。优选地,ASR单元254是一个与说话者无关的、可以从Nuance Communications公司获得的语音识别软件包,Model No.RecServer。可以设想,ASR单元254可以是任何合适的、能够检测来自一个用户的语音通信的语音识别单元。
VRU服务器234的STT单元256接收来自这个用户的语音输入或者通信,并且将这个语音输入转换为文本信息(即,一个文本消息)。这个文本信息可以被发送到或者被路由到通信设备201,202,203和204,内容服务提供者208和209,标记语言服务器,语音浏览器,和应用服务器242。优选地,STT单元256是可以从位于MA 02160-9803,Newton,320 Nevada Street的Dragon Systems公司获得的一个自然声说话软件包。
优选地,通信节点212的VOIP单元248被连接到电话交换机230和LAN 240。VOIP单元248允许一个用户使用语音命令经过互联网220来访问节点212。VOIP单元240可以接收经过互联网220被发送的VOIP协议(即,H.323协议),并且将这个VOIP协议转换为语音信息或者数据。然后,这个语音信息可以经过VRU客户232被读给这个用户。VOIP单元248也可以接收来自这个用户的语音输入或者通信,并且将这个语音输入转换为可以经过互联网220被发送的一个VOIP协议。优选地,VOIP单元248是可以从Dialogic公司获得的一个语音网络软件包。应认识到,VOIP设备可以被包括在一个通信设备中。
这个通信节点212也可以包括一个检测单元260。优选地,这个检测单元260是检测来自这个用户的进入音频输入或者通信或者DTMF音的、一个短语或者关键字搜索仪。优选地,这个检测单元260可以被包括在交换机230中,但是也可以被包括在VRU客户232,电信公司的交换机216,或者VRU服务器256中。优选地,检测单元260被包括在可以从Nuance Communications公司获得的一个RecServer软件包中。
检测单元260记录来自这个用户的音频输入,并且将这个音频输入与被保存在数据库服务器单元244中的词汇库或者语法相比。在这个用户连接到节点212以后,这个检测单元260连续检测用户的音频输入来寻找一个关键短语或者字。当检测单元260检测到这个关键短语或者字时,VRU客户232将一个预记录的消息播放给这个用户。然后,VRU客户232对这个用户所提供的音频输入作出响应。
优选地,通信节点212的计费服务器单元238连接到LAN 240。这个计费服务器单元238可以记录关于这个用户对通信节点212的使用的数据(即,呼叫的时间,这个用户的访问特征,等等)。在完成了一个用户的呼叫后,这个呼叫控制单元236向这个计费服务器单元238发送数据。这个数据随后可以被这个计费服务器单元238所处理,以准备客户帐单。这个计费服务器单元238可以使用通信设备的ANI或者CLI来正确地对这个用户进行计费。优选地,这个计费服务器单元238包括一个与Windows NT兼容的计算机。
优选地,通信节点212的网关服务器单元246被连接到LAN 240和互联网220。网关服务器单元246经过互联网220提供对内容服务提供者208和标记语言服务器257的访问。网关服务器单元246也允许用户经过互联网220从这个通信设备204访问通信节点212。网关单元246也可以进一步用作一个防火墙,来控制授权用户对通信节点212的访问。优选地,网关单元246是可以从Cisco Systems公司获得的一个Cisco路由器。
优选地,通信节点212的数据库服务器244被连接到LAN 240。优选地,数据库服务器单元244包括多个存储区域来保存涉及用户,语言词汇库,对话,个性,用户输入的数据,和其它信息的数据。优选地,数据库服务器单元244包括了一个个人文件或者地址本。这个个人文件地址本可以包括系统工作所需要的信息,包括用户的参考号码,个人访问代码,个人帐户信息,联系地址,和电话号码,等等。优选地,数据库服务器单元244是一个计算机,例如一个与Windows NT兼容的计算机。
优选地,通信节点212的应用服务器242被连接到LAN 240和内容服务提供者209。应用服务器242允许通信节点212来从信息源,例如内容服务提供者和标记语言服务器,的一个目的地访问信息。例如,应用服务器可以从信息源的一个目的地检索信息(即,天气预报,股票信息,交通预报,饭馆,鲜花店,银行,等等)。应用服务器242处理被检索的信息,并且向这个VRU服务器234和语音浏览器250提供信息。VRU服务器234可以根据信息使用文本到语音合成或者人类记录语音来向这个用户提供一个音频通告。应用服务器242也可以将从用户接收的任务或者请求(即,交易信息)发送到信息源(即,订购一个匹萨饼的请求)。应用服务器242也可以根据一个语音识别输出从VRU服务器234接收用户输入。优选地,语音服务器是一个计算机,例如一个与Windows NT兼容的计算机。
优选地,通信节点212的标记语言服务器251被连接到LAN 240。标记语言服务器251包括一个数据库,脚本(script),和标记语言文档或者页面。优选地,标记语言服务器251是一个计算机,例如一个与Windows NT兼容的计算机。也应认识到,标记语言服务器251可以是一个互联网服务器(即,一个Sun Microsystems服务器)。
优选地,通信节点212的寻呼服务器252被连接到LAN 240和寻呼网络211。寻呼服务器252在LAN 240和寻呼网络之间对寻呼进行路由。优选地,寻呼服务器252是一个计算机,例如一个与Windows 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,并且内容服务提供者209经过互联网220连接到通信节点212的网关服务器246。内容服务器提供者209可以保存各种信息,例如新闻,天气预报,交通状况等等。内容服务提供者209和208可以包括一个服务器来操作形式为一个标记语言的万维网页面或者文档。内容服务提供者208和209也可以包括一个数据库,脚本,和/或者标记语言文档或者页面。这个脚本可以包括图象,音频,语法,计算机程序,等等。内容服务提供者执行合适的服务器软件来向语音浏览器发送被请求的信息。
现在参考图4,显示了通信节点212的语音浏览器250的一个框图。这个语音浏览器250一般包括一个网络访问单元300,一个分析单元302,一个解释器单元304,和一个状态机单元306。尽管所显示的语音浏览器可以由各种类型独立的和分离的单元或者设备构成,但是,应认识到,语音浏览器250可以用硬件部件和电路设计,软件或者计算机程序,或者其混合来实现。
语音浏览器250的网络访问单元300被连接到分析器302和解释器304。网络访问单元300也被连接到通信节点212的LAN 240。网络访问单元300从信息源检索信息,包括标记语言文档,音频采样和语法。
语音浏览器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 <dp n="d17"/> (#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 <dp n="d18"/> (#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 NMOTOKEN #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 NMTOKEN #REQUIRED> <!ELEMENT rename EMPTY> <dp n="d19"/> <!ATTLIST rename varname NMTOKEN #REQUIRED recname NMTOKEN #REQUIRED> <!ELEMENT case EMPTY> <!ATTLIST case value CDATA #IMPLIED next CDATA #IMPLIED 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中,语音浏览器在模块508的一个字典中查寻针对这个用户的发音。这个字典可以被保存在这个系统的一个数据库中,或者可以被保存在一个外部的数据库中(即,语音浏览器可以从这个处理器或者从互联网访问一个字典)。
在模块510中,语音浏览器根据来自字典的发音和发音规则来产生针对这个用户输入的语法。从Nuance Communications公司可以获得的一个软件例程,Model No.RecServer可以被用于产生这个语法。在模块512中,这个语法被发送到VRU服务器。然后,语音浏览器在模块506中可以尝试将这个语法与用户输入进行匹配。
在语音浏览器在模块408中检测到或者从这个用户收集了一个输入后,语音浏览器确定在模块410中是否存在一个错误。如果语音浏览器难以识别出来自这个用户的输入,或者检测到一个识别错误,一个时间溢出错误,等等,在模块414中,就向这个用户播放一个合适的错误消息。例如,如果语音浏览器检测到从这个用户输入了太多的语音,或者识别率太低了,就经过这个VRU服务器向这个用户播放一个提示(即,“抱歉,我不能够听懂你的话”)。如果这个语音浏览器接收到不希望的DTMF音,就经过VRU服务器向这个用户播放一个提示(即,“我听到的是单音。请说出你的响应”)。如果这个语音浏览器没有从这个用户检测到任何语音,就将一个提示读给这个用户(即,“我听不到你说的话”)。
在模块416中,语音浏览器确定在错误响应或者元素中是否规定了一个re-prompt。如果在模块416中,需要将一个re-prompt播放给这个用户,这个过程进行到模块406,如上面所描述的。如果在模块416中,不将re-prompt播放给这个用户,这个语音浏览器在模块420中确定在错误响应中规定了下一个步骤元素。如果在模块420中,在错误响应中规定了另一个步骤元素,这个过程进行到模块402,如上面所描述的。如果在模块420中,在错误响应中没有规定另一个步骤元素,这个过程就进行到模块422。
如果在模块410中,语音浏览器没有检测到一个识别错误,语音浏览器在模块412中,确定这个用户是否请求了帮助。如果这个用户请求了帮助,在模块424中,就向这个用户播放一个合适的帮助响应(即,“请输入或者说出你的个人身份号码”)。
在模块425中,这个语音浏览器确定在帮助响应或者帮助中是否规定了一个re-prompt。如果在模块425中,在帮助响应中规定了一个re-prompt,这个过程进行到模块406,如上面所描述的。如果在模块425中,在帮助响应中没有规定一个re-prompt,语音浏览器就在模块426中确定在帮助响应中是否规定了下一个步骤元素。如果在模块426中,在帮助响应中规定了另一个步骤元素,这个过程就进行到模块402,如上面所描述的。如果在模块426中,在帮助响应中没有规定另一个步骤元素,这个过程进行到模块428。
在模块430中,语音浏览器确定这个用户是否指出了一个取消请求。如果这个语音浏览器在模块430中,从用户输入中检测到一个取消请求,就在模块434中向这个用户播放一个合适的取消消息(即,“您真的希望退出并且返回到主菜单?”)。
在模块436中,然后,语音浏览器确定在取消响应或者元素中是否规定了下一个步骤元素。如果在模块436中,在取消响应中规定了另一个步骤元素,这个过程进行到模块448。如果在模块436中,在错误响应中没有规定另一个步骤元素,这个过程就进行到模块422。
如果在模块430中没有检测到一个取消请求,语音浏览器在模块432中确定是否有下一个步骤元素。在模块440中,语音浏览器确定是否在下一个步骤元素中规定了一个确认。如果在模块440中,在步骤元素中没有规定一个确认,语音浏览器在模块442中就将目前步骤元素设置成下一个步骤元素,然后在模块444中确定下一个步骤元素是否在相同的页面中。
如果在模块444中,下一个步骤元素与目前步骤元素在相同的页面中,这个过程就进行到模块446。如果在模块444中,下一个步骤元素与目前步骤元素没有位于相同的页面,这个过程就进行到模块448。
如果在模块440中,在下一个步骤元素中规定了一个确认,在模块450中,就向这个用户播放一个确认响应。然后,这个语音浏览器在模块452中,确定在这个信息中是否规定了一个证实(即,一个标记语言文档)。如果在模块452中,在这个信息中没有规定一个证实,如上面所描述的,这个过程就进行到模块442。如果在模块452中,规定了一个证实,这个语音浏览器在模块454中,从这个用户识别出响应,然后在模块456中,确定这个响应是否是肯定的。
如果在模块456中,语音浏览器接收一个肯定性的响应,这个过程就进行到模块442,如上面所描述的。如果这个语音浏览器在模块456中没有从这个用户接收一个肯定性的响应,这个过程就进行到模块448。
下面的文本描述了通信节点212所处理的一个示例性标记语言。优选地,这个标记语言包括文本,被记录的声音采样,导航性的控制,和语音应用的输入控制,如下面将要描述的。标记语言让系统设计者或者服务的开发人员或者内容服务提供者产生应用程序,来命令语音浏览器提供一个所希望的用户交互式语音服务。标记语言也让设计者动态地定制其内容。例如,设计者可以提供一个最新的新闻,天气预报,交通状况,等等。
标记语言可以被设计成表示控制流,状态管理,和通信节点212和用户之间的信息流内容。语言结构可以被特殊设计成语音应用,优选地,标记语言被以对话为单元来设计和发送。
标记语言可以包括描述一个文档或者页面的结构的元素,提供词和短语的发音,和将标记放置在文本中以控制交互式语音服务。这个标记语言也提供元素来控制短语,重音,音调,说话的速度,和其它特征。标记语言文档优选是被保存在信息源的数据库中,例如内容服务提供者208和209和标记语言服务器251和257中。
图6显示通信节点的语音浏览器可以处理的一个示例性标记语言文档。这个标记语言文档具有一个层次性结构,其中每一个元素(除了对话元素)被另一个元素所包括。另一些元素之间的元素被定义成树的孩子或者一个较低的元素。图7显示了图6的标记语言文档的一个树型结构。
如图6所显示的,标记语言文档在括号之间的实际元素包括标记,用<>符号所表示。标记语言包括开始标记(“<>”)和结束标记(“</>”)。一个开始标记表示一个标记元素开始,并且结束标记表示相应的标记元素结束。例如,在如图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>请选择一种饮料。 </PROMPT> <HELP>你可以选择coke,pepsi,7 up, 或root beer.</HELP> <INPUT TYPE="optionlist"NAME="drink"> <OPTION NEXT="#confirm">coke</OPTION> <OPTION NEXT="#confirm">pepsi</OPTION> <OPTION NEXT="#confirm">7 up</OPTION> <dp n="d25"/> <OPTION NEXT="#confirm">root beer</OPTION> </INPUT> </STEP> <STEP NAME="confirm"> <PROMPT>你要的是<VALUE NAME="drink"/>. </PROMPT> </STEP> </DIALOG>
当语音浏览器解释上述标记语言文档时,语音浏览器开始执行称作“init”的步骤元素STEP。首先,这个用户将听到提示提示元素PROMPT所包括的文本(即,“请选择一种饮料”)。如果这个用户在进行选择以前响应“帮助”,这个用户将听到帮助元素HELP所包括的文本(即,“您可以选择coke,pepsi,7up或root beer”)。在用户进行了选择后,这个语音浏览器将执行被称作“confirm”的步骤元素STEP,这个元素将读取这个用户的选择并且然后退出这个应用。应注意,在一个标记语言文档中的步骤元素STEP是根据用户的响应来被执行的,而不是根据在源文件中步骤元素STEP的顺序来执行的。尽管“init”的步骤元素STEP的定义出现在“confirm”的步骤元素STEP的定义前,但是它们的定义顺序不会对语音浏览器执行它们的顺序产生任何影响。
下面的文本描述了标记语言元素,它们的属性,和它们的语法。标记语言的对话元素DIALOG(即,<DIALOG[BARGEIN="value"]>标记语言文档</DIALOG>)是标记语言的基本元素。对话元素DIALOG包括一个BARGEIN属性。BARGEIN属性的值可以是“Y”和“N”。BARGEIN属性允许根据来自这个用户的一个预定响应(即,唤醒),在任何时刻来中断这个对话元素DIALOG。
对话元素DIALOG定义了一个应用内的上下文的基本单元,典型地,每一个地址(即,URL)具有一个对话元素DIALOG。每一个对话元素DIALOG包括一个称作“init”的步骤元素STEP。对对话元素DIALOG的执行从称作“init”的STEP开始。
一个标记语言文档或者页面的下述示例包括对话元素DIALOG。
<DIALOG> <STEP NAME="init"> <PROMPT>欢迎使用VoxMLTM语音标记语言。 </PROMPT> </STEP> </DIALOG>
在上述示例中,对话元素DIALOG包括称作“init”的一单个步骤元素STEP。这个步骤元素STEP具有将经过文本到语音单元252被读给这个用户的一单个提示元素PROMPT。因为在步骤元素STEP中没有定义输入元素INPUT,所以在读了提示元素PROMPT后,就立即结束标记语言应用。
标记语言的步骤元素STEP(即,<STEP NAME="value"[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>请在1到10之间对Monty Python′s Flying Circus评级 </PROMPT> <INPUT NAME="python"TYPE="number" NEXT="#drwho"/> <dp n="d27"/> </STEP>
上面的示例显示了收集这个用户关于几个公众电视节目中一个的观点的一个步骤元素STEP。步骤元素STEP使用了PARENT属性来与其它TV-节目-等级步骤元素STEP共享一个公共的帮助元素HELP和错误元素ERROR集合。例如,PARENT属性可以包括一个等级1,5,和10将意味着什么的一个帮助元素HELP,一个公共的error消息将提醒这个用户应输入一个数字形式的等级。
标记语言的提示元素PROMPT(即,<PROMPT>text</PROMPT>)被用于定义将提供给这个用户的内容(即,文本或者一个音频文件)。典型地,提示元素PROMPT将包括经过文本到语音单元被读给这个用户的文本和几个标记元素(即,BREAK或者EMP元素,如下面所描述的)。
提示元素PROMPT可以被包括在一个步骤元素STEP或者一个CLASS元素中。下面的示例显示了标记语言文档或者页面中对提示元素PROMPT的使用。
<STEP NAME="init"> <PROMPT>你几岁了?</PROMPT> <INPUT TYPE="number"NAME="age" NEXT="#weight"/> </STEP>
在上面所显示的示例中,文本“你几岁了?”将经过文本到语音单元被播放给这个用户,然后,这个语音浏览器将等待这个用户说出他的或者她的年龄。
标记语言的输入元素INPUT被用于定义每一个步骤元素STEP内的一个合法用户输入。这个输入元素INPUT被包括在一个步骤元素STEP内。标记语言的输入元素INPUT包括一个INPUT属性。INPUT属性的值可以是一个DATE输入,一个DIGIT输入,一个FORM输入,一个GRAMMAR输入,一个HIDDEN输入,一个MONEY输入,一个NONE元素,一个NUMBER输入,一个OPTIONLIST输入,一个PHONE输入,一个PROFILE输入,一个RECORD输入,一个TIME输入,和一个YORN元素。
标记语言的INPUT属性的DATE输入(即,<INPUTTYPE="DATE"NAME="value"NEXT="value "[NEXTMETHOD="value"][TIsMEOUT="value"]/>)被用于从这个用户收集一个日历日期。这个DATE输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个STEP地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post(即,到一个Java描述程序或者一个标记语言服务器的一个输入),TIMEOUT属性的值可以是一个以毫秒为单位的数。
下面的示例显示了在一个标记语言文档中对DATE输入的使用。
<STEP NAME="init"> <PROMPT>你的生日是几号?</PROMPT> <INPUT TYPE="date"NAME="dob"NEXT="#soc"/> </STEP>
在上面的示例中,DATE输入被用于收集用户的生日,将这个生日保存在一个变量“dob”中,然后,到称作一个“soc”的一个步骤元素STEP。这个DATE生日利用了一个输入语法来解释用户的响应,并且以一个标准格式来保存用户的响应。
DATE输入语法可以解释以几个不同格式来表达的日期。一个完全定义的日期,例如,“199年7月10日,下星期五”被保存为“07101998|7月|10|1998|星期五|下一个”。如果用户的响应不能够决定日期,响应中模糊的部分将被从日期中忽略。响应“7月4日”将被保存为“????????|7月|4|||”,“明天”变为“????????|||||明天”,“15日”被保存为“????????||15|||”,和“星期一”被保存为“????????||||星期一|”。
标记语言的INPUT属性的DIGITS输入(即,<INPUTTYPE="DIGITS" NAME="value" NEXT="value"[NEXTMETHOD="value"] [TIMEOUT="value"] [MIN="value"][MAX="value"]/>)被用于从这个用户收集一系列数字。DIGITS输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,一个TIMEOUT属性,一个MIN属性,和一个MAX属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个STEP地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。MIN和MAX的属性值可以分别是最小的和最大的整数。
下面的示例显示了在一个标记语言文档或者页面中对DIGITS输入的使用。
<STEP NAME="init"> <PROMPT>现在请说出你的个人身份号码.</PROMPT> <INPUT TYPE="digits"NAME="pin" NEXT="#doit"/> </STEP>
在上面的示例中,DIGITS输入被用于从这个用户收集数字,将这个数字保存在称作“pin”的一个变量中,然后,进行到称作“doit”的一个步骤元素STEP。如果这个用户对这个提示元素PROMPT作出响应,将说出“4 5 6”,值“456”将被保存在变量“pin”中。DIGITS输入可以收集从数字0(零)到9(九),但是不收集其它数字例如20(twenty)。为了收集两个数字的数(即,20(twenty)或者400(four-hundred)),NUMBER输入可以被使用,如下面进一步所描述的。
标记语言的INPUT属性的FORM输入(即,<INPUTTYPE="FORM" NAME="value" MEHOD="value"ACTION="value"TIMEOUT="value"/>被用于从这个用户收集输入,并且使用语音到文本单元将这个输入转换为文本,并且将这个文本发送到标记语言服务器。FORM输入可以包括一个NAME属性,一个NEXT属性,一个METHOD属性,一个ACTION属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个STEP地址(即,一个URL,指针或者存储器地址)。METHOD属性的值可以是一个get或者一个post,并且ACTION属性的值可以是指向在服务器上处理输入的一个描述的一个指针。TIMEOUT属性的值可以是以毫秒为单位的一个数。
FORM输入利用语音到文本单元将用户输入转换为文本。然后,用户输入被以一个标准的HTML<FORM>文本格式发送到标记语言服务器,以被在服务器上的一个描述所处理。如果这个用户说“JohnSmith”,然后,这个文本串“john smith”将被使用ACTION属性所指出的指针和地址,并且使用METHOD属性所指出的方法,以一个<FORM>格式来发送到服务器。
下面的示例显示了在一个标记语言文档中对FORM输入的使用。
<STEP NAME="order form"> <PROMPT>你想定购点什么?</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”的STEP中,将这个文本传递到地址http://www.test.com/cgi-bin/post-query,并且使用200毫秒的一个时间溢出值。
标记语言的INPUT属性的GRAMMAR输入(即,<INPUTTYPE=”GRAMMAR” SRC=”value” NEXT=”value”[NEXTMETHOD=”value”] [TIMEOUT=”value”]> RENAMEelements</INPUT>,or<INPUT TYPE=”GRAMMAR”SRC=”value”[TIMEOUT=”value”] [NEXT=”value”[NEXTMETHOD=”value”]]>RESPONSE elements</INPUT>)被用于规定一个输入语法,当解释用户的响应时。这个GRAMMAR输入包括一个SCR属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。SCR属性的值可以是一个语法地址(即,一个URL),和NEXT属性的值可以是下一个STEP地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
下面的示例显示了在一个标记语言文档中对GRAMMAR输入的使用。
<STEP NAME="init″> <PROMPT>说出信用卡到期的年份和月份</PROMPT> <INPUT TYPE="GRAMMAR" SRC="gram://.SomeGrammar/month/year" NEXT="#stepNineteen"/> </STEP>
上面的示例显示了使用GRAMMAR输入来产生与来自这个用户的一个月和年相应的一预定语法,将被解释的值保存在称作“month”和“year”的变量中,然后进行到称作“StepNineteen”的步骤。
标记语言的INPUT的HIDDEN输入(即,<INPUTTYPE="HIDDEN"NAME="value"VALUE="value"/>)被用于将一个值保存在一个变量中。HIDDEN输入包括一个NAME属性和一个VALUE属性。NAME属性的值可以是一个标识符,VALUE属性的值可以是一个文字符号值。
下面的示例显示了在一个标记语言文档中使用HIDDEN输入。
<STEP NAME="init"> <PROMPT>登录序列完成. 您准备好填定单了吗? </PROMPT> <INPUT TYPE="hidden"NAME="firstname" <dp n="d32"/> VALUE="Bill"/> <INPUT TYPE="hidden"NAME="lastname" VALUE="Cliton"/> <INPUT TYPE="hidden"NAME="favorite" VALUE="fries"/> <INPUT TYPE="optionlist"> <OPTION NEXT="#order">是的</OPTION> <OPTION NEXT="#wait">还没有</OPTION> </INPUT> </STEP>
在上面的示例中,HIDDEN输入被用于产生变量,并且将值分配给这些变量。在这个示例中,用户已经完成了登录序列,并且只要用户的身份已经被建立,就可以将特定信息保存在变量中。然后,这个信息可以在后面的应用中被使用,而不需要对数据库进行另一个访问。
标记语言的INPUT属性的MONEY输入(即,<INPUTTYPE="MONEY" NAME="value" NEXT="value"[NEXTMETHOD="value"] [TIMEOUT="value"/>)被用于从这个用户收集金钱数量。MONEY输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个步骤的地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
MONEY输入利用了一个输入语法来解释用户的响应,并且以一个标准的格式来保存响应。输入语法被用于解释各种表达金钱数量的方法。优选地,这个数据被以整数格式保存,以分为单位。“5分”被保存为“5”,“5元”被保存为“500”,和“1000元”被保存为“100000”。在单位模糊的情形下,语法假设为美元,其中将“1000”所保存的格式等同于这个用户说的是“1000美元”所保存的格式。
下面的示例显示了一个标记语言文档中对MONEY输入的使用。
<STEP NAME="init"> <PROMPT>你想存多少钱? </PROMPT> <INPUT TYPE="money"NAME="dep" NEXT="#deposit"/> </STEP>
如上面所显示的示例,MONEY输入被用于收集这个用户将在其帐户中存储的金钱数量,将这个数量保存在称作“dep”的一个变量中,然后,进行到称作“depost”的STEP中。
标记语言的INPUT属性的NONE输入(即,<INPUTTYPE="NONE"NEXT="value"[NEXTMETHOD="value"]/>)被用于规定这个语音浏览器将继续执行的下一个位置,当从这个用户中没有收集到响应时。NONE输入包括一个NEXT属性和一个NEXTMETHOD属性。NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post。
下面的示例显示了一个标记语言文档中对NONE输入的使用。
<STEP NAME="init"> <PROMPT>欢迎使用本系统.</PROMPT> <INPUT TYPE="none" NEXT="#mainmenu"/> </STEP>
如上面所显示的示例,NONE输入被用于跳到这个对话中的另一个步骤元素STEP,而不需要等待任何用户的响应。在这个示例中,紧接在主菜单的提示后,这个用户将听到短语“欢迎使用本系统”。
标记语言的INPUT属性的NUMBER输入(即,<INPUTTYPE="NUMBER" NAME=“value” NEXT="value"[NEXTMETHOD="value"][TIMEOUT="value"]/>)被用于从这个用户收集数字。NUMBER输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个步骤的地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
下面的示例显示了一个标记语言文档中对NUMBER输入的使用。
<STEP NAME="init"> <PROMPT>现在请说出你的年龄.</PROMPT> <INPUT TYPE="number"NAME="age" NEXT="#doit"/> </STEP>
如上面所显示的示例,NUMBER输入被用于从这个用户收集数字,将这个数保存在称作“age”的一个变量中,然后进行到称作“doit”的步骤元素STEP。如果对这个提示作出响应,这个用户说,“18岁”,值18将被保存在变量“age”中。NUMBER输入将收集数字,象20(即,二十),但是每个输入仅一个数。为了收集一系列数字,例如“四五六”(即,456),可以使用如上面所描述的DIGITS输入。
标记语言的INPUT属性的OPTIONLIST输入(即,<INPUTTYPE="OPTIONLIST"[NAME= “value”][TIMEOUT="value"][NEXT="value"[NEXTMETHOD="value"]]/>OPTION elements</INPUT>)被用于规定从其中这个用户可以进行选择的一个选项列表。OPTIONLIST输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个步骤的地址URL。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
OPTIONLIST输入被用于联系OPTION元素,这个OPTION元素定义了特定的用户响应和与每一个OPTION元素相关的行为。下面的示例显示了一个标记语言文档中对OPTIONLIST输入的使用。
<STEP NAME="init"> <PROMPT>您想喝点什么?</PROMPT> <INPUT TYPE="optionlist"> <dp n="d35"/> <OPIION NEXT="#coke">coke</OPTION> <OPTION NEXT="#coke">coca-cola</OPTION> <OPTION NEXT="#pepsi">pepsi</OPTION> <OPTION NEXT="#rc">rc</OPTION> </INPUT> </STEP>
如上面所显示的示例,语音浏览器将进行到不同的步骤元素STEP或者状态,这与这个用户选择了哪一种Cola相关。如果这个用户说“coke”,或者“coca-cola”,语音浏览器将进行到称作“coke”的步骤元素STEP。
标记语言的INPUT属性的PHONE输入(即,<INPUTTYPE="PHONE" NAME=“value” NEXT="value"[NEXTMETHOD="value"][TIMEOUT="value"]/>)被用于从这个用户收集电话号码。PHONE输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个步骤的地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
PHONE输入利用了一个输入语法来解释这个用户的响应并且以一个标准的格式来保存这个响应。这个电话号码被理解为一个数字串,并且被保存在一个变量中。如果这个用户说“一,八零零,七五九,八八八八”,这个响应将被保存为“18007598888”。
下面的示例显示了一个标记语言文档中对NUMBER输入的使用。
<STEP NAME="phone"> <PROMPT>你的电话号码?</PROMPT> <INPUT TYPE="phone"NAME="ph"NEXT="#fax"/> </STEP>
如上面所显示的示例,PHONE输入被用于从这个用户收集一个电话号码,将这个电话号码保存在称作“ph”的一个变量中,并且进行到称作“fax”的步骤元素STEP。
标记语言的INPUT属性的PROFILE输入(即,<INPUTTYPE="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>你好,<VALUE NAME="firstname"/>.请说出你 的个人识别号码。</PROMPT> <INPUT TYPE="digits"NAME="pin"NEXT="#verify"/> </STEP>
如上面所显示的示例,PROFILE输入被用于检索这个用户的第一名字,并且将这个字符串保存在称作“firstname”的一个变量中。包括这个名字的字符串然后被使用一个VALUE元素插入到PROMPT中,如下面进一步所描述的。当使用PROFILE输入,多于1个的输入元素INPUT可以被包括在相同的步骤元素STEP中,因为PROFILE输入不是一个交互的输入元素INPUT。每一个步骤元素STEP仅包括从这个用户接受一个响应的一个输入元素INPUT。
下面的表列表出了简档名字和他们相关子类型的合理组合简档名字 子类型 描述ADR POSTAL 邮件地址
PARCEL 包裹地址
HOME 家庭地址
WORK 工作地址
DOM 国内地址
INTL 国际地址BDAY None 生日EMAIL None 基本电子邮件地址
NOTIFICATION 通知邮件地址FN None 被格式化的名字GEO(经度;纬度) None 地理位置KEY None 公众加密密钥LABEL None 邮件标签MAILER None 被使用的电子邮件程序N FIRST 第一名字
LAST 最后的名字
MIDDLE 中间名字
PREFIX 前缀(例如,Mr.,Mrs.,Dr.)
SUFFIX 后缀(例如,Jr.,D.D.S,M.D.)ORG None 组织ROLE None 工作角色或者职位TEL HOME 家庭电话号码
WORK 工作电话号码
MSG 语音邮件电话号码
VOICE 语音呼叫电话号码
FAX 传真呼叫电话号码
CELL 蜂窝电话号码
PREF 优选电话号码TITLE None 职称TZ None 时区UID None 全球唯一IDURL None 主页的URLVERSION None
上面所显示的通知地址可以被用于发送一个用户紧急或者及时信息(即,向一个寻呼机发送信息)。优选地,通知地址的格式是这个用户所提供的一个电子邮件地址,当他的或者她的订阅被激活时。这个用户的通知地址将被保存为一个称作“n_addr”的变量。然后,这个应用使用这个电子邮件地址来向用户发送一个消息。为了从这个语音浏览器检索这个通知地址,在一个标记语言文档中,可以使用下面的方式来使用PROFILE输入:
<INPUT TYPE=”profile”NAME=”n_addr”
PROFANME=”email”SUBTYPE=”notification”/>标记语言的INPUT属性的RECORD输入(即,<INPUTTYPE=”RECORD” TIMEOUT=”value” STORAGE=”value”[FORMAT=”value”] [NAME=”value”] NEXT=”value”[NEXTMETHOD=”value”]/>)被用于记录一个音频采样,并且被用于将这个音频采样保存在一个规定的位置。RECORD输入包括一个TIMEOUT属性,一个FORMAT属性,一个NAME属性,一个STORAGE属性,一个NEXT属性,和一个NEXTMETHOD属性。TIMEOUT属性的值可以是以毫秒为单位的最大记录时间,FORMAT属性的值可以是一个被记录的音频格式(音频/波形),NAME属性的值可以是一个标识符,STORAGE属性的值可以是一个文件和一个请求,NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get,post和put。
下面的两个示例显示了在一个标记语言文档中的RECORD输入。
<STEP NAME="init"> <PROMPT>请说出您的姓名.</PROMPT> <INPUT TYPE="record"TIMEOUT="7000" NAME=”theName”STORAGE=”REQUEST” NEXT="http://wavhost/acceptwav.asp" NEXTMETHOD=”POST”/> </STEP>
在上面的示例中,RECORD输入被用于记录一7第二个音频采样,然后,将这个采样“POST邮寄”给称作“wavhost”的远程机器。对这个“POST”的响应将是一个对话,这个对话继续执行该应用。
<STEP NAME="init"> <PROMPT>请说出你的姓和名。</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属性的值可以是以毫秒为单位的一个数。
TIME输入利用了一个输入语法来解释这个用户的响应并且以一个标准的格式来保存这个响应。这个语法将理解各种形式的响应,包括12小时和24小时的规则。“下午4点零三分”变为“403P”。注意,“P”被后附在时间的后面。类似地,“早上十点十五分”变为“1015A”。“中午”被保存为“1200P”,以及“午夜”被存为“1200A”。军队时间,例如,“一千三百小时”变为“100P”。如果这个用户没有规定早上或者夜晚,变量中就不保存任何指示(即,“四点”被保存为“400”)。
下面的示例显示了一个标记语言文档中对TIME输入的使用。
<STEP NAME="init"> <PROMPT>你希望几点钟的唤醒呼叫?</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"]/>,或者<INPUT TYPE="YORN"NAME="value"[TIMEOUT="value"][NEXT="value"[NEXTMETHOD="value"]]>CASE element</INPUT>)被用于从这个用户收集“是”或者“否”的响应。YORN输入包括一个NAME属性,一个NEXT属性,一个NEXTMETHOD属性,和一个TIMEOUT属性。NAME属性的值可以是一个标识符,NEXT属性的值可以是下一个步骤的地址(即,一个URL)。NEXTMETHOD属性的值可以是一个get和一个post,TIMEOUT属性的值可以是以毫秒为单位的一个数。
YORN输入将多个肯定的响应和否定的响应映射到值“是”和“否”。YORN输入为肯定的响应保存值“是”,为否定的响应保存值“否”。使用一个输入语法来决定肯定的响应和否定的响应,这个输入语法将各种用户响应映射到一个合适的结果。
下面的示例显示了一个标记语言文档中对YORN输入的使用。
<STEP NAME="ask"> <dp n="d41"/> <PROMPT>现在发射导弹?</PROMPT> <INPUT TYPE="YORN"NAME="fire"NEXT="#confirm"/> </STEP>
如上面所显示的示例,YORN输入被用于从这个用户收集一个“是”或者“否”的响应,将这个响应保存在称作"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">1 </OPTION> <OPTION NEXT="#doit"VALUE="2">2 </OPTION> </INPUT>
如上面所显示的示例,显示了在输入元素INPUT中对选项元素OPTION的使用。在这个示例中,当这个用户用“1”响应时,第一选项元素OPTION将被执行,当这个用户用“2”响应时,第二OPTION元素。如果这个用户说“1”,称作"choice"的变量的值将是“1”,因为使用了VALUE属性。因为这个OPTIONLIST元素中两个OPTION元素的NEXT属性均是相同的,所以这个语音浏览器将进行到称作"doit"的步骤元素STEP,当识别出“1”或者“2”时。
<INPUT TYPE="optionlist"> <OPTION NEXT="http://localhost/vml/weather.asp">天气 </OPTION> <dp n="d42"/> <OPTION NEXT="http://localhost/vml/news.asp">新闻 </OPTION> <OPTION NEXT="http://localhost/vml/traffic.asp">交通 </OPTION> </INPUT>
如上面所显示的示例,显示了对选项元素OPTION的使用来选择3个应用之一。注意,NEXT属性中所使用的URL是全HTTP URL,并且这不象前一个示例,每一个选项元素OPTION具有一个唯一NEXT属性。
标记语言的选项元素OPTIONS(即,<OPTIONS/>)描述了在一给定步骤元素STEP内所期待的输入类型。OPTIONS元素可以在帮助元素HELP中被使用,来向这个用户提供一个完整的合理响应列表。选项元素OPTIONS可以被用于任何将这个文本读给用户的地方。选项元素OPTIONS可以被包括在一个PROMPT,EMP,PROS,HELP,ERROR,或者ACK元素中。
下面的示例显示了一个标记语言文档中对选项元素OPTIONS的使用。
<CLASS NAME="helpful"> <HELP>你的选择是:</OPTIONS></HELP> </CLASS>
如上面所显示的示例,显示了选项元素OPTIONS如何被用于构造一个“helpful”类。任何直接地或者非直接地将“helpful”命名为一个父母元素PARENT的步骤元素STEP通过说出这个消息来对一个helpful请求作出响应(即,“help”),其中选项元素OPTIONS扩展了关于在对话中,这个用户在这点可以说的描述。
标记语言的ACK元素(即,<ACK[CONFIRM="value"][BACKGROUND]="value"][REPROMPT]="value">text</ACK>)被用于确认步骤元素STEP之间的转变,这通常是一个用户响应的结果。ACK元素可以包括一个CONFIRM属性,一个BACKGROUND属性,和一个REPROMPT属性。BACKGROUND属性和REPROMPT属性的值可以是一个“是”和“否”,CONFIRM属性的值可以是如上面所描述的一个YORN属性。ACK元素可以被包括在一个步骤元素STEP或者一个CLASS元素中,如下面将进一步所描述的。
下面的示例显示了包括ACK元素的一个标记语言文档。
<STEP NAME="card_type"> <PROMPT>你用的是哪类信用卡?</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"我想你说的是 <VALUE NAME="type"/> <BREAK/>对吗? </ACK> </STEP>
如上面所显示的示例,ACK元素被用于证实这个用户对信用卡的选择。当这个元素被这个语音浏览器所解释,并且提示元素PROMPT被使用文本到语音帐户单元252读给这个用户。这个系统等待这个用户用“visa”,“mastercard”,或者“discover”进行响应,然后询问这个用户来证实这个卡的类型被正确地识别了。如果这个用户对ACK元素回答“是”,语音浏览器将进行到称作“exp”的步骤元素STEP。如果这个用户对ACK元素回答“否”,提示元素PROMPT的文本将再被读给这个用户,并允许这个用户再进行他的或者她的选择。然后,语音浏览器重新进入或者再执行步骤元素STEP。
标记语言的音频元素AUDIO(即,<AUDIO SRC="value"/>)被用于规定应被播放的一个音频文件。音频元素AUDIO包括一个SRC属性。SRC属性的值可以是一个音频文件URL。音频元素AUDIO可以被包括在一个PROMPT,EMP,PROS,HELP,ERROR,CANCEL,或者ACK元素中。
下面的示例显示了包括音频元素AUDIO的一个标记语言文档。
<PROMPT> 下面“嘀”声所响的时间是11:59pm <Audio SRC="http://localhost/sounds/beep.wav"/> </PROMPT>
在上面所显示的示例中,音频元素AUDIO被包括在一个提示元素PROMPT中。当被语音浏览器所解释时,一个提示(即,“下面“嘀”声所响的时间是11:59pm”)将被播放给这个用户,并且这个WAV文件“beep.wav”将被播放给这个用户,如音频元素AUDIO所规定的。
标记语言的中断元素BREAK(即,<BREAK[MSECS="value"|SIZE="value"]/>)被用于在被播放给用户的内容或者信息中插入一个暂停。中断元素BREAK包括一个MSEC属性和一个SIZE属性。MSEC属性的值可以包括以毫秒为单位的一个数,SIZE属性的值可以是无,小,中,和大。
当文本或者音频采样应被播放给这个用户时,可以使用中断元素BREAK。中断元素BREAK可以被包括在一个PROMPT,EMP,PROS,HELP,ERROR,CANCEL,或者ACK元素中。
下面的标记语言包括中断元素BREAK。
<PROMPT> 欢迎来到地球.<BREAK MSECS="250"/> 我能帮您做什么? </PROMPT>
在上面所显示的示例中,中断元素BREAK在一个提示元素PROMPT中使用了一个MSECS属性。当被语音浏览器所解释时,一个提示(即,“欢迎来到地球”)将被播放给这个用户。然后,这个系统停顿250毫秒,并且播放“我能帮您做什么?”。
替代地,中断元素BREAK的SIZE属性(即,“小”,“中”,和“大”)将被用于控制停顿的持续时间,而不是规定毫秒的数目,如下面所显示的。
<PROMPT> 欢迎来到地球.<BREAK SIZE="medium"/> 我能为您做什么? </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"]/>或者<CANCEL NEXT="value"[NEXTMETHOD="value"]>text</CANCEL>)被用于定义在对一个用户请求取消当前提示元素PROMPT的响应中,应用程序的行为。取消元素CANCEL包括一个NEXT属性和一个NEXTMETHOD属性。NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post。
可以使用多个短语来激发取消元素CANCEL。例如,这个用户可以仅仅说词“取消”,或者这个用户可以说“对不起,我想取消”。取消元素CANCEL可以被包括在一个步骤元素STEP中,或者一个类别元素CLASS中。当这个语音浏览器从这个用户检测到“取消”时,语音浏览器根据标记语言文档中对取消元素CANCEL的使用,来进行响应。如果没有取消元素CANCEL与一个给定步骤元素STEP相关,就中断当前的提示(如果正在播放当前的提示),并且将停留在相同的应用状态,然后处理任何交互式的输入。
下面的示例显示了包括取消元素CANCEL的一个标记语言文档。
<STEP NAME="report"> <CANCEL NEXT="#traffic_menu"/> <PROMPT>5月18日,星期一,伊利诺斯州,芝加哥的交通 状况。在……地方拥堵。</PROMPT> <INPUT TYPE="optionlist"> <OPTION NEXT="#report">重复 </OPTION> <OPTION NEXT="#chooose">新城市 </OPTION> </INPUT> </STEP>
上面的示例显示了使用取消元素CANCEL来规定,当这个用户说“取消”时,这个语音浏览器进行到称作“traffic menu”的步骤元素STEP,而不是缺省的行为,缺省的行为是停止播放提示元素PROMPT并且等待一个用户的响应。这个用户也可以通过说一个有效的OPTION元素来中断这个提示元素PROMPT。在这个示例中,这个用户可以通过说“新城市”来中断这个提示元素PROMPT,并且获得一个不同城市的天气预报。
标记语言的情况元素CASE(即,<CASE VALUE=“value”NEXT="value"[NEXTMETHOD="valne"]/>)被用于根据内部标记语言变量的值,来定义应用程序的控制流。CASE输入包括一个VALUE属性,一个NEXT属性和一个NEXTMETHOD属性。VALUE属性的值可以是一个符号值,NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post。CASE元素可以被包括在一个SWITCH元素或者一个输入元素INPUT中,当使用输入元素INPUT的一个输入类型来收集一单个值时(即,DATE,DIGITS,MONEY,PHONE,TIME,YORN)。
下面的示例显示了包括取消元素CANCEL的一个标记语言文档。
<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>你的选择是:</OPTIONS></HELP> <ERROR>我不明白你所说的. 有效的回答是<OTIONS/></ERROR> <dp n="d48"/> </CLASS> <STEP NAME="beverage"PARENT="simple"> <PROMPT>请选择一种饮料.</PROMPT> <INPUT NAME="drink"TYPE="optionlist"> <OPTION NEXT="#food">coke </OPTION> <OPTION NEXT="#food">pepsi </OPTION> </INPUT> </STEP> <STEP NAME="food"PARENT="simple"> <PROMPT>请选择主食.</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元素,所以继承了被定义在CLASS元素中的行为。当被语音浏览器所解释时,步骤元素STEP的行为就好象被定义在CLASS元素中的HELP和错误元素ERROR被明确地定义在其自己的步骤中。
标记语言的重音元素EMP(即,<EMP[LEVEL="value"]text</EMP>)被用于识别将被读给这个用户的文本中需要使用重音的内容。EMP元素包括一个LEVEL属性。LEVEL属性的值可以是无(none),弱(reduced),中(moderate),和强(strong)。
EMP元素可以被包括在一个PROMPT,EMP,PROS,HELP,ERROR,CANCEL,或者ACK元素中。下面的标记语言示例包括EMP元素。
<PROMPT> 这个例子 <EMP LEVEL="strong">确实</EMP> 简单. </PROMPT>
在上面所显示的示例中,EMP元素被用于将“强”重音应用到提示元素PROMPT中的词“确实”上。语音输出的实际效果将由系统的文本到语音(TTS)转换软件决定。为了获得一特定重音效果,PROS元素,如下面所进一步描述的,将被使用,而不是使用EMP元素。
标记语言的错误元素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,noauch,和badnext。ORDINAL属性的值可以是一个整数,REPROMPT属性的值可以是一个“Y”或者“N”,NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post。
如果这个应用程序开发人员没有为一给定步骤元素STEP定义一个错误元素ERROR的行为,将使用缺省的行为。错误元素ERROR的缺省行为是播放短语“出现错误”,停留在当前的步骤元素STEP中,重新播放提示元素PROMPT,并且等待这个用户进行响应。错误元素ERROR可以被包括在一个步骤元素STEP中,或者一个CLASS元素中。
下面的示例显示了在一个标记语言文档中对错误元素ERROR的使用。
1<STEP NAME="errors"> 2<ERROR TYPE="nomatch">第一错误消息. 3我不明白你所说的. 4<ERROR TYPE="nomatch"ORDINAL="2"> 5第二错误消息. 6我不明白你所说的. </HELP> 7<PROMPT>该步骤用于测试错误消息. 8请说两遍′哦′.然后′完成"以 9选择下一个测试.</PROMPT> 10<INPUT TYPE="optionlist"> 11<OPTION NEXT="#end">完成</OPTION> 12</INPUT> 13</STEP>
在上面的示例中,错误元素ERROR被用于定义应用程序对一个错误进行响应而采取的行为。在行2中,错误消息定义为被使用,在这个步骤元素STEP中第一次发生一个“nomatch”的错误类型时。在行4,在第二次和随后所有次数的、在这个STEP中发生一个“nomatch”类型的错误时,使用这个错误消息。
标记语言的错误元素ERROR的ORDINAL属性定义了在相同步骤元素STEP中重复相同错误时,将使用哪一个消息。这个语音浏览器可以根据下面的算法来选择一个错误消息。如果这个错误发生了3次,这个语音浏览器将寻找其一个ORDINAL属性值为“3”的一个错误元素ERROR。如果没有定义这样的错误元素ERROR,语音浏览器将寻找其ORDINAL属性值为“2”的一个错误元素ERROR,然后是其ORDINAL属性值为“1”的一个错误元素ERROR,然后,寻找没有定义ORDINAL属性的一个错误元素ERROR。这样,如果在上面所显示的示例中,定义了其ORDINAL数字值为“6”的一个错误元素ERROR,并且在一行中一个相同的错误发生了6次,第一次这个用户将听第一错误消息,然后4次第二错误消息,最后听带其ORDINAL属性值为“6”的这个错误消息。
标记语言的帮助元素HELP(即,<HELP[ORDINAL="value"][REPROMPT="value"][NEXT="value"[NEXTMETHOD="value"]]>text</HELP>)被用于定义当这个用户请求帮助时,应用程序采取的行为。帮助元素HELP包括一个ORDINAL属性,一个REPROMPT属性,一个NEXT属性和一个NEXTMETHOD属性。ORDINAL属性的值可以是一个整数,REPROMPT属性的值可以是一个“是”或者“否”。NEXT属性的值可以是下一个步骤的地址(即,一个URL),NEXTMETHOD属性的值可以是一个get和一个post。
与取消元素CANCEL类似,可以通过各种短语来检测到这个帮助元素HELP。这个用户可以仅说词“帮助”,或者这个用户可以说“对不起,我想获得帮助”。在任何一个情形下,均将解释这个帮助元素HELP。帮助元素HELP可以被包括在一个步骤元素STEP中,或者一个CLASS元素中。
当这个语音浏览器从这个用户检测到“帮助”时,这个语音浏览器根据标记语言文档中帮助元素HELP的使用来进行响应。如果没有任何帮助元素HELP与一给定STEP相关,这个当前的提示将被中断(如果它正在被播放),这个用户将听到“不能提供帮助”,并且将停留在相同的应用状态,并且进行任何交互式输入。
下面的示例显示了在一个标记语言文档中对帮助元素HELP的使用。
1<STEP NAME="helps"> 2<HELP REPROMPT="Y">第一消息. 3你将再次听见提示.</HELP> 4<HELP ORDINAL="2">第二消息. 5你现在应该听不见提示.</HELP> 6<PROMPT>该步骤用于测试提示. 7说两遍′帮助′.然后说′完成′以 <dp n="d52"/> 8选择下一个测试.</PROMPT> 9<INPUT TYPE="optionlist"> 10<OPTION NEXT="#end">完成</OPTION> 11</INPUT> 12</STEP>
在上面的示例中,帮助元素HELP被用于定义对用户输入“帮助”作出响应,应用程序所采取的行为。在行2,第一次这个用户说“帮助”时,定义使用这个help帮助消息。在行4,第二次和随后所有次数这个用户说“帮助”时,定义使用这个help帮助消息。也应注意到,尽管使用了REPROMPT属性,但是在第一help帮助消息后,将重复这个提示,但是在第二help帮助消息后,将不重复它。
标记语言的帮助元素HELP的ORDINAL属性定义了在相同步骤元素STEP中重复说相同“帮助”时,将使用哪一个消息。这个语音浏览器可以根据下面的算法来选择一个帮助消息。如果这个用户已经说“帮助”说了3次,这个语音浏览器将寻找其一个ORDINAL属性值为“3”的一个帮助元素HELP。如果没有定义这样的帮助元素HELP,语音浏览器将寻找其ORDINAL属性值为“2”的一个帮助元素HELP,然后是其ORDINAL属性值为“1”的一个帮助元素HELP,然后,寻找没有定义ORDINAL属性的一个帮助元素HELP。这样,如果在上面所显示的示例中,定义了其ORDINAL数字值为“6”的一个帮助元素HELP,并且在一行中这个用户已经说“help”说了6次,第一次这个用户将听第一帮助消息,然后4次第二帮助消息,最后听带其ORDINAL属性值为“6”的这个帮助消息。
标记语言的韵律元素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>让我告诉你一个秘密: <PROS VOL="0.5">是我吃了苹果.</PROS> </PROMPT>
在上面所显示的示例中,短语“是我吃了苹果”被以正常音量的一半说出来。
标记语言的重命名元素RENAME(即,<RENAME RECNAME="value"VARNAME="value"/>)被用于重新命名语法中的识别时隙(recognition slot),以使所产生的变量名字与在语法中所定义的识别时隙的名字不同。RENAME元素包括一个VARNAME属性,和一个RECNAME属性。VARNAME属性和RECNAME属性的值可以是一个标识符。RENAME元素可以仅被包括在输入元素INPUT中,然后,并且仅当使用GRAMMAR输入类型时才存在RENAME元素。
下面的示例显示了一个标记语言文档对PROS元素的使用。
<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"]]/>或者<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元素。
下面的示例显示了一个标记语言文档对PROS元素的使用。
<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" <dp n="d55"/> NEXT="#askamtaccts"/> </INPUT>
上面所显示的示例显示了在这个用户规定了比在语法中可以使用的全部变量数少时对RESPONSE元素的使用。使用这个RESPONSE元素,这个应用程序可以被安排成收集没有被前面步骤所填充的信息。特别地,这个示例转移到“askaccts”步骤元素STEP,如果没有规定源或者目的帐户(即,用户说“转帐500美元”),但是,如果这个用户说了转移到哪一个帐户,但是没有规定一个源帐户(即,如果这个用户说“将100美元转到存款帐户”),就转移到“askfromacct”步骤元素STEP。当这个用户的响应不与任何所定义的响应匹配时,就使用输入元素INPUT的下一个URL。
标记语言的开关元素SWITCH(即,<SWITCH FIELD="value">vml</SWITCH>)被用于定义与一规定识别时隙相关的应用程序行为。SWITCH元素包括一个FIELD属性。FIELD属性的值可以是一个标识符。SWITCH元素与CASE元素联系在一起来进行使用。SWITCH元素可以仅被包括在一个输入元素INPUT中,,然后,并且仅当使用语法输入类型时才存在RENAME元素。
下面的示例显示了一个标记语言文档对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> <dp n="d56"/> </SWITCH> </INPUT>
在上面所显示的示例中,SWITCH元素被用于决定对一个银行请求作出响应,需要执行的下一个步骤元素STEP。在这个示例中,这个语法填充一些或者全部变量(即,“action”,“amount”,“fromacct”,和“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>谢谢你的回答.我将记录下 <VALUE NAME="first″/>是你的首选 并且<VALUE NAME="second″/>是你的 第二选择. </PROMPT> <INPUT TYPE="NONE"NEXT="/recordresults.asp"/> </STEP>
如上面所显示的示例显示了使用VALUE元素来将用户的选择读回给这个用户。如上面所显示的,称作“first”的变量的值将被插入到提示元素PROMPT中,称作“second”变量的值可以被插入到提示元素PROMPT中。
标记语言的步骤元素STEP的COST属性被使能用于对一个用户所使用的各种服务进行计费。COST属性可以被用于一个或者多个STEP或者CLASS元素的定义。COST属性的值可以是这个用户因为浏览了内容而需要被计费的信用卡整数。例如,为了对听一个特定的步骤元素STEP而进行计费10个信用卡点,一个提供者必须写下下面的标记语言:
<STEP NAME="premiumContent"COST="10">
...收费内容在这里...
</STEP>
如果一个内容服务提供者希望保存对用户的一个收费记录,这个内容服务提供者仅需要使用如下面的PROFILE输入类型来请求关于这个用户的身份数据:
<INPUT TYPE="PROFILE"PROFNAME=“UID”NAME=“subID”/>
使用这个所产生的值并且检查在每一个页面请求上的SUB_CHARGE查询字符串参数,这个内容服务提供者可以对每一个用户均保存记录。
下面的文本描述了可以被图3的系统200所执行的一个天气应用程序500。图8显示了这个天气应用程序的一个示例性状态图,这个天气应用程序包括提示这个用户进行输入以访问天气数据库的状态。在说了当前的天气信息或者天气预报信息后,这个应用程序期待这个用户说出一个城市的名字或者单词“退出(exit)”来返回到主欢迎提示。在当前的天气状态提示后,这个用户可以选择听天气预报。应认识到,这个应用程序可以被设计成正确地处理错误,帮助,和取消请求。
下面所提出的标记语言是天气应用程序的一个静态版本。初始状态或者欢迎提示在第一步骤内,init(行11-20)。这个用户可以使用对“天气”,“市场”,“新闻”,或者“退出”的选择来进行响应。一旦这个应用程序检测到这个用户的响应“天气”,下一步骤,天气(行21-29)开始。这个提示向这个用户询问一个城市的名字。合理的选择是“伦敦”,“纽约”,和“芝加哥”。
称作 london_current,london_forecast,newyork_current,newyork_forecast,chicago_current,chicago_forecast的步骤提供了关于每一个城市的天气信息。应注意,在这个示例中,Market和news步骤恰好是占位符(行111和115)。
<?XML VERSION="1.0"?> <!-- ___--> <!--(c)1998 Motorola Inc. --> <!--weather.vml --> <!___ ___--> <DIALOG> <CLASS NAME=”help_top”> <HELP>你现在在主菜单.要听天气信息,请说天气.</HELP> </CLASS> <STEP NAME=”init”PARENT=”help_top”> <PROMPT>欢迎使用Genie.<BREAK SIZE=”large”/> 我能为你做什么?</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#weather”>天气</OPTION> <OPTION NEXT=”#market”>市场</OPTION> <OPTION NEXT=”#news”>新闻</OPTION> <OPTION NEXT=”#bye”>退出</OPTION> </INPUT> </STEP> <dp n="d59"/> <STEP NAME=”weather”PARENT=”help_top”> <PROMPT>哪个城市?</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#london_current”>伦敦</OPTION> <OPTION NEXT=”#newvork_current”>纽约</OPTION> <OPTION NEXT=”#chicago_current”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <CLASS NAME=”helpp_generic”> <HELP>你的选择是<OPTIONS/>.</HELP> </CLASS> <STEP NAME=”london current”PARENT=”help_generic”> <PROMPT>伦敦现在的温度是46°,有雨. <BREAK SIZE=”large”/> 要听伦敦三天内的预报,请说预报,或者说出另一个城市 名,例如芝加哥或纽约。 </PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#london_forecast”>预报</OPTION> <OPTION NEXT=”#london_current”>伦敦</OPTION> <OPTION NEXT=”#newyork_current”>纽约</OPTION> <OPTION NEXT=”#chicago_current”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”london_forecast”PARENT=”help_generic”> <PROMPT>伦敦,星期二,阵雨,最高50度,最低44度。星 期三,部分多云,最高39度,最低35度。 <dp n="d60"/> <BREAK SIZE=”large”/> 选择一个城市,或说退出以回到主菜单.</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#london current”>伦敦</OPTION> <OPTION NEXT=”#newyork current”>纽约</OPTION> <OPTION NEXT=”#chicago current”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”chicago_current”PARENT=”help_generic”> <PROMPT>芝加哥现在温度31度,有雪. <BREAK SIZE=”large”/> 要听芝加哥三天内的预报,请说预报,或者说出另一个城 市名,例如伦敦或纽约。</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#chicago_forecast”>预报</OPTION> <OPTION NEXT=”#london_current”>伦敦</OPTION> <OPTION NEXT=”#newyork_current”>纽约</OPTION> <OPTION NEXT=”#chicago_current”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”chicago_forecast”PARENT=”help_generic”> <PROMPT>芝加哥,星期二,小雪,最高27度,最低22度。 星期二,阵雪,最高27度,最低12度. <BREAK SIZE=”large”/> 选择一个城市,或说退出以回到主菜单.</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#london_current”>伦敦</OPTION> <dp n="d61"/> <OPTION NEXT=”#newyork_current”>纽约</OPTION> <OPTION NEXT=”#chicago_current”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”newyork_current”PARENT=”help_generic”> <PROMPT>纽约现在温度是39度,多云. <BREAK SIZE=”large”/> 要听纽约三日内的预报,请说预报,或者说出另一个城市 名,例如伦敦或芝加哥 </PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#newyork_forecast”>预报</OPTION> <OPTION NEXT=”#london”>伦敦</OPTION> <OPTION NEXT=”#newyork”>纽约</OPTION> <OPTION NEXT=”#chicago”>芝加哥</OPTION> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”newyork_forecast”PARENT=”help_ generic”> <PROMPT>纽约,星期二,有风,最高温度48度,最低温度43 度。星期三,有雨,最高温度43度,最低28度. <BREAK SIZE=”large”/> 选择一个城市,或说退出以回到主菜单.</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#london current”>伦敦</OPTION> <OPTION NEXT=”#newyork current”>纽约</OPTION> <OPTION NEXT=”#chicago.”>芝加哥</OPTION> <dp n="d62"/> <OPTION NEXT=”#init”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”market”> <PROMPT>目前不支持市场信息.</PROMPT> <INPUT TYPE=”NONE”NEXT=”#init”/> </STEP> <STEP NAME=”news”> <PROMPT>目前不支持新闻信息.</PROMPT> <INPUT TYPE=”NONE”NEXT=”#init”/> </STEP> <STEP NAME=”bye”PARENT=”help_top”> <PROMPT>感谢您使用Genic。再见。</PROMPT> <INPUT TYPE=”NONE”NEXT=”#exit”/> </STEP> </DIALOG>
图9显示了与图8所显示的相同、每一个对话边界带标签的、天气应用程序的状态图。初始的对话和对话1包括关于欢迎和城市名字的用户提示。对话1也控制提示转到听一个城市的当前天气或者天气预报,并且返回到主菜单。对话2处理对天气数据库的访问来查询这个用户所规定的城市当前天气状况,并且将这个信息读给这个用户。然后,对话2将控制返回到对话1,再获得这个用户的下一个请求。类似地,对话3处理对天气数据库的访问来查询被请求城市的天气预报,并且说出这个信息。它将控制返回到对话1来获得系下一个用户输入。
下面被提出的标记语言显示了与对话边界相应的天气应用程序的一个示例,如图9的状态图中所提出的。这个应用程序的实现是使用VBscript的激活服务器页面。它包括了3个文件,称作dialog1.asp,dialog2.asp,dialog3.asp,每一个与合适的对话相应。
对dialog1对话1,有两个帮助消息类型,help_top和help_top1(行16和行29)。第一个步骤,init在行19。天气步骤在行32的后面。合理的城市名字是从天气数据库的城市列表(行36)来的名字。行7和8经过ADO实现了数据库的连接。行38是用于产生所有可能城市响应的一个可选列表的一个循环的开始。如果这个用户选择了一个城市,控制就到dialog2中的步骤getcurrentweather,如行40所显示的。在这个情形下,这个城市的名字也经过变量CITY在行34被传递到dialog2。dialog1中最后主要的步骤是nextcommand,并且可以被dialog2或者dialog3所引用。它提示这个用户关于关于城市的名字或者单词天气预报。与天气步骤的类似,nextcommand使用一个循环来产生这个选项列表(行53)。如果这个用户用一个城市的名字来进行响应,就调用dialog2中的步骤getcurrentweather。如果这个用户用单词天气预报来进行响应,就代之以调用getforecastweather。
dialog2包括一单个步骤getcurrentweather。这个步骤首先将这个城市的名字读到局部变量strCity(行95)。一个数据库查询试图在这个天气数据库中发现与这个城市的一个匹配(行97和98)。如果没有发现关于这个城市的天气信息,应用程序将说一个消息(行101),并且进行到dialog1中的init步骤(行110)。否则,这个应用程序将说出这个城市的当前天气信息(行105),并且切换到dialog1中的nextcommand(行112)。
dialog3与dialog2类似。它包括一个单个步骤getforecastweather。这个数据库查询与dialog2中的步骤相同。如果有关于这个城市的天气信息,这个应用程序将说出这个天气预报(行105),否则,说出一个通知消息(行101)。dialog3将控制返回到具有init步骤(行110)或者下一个命令(行112)的dialogl。
<%@LANGUAGE="VBSCRIPT"%> <% Option Explicit Private objconnection,rsCities <dp n="d64"/> 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>你现在在主菜单。要听天气信息,请说天气。</HELP> </CLASS> <STEP NAME=”init”PARENT=”help_top”> <PROMPT>欢迎使用Genie.<BREAK SIZE=”large”/> 我能为你做什么?</PROMPT> <INPUT TYPE=”OPTIONLIST”> <OPTION NEXT=”#weather”>天气</OPTION> <OPTION NEXT=”#market”>市场</OPTION> <OPTION NEXT=”#news”>新闻</OPTION> <OPTION NEXT=”#bye”>退出</OPTION> </INPUT> </STEP> <dp n="d65"/> <CLASS NAME=”help_dialog1”> <HELP>你的选择是<OPTIONS/>.</HELP> </CLASS> <STEP NAME=”weather”PARENT=”help_dialog1”> <PROMPT>哪个城市?</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”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”nextcommand”PARENT=”help_dialog1”> <%strCity=Request.QueryString(“CITY”)%> <PROMPT>要听 <%=strCity%>三日内的天气预报,请说 预报,或说出另一个城市的名字.</PROMPT> <INPUT TYPE=”OPTIONLIST”NAME=”CITY”> <%‘Get all city names.%> <%SQLQuery=”SELECT*FROM CityList”%> <%Set rsCities=objConnection.Execute(SQLQuery)%> <%Do Until rsCities.EOF%> <dp n="d66"/> <%‘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”>退出</OPTION> </INPUT> </STEP> <STEP NAME=”market”> <PROMPT>目前不支持市场信息.</PROMPT> <INPUT TYPE=”NONE”NEXT=”#init”/> </STEP> <STEP NAME=”news”> <PROMPT>目前不支持新闻信息.</PROMPT> <INPUT TYPE=”NONE”NEXT=”#init”/> </STEP> <STEP NAME=”bye”PARENT=”help_top”> <PROMPT>感谢你使用Genic。再见。</PROMPT> <INPUT TYPE=”NONE”NEXT=”#exit”/> </STEP> </DIALOG> <!--_________________End of Dialog1.asp______________--> <%@LANGUAGE=”VBSCRIPT”%> <% <dp n="d67"/> 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>你的选择是<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”%> <dp n="d68"/> <PROMPT>Sorry,<BREAK/> 没有<%=strCity%>的当前天气状况.<BREAK/></PROMPT> <%Else%> <%‘Speak current weather information%> <PROMPT><%=rsWeather(“Current”)%></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" <dp n="d69"/> %> <?XML VERSION="1.0"?> <!-- ___--> <!--(c)1998 Motorola Inc. --> <!-dialog3.asp --> <!-- ___--> <DIALOG> <CLASS NAME=”help_dialog3”> <HELP>你的选择是<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/>没有<%=strCity%>的天气预报 信息.<BREAK/></PROMPT> <% Else %> <%‘Speak forecast weather information%> <PROMPT><%=rsWeather(“Forecast”)%></PROMPT> < %End If% > <INPUT TYPE=”Hidden” NAME=”CITY” <dp n="d70"/> 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.被保存在一个计算机可以读取的媒质上的、提供交互式服务的一个标记语言,包括:
一个对话元素(DIALOG),包括多个标记语言元素,这多个标记语言元素中的每一个均可以用至少一个标记来识别;
一个步骤元素(STEP),包括在对话元素中,用于定义对话元素(DIALOG)中的一个状态,这个步骤元素(STEP)包括一个提示元素(PROMPT)和一个输入元素(INPUT);
这个提示元素(PROMPT)包括一个将被读给这个用户的一个通告;和
这个输入元素(INPUT)包括至少与一个用户输入相应的输入。
2.如权利要求1的标记语言文档,其中通告包括互联网协议数据和文本数据上的一个语音。
3.如权利要求1的标记语言文档,其中这个对话元素(DIALOG)进一步包括一个帮助元素(HELP),来识别来自这个用户的一个帮助请求。
4.如权利要求1的标记语言文档,其中这个对话元素(DIALOG)进一步包括识别一个错误的一个错误元素(ERROR)。
5.如权利要求1的标记语言文档,其中这个步骤元素(STEP)进一步包括一个NAME属性,一个BARGEIN属性,一个PARENT属性,和一个COST属性。
6.如权利要求1的标记语言文档,其中这个对话元素(DIALOG)进一步包括一个音频元素(AUDIO),该元素包括将被播放给这个用户的音频数据。
7.用于产生向用户提供交互式语音服务的一个语音应用程序的一个方法,这个方法包括步骤:
产生一个标记语言文档,具有多个元素;
选择一个提示元素(PROMPT);
在提示元素(PROMPT)中定义将被读给这个用户的一个语音通信;
选择一个输入元素(INPUT);和
定义一个输入变量来保存这个用户所输入的数据。
8.被保存在一个计算机可以读取的媒质上的、提供交互式语音服务的一个应用程序,包括:
用需要被读给一个用户的一个语音通信来定义一个提示元素(PROMPT);和
用与一个用户相应的至少一个选项来定义一个输入元素(INPUT)。
9.被保存在一个计算机可以读取的媒质上的、提供交互式语音服务的一个标记语言文档,包括:
一个对话元素(DIALOG),包括一个帮助元素(HELP),这个对话元素(DIALOG)均可以用至少一个标记来识别;
这个帮助元素(HELP)包括对来自这个用户的一个(HELP)请求作出响应,需要被播放给这个用户的至少一个提示。
10.被保存在一个计算机可以读取的媒质上的、提供交互式语音服务的一个标记语言文档,包括:
一个对话元素(DLALOG),包括一个错误元素(ERROR),这个对话元素(DIALOG)均可以用至少一个标记来识别;
这个错误元素(ERROR)包括对来自一个错误作出响应,需要被播放给这个用户的至少一个提示。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US9403298P | 1998-07-24 | 1998-07-24 | |
US9413198P | 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 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1354851A true CN1354851A (zh) | 2002-06-19 |
Family
ID=27377629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN99810096A Pending CN1354851A (zh) | 1998-07-24 | 1999-07-23 | 交互式服务所使用的标记语言及其方法 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1099152A4 (zh) |
KR (1) | KR20010079555A (zh) |
CN (1) | CN1354851A (zh) |
AU (1) | AU5006799A (zh) |
WO (1) | WO2000005643A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092364A (zh) * | 2017-04-19 | 2017-08-25 | 重庆小雨点小额贷款有限公司 | 一种信息录入方法以及装置 |
CN109766073A (zh) * | 2019-01-25 | 2019-05-17 | 四川长虹电器股份有限公司 | 电视浏览器中语音操作网页内容导航的方法 |
Families Citing this family (26)
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 |
DE60125597T2 (de) * | 2000-08-31 | 2007-05-03 | Hitachi, Ltd. | Vorrichtung für die Dienstleistungsvermittlung |
EP1352316A2 (en) | 2000-12-01 | 2003-10-15 | 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 |
US7729918B2 (en) | 2001-03-14 | 2010-06-01 | At&T Intellectual Property Ii, Lp | Trainable sentence planning system |
WO2002073598A1 (en) | 2001-03-14 | 2002-09-19 | At & T Corp. | Method for automated sentence planning in a task classification 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 |
US7610547B2 (en) | 2001-05-04 | 2009-10-27 | Microsoft Corporation | Markup language extensions for web enabled recognition |
US7409349B2 (en) | 2001-05-04 | 2008-08-05 | Microsoft Corporation | Servers for web enabled speech 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 |
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 |
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 |
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 |
US9202467B2 (en) | 2003-06-06 | 2015-12-01 | The Trustees Of Columbia University In The City Of New York | System and method for voice activating web pages |
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 |
US7739589B2 (en) * | 2005-11-02 | 2010-06-15 | International Business Machines Corporation | Extending markup of a browser using a plug-in framework |
EP1865680A1 (en) * | 2006-06-09 | 2007-12-12 | Nextair Corporation | Remote storage of a markup language document for access by sets of wireless computing devices |
Family Cites Families (9)
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 |
US6240448B1 (en) * | 1995-12-22 | 2001-05-29 | Rutgers, The State University Of New Jersey | 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 |
-
1999
- 1999-07-23 KR KR1020017001008A patent/KR20010079555A/ko not_active Application Discontinuation
- 1999-07-23 AU AU50067/99A patent/AU5006799A/en not_active Abandoned
- 1999-07-23 WO PCT/US1999/016777 patent/WO2000005643A1/en not_active Application Discontinuation
- 1999-07-23 CN CN99810096A patent/CN1354851A/zh active Pending
- 1999-07-23 EP EP99934183A patent/EP1099152A4/en not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107092364A (zh) * | 2017-04-19 | 2017-08-25 | 重庆小雨点小额贷款有限公司 | 一种信息录入方法以及装置 |
CN109766073A (zh) * | 2019-01-25 | 2019-05-17 | 四川长虹电器股份有限公司 | 电视浏览器中语音操作网页内容导航的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1099152A4 (en) | 2004-05-19 |
WO2000005643A1 (en) | 2000-02-03 |
KR20010079555A (ko) | 2001-08-22 |
AU5006799A (en) | 2000-02-14 |
EP1099152A1 (en) | 2001-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1354851A (zh) | 交互式服务所使用的标记语言及其方法 | |
US6493673B1 (en) | Markup language for interactive services and methods thereof | |
US6385583B1 (en) | Markup language for interactive services and methods thereof | |
US6996227B2 (en) | Systems and methods for storing information associated with a subscriber | |
US20020006126A1 (en) | Methods and systems for accessing information from an information source | |
US6725256B1 (en) | System and method for creating an e-mail usage record | |
US20020118800A1 (en) | Telecommunication systems and methods therefor | |
US6668046B1 (en) | Method and system for generating a user's telecommunications bill | |
US8111812B2 (en) | Technique for emulating an instruction set in providing electronic messaging service through an information assistance provider | |
US6751296B1 (en) | System and method for creating a transaction usage record | |
CN1792082A (zh) | 操作方执行的语音邮件转录 | |
CN1104142C (zh) | 访问用于电信系统中的业务资源项的方法 | |
CN1342290A (zh) | 会话浏览器和会话系统 | |
US20040203660A1 (en) | Method of assisting a user placed on-hold | |
US20030147518A1 (en) | Methods and apparatus to deliver caller identification information | |
CN1897619A (zh) | 通信辅助系统和方法 | |
CN1208536A (zh) | 提供电信业务的方法 | |
CN1209009A (zh) | 信息通讯系统 | |
CN1615508A (zh) | 语音识别方法、遥控器、信息终端、电话通信终端以及语音识别器 | |
CN1208534A (zh) | 提供电信业务的方法 | |
CN1433554A (zh) | 利用因特网语音入口做广告的系统和方法 | |
CN1329791A (zh) | 交互式媒体系统 | |
CN1445652A (zh) | 对话系统和对话控制装置 | |
US20040109543A1 (en) | Method of accessing an information source | |
CN1836431A (zh) | 一种用于向无线信息设备提供语音邮件的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |