Cortana遇到了一个问题

时间:2015-09-02 21:36:27

标签: cortana

我创建了一个javascript应用程序(又名UWA),以便使用我的Belkin wemo进行播放,然后打开或关闭Cortana的光线。以下功能很好,但Cortana最终会遇到问题。如果我删除对HTTP调用的调用,程序运行正常。谁可以告诉我以下功能有什么问题,因为不幸的是没有更多的细节暴露(当然在真正的程序中用正确的URL替换):

function largestOfFour(arr) {
    return arr.reduce(function(p, c, index, arr){
        p.push(Math.max.apply(null, c));
        return p;
    }, []);
}

largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

1 个答案:

答案 0 :(得分:1)

确保您的后台任务可以访问WinJS名称空间。对于后台任务,由于没有任何default.html,因此除非您明确执行,否则base.js不会自动导入。

我必须将winjs更新为版本4.2 from here(或git上的源存储库),然后将其添加到我的项目中以从VS 2015附带的已发布版本进行更新.WinJS 4.0有一个错误如果您尝试以这种方式导入游戏手柄,请投诉游戏手柄(请参阅this MSDN forum post

然后我添加了一行

importScripts("/Microsoft.WinJS.4.0/js/base.js");

到脚本的顶部,开始导入WinJS的代码。如果没有这个,你可能会得到一个类似于&#34的错误; WinJS未定义"弹出你的调试控制台,但出于某种原因,每当我点击它时,我都没有在visual studio中获得调试中断。这导致Cortana会话暂时无所事事,从未发送最终响应。

我还补充说你应该处理错误和处理进度,以便你可以定期向Cortana发送进度报告,以确保它不会给你带来时间(这就是为什么它会给你错误,可能大约5秒后):

WinJS.xhr({ url: "http://urlhere/", responseType: "text" }).done(function completed(webResponse) {
                ... handle response here
   },
   function error(errorResponse) {
        ... error handling
   },
   function progress(requestProgress) {
      ... <some kind of check to see if it's been longer than a second or two here since the last progress report>
       var userProgressMessage = new voiceCommands.VoiceCommandUserMessage();

       userProgressMessage.DisplayMessage = "Still working on it!";
       userProgressMessage.SpokenMessage = "Still working on it";

       var response = voiceCommands.VoiceCommandResponse.createResponse(userProgressMessage);
       return voiceServiceConnection.reportProgressAsync(response);
  });