2017-01-08 24 views
2

私はAlexaスキルに取り組んでいます。バックグラウンドでスクリプトを実行したり、テレビを起動したり、Bluetoothデバイスなどを接続したりすることがあります。すべての自動化が完了すると、成功した応答は最大20秒以上かかることがあります。長期的なAlexaレスポンスにボーカル "Ajax Spinner"を追加する

ウェブ上では、実行時間が長いリクエストがある場合、私たちはプログレスバー、またはアニメーションスピナーを待っていることを伝えるメッセージを表示したり、プロセスが進行中であることに慣れています。私はAlexaに似たものが必要です。

私はAlexaがHTTP要求が発生する前と応答が1回受信される前に、1度だけTWICEに応答したいと思います。会話の例:

[ユーザー]:Alexa、[アプリ名]に劇場モードに切り替えます。

[Alexa] :(直ちに)私はそれをしています!ハングアップします。

(... 20秒後...)

は[アレクサ]:完了!シアターモードが正常に起動しました。楽しい! 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), {})); 
     } 
     }); 

基本的に、私はアレクサがセッションを閉じずに先行対応し、再び機能一度持っていると思います、私はここにラムダ上で実行されているいくつかのコードを持っている

完了です。

答えて

1

私の知る限りでは、音声出力は1つしかないので、wait up one secロジックを入力することはできません。あなたは、小さな断片にタスクを分割し、それらを連鎖させて、Alexaが各段階でユーザーに通知するようにすることで、それを回避することができますか?

0

タスクが動作している間に音声を再生したり、長時間実行しているタスクについて音声出力で知らせることができます。audioplayer

関連する問題