Windows 10 Cortana没有拾取命令参数

Windows 10 Cortana没有拾取命令参数,windows-10,win-universal-app,cortana,hosted-app,Windows 10,Win Universal App,Cortana,Hosted App,我正在开发Windows10UWP托管的Web应用程序,并尝试使用vcd文件添加Cortana支持。我有vcd文件、meta标记和一个js文件来处理语音命令,但当我构建和运行应用程序时,Cortana没有选择命令参数 示例vcd.xml文件 <?xml version="1.0" encoding="utf-8"?> <VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2"> <

我正在开发Windows10UWP托管的Web应用程序,并尝试使用vcd文件添加Cortana支持。我有vcd文件、meta标记和一个js文件来处理语音命令,但当我构建和运行应用程序时,Cortana没有选择命令参数

示例vcd.xml文件

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
    <CommandSet xml:lang="en-us" Name="VoiceDemoCommandSet_en-us">
        <AppName>VoiceDemo</AppName>
        <Example>VoiceDemo search for foo</Example>
        <Command Name="Search">
            <Example>search {message} using VoiceDemo</Example>
            <ListenFor RequireAppName="BeforeOrAfterPhrase">Search {searchTerm}</ListenFor>
            <Feedback>Searching for "{searchTerm}" with VoiceDemo</Feedback>
            <Navigate Target="/home/about"/>
        </Command>
        <PhraseTopic Label="searchTerm" Scenario="Natural Language"/>
    </CommandSet>
</VoiceCommands>
Cortana展示的内容:


根据我们评论中的信息,最可能的问题是vcd文件中的新命令代码。新命令可能与旧命令冲突,因此它将以旧方式处理此新命令

我添加了新的语音命令,如下所示:



,所以您可以测试它,我没有专门处理新命令“Find”,当您要求Cortana“voice demo Find abc”时,它将打开VoiceDemo应用程序,并在其内容中显示“else”

今天早上我自己也遇到了这个问题。对我来说,这只是缺乏互联网连接。没有互联网,我就变得“…”。确保互联网连接后,我得到了正确的搜索短语。

测试了你的vcd.xml文件,它在我这边运行良好,可能是你的js代码有问题。我更新了我的帖子,加入了js代码。还添加了Cortana屏幕截图,以显示文本在到达js之前显示为“…”或null。测试时,您是否使用了托管web应用程序?不,我没有在托管web应用程序中进行测试。但我刚刚创建了一个名为“TestVoiceDemo”的空web应用程序和一个名为“VocieDemo”的托管web应用程序,我上传了我的测试,我仍然无法重现您的问题,您可以测试我的代码,请记住在测试时编辑VoiceDemo项目清单中的“起始页”和内容URI。设置了起始页和内容URI。Cortana可以工作,但不接收对vcd.xml文件的更改。即使应用程序已卸载。在您创建的示例中,添加一个新命令,查看Cortana是否识别该命令或将其视为现有命令的参数。您所说的“将其视为现有命令的参数”是什么意思?我刚刚添加了一个新命令,并在开始时更新了我的web应用程序以侦听这个新命令,我身边的一切都很顺利。这可能是操作系统版本的问题吗?我的版本是1511,os build 10586.63。此外,当我键入cortana(有或没有internet)时,我会遇到这个问题。连接麦克风时通过麦克风说出的话会产生真实的值,没有。。。
if (typeof Windows !== 'undefined' &&
    typeof Windows.UI !== 'undefined' &&
    typeof Windows.ApplicationModel !== 'undefined') {
    // Subscribe to the Windows Activation Event
    Windows.UI.WebUI.WebUIApplication.addEventListener("activated", function (args) {
        var activation = Windows.ApplicationModel.Activation;
        // Check to see if the app was activated by a voice command
        if (args.kind === activation.ActivationKind.voiceCommand) {

            var speechRecognitionResult = args.result;
            var textSpoken = speechRecognitionResult.text;

            // Determine the command type {search} defined in vcd
            if (speechRecognitionResult.rulePath[0] === "Search") {
                console.log("speechRecognitionResult: " + speechRecognitionResult);
                console.log("textSpoken: " + textSpoken);

                // Build rest of search string here
                // Then invoke search
            }
            else {
                console.log("No valid command specified");
            }
        }
    });
} else {
    console.log("Windows namespace is unavaiable");
}