Cortana BackgroundTask Integration

时间:2016-05-19 23:27:32

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

所以我尝试使用后台任务将Cortana集成到我的通用Windows应用程序中,因为我需要与Cortana建立对话。

我正在关注here

中的示例

上面的示例使用IBackgroundTask在AdventureWorksVoiceCommandService中构建对话和明确的行程名称匹配

所以我试图在一个非常基本的样本上做同样的事情:

using Windows.ApplicationModel.Background;

namespace AdventureWorks.VoiceCommands
{
    public sealed class TestBgService : IBackgroundTask
    {
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            var someVar = taskInstance;
        }
    }
}

我以这种方式更新了Package清单:

  <Extensions>
    <uap:Extension Category="windows.appService" EntryPoint="AdventureWorks.VoiceCommands.TestBgService">
      <uap:AppService Name="TestBgService" />
    </uap:Extension>
  </Extensions>

我的VCD文件包含以下内容:

<Command Name="heyHowLetsGo">
  <Example> Hey How Lets Go </Example>
  <ListenFor RequireAppName="BeforeOrAfterPhrase">Hey How Lets Go</ListenFor>
  <VoiceCommandService Target="TestBgService"/>
</Command>  

在AdventureWorks smaple应用程序中运行它可以正常工作(实际随机,但id不会给我错误),在我的通用Windows应用程序中运行相同的怪异代码,当她询问Cortana 1对1匹配的字符串时,她总是说:

  

出了点问题。稍后再试

所以我认为她确实认识到命令模式(&#34; Hey How Lets Go&#34;),但是有些奇怪的原因是她无法午餐或运行BackgroundTask

最令人沮丧的是,没有采取任何方式来调查CORTANA消息!!

如果我想知道什么是错误的 - &gt;我无法做到这一点。

当错误发生时,我能够从那个东西获得的唯一可能输出是:

Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: wil::ResultException at memory location 0x0000007DF1CFD180.
Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: [rethrow] at memory location 0x0000000000000000.
Exception thrown at 0x00007FFC15401F28 in SearchUI.exe: Microsoft C++ exception: Js::JavascriptExceptionObject at memory location 0x0000007DFB9F7DC0.

请,如果有人有任何想法,体验软件的和平 - &gt;没有回答就不会过去。我现在坐在这件事上超过一天没有任何动静。

是的 - &gt;我在启动项目中添加了Project with BackgroundTask作为参考 - &gt;没有帮助

UPDATE1:

  1. 因此,我设法运行测试BackgroundTask,将精确的VoiceCommandService项目从示例应用程序复制到我的应用程序中,并添加(并且很重要)作为参考(单击您的启动项目,在工具栏中的标题得到项目 - &gt;添加参考 - &gt;在那里添加你的项目)

  2. 将其添加为项目依赖项或参考路径 - &gt;有0效果 (*它是sooo微软,对不起)

  3. 我在另一个链接到启动项目的testService作为Reference仍然从令人敬畏的Cortana中得到同样的糟糕反应
  4. UPDATE2:

    好的,所以我设法迫使她开始谈论我的任务!!

    1. 为了让那些BackgroundTask工作,您需要将它们放在单独的项目中
    2. 该项目必须作为参考包含在您的Statup项目中
    3. 该项目必须是类型:Windows运行时组件
    4. 你的BackgroundTask绝不能包含构造函数 - &gt;否则cortana会保释它。通过Run()方法
    5. 进行初始化和其他事情

      这可以视为已解决。

0 个答案:

没有答案