0

最近、Windows Speech Recognition Macros で 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>

私がこのマクロでやろうとしているのは、ユーザーから都市名を取得し、その場所の天気をいくつかの変数で取得して、好きな形式で天気を教えてくれるようにすることです。

誰かが私が間違っていることとそれを修正する方法を説明してもらえますか?

前もって感謝します:) -ダーク

4

1 に答える 1

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、特にルール ジェネレーターのセクションで入手できます。SAPI 5 XML 文法の詳細もMSDNにあります。

于 2013-05-13T19:42:11.623 に答える