Программа должна возвращать некоторый отклик на «LaunchRequest» и «SessionEndedRequest», иначе вы получите «Была проблема с запрошенным ответом навыков».
Вам необходимо добавить намерение «PlayMusic» и изменить URL-адрес файла.
P.S. Я не уверен, version
должен быть в build_audio_response
функции, я получил JSON от here
def build_audio_response(url):
return {
"version": "1.01",
"response": {
"directives": [
{
"type": "AudioPlayer.Play",
"playBehavior": "REPLACE_ALL",
"audioItem": {
"stream": {
"token": "12345",
"url": url,
"offsetInMilliseconds": 0
}
}
}
],
"shouldEndSession": True
}
}
def handle_session_end_request():
return {
"version": "1.0",
"response": {
"shouldEndSession": True
}
}
def play_music(intent, session):
url = "https://s3-eu-west-1.amazonaws.com/bucket/filename.mp3"
return build_audio_response(url, should_end_session=True)
def on_intent(intent_request, session):
""" Called when the user specifies an intent for this skill """
intent = intent_request['intent']
intent_name = intent_request['intent']['name']
if intent_name == "PlayMusic":
return play_music(intent, session)
elif intent_name == "AMAZON.CancelIntent" or intent_name == "AMAZON.StopIntent":
return handle_session_end_request()
else:
raise ValueError("Invalid intent")
def lambda_handler(event, context):
if event['request']['type'] == "LaunchRequest":
return {
"version": "1.0",
"response": {
"shouldEndSession": False
}
}
elif event['request']['type'] == "IntentRequest":
return on_intent(event['request'], event['session'])
elif event['request']['type'] == "SessionEndedRequest":
return handle_session_end_request()
Эй, я посмотрел на API. У них есть примерное сообщение, которое * появляется * очень похоже на то, что вы хотите, но есть больше полей для определения 'header' и' payload'. API [здесь] (https://developer.amazon.com/public/solutions/alexa/alexa-voice-service/reference/audioplayer), и сообщение находится в разделе «пример сообщения». Если вы используете эту форму, вы все еще получаете ошибку? –
просто попробовал, что, похоже, не помог – maxymoo
Это работает с HTTPS, однако, как вы его остановили? Команды «Отмена» и «Стоп» не работают после запуска потока. – Fastmover