2017-10-05 13 views
0

친구,방법은 장치에 나는 공개적으로 액세스 할 수있는 S3 버킷에서 MP3 파일을 스트리밍 할 시도하는 알렉사 기술에서 일하고 있어요

을 mp3 파일을 스트리밍 할 알렉사 스킬을 얻을 수 있습니다. 내 람다 함수가 올바르게 작동하고 오디오 지시문을 반환합니다. 나는 npm 패키지 alexa-sdk를 사용하고 있습니다.

그러나 응답을 Echo 장치로 보내면 "기술 응답에 오류가 있습니다"라는 일반 오류가 나타납니다. 나는 내 응답 객체를 검증하고 검증하기 위해 알렉사 응답 고리의 일부 유형을 검색했다.

다음은 내 람다 함수 인 IntentHandler와이 함수에서 반환 된 응답 개체입니다. 누군가 볼 수있는 오류를 지적 할 수 있습니까? 대단히 감사합니다.

var handlers = { 
'LaunchRequest': function() { 
    this.emit(':tell', 'Hello'); 
}, 
GetVoiceMailIntent: function(){ 
    this.response.audioPlayerPlay('REPLACE_ALL', 'https://s3.amazonaws.com/romevm/call_1001.mp3', 'vmtoken', 0); 
    this.emit(':responseReady'); 
}, 
SessionEndedRequest: function() { 
console.log('session ended!'); 
} 
} //end intent handlers 

*********** RESPONSE ************** 
{ 
    "version": "1.0", 
    "response": { 
    "speechletResponse": { 
    "directives": [ 
    { 
     "playBehavior": "REPLACE_ALL", 
     "audioItem": { 
     "stream": { 
      "expectedPreviousToken": "0", 
      "token": "vmtoken", 
      "url": "https://s3.amazonaws.com/romevm/call_1001.mp3", 
      "offsetInMilliseconds": 0 
     } 
     } 
    } 
    ], 
    "shouldEndSession": true 
    } 
},"sessionAttributes": {} 
} 

답변

0

서버에 AudioPlayer의 지시를 보낼 때 AudioPlayer Directives Documentation에 따르면, 당신 해야type 속성를 설정하고 응답의 지시 배열에 포함. 그리고 당신의 본보기에 따르면, 그렇게하지 않습니다. 당신의 예에서

는 키 playBehavior하기 전에 다음 키를 추가해야합니다 :

"type": "AudioPlayer.Play", 

을 또한, 오디오 아마존의 요구 사항을 준수해야합니다 : 대한

지원되는 형식 오디오 파일에는 AAC/MP4, MP3, HLS, PLS 및 M3U가 포함됩니다. 전송률 : 16kbps ~ 384kbps.