【问题标题】:Cortana Windows 10 UWP Integration - Using {*} in VCDCortana Windows 10 UWP 集成 - 在 VCD 中使用 {*}
【发布时间】:2016-07-22 09:47:00
【问题描述】:

specification for vcd files 中,它说{*} 用于匹配任何内容。但是对于他的示例命令:

<Command Name="addFoodLog">
      <Example> I had a burger for lunch </Example>
      <!--Recording a drink-->
      <ListenFor RequireAppName="BeforeOrAfterPhrase"> [I] drank [a] {*} with [my] {mealtime} </ListenFor>
      <!--Recording a meal-->
      <ListenFor RequireAppName="BeforeOrAfterPhrase"> [I] ate [a] {*} for [my] {mealtime} </ListenFor>
      <ListenFor RequireAppName="BeforeOrAfterPhrase"> [I'm] having {*} for [my] {mealtime} </ListenFor>
      <ListenFor RequireAppName="BeforeOrAfterPhrase"> [I] [just] had [a] {*} for {mealtime} </ListenFor>
      <Feedback> Recording your {mealtime}</Feedback>
      <Navigate />
</Command>

打印此输入的结果将是I drank a ... with my dinner

有什么方法可以从文本中获取实际所说的内容吗?或者这可能是一个错误?

【问题讨论】:

    标签: c# win-universal-app cortana vcd


    【解决方案1】:

    如果您使用短语主题,那么您将解决您的问题,因为它会获得更大的词汇量。

    这是一个例子:

    <PhraseTopic Label="food">
      <Subject>Food</Subject>
      <Subject>Drink</Subject>
      <Subject>Meal</Subject>
      <Subject>Food</Subject>
    </PhraseTopic>
    

    查看Voice Command Definition elements and attributes 了解更多信息

    【讨论】:

      【解决方案2】:

      以下是获取搜索词的方法,而不是从值列表中获取。这适用于 HTML/JS,而不是 XAML,但应该会给您一个好主意。

      XML

      <?xml version="1.0" encoding="utf-8" ?>
      <VoiceCommands xmlns="http://schemas.microsoft.com/voicecommands/1.2">
          <CommandSet xml:lang="en-us" Name="FNOW_en-us">
              <AppName> YourAppName </AppName>
              <Example> Search books </Example>
      
              <Command Name="SearchFor">
                  <Example> Search for Harry Potter </Example>
                  <ListenFor RequireAppName="BeforeOrAfterPhrase"> find book {SearchTerm} </ListenFor>
                  <Feedback> Searching books </Feedback>
                  <Navigate />
              </Command>
      
              <PhraseTopic Label="SearchTerm" Scenario="Search"/>
          </CommandSet>
      </VoiceCommands>
      

      JavaScript

      function handleVoiceCommand(args) {
          var command,
              commandResult,
              commandName = '',
              commandProperties = {};
      
          if (args.detail && args.detail.detail) {
              command = args.detail.detail[0];
      
              if (command) {
                  commandResult = command.result;
      
                  if (commandResult) {
                      if (commandResult.rulePath) {
                          commandName = commandResult.rulePath[0];
                      }
                      if (commandResult.semanticInterpretation) {
                          commandProperties = commandResult.semanticInterpretation.properties;
                      }
      
                      // Act on the different commands.
                      // Command Names are defined within VoiceCommands.xml.
                      switch(commandName) {
                          case 'SearchFor':
                              console.log('Cortana Command: SearchFor');
                              console.log('Search Term: ' + commandProperties.SearchTerm[0]);
                              break;
                      }
                  }
              }
          }
      }
      
      WinJS.Application.addEventListener('activated', function (args) {
          var appLaunchVoiceCommand;
      
          appLaunchVoiceCommand = Windows.ApplicationModel.Activation.ActivationKind.voiceCommand || 16;
          if (args.detail.kind === appLaunchVoiceCommand) {
              return handleVoiceCommand(args);
          }
      });
      
      WinJS.Application.start();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        相关资源
        最近更新 更多