【问题标题】:How to get an Alexa Skill to stream an mp3 to device如何获得 Alexa Skill 以将 mp3 流式传输到设备
【发布时间】:2018-03-17 13:37:44
【问题描述】:

朋友们,

我正在开发一项 Alexa 技能,该技能尝试从可公开访问的 S3 存储桶中流式传输 mp3 文件。我的 lambda 函数工作正常,并返回一个音频指令。我正在使用 npm 包 alexa-sdk。

但是,当响应被发送回 Echo 设备时,我收到了“您的技能响应出现错误”的一般错误。我在 Google 上搜索了某种 Alexa 响应 lintet 来尝试验证我的响应对象。

下面是我的 lambda 函数 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": {}
}

【问题讨论】:

    标签: alexa alexa-skills-kit alexa-skill alexa-voice-service


    【解决方案1】:

    根据AudioPlayer Directives Documentation,在向服务器发送 AudioPlayer 指令时,您必须设置 type 属性并将其包含在您的响应的指令数组中。根据你的例子,你没有这样做。

    在您的示例中,在 playBehavior 键之前,您应该添加以下键:

    "type": "AudioPlayer.Play",
    

    另外,请确保您的音频符合亚马逊的要求:

    支持的音频文件格式包括 AAC/MP4、MP3、HLS、PLS 和 M3U。比特率:16kbps 到 384kbps。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 2013-06-29
      • 1970-01-01
      相关资源
      最近更新 更多