编译Windows语音识别宏时无效的规则引用错误

时间:2013-05-12 14:30:12

标签: javascript xml speech-recognition

最近我对使用Windows语音识别宏尝试一些XML和Javascript感兴趣。这是我对这两种语言的第一次体验,但由于我确实有一个小的编程历史,我认为我可以潜入。到目前为止它已经相当不错。但是现在我正在尝试为我的宏实现更深层次的交互性,我开始遇到错误,我无法在网上找到解释,所以我来到这里寻求你的帮助。

这是给我带来问题的宏:

<command>
    <listenFor>Whats the weather like in [CityName]</listenFor>
    <script language="JScript">
        <![CDATA[
            var xml_doc = new ActiveXObject("Microsoft.XMLDOM");
            xml_doc.async = false;
            xml_doc.load("http://api.openweathermap.org/data/2.5/weather?q={[CityName]}&mode=xml");

            var city = xml_doc.getElementByTagName("city").getAttribute("name");
            var temperature = xml_doc.getElementByTagName("temperature");

            Application.Speak(city);
        ]]>
    </script>
</command>

这是错误消息:

Error compiling grammar for speech Macros:
"AI-base.WSRMac"
==========
Line 40: 80045048 - Invalid rule reference to <RULEREF NAME="CityName" REFID=""/>
==========
00001:
00002: <GRAMMAR LANGID="0409">
...
...
...
00038: <RULE NAME="Rule_8">
00039:  <P>
00040:   <p>Whats the weather like in </p><ruleref name="CityName" propname="CityName" />
00041:  </P>
00042: </RULE>
00043: <RULE name="build:namedDictation"><dictation min="1" max="10"/></RULE>
00044: </GRAMMAR>

我正在尝试使用此宏来获取用户的城市名称并获取该位置的天气,将其输出几个变量然后让它以我喜欢的格式告诉我天气。

有人可以解释一下我做错了什么以及如何解决它?

提前致谢:) -Dirk

1 个答案:

答案 0 :(得分:1)

据我所知,WSR宏没有预定义的“CityName”属性。我看到的使用'CityName'的示例定义了具有适当属性的命名城市列表。例如,Weather.WSRMac示例具有

<listenForList name="CityName" propname="zipCode"> 
    <item propval="45255">Cincinnati</item> 
    <item propval="98075">Sammamish</item> 
    <item propval="98052">Redmond</item> 
    <item propval="98004">Bellevue</item> 
    <item propval="98101">Seattle</item> 
</listenForList> 

你需要做类似的事情。

如果您需要未解释的字符串,可以尝试

 <rule name="CityName">
      <Dictation PROPID="Dictation" Min="1" Max="5"/>
 </rule>    

要在运行时检索内容,您应该能够使用

 xml_doc.load("http://api.openweathermap.org/data/2.5/weather?q={[CityName.Dictation]}&mode=xml");

WSR Macros Wiki几乎所有这些内容都可用,尤其是Rule Generators上的部分;有关SAPI 5 XML语法的详细信息也在MSDN上。