2017-01-13 5 views
1

Я написал умение Alexa, которое использует функцию Lambda для воспроизведения уникального звука с заданного URL-адреса.Аудиопроигрыватель «PlaybackNearlyFinished» Запрос комплекта Alexa Skills, не работает

Намерение, называемое «PlayAudio», работает и воспроизводит первый аудиоматериал из нашего API-интерфейса, отформатированного в формате JSON.

Намерение "PlaybackNearlyFinished" не работает, он же не воспроизводит аудиофайл, который я его кормлю. Кто-нибудь может понять, почему это не работает?

Вот раздел из моей лямбда-функции, которая содержит два Intents:

Fact.prototype.intentHandlers = { 
    "PlayAudio": function (event, context, response) { 
      fetchEnseParse("/latest", function(body) { 
      if(body == "error") { 
      } 
      else { 
       var directives = body.enses.map(function(ense) { 
        var a = ense[1].fileUrl; 
        return { 
         'playBehavior': 'REPLACE_ALL', 
         'audioItem': 
          { 
           'stream': 
            { 
             'url': 'https://s3.amazonaws.com/media.ense.nyc/enses/2017_01_13T16_57_20.190Z/30312/0', 
             'token': '33529', 
             'offsetInMilliseconds': 0 
            } 
          }, 
          'type': 'AudioPlayer.Play' 
        }; 
       }) 
      } 
      var jsonresponse = { 
       'outputSpeech': { 
        'text': '', 
        'type': 'PlainText' 
        }, 
       'directives': [directives[0]] 
      };  
      response.justUseThisJsonPlease({ response: jsonresponse }); 
     }); 
    }, 


    "AudioPlayer.PlaybackNearlyFinished" : function(event, context, response) { 
      var second = 
      { 
       "type": "AudioPlayer.Play", 
       "playBehavior": "REPLACE_ENQUEUED", 
       "audioItem": { 
       "stream": { 
        "url": "https://s3.amazonaws.com/media.ense.nyc/enses/violetindigoviolet/30034/0", 
        "token": "33530", 
        "offsetInMilliseconds": 0 
       } 
       } 
      } 
      response.justUseThisJsonPlease({ response: second }); 
    }, 

ответ

3

кажется, что вы в том числе outputSpeech в своем ответе.

Это нормально для обычных намерений, но не для аудиоплеера запросов, на этой странице: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/custom-audioplayer-interface-reference

И это особо отметить: enter image description here

Проводы точную полезную нагрузку может помочь, а также. Вы можете использовать его для проверки локально и получить их: https://bespoken.tools/blog/2016/08/24/introducing-bst-proxy-for-alexa-skill-development

Вы должны увидеть дополнительный запрос от Alexa, SystemExceptionEncountered, который должен предоставить дополнительную информацию о том, что было не так. Он отправит это, когда будет некорректный ответ на запрос AudioPlayer.

+0

Hi John. Я ценю вашу помощь. Я использую outputSpeech в «PlayAudio» Intent, но я не использую его, когда обрабатываю запрос «PlaybackNearlyFinished». Поэтому я не думаю, что это проблема. – Ingrid

+0

Хм .... ну, я не думаю, что проблема REPLACE_ALL является причиной проблемы, но вы решили использовать ENQUEUE вместо этого? Вам также нужно будет включить ожидаемыйPreviousToken, затем как часть объекта потока. Это заставит поток играть дальше, а не останавливать текущий поток и запускать новый. Кроме того, вы получаете сообщение об ошибке от Alexa, например SystemExceptionEncountered? Это должно содержать больше информации. –

+0

Хм ... и на самом деле, глядя на него снова, вы завершаете свой второй ответ в массиве директив? Похоже, что это может быть проблемой. –

 Смежные вопросы

  • Нет связанных вопросов^_^