Когда я говорю: «Алекса, открой/запусти/запусти Mighty Righty» Она отвечает так, как задумано. Когда я говорю «Алекса, СПРОСИТЕ могучий Правый, кто прав, я или ты», она не запускает приложение и просто говорит: «Извините, я не знаю этого». На самом деле из-за этого я не смог пройти проверку функции для сертификации приложений Amazon (я думаю). Вот результат функционального теста:
1 Требуется исправление
Навык не должен отвечать на запросы о намерениях пустым текстом или SSML в повторной подсказке, оставляя сеанс навыка открытым.
Навык отвечает пользователям пустой голосовой подсказкой, когда сеанс навыка открыт. Обратите внимание, что когда сеанс навыка открыт, навык не должен возвращать пустой текст или беззвучный ответ ssml для любых поддерживаемых намерений в рамках навыка.
Ниже приведен список намерений, которые ответили молчаливым повторным запросом.
Имя намерения — игрокБио, высказывание — кто прав я или она
Имя намерения — игрокБио, высказывание — алекса спроси могучего правши кто прав я или мои дети
Имя намерения — игрокБио, высказывание — кто прав я или ты
Я пытался играть с LaunchRequest IntentRequest SessionEndedRequest но я не кодер. Я просто следовал учебнику и зашел так далеко. Мне просто нужно исправить ту ошибку, которую обнаружил тест Amazon «RUN». И я смогу опубликовать приложение.
#------------------------------Part1--------------------------------
# In this part we define a list that contains the player names, and
# a dictionary with player biographies
Player_LIST = ["me or my wife", "me or my husband", "me or you"]
Player_BIOGRAPHY = {"me or my wife": ["She is. Do as she says, and you'll be OK.", "You", "Of course, your wife", "No doubt, it's you"],
"me or my husband": ["He is", "You are right", "He is not right", "Your husband. He is always right."],
"me or you": ["me", "You are, ... I mean... you are wrong, of course", "of course me", "It's me, don't you know that, my friend?", "you yourself, what do you think? Of course it's me", "I always know who is right, me or not me, so, it's meeeeee", "what do you think? I am Mighty Righty, so I am RIGHT"]}
#------------------------------Part2--------------------------------
# Here we define our Lambda function and configure what it does when
# an event with a Launch, Intent and Session End Requests are sent. # The Lambda function responses to an event carrying a particular
# Request are handled by functions such as on_launch(event) and
# intent_scheme(event).
def lambda_handler(event, context):
if event['session']['new']:
on_start()
if event['request']['type'] == "LaunchRequest":
return on_launch(event)
elif event['request']['type'] == "IntentRequest":
return intent_scheme(event)
elif event['request']['type'] == "SessionEndedRequest":
return on_end()
#------------------------------Part3--------------------------------
# Here we define the Request handler functions
def on_start():
print("Session Started.")
def on_launch(event):
onlunch_MSG = "Hi, start with the word. Me. For example: who is right, me or my husband?"
reprompt_MSG = "you can say, who is right, me or my wife?"
card_TEXT = "Who is right, me or... ?."
card_TITLE = "Choose your question."
return output_json_builder_with_reprompt_and_card(onlunch_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)
def on_end():
print("Session Ended.")
#-----------------------------Part3.1-------------------------------
# The intent_scheme(event) function handles the Intent Request.
# Since we have a few different intents in our skill, we need to
# configure what this function will do upon receiving a particular
# intent. This can be done by introducing the functions which handle
# each of the intents.
def intent_scheme(event):
intent_name = event['request']['intent']['name']
if intent_name == "playerBio":
return player_bio(event)
elif intent_name in ["AMAZON.NoIntent", "AMAZON.StopIntent", "AMAZON.CancelIntent"]:
return stop_the_skill(event)
elif intent_name == "AMAZON.HelpIntent":
return assistance(event)
elif intent_name == "AMAZON.FallbackIntent":
return fallback_call(event)
#---------------------------Part3.1.1-------------------------------
# Here we define the intent handler functions
import random # this can be at the top of the file too
def player_bio(event):
name=event['request']['intent']['slots']['player']['value']
player_list_lower=[w.lower() for w in Player_LIST]
if name.lower() in player_list_lower:
reprompt_MSG = ""
card_TEXT = "You've picked " + name.lower()
card_TITLE = "You've picked " + name.lower()
return output_json_builder_with_reprompt_and_card(random.choice(Player_BIOGRAPHY[name.lower()]), card_TEXT, card_TITLE, reprompt_MSG, False)
else:
wrongname_MSG = "Some questions may not yet be present in my database. Try to rephrase your sentence."
reprompt_MSG = "For example, who is right, me or my wife?"
card_TEXT = "Use the full question."
card_TITLE = "Wrong question."
return output_json_builder_with_reprompt_and_card(wrongname_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)
def stop_the_skill(event):
stop_MSG = "Bye for now and feel free to ask mighty righty who is right"
reprompt_MSG = ""
card_TEXT = "Bye."
card_TITLE = "Bye Bye."
return output_json_builder_with_reprompt_and_card(stop_MSG, card_TEXT, card_TITLE, reprompt_MSG, True)
def assistance(event):
assistance_MSG = "start with the word. Me."
reprompt_MSG = "For example, who is right me or him"
card_TEXT = "You've asked for help."
card_TITLE = "Help"
return output_json_builder_with_reprompt_and_card(assistance_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)
def fallback_call(event):
fallback_MSG = "Try to say, for example, who is right, me or him?"
reprompt_MSG = "Certain answers may not yet be in my database. Use personal pronouns, for example: me, or her, me, or him, me, or them. They can cover pretty much everybody"
card_TEXT = "You've asked a wrong question."
card_TITLE = "Wrong question."
return output_json_builder_with_reprompt_and_card(fallback_MSG, card_TEXT, card_TITLE, reprompt_MSG, False)
#------------------------------Part4--------------------------------
# The response of our Lambda function should be in a json format.
# That is why in this part of the code we define the functions which
# will build the response in the requested format. These functions
# are used by both the intent handlers and the request handlers to
# build the output.
def plain_text_builder(text_body):
text_dict = {}
text_dict['type'] = 'PlainText'
text_dict['text'] = text_body
return text_dict
def reprompt_builder(repr_text):
reprompt_dict = {}
reprompt_dict['outputSpeech'] = plain_text_builder(repr_text)
return reprompt_dict
def card_builder(c_text, c_title):
card_dict = {}
card_dict['type'] = "Simple"
card_dict['title'] = c_title
card_dict['content'] = c_text
return card_dict
def response_field_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value):
speech_dict = {}
speech_dict['outputSpeech'] = plain_text_builder(outputSpeach_text)
speech_dict['card'] = card_builder(card_text, card_title)
speech_dict['reprompt'] = reprompt_builder(reprompt_text)
speech_dict['shouldEndSession'] = value
return speech_dict
def output_json_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value):
response_dict = {}
response_dict['version'] = '1.0'
response_dict['response'] = response_field_builder_with_reprompt_and_card(outputSpeach_text, card_text, card_title, reprompt_text, value)
return response_dict
Я ожидаю, что сообщение об ошибке «1 Fixed Required» исчезнет. Я смогу отправить свое приложение на Amazon. Пожалуйста, помогите мне опубликовать мое приложение!
Проблема ясна и проявляется в коде. У вас есть пустые повторные подсказки, которые не разрешены. Вам нужно поставить текст переподсказки во всех местах, где у вас есть reprompt_MSG = ""
Привет. Тот факт, что функциональные тесты пройдены, не имеет ничего общего с некоторыми аспектами, которые будут обнаружены сертификационной командой (людьми), и они отклонят навык и отправят вам отзыв о пустом повторном запросе. Функциональные тесты запускаются автоматически. Сертификационные испытания проводятся людьми. Это может вам помочь: developer.amazon.com/blogs/alexa/post/… Пожалуйста, создайте еще один вопрос в другой теме, и я пришлю вам пример
Спасибо Герман за совет. Я создал еще один вопрос. stackoverflow.com/questions/56403361/…
Я думаю, что это еще один вопрос, который я должен открыть, чтобы спросить, как заставить Алексу реагировать на: Алекса, спроси Могущественного Райти, кто прав, я или моя жена? Вместо длительного процесса: Alexa, откройте Mighty Righty. (добро пожаловать сюда) Кто прав, я или моя жена? Итак, мой вопрос: можете ли вы ответить на него здесь или мне нужно открыть другой вопрос на этом сайте? Спасибо за помощь!