3

我正在研究一种有时需要一段时间才能响应的 Alexa 技能。有时它会在后台运行脚本、打开电视、连接蓝牙设备等。一旦所有自动化完成,成功的响应可能需要 20 多秒。

在网络上,当有一个长时间运行的请求时,我们习惯于看到一个进度条,或者至少是一个动画微调器,上面有一条消息告诉请稍候,或者进程正在进行中。我需要 Alexa 类似的东西。

我希望 Alexa 对 SINGLE 意图做出两次响应,一次是在触发 HTTP 请求之前,一次是在收到响应后。一个示例对话是:

[用户]:Alexa,告诉[应用名称]切换到剧院模式。

[Alexa]:(立即)我在上面!挂紧。

(……20 秒后……)

[Alexa]:完成!剧院模式已成功激活。享受!

我在这里有一些在 lambda 上运行的代码:http: //jsfiddle.net/9gmszmku/embedded/js/

摘抄:

    // ================ 
    // [TODO] RESPONSE HERE:  Alexa says: "I'm on it" or "hang on one second..." before getting the response from the http request
    // ================ 

    // this request may take many seconds!!!!  Ain't nobody got time for staring at Echo for a response!!!
    var req = http.request(options, (res) => {

      console.log(`STATUS: ${res.statusCode}`);
      console.log(`HEADERS: ${JSON.stringify(res.headers)}`);


      res.setEncoding('utf8');
      var rawData = '';
      res.on('data', (chunk) => rawData += chunk);

      res.on('end', () => {
        try {
          var parsedData = JSON.parse(rawData);
          console.log(parsedData);
          context.succeed(generateResponse(buildSpeechletResponse(parsedData.message, true), {}));
        } catch (e) {
          context.succeed(generateResponse(buildSpeechletResponse("Error Parsing", true), {}));
        }
      });

基本上,我想让 Alexa 在不关闭会话的情况下提前响应,并在功能完成后再次响应。

4

2 回答 2

1

据我所知,你只能有一个语音输出,我认为你不能在其中注入任何wait up one sec逻辑。您可以通过将任务分解成更小的部分,将它们链接在一起并让 Alexa 在每个阶段通知用户来解决它吗?

于 2017-01-09T18:40:35.120 回答
0

也许您可以在任务运行时使用音频播放器界面播放一些音乐/或您可以通过语音输出通知用户长时间运行的任务。

于 2017-01-27T08:20:10.817 回答